# # spec file for package glibc # # Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # # PLEASE run pre_checkin.sh in this directory before submitting # this package. Otherwise the .spec and .changes for glibc-testsuite # and glibc-utils aren't updated. # Run with osc --with=fast_build to have a shorter turnaround # It will avoid building some parts of glibc %bcond_with fast_build %define crypt_bf_version 1.3 Name: glibc %define normal_build ("%{name}" == "glibc") %define utils_build ("%{name}" == "glibc-utils") %define testsuite_build ("%{name}" == "glibc-testsuite") # UTILS-SUMMARY-BEGIN Summary: Standard Shared Libraries (from the GNU C Library) License: LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later Group: System/Libraries # UTILS-SUMMARY-END BuildRequires: audit-devel BuildRequires: fdupes BuildRequires: libcap-devel BuildRequires: libselinux-devel BuildRequires: makeinfo BuildRequires: pwdutils BuildRequires: systemd-rpm-macros BuildRequires: systemtap-headers BuildRequires: xz %if %{testsuite_build} BuildRequires: gcc-c++ BuildRequires: libstdc++-devel %endif %if %{utils_build} BuildRequires: gd-devel %endif %define __filter_GLIBC_PRIVATE 1 %ifarch i686 # For i686 let's only build what's different from i586, so # no need to build documentation %define build_profile 1 %define build_locales 1 %define build_html 0 %else %if %{with fast_build} || %{utils_build} %define build_profile 0 %define build_locales 0 %define build_html 0 %else # Default: %define build_profile 1 %define build_locales 1 %define build_html 1 %endif %endif %define build_variants %{normal_build} %define disable_assert 0 %define enable_stackguard_randomization 1 %ifarch ppc ppc64 %define optimize_power 1 %ifarch ppc %define powerpc_optimize_base %{nil} %define powerpc_optimize_tune power3 %define powerpc_optimize_cpu_power4 1 %else %define powerpc_optimize_base %{nil} %define powerpc_optimize_tune power5 %define powerpc_optimize_cpu_power4 0 %endif # We are not building Power CPU specific optimizations for openSUSE. %define powerpc_optimize_cpu_power6 0 %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 %else %define optimize_power 0 %define powerpc_optimize_base %{nil} %define powerpc_optimize_cpu_power4 0 %define powerpc_optimize_cpu_power6 0 %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 %endif # ppc, ppc64 # 3.0 is the SLES 11 SP3 kernel # 3.1 is the openSUSE 12.1 kernel %define enablekernel 3.0 Version: 2.22 Release: 0 %define git_id bbab82c25da9 URL: http://www.gnu.org/software/libc/libc.html BuildRoot: %{_tmppath}/%{name}-%{version}-build #Source: glibc-%{version}-%{git_id}.tar.xz Source: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz Source1: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz.sig Source2: glibc.keyring Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 Source5: nsswitch.conf Source7: bindresvport.blacklist Source8: glibc_post_upgrade.c Source9: glibc.rpmlintrc Source10: baselibs.conf # For systemd Source20: nscd.conf Source21: nscd.service # crypt_blowfish Source50: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_version}.tar.gz # The sign key uses MD5 which is no longer accepted by gpg #Source51: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_version}.tar.gz.sign %if %{normal_build} # ngpt was used in 8.1 and SLES8 Obsoletes: ngpt < 2.2.2 Obsoletes: ngpt-devel < 2.2.2 Provides: ngpt = 2.2.2 Provides: ngpt-devel = 2.2.2 Conflicts: kernel < %{enablekernel} # bug437293 - handle update from SLES10 on PowerPC %ifarch ppc64 Obsoletes: glibc-64bit %endif %ifarch ppc Obsoletes: glibc-32bit %endif %ifarch armv6hl armv7hl # The old runtime linker link gets not provided by rpm find.provides, but it exists Provides: ld-linux.so.3 Provides: ld-linux.so.3(GLIBC_2.4) %endif Requires(pre): filesystem Recommends: glibc-extra Provides: rtld(GNU_HASH) %endif # %{normal_build} %if %{utils_build} Requires: glibc = %{version} %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build %ifarch i686 # We need to avoid to have only the src rpm from i686 on the media, # since it does not work on other architectures. NoSource: 0 %endif # ### # Patches are ordered in the following groups: # Patches that we will never upstream or which have not been looked at: 0-999 # Patches taken from upstream: 1000-2000 # Patches that are going upstream, waiting approval: 2000-3000 ### ### # Patches that upstream will not accept ### ### # openSUSE specific patches - won't go upstream ### ### openSUSE extensions, configuration # PATCH-FEATURE-OPENSUSE -- add crypt_blowfish support - bnc#700876 Patch1: glibc-2.14-crypt.diff # PATCH-FEATURE-OPENSUSE constify crypt_blowfish Patch2: crypt_blowfish-const.patch # PATCH-FEATURE-OPENSUSE -- add sha support to crypt_blowfish lnussel@suse.de Patch3: crypt_blowfish-1.2-sha.diff # PATCH-FEATURE-OPENSUSE Move crypt_gensalt_rn to separate library Patch4: crypt_blowfish-gensalt.patch # PATCH-FEATURE-OPENSUSE Avoid build failure on noexecstack marker on ARM dmueller@suse.de Patch5: crypt_blowfish-1.2-hack_around_arm.diff # PATCH-FIX-OPENSUSE Fix path for nscd databases Patch6: glibc-2.3.3-nscd-db-path.diff # PATCH-FIX-OPENSUSE Fix path for nss_db (bnc#753657) - aj@suse.de Patch7: nss-db-path.patch # PATCH-FIX-OPENSUSE adjust nscd.conf Patch8: glibc-nscd.conf.patch # PATCH-FIX-OPENSUSE do not use compile time in binaries Patch9: glibc-nodate.patch # PATCH-FIX-OPENSUSE -- add some extra information to version output - kukuk@suse.de Patch10: glibc-version.diff # PATCH-FIX-OPENSUSE remove lfs test from testsuite aj@suse.de Patch11: glibc-testsuite.patch # PATCH-FIX-OPENSUSE handle old glibc binaries Patch12: glibc-2.3.90-noversion.diff # PATCH-FIX-OPENSUSE -- Make --no-archive default for localedef - kukuk@suse.de Patch13: glibc-2.3.2.no_archive.diff # PATCH-FIX-OPENSUSE -- add blacklist for bindresvport Patch14: glibc-bindresvport-blacklist.diff # PATCH-FIX-OPENSUSE prefer -lang rpm packages Patch15: glibc-2.3.90-langpackdir.diff # PATCH-FEATURE-SLE increase cpusetsize to 4096, needs to be kept for compatibility kukuk@suse.de (XXX: Review) Patch18: glibc-cpusetsize.diff # PATCH-FEATURE-SLE Use nscd user for nscd Patch19: nscd-server-user.patch # PATCH-FEATURE-SLE Disable warning about deprecated _BSD_SOURCE/_SVID_SOURCE Patch20: default-source-warning.patch # PATCH-FEATURE-SLE powerpc: enable TLE only if GLIBC_ELISION_ENABLE=yes is defined Patch21: powerpc-elision-enable-envvar.patch # PATCH-FEATURE-SLE s390: enable TLE only if GLIBC_ELISION_ENABLE=yes is defined Patch22: s390-elision-enable-envvar.patch ### Locale related patches # PATCH-FIX-OPENSUSE Add additional locales Patch100: glibc-2.3.locales.diff.bz2 # PATCH-FIX-OPENSUSE -- Add no_NO back (XXX: Still needed?) Patch102: glibc-2.4.90-no_NO.diff # PATCH-FIX-OPENSUSE -- Renames for China Patch103: glibc-2.4-china.diff # PATCH-FIX-OPENSUSE -- Add C.UTF-8 locale Patch104: glibc-c-utf8-locale.patch # PATCH-FIX-OPENSUSE -- Disable gettext for C.UTF-8 locale Patch105: glibc-disable-gettext-for-c-utf8.patch ### Broken patches in glibc that we revert for now: ### Network related patches # PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change Patch300: glibc-resolv-reload.diff # PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de Patch301: glibc-2.2-sunrpc.diff # PATCH-FIX-OPENSUSE Warn about usage of mdns in resolv.conv Patch304: glibc-resolv-mdnshint.diff # PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719 Patch306: glibc-fix-double-loopback.diff ### # Patches from upstream ### # PATCH-FIX-UPSTREAM Clear DF_1_NODELETE flag only for failed to load library (BZ #18778) Patch1000: dont-remove-nodelete-flag.patch # PATCH-FIX-UPSTREAM Readd O_LARGEFILE flag for openat64 (BZ #18781) Patch1001: openat64-readd-o-largefile.patch # PATCH-FIX-UPSTREAM getmntent: fix memory corruption w/blank lines (BZ #18887) Patch1002: mntent-blank-line.patch # PATCH-FIX-UPSTREAM Fix opendir inverted o_directory_works test (BZ #18921) Patch1003: opendir-o-directory-check.patch # PATCH-FIX-UPSTREAM strcoll: Remove incorrect STRDIFF-based optimization (BZ #18589) Patch1004: strcoll-remove-strdiff-opt.patch # PATCH-FIX-UPSTREAM Always enable pointer guard (BZ #18928) Patch1005: ld-pointer-guard.patch # PATCH-FIX-UPSTREAM Harden tls_dtor_list with pointer mangling (BZ #19018) Patch1006: tls-dtor-list-mangling.patch # PATCH-FIX-UPSTREAM PowerPC: Fix a race condition when eliding a lock (BZ #18743) Patch1007: powerpc-lock-elision-race.patch # PATCH-FIX-UPSTREAM Keep only ELF_RTYPE_CLASS_{PLT|COPY} bits for prelink (BZ #19178) Patch1008: prelink-elf-rtype-class.patch # PATCH-FIX-UPSTREAM Better workaround for aliases of *_finite symbols in vector math library (BZ# 19058) Patch1009: vector-finite-math-aliases.patch # PATCH-FIX-UPSTREAM powerpc: Fix usage of elision transient failure adapt param (BZ #19174) Patch1010: powerpc-elision-adapt-param.patch # PATCH-FIX-UPSTREAM Fix unbound alloca in catopen (CVE-2015-8779, BZ #17905) Patch1011: catopen-unbound-alloca.patch # PATCH-FIX-UPSTREAM Add range check on time fields (CVE-2015-8776, BZ #18985) Patch1012: strftime-range-check.patch # PATCH-FIX-UPSTREAM Handle overflow in hcreate (CVE-2015-8778, BZ #18240) Patch1013: hcreate-overflow-check.patch # PATCH-FIX-UPSTREAM Don't do lock elision on an error checking mutex (BZ #17514) Patch1014: errorcheck-mutex-no-elision.patch # PATCH-FIX-UPSTREAM Refactor strtod parsing of NaN payloads (CVE-2014-9761, BZ #16962) Patch1015: refactor-nan-parsing.patch # PATCH-FIX-UPSTREAM Fix getaddrinfo stack-based buffer overflow (CVE-2015-7547, BZ #18665) Patch1016: send-dg-buffer-overflow.patch # PATCH-FIX-UPSTREAM Fix isinf/isnan declaration conflict with C++11 (BZ #19439) Patch1017: isinf-cxx11-conflict.patch # PATCH-FIX-UPSTREAM Don't use direct socket calls on s390x only available on 4.3+ Patch1018: s390x-remove-direct-socket-calls.patch # PATCH-FIX-UPSTREAM Support PLT and GOT references in local PIC check (BZ #19007) Patch1019: localplt.patch # PATCH-FIX-UPSTREAM Avoid redundant shift character in iconv output at block boundary (BZ #17197) Patch1020: ibm93x-redundant-shift-si.patch # PATCH-FIX-UPSTREAM Force rereading TZDEFRULES after it was used to set DST rules only (BZ #19253) Patch1021: tzset-tzname.patch # PATCH-FIX-UPSTREAM Fix resource leak in resolver (BZ #19257) Patch1022: resolv-mem-leak.patch # PATCH-FIX-UPSTREAM powerpc: Fix tabort usage in syscalls Patch1023: powerpc-tabort-usage.patch # PATCH-FIX-UPSTREAM powerpc: Revert to default atomic ops in elision code Patch1024: powerpc-default-atomic-ops.patch # PATCH-FIX-UPSTREAM powerpc: More elision improvements Patch1025: powerpc-elision-improvements.patch # PATCH-FIX-UPSTREAM powerpc: Enforce compiler barriers on hardware transactions Patch1026: powerpc-htm-compiler-barriers.patch # PATCH-FIX-UPSTREAM S390: optimized string/memory functions Patch1027: 0004-S390-Fix-handling-of-DXC-byte-in-FPC-register.patch Patch1028: 0005-S390-Refactor-ifunc-implementations-and-enable-ifunc.patch Patch1029: 0006-S390-Add-hwcaps-value-for-vector-facility.patch Patch1030: 0007-S390-Add-new-s390-platform.patch Patch1031: 0008-S390-configure-check-for-vector-instruction-support-.patch Patch1032: 0009-S390-Ifunc-resolver-macro-for-vector-instructions.patch Patch1033: 0010-S390-Optimize-strlen-and-wcslen.patch Patch1034: 0011-S390-Optimize-strnlen-and-wcsnlen.patch Patch1035: 0012-S390-Optimize-strcpy-and-wcscpy.patch Patch1036: 0013-S390-Optimize-stpcpy-and-wcpcpy.patch Patch1037: 0014-S390-Optimize-strncpy-and-wcsncpy.patch Patch1038: 0015-S390-Optimize-stpncpy-and-wcpncpy.patch Patch1039: 0016-S390-Optimize-strcat-and-wcscat.patch Patch1040: 0017-S390-Optimize-strncat-wcsncat.patch Patch1041: 0018-S390-Optimize-strcmp-and-wcscmp.patch Patch1042: 0019-S390-Optimize-strncmp-and-wcsncmp.patch Patch1043: 0020-S390-Optimize-strchr-and-wcschr.patch Patch1044: 0021-S390-Optimize-strchrnul-and-wcschrnul.patch Patch1045: 0022-S390-Optimize-strrchr-and-wcsrchr.patch Patch1046: 0023-S390-Optimize-strspn-and-wcsspn.patch Patch1047: 0024-S390-Optimize-strpbrk-and-wcspbrk.patch Patch1048: 0025-S390-Optimize-strcspn-and-wcscspn.patch Patch1049: 0026-S390-Optimize-memchr-rawmemchr-and-wmemchr.patch Patch1050: 0027-S390-Optimize-memccpy.patch Patch1051: 0028-S390-Optimize-wmemset.patch Patch1052: 0029-S390-Optimize-wmemcmp.patch Patch1053: 0030-S390-Optimize-memrchr.patch # PATCH-FIX-UPSTREAM AVX-512 optimized memcpy for KNL Patch1054: avx512-knl-memcpy.patch # PATCH-FIX-UPSTREAM Stack overflow in _nss_dns_getnetbyname_r (CVE-2016-3075, BZ #19879) Patch1055: nss-dns-getnetbyname.patch # PATCH-FIX-UPSTREAM S390: Save and restore fprs/vrs while resolving symbols (BZ #19916) Patch1056: s390-runtime-resolve.patch # PATCH-FIX-UPSTREAM glob: Do not copy d_name field of struct dirent (CVE-2016-1234, BZ #19779) Patch1057: glob-altdirfunc.patch # PATCH-FIX-UPSTREAM Fixes for malloc performance regression from SLE 11 Patch1058: malloc-Consistently-apply-trim_threshold-to-all-heap.patch Patch1059: malloc-Prevent-arena-free_list-from-turning-cyclic-B.patch Patch1060: malloc-Fix-attached-thread-reference-count-handling-.patch Patch1061: malloc-Fix-list_lock-arena-lock-deadlock-BZ-19182.patch # PATCH-FIX-UPSTREAM getaddrinfo: stack overflow in hostent conversion (CVE-2016-3706, BZ #20010) Patch1062: getaddrinfo-hostent-conv-stack-overflow.patch # PATCH-FIX-UPSTREAM sunrpc: Do not use alloca in clntudp_call (CVE-2016-4429, BZ #20112) Patch1063: clntudp-call-alloca.patch # PATCH-FIX-UPSTREAM Utilize x86_64 vector math functions w/o -fopenmp Patch1064: vector-math-gcc-6.patch # PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755) Patch1065: nscd-gc-crash.patch # PATCH-FIX-UPSTREAM resolv: Always set *resplen2 out parameter in send_dg (BZ #19791) Patch1066: resolv-assertion-failure.patch # PATCH-FIX-UPSTREAM fork in libpthread cannot use IFUNC resolver (BZ #19861) Patch1067: pt-fork.patch # PATCH-FIX-UPSTREAM Power9 support Patch1068: power9-support.patch # PATCH-FIX-UPSTREAM Power9 optimized strcmp Patch1069: power9-strcmp.patch # PATCH-FIX-UPSTREAM Power9 optimized strncmp Patch1070: power9-strncmp.patch # PATCH-FIX-UPSTREAM Remove improper assert in dlclose (BZ #11941) Patch1071: dlclose-assert-init-called.patch # PATCH-FIX-UPSTREAM Deadlock between fflush, getdelim, and fork (BZ #19431) Patch1072: malloc-fork-deadlock.patch # PATCH-FIX-UPSTREAM Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (BZ #21209) Patch1073: ld-hwcap-mask-suid.patch # PATCH-FIX-UPSTREAM nptl: Preserve error in setxid thread broadcast in coredumps (BZ #22153) Patch1074: nptl-setxid-error.patch # PATCH-FIX-UPSTREAM glob: Fix buffer overflows (CVE-2017-15670, CVE-2017-15671, CVE-2017-15804, BZ #22320, BZ #22325, BZ #22332) Patch1075: glob-tilde-overflow.patch # PATCH-FIX-UPSTREAM Fix use after free in pthread_create (BZ #20116) Patch1076: pthread-create-use-after-free.patch # PATCH-FIX-UPSTREAM Use PIC relocations in libmvec_nonshared.a (BZ #19590) Patch1077: libmvec-nonshared-pic.patch # PATCH-FIX-UPSTREAM Count components of the expanded path in _dl_init_path (CVE-2017-1000409, CVE-2017-1000409, BZ #22607) Patch1078: dl-init-paths-overflow.patch # PATCH-FIX-UPSTREAM Check for empty tokens before dynamic string token expansion (CVE-2017-16997, bsc#1073231, BZ #22625) Patch1079: fillin-rpath-empty-tokens.patch # PATCH-FIX-UPSTREAM Fix cmpli usage in power6 memset Patch1080: power6-memset.patch # PATCH-FIX-UPSTREAM Use hidden __GI__dl_argv in rtld startup code Patch1081: aarch64-dl-argv.patch # PATCH-FIX-UPSTREAM nscd: Release read lock after resetting timeout (BZ #22161) Patch1082: netgroupcache-locking.patch # PATCH-FIX-UPSTREAM Fix integer overflows in internal memalign and malloc functions (CVE-2018-6485, CVE-2018-6551, BZ #22343, BZ #22774) Patch1083: memalign-overflow.patch # PATCH-FIX-UPSTREAM Reduce EDNS payload size to 1200 bytes (CVE-2017-12132, BZ #21361) Patch1084: reduce-edns-payload.patch # PATCH-FIX-UPSTREAM Fix memory leak after deserialization failure in xdr_bytes, xdr_string (CVE-2017-8804, BZ #21461) Patch1085: sunrpc-xdr-memory.patch # PATCH-FIX-UPSTREAM sunrpc: Avoid use-after-free read access in clntudp_call (CVE-2017-12133, BZ #21115) Patch1086: clntudp-call-use-after-free.patch # PATCH-FIX-UPSTREAM Fix crash in resolver on memory allocation failure (BZ #23005) Patch1087: res-send-enomem.patch # PATCH-FIX-UPSTREAM __memmove_sse2_unaligned on 32bit x86 produces garbage when crossing 2GB threshold (CVE-2017-18269, BZ #22644) Patch1088: i386-memmove-sse2-unaligned.patch # PATCH-FIX-UPSTREAM __mempcpy_avx512_no_vzeroupper mishandles large copies (CVE-2018-11237, BZ #23196) Patch1089: mempcpy-avx512.patch # PATCH-FIX-UPSTREAM Stack buffer overflow in realpath() if input size is close to SSIZE_MAX (CVE-2018-11236, BZ #22786) Patch1090: realpath-ssize-max-overflow.patch # PATCH-FIX-UPSTREAM powerpc: Add values from Linux 4.8 to Patch1091: powerpc-elf-notes.patch # PATCH-FIX-UPSTREAM z13 exploitation in glibc Patch1092: 0001-S390-Get-rid-of-make-warning-overriding-recipe-for-t.patch Patch1093: 0001-S390-Configure-check-for-vector-support-in-gcc.patch Patch1094: 0001-S390-Optimize-8bit-generic-iconv-modules.patch Patch1095: 0001-S390-Optimize-builtin-iconv-modules.patch Patch1096: 0001-S390-Optimize-iso-8859-1-to-ibm037-iconv-module.patch Patch1097: 0001-S390-Optimize-utf8-utf32-module.patch Patch1098: 0001-S390-Optimize-utf8-utf16-module.patch Patch1099: 0001-S390-Optimize-utf16-utf32-module.patch Patch1100: 0001-S390-Use-s390-64-specific-ionv-modules-on-s390-32-to.patch Patch1101: 0001-S390-Fix-utf32-to-utf8-handling-of-low-surrogates-di.patch Patch1102: 0001-S390-Fix-utf32-to-utf16-handling-of-low-surrogates-d.patch Patch1103: 0001-Fix-ucs4le_internal_loop-in-error-case.-BZ-19726.patch Patch1104: 0001-Fix-UTF-16-surrogate-handling.-BZ-19727.patch # PATCH-FIX-UPSTREAM Add new instruction support in toolchain - glibc part (z14) Patch1105: 0001-S390-Configure-checks-HAVE_S390_MIN_Z196_ZARCH_ASM_S.patch Patch1106: 0002-S390-Use-new-s390_libc_ifunc_expr-macro-in-s390-8bit.patch Patch1107: 0003-S390-Move-utf8-utf16-z9.c-to-multiarch-folder-and-us.patch Patch1108: 0004-S390-Move-utf16-utf32-z9.c-to-multiarch-folder-and-u.patch Patch1109: 0005-S390-Move-utf8-utf32-z9.c-to-multiarch-folder-and-us.patch Patch1110: 0006-S390-Add-new-hwcap-values-for-new-cpu-architecture-a.patch Patch1111: 0007-S390-Use-cu41-instruction-for-converting-from-utf32-.patch Patch1112: 0008-S390-Use-cu42-instruction-for-converting-from-utf32-.patch Patch1113: 0009-S390-Use-cu24-instruction-for-converting-from-utf16-.patch Patch1114: 0010-S390-Use-cu21-instruction-for-converting-from-utf16-.patch Patch1115: 0011-S390-Add-new-s390-platform-z14.patch # PATCH-FIX-UPSTREAM powerpc: Always use __IPC_64 as required by the kernel Patch1116: powerpc-ipc64.patch # PATCH-FIX-UPSTREAM Rewrite elf_machine_load_address using _DYNAMIC symbol Patch1117: aarch64-elf-machine-load-address.patch # PATCH-FIX-UPSTREAM Add more checks for valid ld.so.cache file (BZ #18093) Patch1118: ld-so-cache-validation.patch # PATCH-FIX-UPSTREAM getaddrinfo: Fully parse IPv4 address strings (CVE-2016-10739, BZ #20018) Patch1119: getaddrinfo-parse-ipv4-address.patch # PATCH-FIX-UPSTREAM regex: fix read overrun (CVE-2019-9169, BZ #24114) Patch1120: regex-read-overrun.patch # PATCH-FIX-UPSTREAM ja_JP locale: Add entry for the new Japanese era (BZ #22964) Patch1121: japanese-era-name-may-2019.patch # PATCH-FIX-UPSTREAM ERE '0|()0|\1|0' causes regexec undefined behavior (CVE-2009-5155, BZ #18986) Patch1122: regex-parse-reg-exp.patch # PATCH-FIX-UPSTREAM S390: Add cfi information for start routines in order to stop unwinding Patch1123: s390-unwind-info.patch # PATCH-FIX-UPSTREAM resolv: Fix crash with internal QTYPE (CVE-2015-5180, BZ #18784) Patch1124: resolv-internal-qtype.patch # PATCH-FIX-UPSTREAM Hardware support in toolchain - glibc part Patch1125: 0031-S390-Use-mvcle-for-copies-1MB-on-32bit-with-default-.patch Patch1126: 0032-S390-Use-64bit-instruction-to-check-for-copies-of-1M.patch Patch1127: 0033-S390-Do-not-call-memcpy-memcmp-memset-within-libc.so.patch Patch1128: 0034-S390-Implement-mempcpy-with-help-of-memcpy.-BZ-19765.patch Patch1129: 0035-S390-Do-not-clobber-r13-with-memcpy-on-31bit-with-co.patch Patch1130: 0036-s390-Refactor-ifunc-resolvers-due-to-false-debuginfo.patch Patch1131: 0037-S390-Add-configure-check-to-detect-z10-as-mininum-ar.patch Patch1132: 0038-S390-Use-hwcap-instead-of-dl_hwcap-in-ifunc-resolver.patch Patch1133: 0039-S390-Unify-31-64bit-memcpy.patch Patch1134: 0040-S390-Refactor-memcpy-mempcpy-ifunc-handling.patch Patch1135: 0041-S390-Remove-s390-specific-implementation-of-bcopy.patch Patch1136: 0042-S390-Use-memcpy-for-forward-cases-in-memmove.patch Patch1137: 0043-S390-Add-configure-check-to-detect-z13-as-mininum-ar.patch Patch1138: 0044-S390-Add-z13-memmove-ifunc-variant.patch Patch1139: 0045-S390-Add-z13-strstr-ifunc-variant.patch Patch1140: 0046-S390-Add-z13-memmem-ifunc-variant.patch Patch1141: 0047-S390-Cleanup-ifunc-resolve.h.patch Patch1142: 0048-S390-Mark-vx-and-vxe-as-important-hwcap.patch Patch1143: 0049-S390-Add-new-hwcap-values-for-new-cpu-architecture-a.patch Patch1144: 0050-S390-Add-configure-check-to-detect-support-for-arch1.patch Patch1145: 0051-S390-Add-arch13-memmove-ifunc-variant.patch Patch1146: 0052-S390-Add-arch13-strstr-ifunc-variant.patch Patch1147: 0053-S390-Add-arch13-memmem-ifunc-variant.patch # PATCH-FIX-UPSTREAM S390: Fix handling of needles crossing a page in strstr z15 ifunc-variant (BZ #25226) Patch1148: s390-strstr-page-boundary.patch # PATCH-FIX-UPSTREAM Use posix_spawn on popen (BZ #22834) Patch1149: posix-Add-internal-symbols-for-posix_spawn-interface.patch Patch1150: glibc-2.26-Assume-that-pipe2-is-always-available.patch Patch1151: glibc-2.29-posix-Use-posix_spawn-on-popen.patch # PATCH-FIX-UPSTREAM Avoid ldbl-96 stack corruption from range reduction of pseudo-zero (CVE-2020-10029, BZ #25487) Patch1152: ldbl-96-rem-pio2l.patch # PATCH-FIX-UPSTREAM Fix array overflow in backtrace on PowerPC (CVE-2020-1751, BZ #25423) Patch1153: backtrace-powerpc.patch # PATCH-FIX-UPSTREAM Fix use-after-free in glob when expanding ~user (CVE-2020-1752, BZ #25414) Patch1154: glob-use-after-free.patch # PATCH-FIX-UPSTREAM fork: Remove bogus parent PID assertions (BZ #21386) Patch1155: fork-remove-assertion.patch # PATCH-FIX-UPSTREAM nptl: wait for pending setxid request also in detached thread (BZ #25942) Patch1156: nptl-setxid-race.patch # PATCH-FIX-UPSTREAM Fix concurrent changes on nscd aware files (BZ #23178) Patch1157: nscd-senfile.patch ### # Patches awaiting upstream approval ### # PATCH-FIX-UPSTREAM Always to locking when accessing streams (BZ #15142) Patch2000: fix-locking-in-_IO_cleanup.patch # PATCH-FIX-UPSTREAM Never try to execute the file in ldd (BZ #16750) Patch2001: ldd-system-interp.patch # PATCH-FIX-UPSTREAM Don't close or flush stdio streams on abort (BZ #15436) Patch2002: abort-no-flush.patch # PATCH-FIX-UPSTREAM Speedup memset on x86-64 for large block sizes (BZ #16830) Patch2003: glibc-memset-nontemporal.diff # PATCH-FIX-UPSTREAM Static dlopen default library search path fix (BZ #17250) Patch2004: static-dlopen.patch # PATCH-FIX-UPSTREAM Fix fnmatch handling of collating elements (BZ #17396, BZ #16976) Patch2005: fnmatch-collating-elements.patch # PATCH-FIX-UPSTREAM Properly reread entry after failure in nss_files getent function (BZ #18991) Patch2006: nss-files-long-lines-2.patch # PATCH-FIX-UPSTREAM Fix iconv buffer handling with IGNORE error handler (BZ #18830) Patch2007: iconv-reset-input-buffer.patch # PATCH-FIX-UPSTREAM Reinitialize dl_load_write_lock on fork (BZ #19282) Patch2008: reinitialize-dl_load_write_lock.patch # PATCH-FIX-UPSTREAM Return proper status from _nss_nis_initgroups_dyn (BZ #20262) Patch2009: nis-initgroups-status.patch # PATCH-FIX-UPSTREAM Fix generic __lll_robust_timedlock_wait to check for timeout (BZ #20263) Patch2010: robust-mutex-deadlock.patch # PATCH-FIX-UPSTREAM rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 programs (CVE-2017-1000366) Patch2011: ld-library-path-suid.patch # PATCH-FIX-UPSTREAM Avoid underflow of malloced area (CVE-2018-1000001) Patch2012: realpath-underflow.patch # PATCH-FIX-UPSTREAM Avoid concurrency problem in ldconfig (BZ #23973) Patch2013: ldconfig-concurrency.patch # PATCH-FIX-UPSTREAM nscd: bump GC cycle during cache pruning (BZ #26130) Patch2014: nscd-prune.patch # PATCH-FIX-UPSTREAM Correct locking and cancellation cleanup in syslog functions (BZ #26100) Patch2015: syslog-locking.patch # Non-glibc patches # PATCH-FIX-OPENSUSE Remove debianisms from manpages Patch3000: manpages.patch %description The GNU C Library provides the most important standard libraries used by nearly all programs: the standard C library, the standard math library, and the POSIX thread library. A system is not functional without these libraries. %package info Summary: Info Files for the GNU C Library License: GFDL-1.1-only Group: Documentation/Other Requires(post): %{install_info_prereq} Requires(postun): %{install_info_prereq} BuildArch: noarch %description info This package contains the documentation for the GNU C library stored as info files. Due to a lack of resources, this documentation is not complete and is partially out of date. %package html Summary: HTML Documentation for the GNU C Library License: GFDL-1.1-only Group: Documentation/HTML BuildArch: noarch %description html This package contains the HTML documentation for the GNU C library. Due to a lack of resources, this documentation is not complete and is partially out of date. %package i18ndata Summary: Database Sources for 'locale' License: GPL-2.0-or-later AND MIT Group: System/Libraries BuildArch: noarch %description i18ndata This package contains the data needed to build the locale data files to use the internationalization features of the GNU libc. It is normally not necessary to install this packages, the data files are already created. %package locale Summary: Locale Data for Localized Programs License: GPL-2.0-or-later AND MIT AND LGPL-2.1-or-later Group: System/Libraries Requires(post): /bin/cat Requires: glibc = %{version} # bug437293 %ifarch ppc64 Obsoletes: glibc-locale-64bit %endif %ifarch ppc Obsoletes: glibc-locale-32bit %endif %description locale Locale data for the internationalisation features of the GNU C library. %package -n nscd Summary: Name Service Caching Daemon License: GPL-2.0-or-later Group: System/Daemons Provides: glibc:/usr/sbin/nscd Requires: glibc = %{version} Obsoletes: unscd <= 0.48 Requires(pre): pwdutils %{?systemd_requires} %description -n nscd Nscd caches name service lookups and can dramatically improve performance with NIS, NIS+, and LDAP. %package profile Summary: Libc Profiling and Debugging Versions License: LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later Group: Development/Libraries/C and C++ Requires: glibc = %{version} # bug437293 %ifarch ppc64 Obsoletes: glibc-profile-64bit %endif %ifarch ppc Obsoletes: glibc-profile-32bit %endif %description profile This package contains special versions of the GNU C library which are necessary for profiling and debugging. %package devel Summary: Include Files and Libraries Mandatory for Development License: BSD-3-Clause AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later Group: Development/Libraries/C and C++ Obsoletes: epoll = 1.0 Provides: epoll < 1.0 # bug437293 %ifarch ppc64 Obsoletes: glibc-devel-64bit %endif %ifarch ppc Obsoletes: glibc-devel-32bit %endif Requires: glibc = %{version} Requires: linux-kernel-headers %description devel These libraries are needed to develop programs which use the standard C library. %package devel-static Summary: C library static libraries for -static linking License: BSD-3-Clause AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later Group: Development/Libraries/C and C++ Requires: %{name}-devel = %{version} # Provide Fedora name for package to make packaging easier Provides: %{name}-static = %version %description devel-static The glibc-devel-static package contains the C library static libraries for -static linking. You don't need these, unless you link statically, which is highly discouraged. # makedb requires libselinux. We add this program in a separate # package so that glibc does not require libselinux. %package extra Summary: Extra binaries from GNU C Library License: LGPL-2.1-or-later Group: Development/Languages/C and C++ Requires: glibc = %{version} %description extra The glibc-extra package contains some extra binaries for glibc that are not essential but recommend to use. makedb: A program to create a database for nss %package obsolete Summary: Obsolete Shared Libraries from the GNU C Library License: LGPL-2.0-or-later Group: System/Libraries Requires: glibc = %{version} %description obsolete This package provides some old libraries from the GNU C Library which are no longer supported. Additional it provides a compatibility library for old binaries linked against glibc 2.0. Install this package if you need one of this libraries to get old binaries working, but since this libraries are not supported and there is no gurantee that they work for you, you should try to get newer versions of your software. %prep %setup -n glibc-%{version} -q -a 3 -a 4 # Owl crypt_blowfish tar -xzf %SOURCE50 pushd crypt_blowfish-%{crypt_bf_version} %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 popd mv crypt/{crypt.h,gnu-crypt.h} mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/ # %patch1 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 # avoid changing nscd_stat.c mtime to avoid code generation # differences on each rebuild touch -r nscd/nscd_stat.c nscd/s-stamp %patch9 -p1 touch -r nscd/s-stamp nscd/nscd_stat.c rm nscd/s-stamp %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 %patch18 -p1 %patch19 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 %patch100 -p1 %patch102 -p1 %patch103 -p1 %patch104 -p1 %patch105 -p1 %patch300 -p1 %patch301 -p1 %patch304 -p1 %patch306 -p1 %patch1000 -p1 %patch1001 -p1 %patch1002 -p1 %patch1003 -p1 %patch1004 -p1 %patch1005 -p1 %patch1006 -p1 %patch1007 -p1 %patch1008 -p1 %patch1009 -p1 %patch1010 -p1 %patch1011 -p1 %patch1012 -p1 %patch1013 -p1 %patch1014 -p1 %patch1015 -p1 %patch1016 -p1 %patch1017 -p1 %patch1018 -p1 %patch1019 -p1 %patch1020 -p1 %patch1021 -p1 %patch1022 -p1 %patch1023 -p1 %patch1024 -p1 %patch1025 -p1 %patch1026 -p1 %patch1027 -p1 %patch1028 -p1 %patch1029 -p1 %patch1030 -p1 %patch1031 -p1 %patch1032 -p1 %patch1033 -p1 %patch1034 -p1 %patch1035 -p1 %patch1036 -p1 %patch1037 -p1 %patch1038 -p1 %patch1039 -p1 %patch1040 -p1 %patch1041 -p1 %patch1042 -p1 %patch1043 -p1 %patch1044 -p1 %patch1045 -p1 %patch1046 -p1 %patch1047 -p1 %patch1048 -p1 %patch1049 -p1 %patch1050 -p1 %patch1051 -p1 %patch1052 -p1 %patch1053 -p1 %patch1054 -p1 %patch1055 -p1 %patch1056 -p1 %patch1057 -p1 %patch1058 -p1 %patch1059 -p1 %patch1060 -p1 %patch1061 -p1 %patch1062 -p1 %patch1063 -p1 %patch1064 -p1 %patch1065 -p1 %patch1066 -p1 %patch1067 -p1 %patch1068 -p1 %patch1069 -p1 %patch1070 -p1 %patch1071 -p1 %patch1072 -p1 %patch1073 -p1 %patch1074 -p1 %patch1075 -p1 %patch1076 -p1 %patch1077 -p1 %patch1078 -p1 %patch1079 -p1 %patch1080 -p1 %patch1081 -p1 %patch1082 -p1 %patch1083 -p1 %patch1084 -p1 %patch1085 -p1 %patch1086 -p1 %patch1087 -p1 %patch1088 -p1 %patch1089 -p1 %patch1090 -p1 %patch1091 -p1 %patch1092 -p1 %patch1093 -p1 %patch1094 -p1 %patch1095 -p1 %patch1096 -p1 %patch1097 -p1 %patch1098 -p1 %patch1099 -p1 %patch1100 -p1 %patch1101 -p1 %patch1102 -p1 %patch1103 -p1 %patch1104 -p1 %patch1105 -p1 %patch1106 -p1 %patch1107 -p1 %patch1108 -p1 %patch1109 -p1 %patch1110 -p1 %patch1111 -p1 %patch1112 -p1 %patch1113 -p1 %patch1114 -p1 %patch1115 -p1 %patch1116 -p1 %patch1117 -p1 %patch1118 -p1 %patch1119 -p1 %patch1120 -p1 %patch1121 -p1 %patch1122 -p1 %patch1123 -p1 %patch1124 -p1 %patch1125 -p1 %patch1126 -p1 %patch1127 -p1 %patch1128 -p1 %patch1129 -p1 %patch1130 -p1 %patch1131 -p1 %patch1132 -p1 %patch1133 -p1 %patch1134 -p1 %patch1135 -p1 %patch1136 -p1 %patch1137 -p1 %patch1138 -p1 %patch1139 -p1 %patch1140 -p1 %patch1141 -p1 %patch1142 -p1 %patch1143 -p1 %patch1144 -p1 %patch1145 -p1 %patch1146 -p1 %patch1147 -p1 %patch1148 -p1 %patch1149 -p1 %patch1150 -p1 %patch1151 -p1 %patch1152 -p1 %patch1153 -p1 %patch1154 -p1 %patch1155 -p1 %patch1156 -p1 %patch1157 -p1 %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 %patch2003 -p1 %patch2004 -p1 %patch2005 -p1 %patch2006 -p1 %patch2007 -p1 %patch2008 -p1 %patch2009 -p1 %patch2010 -p1 %patch2011 -p1 %patch2012 -p1 %patch2013 -p1 %patch2014 -p1 %patch2015 -p1 %patch3000 # # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed! # # Glibc 2.8 introduced the HP_TIMING element to the rtld_global_ro struct # definition. # If the base is built without power4 the loader won't have this element in # the struct whereas the power4/5/6/... libc will, so there will be a disconnect # between the size of the rtld_global_ro struct between the two and dl_close # ends up getting called incorrectly when it's actually attempting to call a # resolver function. This is because the GLRO() macro simply attempts to # compute an offset and gets the wrong one. # Building the base glibc with --with-cpu=power4 solves this problem. # But: ppc32 can not default to -mcpu=power4 because it would emit instructions # which are not available on G3, G4 etc. # # We simply remove the power4 files, and build the base glibc for a generic powerpc cpu # Additional cputuned libs can now be used on powerpc32 # rm -fv sysdeps/powerpc/powerpc32/power4/hp-timing.c sysdeps/powerpc/powerpc32/power4/hp-timing.h find . -name configure | xargs touch ####################################################################### ### ### BUILD ### ####################################################################### %build if [ -x /bin/uname.bin ]; then /bin/uname.bin -a else uname -a fi uptime || : ulimit -a nice # We do not want configure to figure out the system its building one # to support a common ground and thus set build and host to the # target_cpu. %ifarch %arm %define target %{_target_cpu}-suse-linux-gnueabi %else %define target %{_target_cpu}-suse-linux %endif # Don't use as-needed, it breaks glibc assumptions # Before enabling it, run the testsuite and verify that it # passes completely export SUSE_ASNEEDED=0 # Adjust glibc version.h echo "#define CONFHOST \"%{target}\"" >> version.h echo "#define GITID \"%{git_id}\"" >> version.h # # Default CFLAGS and Compiler # BuildFlags="%{optflags} -U_FORTIFY_SOURCE" BuildFlags=$(echo $BuildFlags | sed -e 's#-fstack-protector[^ ]*##' -e 's#-ffortify=[0-9]*##') BuildCC="%__cc" BuildCCplus="%__cxx" add_ons=libidn # #now overwrite for some architectures # %ifarch sparc64 BuildFlags="-O2 -mcpu=ultrasparc -mvis -fcall-used-g6" BuildCC="gcc -m64" BuildCCplus="$BuildCCplus -m64" %endif %ifarch sparc BuildFlags="$BuildFlags -fcall-used-g6" BuildCC="gcc -m32" BuildCCplus="$BuildCCplus -m32" %endif %ifarch sparcv9 BuildFlags="$BuildFlags -mcpu=ultrasparc -fcall-used-g6" BuildCC="gcc -m32" BuildCCplus="$BuildCCplus -m32" %endif %ifarch alphaev6 BuildFlags="-mcpu=ev6" %endif %ifarch ppc ppc64 BuildFlags="$(echo $BuildFlags | sed 's#-mminimal-toc##')" %endif %ifarch ppc64 BuildCC="$BuildCC -m64" BuildCCplus="$BuildCCplus -m64" %endif %ifarch hppa BuildFlags="$BuildFlags -mpa-risc-1-1 -fstrict-aliasing" %endif # Add flags for all plattforms except AXP %ifnarch alpha BuildFlags="$BuildFlags -g" %endif %if %{disable_assert} BuildFlags="$BuildFlags -DNDEBUG=1" %endif %ifarch %ix86 add_ons=$add_ons,noversion %endif %ifarch mipsel # fails to build otherwise - need to recheck and fix %define enable_stackguard_randomization 0 %endif configure_and_build_glibc() { local dirname="$1"; shift local cflags="$1"; shift mkdir "cc-$dirname" cd "cc-$dirname" %ifarch %arm aarch64 # remove asynchronous-unwind-tables during configure as it causes # some checks to fail spuriously on arm conf_cflags="${cflags/-fasynchronous-unwind-tables/}" conf_cflags="${conf_cflags/-funwind-tables/}" %else conf_cflags="$cflags" %endif profile="--disable-profile" %if %{build_profile} if [ "$dirname" = "base" ] ; then profile="--enable-profile" fi %endif elision=--enable-lock-elision if [ "$dirname" = "noelision" ]; then elision=--disable-lock-elision fi ../configure \ CFLAGS="$conf_cflags" BUILD_CFLAGS="$conf_cflags" \ CC="$BuildCC" CXX="$BuildCCplus" \ --prefix=%{_prefix} \ --libexecdir=%{_libexecdir} --infodir=%{_infodir} \ --enable-add-ons=$add_ons \ $profile $elision \ "$@" \ %if %{enable_stackguard_randomization} --enable-stackguard-randomization \ %endif --build=%{target} --host=%{target} \ %ifarch armv7hl ppc ppc64 ppc64le %{ix86} x86_64 sparc sparc64 s390 s390x --enable-multi-arch \ %endif %ifarch mipsel --without-fp \ %endif %ifarch ppc64p7 --with-cpu=power7 \ %endif --enable-kernel=%{enablekernel} \ --with-bugurl=http://bugs.opensuse.org \ %ifnarch aarch64 --enable-systemtap \ %endif --enable-bind-now --enable-obsolete-rpc # With the sle12 gcc48 based system compiler the aarch64 support for systemtap # isn't working out of box. # Should we enable --enable-nss-crypt to build use freebl3 hash functions? # explicitly set CFLAGS to use the full CFLAGS (not the reduced one for configure) make %{?_smp_mflags} CFLAGS="$cflags" BUILD_CFLAGS="$cflags" cd .. } %if !%{optimize_power} # # Build base glibc # configure_and_build_glibc base "$BuildFlags" %else # # Build POWER-optimized glibc # # First, base build: pBuildFlags="$BuildFlags -mtune=%{powerpc_optimize_tune}" %if "%{powerpc_optimize_base}" != "" pBuildFlags+=" -mcpu=%{powerpc_optimize_base}" %endif %if "%{powerpc_optimize_base}" != "" configure_and_build_glibc base "$pBuildFlags" --with-cpu=%{powerpc_optimize_base} %else # Use no default CPU configure_and_build_glibc base "$pBuildFlags" %endif %if %{build_variants} # Then other power variants: for pcpu in \ %if %{powerpc_optimize_cpu_power4} power4 \ %endif %if %{powerpc_optimize_cpu_power6} power6 \ %endif %if %{powerpc_optimize_cpu_power7} power7 \ %endif ; do configure_and_build_glibc $pcpu "$BuildFlags -mcpu=$pcpu" \ --with-cpu=$pcpu done # Eventually, special Cell variant: %if %{powerpc_optimize_cpu_cell} configure_and_build_glibc ppc-cell-be "$BuildFlags -mcpu=cell" %endif %endif # %{build_variants} %endif # optimize_power %if %{build_variants} %ifarch i686 x86_64 configure_and_build_glibc noelision "$BuildFlags" %endif %endif # # Build html documentation # %if %{build_html} make -C cc-base html %endif # # Build glibc_post_upgrade binary # $BuildCC -static %{optflags} -Os $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \ -Lcc-base -Bcc-base/csu \ '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER5' \ %ifarch ppc ppc64 %if !%{powerpc_optimize_cpu_power4} '-DREMOVE_PPC_OPTIMIZE_POWER4' \ %endif %if !%{powerpc_optimize_cpu_power6} '-DREMOVE_PPC_OPTIMIZE_POWER6' \ %endif %if !%{powerpc_optimize_cpu_power7} '-DREMOVE_PPC_OPTIMIZE_POWER7' \ %endif %if !%{powerpc_optimize_cpu_cell} '-DREMOVE_PPC_OPTIMIZE_CELL' \ %endif %endif '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_libdir}/gconv"' # crypt_blowfish man pages pushd crypt_blowfish-%{crypt_bf_version} make man popd ####################################################################### ### ### CHECK ### ####################################################################### %check %if %{testsuite_build} # The testsuite will fail if asneeded is used export SUSE_ASNEEDED=0 # Increase timeout export TIMEOUTFACTOR=16 make -C cc-base -k check || { cd cc-base o=$- set +x for sum in */*.sum; do while read s t; do case $s in XPASS:|PASS:) echo ++++++ $s $t ++++++ ;; *) # X?FAIL: echo ------ $s $t ------ test ! -f $t.out || cat $t.out ;; esac done < $sum done set -$o } %else # This has to pass on all platforms! # Exceptions: # None! make %{?_smp_mflags} -C cc-base check-abi %endif ####################################################################### ### ### INSTALL ### ####################################################################### %install %if %{normal_build} # We don't want to strip the .symtab from our libraries in find-debuginfo.sh, # certainly not from libpthread.so.* because it is used by libthread_db to find # some non-exported symbols in order to detect if threading support # should be enabled. These symbols are _not_ exported, and we can't easily # export them retroactively without changing the ABI. So we have to # continue to "export" them via .symtab, instead of .dynsym :-( # But we also want to keep .symtab and .strtab of other libraries since some # debugging tools currently require these sections directly inside the main # files - specifically valgrind and PurifyPlus. export STRIP_KEEP_SYMTAB=*.so* # Make sure we will create the gconv-modules.cache mkdir -p %{buildroot}%{_libdir}/gconv touch %{buildroot}%{_libdir}/gconv/gconv-modules.cache # Install base glibc make %{?_smp_mflags} install_root=%{buildroot} install -C cc-base install_optimized_variant() { local dirname="$1"; shift local subdir="$1"; shift local subdir_up="$1"; shift cd "cc-$dirname" destdir=$RPM_BUILD_ROOT/%{_lib}/$subdir mkdir -p $destdir # Don't run a complete make install, we know which libraries # we want for lib in libc math/libm nptl/libpthread rt/librt nptl_db/libthread_db do libbase=${lib#*/} libbaseso=$(basename $RPM_BUILD_ROOT/%{_lib}/${libbase}-*.so) # Only install if different from base lib if cmp -s ${lib}.so ../cc-base/${lib}.so; then ln -sf $subdir_up/$libbaseso $destdir/$libbaseso else cp -a ${lib}.so $destdir/$libbaseso fi done cd .. cc-base/elf/ldconfig -vn $destdir } # Install power-optimized glibc %if %{optimize_power} %if %{powerpc_optimize_cpu_power4} install_optimized_variant power4 power4 ".." %endif %if %{powerpc_optimize_cpu_power6} install_optimized_variant power6 power6 ".." %endif %if %{powerpc_optimize_cpu_power7} install_optimized_variant power7 power7 ".." %endif %if %{powerpc_optimize_cpu_cell} install_optimized_variant ppc-cell-be ppc-cell-be ".." %endif %if %{powerpc_optimize_cpu_power6} # power6 is compatible with power6x # doing a directory symlink doesnt work, ldconfig follows them and accepts only the first real dir if test -d %{buildroot}/%{_lib}/power6; then mkdir -p %{buildroot}/%{_lib}/power6x for i in %{buildroot}/%{_lib}/power6/*.so; do b=$(basename $i) ln -vs ../power6/$b %{buildroot}/%{_lib}/power6x/$b done cc-base/elf/ldconfig -vn %{buildroot}/%{_lib}/power6x fi %endif %endif # optimize_power %ifarch i686 x86_64 cd cc-noelision destdir=$RPM_BUILD_ROOT/%{_lib}/noelision mkdir -p $destdir install -m 755 nptl/libpthread.so $destdir/libpthread-%{version}.so cd .. cc-base/elf/ldconfig -vn $destdir %endif # Install locales %if %{build_locales} # XXX Do not install locales in parallel! cd cc-base # localedef creates hardlinks to other locales if possible # this will not work if we generate them in parallel. # thus we need to run fdupes on /usr/lib/locale/ # Still, on my system this is a speed advantage: # non-parallel build for install-locales: 9:34mins # parallel build with fdupes: 7:08mins make %{?_smp_mflags} install_root=%{buildroot} localedata/install-locales %fdupes %{buildroot}/usr/lib/locale cd .. %endif # Create file list for glibc-locale package %{find_lang} libc # Prepare obsolete/, used only on some architectures: export RPM_BUILD_ROOT %ifarch i586 mkdir -p %{buildroot}/%{_lib}/obsolete %endif # NPTL is not usable outside of glibc, so include # the generic one (RH#162634) cp -av bits/stdio-lock.h %{buildroot}%{_includedir}/bits/stdio-lock.h # Miscelanna: install -m 0700 glibc_post_upgrade %{buildroot}%{_sbindir} install -m 644 %{SOURCE7} %{buildroot}/etc install -m 644 %{SOURCE5} %{buildroot}/etc install -m 644 posix/gai.conf %{buildroot}/etc mkdir -p %{buildroot}/etc/default install -m 644 nis/nss %{buildroot}/etc/default/ mkdir -p %{buildroot}%{_includedir}/resolv install -m 0644 resolv/mapv4v6addr.h %{buildroot}%{_includedir}/resolv/ install -m 0644 resolv/mapv4v6hostent.h %{buildroot}%{_includedir}/resolv/ %if %{build_html} mkdir -p %{buildroot}%{_datadir}/doc/glibc cp -p cc-base/manual/libc/*.html %{buildroot}%{_datadir}/doc/glibc %endif cd manpages; make install_root=%{buildroot} install; cd .. # crypt_blowfish man pages pushd crypt_blowfish-%{crypt_bf_version} install -m755 -d %{buildroot}%{_mandir}/man3 install -m644 *.3 %{buildroot}%{_mandir}/man3 popd # nscd tools: cp nscd/nscd.conf %{buildroot}/etc mkdir -p %{buildroot}/etc/init.d ln -sf /sbin/service %{buildroot}/usr/sbin/rcnscd mkdir -p %{buildroot}/run/nscd touch %{buildroot}/run/nscd/{passwd,group,hosts,services,netgroup} touch %{buildroot}/run/nscd/{socket,nscd.pid} # # Create ld.so.conf # cat > %{buildroot}/etc/ld.so.conf <>"$l" cat "$l.d"/* >>"$l" done /usr/sbin/iconvconfig %post info %install_info --info-dir=%{_infodir} %{_infodir}/libc.info.gz %postun info %install_info_delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz %pre -n nscd getent group nscd >/dev/null || %{_sbindir}/groupadd -r nscd getent passwd nscd >/dev/null || %{_sbindir}/useradd -r -g nscd -c "User for nscd" -s /sbin/nologin -d /run/nscd nscd %service_add_pre nscd.service %preun -n nscd %service_del_preun nscd.service %post -n nscd %service_add_post nscd.service mkdir -p /run/nscd # Previously we had nscd.socket, remove it test -x /usr/bin/systemctl && /usr/bin/systemctl stop nscd.socket 2>/dev/null || : test -x /usr/bin/systemctl && /usr/bin/systemctl disable nscd.socket 2>/dev/null || : # Hard removal in case the above did not work rm -f /etc/systemd/system/sockets.target.wants/nscd.socket exit 0 %postun -n nscd %service_del_postun nscd.service exit 0 %if %{normal_build} %files ####################################################################### ### ### FILES ### ####################################################################### # glibc %defattr(-,root,root) %doc LICENSES %config(noreplace) /etc/bindresvport.blacklist %config /etc/ld.so.conf %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache %config(noreplace) /etc/rpc %verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf %verify(not md5 size mtime) %config(noreplace) /etc/gai.conf %config(noreplace) /etc/default/nss %doc %{_mandir}/man1/gencat.1.gz %doc %{_mandir}/man1/getconf.1.gz %doc %{_mandir}/man5/* /%{_lib}/ld-%{version}.so # Each architecture has a different name for the dynamic linker: %ifarch %arm %ifarch armv6hl armv7hl /%{_lib}/ld-linux-armhf.so.3 # Keep compatibility link /%{_lib}/ld-linux.so.3 %else /%{_lib}/ld-linux.so.3 %endif %endif %ifarch ia64 /%{_lib}/ld-linux-ia64.so.2 %endif %ifarch ppc s390 mips hppa m68k /%{_lib}/ld.so.1 %endif %ifarch ppc64 /%{_lib}/ld64.so.1 %endif %ifarch ppc64le /%{_lib}/ld64.so.2 %endif %ifarch s390x /lib/ld64.so.1 /%{_lib}/ld64.so.1 %endif %ifarch x86_64 /%{_lib}/ld-linux-x86-64.so.2 %endif %ifarch %ix86 %sparc /%{_lib}/ld-linux.so.2 %endif %ifarch aarch64 /lib/ld-linux-aarch64.so.1 /%{_lib}/ld-linux-aarch64.so.1 %endif %ifarch %ix86 x86_64 ppc ppc64 s390 s390x # LSB /%{_lib}/*-lsb*.so.3 %endif /%{_lib}/libBrokenLocale-%{version}.so /%{_lib}/libBrokenLocale.so.1 /%{_lib}/libSegFault.so /%{_lib}/libanl-%{version}.so /%{_lib}/libanl.so.1 /%{_lib}/libc-%{version}.so /%{_lib}/libc.so.6* /%{_lib}/libcidn-%{version}.so /%{_lib}/libcidn.so.1 /%{_lib}/libcrypt-%{version}.so /%{_lib}/libcrypt.so.1 /%{_lib}/libowcrypt-%{version}.so /%{_lib}/libowcrypt.so.1 /%{_lib}/libdl-%{version}.so /%{_lib}/libdl.so.2* /%{_lib}/libm-%{version}.so /%{_lib}/libm.so.6* %ifarch x86_64 /%{_lib}/libmvec-%{version}.so /%{_lib}/libmvec.so.1 %endif /%{_lib}/libnsl-%{version}.so /%{_lib}/libnsl.so.1 /%{_lib}/libnss_compat-%{version}.so /%{_lib}/libnss_compat.so.2 /%{_lib}/libnss_db-%{version}.so /%{_lib}/libnss_db.so.2 /%{_lib}/libnss_dns-%{version}.so /%{_lib}/libnss_dns.so.2 /%{_lib}/libnss_files-%{version}.so /%{_lib}/libnss_files.so.2 /%{_lib}/libnss_hesiod-%{version}.so /%{_lib}/libnss_hesiod.so.2 /%{_lib}/libnss_nis-%{version}.so /%{_lib}/libnss_nis.so.2 /%{_lib}/libnss_nisplus-%{version}.so /%{_lib}/libnss_nisplus.so.2 /%{_lib}/libpthread-%{version}.so /%{_lib}/libpthread.so.0 /%{_lib}/libresolv-%{version}.so /%{_lib}/libresolv.so.2 /%{_lib}/librt-%{version}.so /%{_lib}/librt.so.1 /%{_lib}/libthread_db-1.0.so /%{_lib}/libthread_db.so.1 /%{_lib}/libutil-%{version}.so /%{_lib}/libutil.so.1 %define optimized_libs() \ %dir %attr(0755,root,root) /%{_lib}/%1\ /%{_lib}/%1/libc-%{version}.so\ /%{_lib}/%1/libc.so.6*\ /%{_lib}/%1/libm-%{version}.so\ /%{_lib}/%1/libm.so.6*\ /%{_lib}/%1/libpthread-%{version}.so\ /%{_lib}/%1/libpthread.so.0\ /%{_lib}/%1/librt-%{version}.so\ /%{_lib}/%1/librt.so.1\ /%{_lib}/%1/libthread_db-1.0.so\ /%{_lib}/%1/libthread_db.so.1 %if %{optimize_power} %if %{powerpc_optimize_cpu_power4} %{optimized_libs power4} %endif %if %{powerpc_optimize_cpu_power6} %{optimized_libs power6} %{optimized_libs power6x} %endif %if %{powerpc_optimize_cpu_power7} %{optimized_libs power7} %endif %if %{powerpc_optimize_cpu_cell} %{optimized_libs ppc-cell-be} %endif %endif # optimize_power %ifarch i686 x86_64 /%{_lib}/noelision %endif %dir %attr(0700,root,root) /var/cache/ldconfig /sbin/ldconfig %{_bindir}/gencat %{_bindir}/getconf %{_bindir}/getent %{_bindir}/iconv %attr(755,root,root) %{_bindir}/ldd %ifarch %ix86 sparc sparcv9 m68k %{_bindir}/lddlibc4 %endif %{_bindir}/locale %{_bindir}/localedef %dir %attr(0755,root,root) %{_libexecdir}/getconf %{_libexecdir}/getconf/* %{_sbindir}/glibc_post_upgrade %{_sbindir}/iconvconfig %ifarch i586 %files obsolete %defattr (755,root,root,755) /%{_lib}/obsolete %endif %files locale -f libc.lang %defattr(-,root,root) %{_datadir}/locale/locale.alias %if %{build_locales} /usr/lib/locale %endif %{_libdir}/gconv %files devel %defattr(-,root,root) %doc COPYING COPYING.LIB NEWS README BUGS CONFORMANCE %doc %{_mandir}/man1/catchsegv.1.gz %doc %{_mandir}/man1/rpcgen.1.gz %doc %{_mandir}/man3/* %{_bindir}/catchsegv %{_bindir}/rpcgen %{_bindir}/sprof %{_includedir}/* %{_libdir}/*.o %{_libdir}/*.so # These static libraries are needed even for shared builds %{_libdir}/libc_nonshared.a %{_libdir}/libg.a %{_libdir}/libieee.a %ifarch ppc ppc64 ppc64le s390 s390x sparc sparcv8 sparcv9 sparcv9v # This is not built on sparc64. %{_libdir}/libnldbl_nonshared.a %endif %{_libdir}/libmcheck.a %ifarch x86_64 %{_libdir}/libmvec_nonshared.a %endif %{_libdir}/libpthread_nonshared.a %{_libdir}/librpcsvc.a %files devel-static %defattr(-,root,root) %{_libdir}/libBrokenLocale.a %{_libdir}/libanl.a %{_libdir}/libc.a %{_libdir}/libcrypt.a %{_libdir}/libowcrypt.a %{_libdir}/libdl.a %{_libdir}/libm.a %ifarch x86_64 %{_libdir}/libmvec.a %endif %{_libdir}/libnsl.a %{_libdir}/libpthread.a %{_libdir}/libresolv.a %{_libdir}/librt.a %{_libdir}/libutil.a %ifnarch i686 %files info %defattr(-,root,root) %doc %{_infodir}/libc.info.gz %doc %{_infodir}/libc.info-?.gz %doc %{_infodir}/libc.info-??.gz %if %{build_html} %files html %defattr(-,root,root) %doc %{_prefix}/share/doc/glibc %endif %files i18ndata %defattr(-,root,root) %{_prefix}/share/i18n %files -n nscd %defattr(-,root,root) %config(noreplace) /etc/nscd.conf %{_sbindir}/nscd %{_sbindir}/rcnscd /usr/lib/systemd/system/nscd.service %dir /usr/lib/tmpfiles.d /usr/lib/tmpfiles.d/nscd.conf %dir %attr(0755,root,root) %ghost /run/nscd %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /run/nscd/nscd.pid %attr(0666,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /run/nscd/socket %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /run/nscd/passwd %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /run/nscd/group %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /run/nscd/hosts %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /run/nscd/services %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /run/nscd/netgroup %endif # !i686 %if %{build_profile} %files profile %defattr(-,root,root) %{_libdir}/libc_p.a %{_libdir}/libBrokenLocale_p.a %{_libdir}/libanl_p.a %{_libdir}/libm_p.a %ifarch x86_64 %{_libdir}/libmvec_p.a %endif %{_libdir}/libcrypt_p.a %{_libdir}/libowcrypt_p.a %{_libdir}/libpthread_p.a %{_libdir}/libresolv_p.a %{_libdir}/libnsl_p.a %{_libdir}/librt_p.a %{_libdir}/librpcsvc_p.a %{_libdir}/libutil_p.a %{_libdir}/libdl_p.a %endif %ifnarch i686 %files extra %defattr(-,root,root) %{_bindir}/makedb /var/lib/misc/Makefile %endif # !i686 %endif # %{normal_build} %if %{utils_build} %files %defattr(-,root,root) /%{_lib}/libmemusage.so /%{_lib}/libpcprofile.so %dir %{_libdir}/audit %{_libdir}/audit/sotruss-lib.so %{_bindir}/memusage %{_bindir}/memusagestat %{_bindir}/mtrace %{_bindir}/pcprofiledump %{_bindir}/sotruss %{_bindir}/xtrace %{_bindir}/pldd %endif # %{utils_build} %changelog