From 08e9b46176ef4470ea450c7f142c7179c6ec1da6 Mon Sep 17 00:00:00 2001 From: David Michael Date: Fri, 2 Dec 2016 17:18:10 -0800 Subject: [PATCH] glibc: sync with upstream, bump to latest stable Upgrade to 2.22 --- .../coreos-overlay/sys-libs/glibc/Manifest | 4 +- .../glibc-2.19-ia64-gcc-4.8-reloc-hack.patch | 32 +++++ .../sys-libs/glibc/files/eblits/common.eblit | 127 ++++++++++-------- .../glibc/files/eblits/pkg_postinst.eblit | 4 +- .../glibc/files/eblits/pkg_preinst.eblit | 4 +- .../glibc/files/eblits/pkg_pretend.eblit | 10 +- .../glibc/files/eblits/src_configure.eblit | 31 +++-- .../glibc/files/eblits/src_install.eblit | 6 +- .../glibc/files/eblits/src_prepare.eblit | 6 +- .../coreos-overlay/sys-libs/glibc/files/nscd | 2 +- ...bc-2.21-r5.ebuild => glibc-2.22-r4.ebuild} | 12 +- .../sys-libs/glibc/metadata.xml | 16 ++- 12 files changed, 164 insertions(+), 90 deletions(-) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/2.19/glibc-2.19-ia64-gcc-4.8-reloc-hack.patch rename sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/{glibc-2.21-r5.ebuild => glibc-2.22-r4.ebuild} (93%) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/Manifest b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/Manifest index dca662d257..f5317a40bf 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/Manifest +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/Manifest @@ -1,3 +1,3 @@ DIST gcc-4.7.3-r1-multilib-bootstrap.tar.bz2 8064097 SHA256 34aec5a59bb4d0ecf908c62fd418461d0f3793238296897687305fd7a1f27299 SHA512 40b93e194ad41a75d649d84d1c49070680f253a13f0617803243bc61c44fed1ca2d0a7572a97ebb79353f312b58b5f6360be916dd7435928cc53935082e15269 WHIRLPOOL bbce19e7fe5c30faa55ddd4e29070f0d1fdfca3a04e8d68e0772260fa9be89ccde63ec92badb490209008df5fee6e53dfdeec4ae51857b90ba298a79315a199f -DIST glibc-2.21-patches-6.tar.bz2 42366 SHA256 01c0373a950b3df9bbd2e466718e3adbbbe0bd4a0fa00376386c95078e45e8f5 SHA512 83dcbcd1733784dfde4fb6aa2431a929e8b5750797fecd30686a6b3145a2ac6a6245957a866cd745dad8e1b976e82ee584ca1b21888dfc26ae839bb7da71e702 WHIRLPOOL 870ee6d0d4a6695d55472870d13cb943cfd7b0a2662be51198d7e9ddb24e4eb26ccee4f032677e95584dccd48685990c144402e147c01b0c90fca30c9fcdfc45 -DIST glibc-2.21.tar.xz 12322092 SHA256 aeeb362437965a5d3f40b151094ca79def04a115bd363fdd4a9a0c69482923b8 SHA512 8cded6693618bec115f678fcbd0b77556f97dfa8337608f66e37224aefa55b38765ba61cb4d58beea37b5934e5ec8e30bad58613707388484906f2a0ce77997d WHIRLPOOL d07fec32bd92eade065a3b6170932b8bd41d07df4aa69dd5a860ebb9678c22bd1e20bf88b1fc05c3ecc18e709c0a63118e12525dc668e0399d7ef7fe4454702d +DIST glibc-2.22-patches-13.tar.bz2 74479 SHA256 ffd1e0f9a41be030e5ce2518d9e84a1fbaa9a4fb2e96f1b85dafb05fea666c86 SHA512 73517fc1502b0733d67ade1d1ba6168415f5da64f37045fac0b10ef57155bf6dfbe1876e4742d2543fcea0c935c179426f6fbb94f0205968392ef903d2f83897 WHIRLPOOL 0eeedaf09eb42e5186256dd41aae00cd2b9b8e3ab929a792e83d0fd8e8a8630d829f01b293588bf59e105eb17ab512416d8d115c3e542cddc34a84b84d56af3d +DIST glibc-2.22.tar.xz 12969072 SHA256 eb731406903befef1d8f878a46be75ef862b9056ab0cde1626d08a7a05328948 SHA512 a8719f3a4f8aa5fa81711116fdafbea5082c6dfd85bd8c4cdce60571910263ab422b35bb8b55a84d37ccb146442133ba60a84d453ca4a439c8ccd35419bd051b WHIRLPOOL f7e707b3776fc197a2e7bf5633721925507237b154bbc1f94b9fc303c87e6fc039ff0758da6ee55b4c1a0daaa87c6e594a6c96e7b00a7ba8ae98ee29918709a7 diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/2.19/glibc-2.19-ia64-gcc-4.8-reloc-hack.patch b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/2.19/glibc-2.19-ia64-gcc-4.8-reloc-hack.patch new file mode 100644 index 0000000000..72a616a046 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/2.19/glibc-2.19-ia64-gcc-4.8-reloc-hack.patch @@ -0,0 +1,32 @@ +https://bugs.gentoo.org/503838 +http://gcc.gnu.org/PR60465 +https://sourceware.org/ml/libc-alpha/2015-12/msg00556.html +https://trofi.github.io/posts/189-glibc-on-ia64-or-how-relocations-bootstrap.html + +newer versions of gcc generate relocations in the elf_get_dynamic_info func +which glibc relies on to populate some info structs. those structs are then +used by ldso to process relocations in itself. glibc requires that there are +no relocations until that point (*after* elf_get_dynamic_info), so we end up +crashing during elf_get_dynamic_info because the relocation has not yet been +processed. + +this hack shuffles the code in a way that tricks gcc into not generating the +relocation. we need to figure out something better for upstream. + +--- a/elf/get-dynamic-info.h ++++ b/elf/get-dynamic-info.h +@@ -66,8 +66,12 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp) + info[DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM + + DT_VERSIONTAGNUM + DT_EXTRANUM] = dyn; + else if ((d_tag_utype) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM) +- info[DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM +- + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn; ++ { ++ d_tag_utype i = ++ DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM ++ + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM; ++ info[i] = dyn; ++ } + ++dyn; + } + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/common.eblit b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/common.eblit index 51ba4a9239..370782b4b4 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/common.eblit +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/common.eblit @@ -27,7 +27,7 @@ alt_headers() { } alt_build_headers() { if [[ -z ${ALT_BUILD_HEADERS} ]] ; then - ALT_BUILD_HEADERS=$(alt_headers) + ALT_BUILD_HEADERS="${EPREFIX}$(alt_headers)" if tc-is-cross-compiler ; then ALT_BUILD_HEADERS=${SYSROOT}$(alt_headers) if [[ ! -e ${ALT_BUILD_HEADERS}/linux/version.h ]] ; then @@ -102,62 +102,82 @@ setup_target_flags() { # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. filter-flags "-fcall-used-g7" append-flags "-fcall-used-g6" - filter-flags "-mvis" - GLIBCMAJOR=$(get_version_component_range 1 ${PV}) - GLIBCMINOR=$(get_version_component_range 2 ${PV}) + # If the CHOST is the basic one (e.g. not sparcv9-xxx already), + # try to pick a better one so glibc can use cpu-specific .S files. + # We key off the CFLAGS to get a good value. Also need to handle + # version skew. + # We can't force users to set their CHOST to their exact machine + # as many of these are not recognized by config.sub/gcc and such :(. + # Note: If the mcpu values don't scale, we might try probing CPP defines. + # Note: Should we factor in -Wa,-AvXXX flags too ? Or -mvis/etc... ? - # set CTARGET_OPT so glibc can use cpu-specific .S files for better performance - # - UltraSPARC T1 (niagara) support requires >= glibc 2.8 - # - UltraSPARC T2 (niagara2) support requires >= glibc 2.7 - - if is_crosscompile || [[ ${PROFILE_ARCH} == "sparc64" ]] || { has_multilib_profile && ! tc-is-cross-compiler; } ; then - case ${ABI}:${CTARGET} in - sparc64:*|\ - default:sparc64*) - filter-flags -Wa,-xarch -Wa,-A - - if is-flagq "-mcpu=niagara2" && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.7 ]] ; then - CTARGET_OPT="sparc64v2-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9b" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b" - elif { is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2" ; } && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.6 ]] ; then - CTARGET_OPT="sparc64v-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9b" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b" - elif is-flagq "-mcpu=ultrasparc3" || is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2"; then - CTARGET_OPT="sparc64b-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9b" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b" - else - CTARGET_OPT="sparc64-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9a" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9a" - fi + local cpu + case ${CTARGET} in + sparc64-*) + case $(get-flag mcpu) in + niagara[234]) + if version_is_at_least 2.8 ; then + cpu="sparc64v2" + elif version_is_at_least 2.4 ; then + cpu="sparc64v" + elif version_is_at_least 2.2.3 ; then + cpu="sparc64b" + fi ;; - *) - if is-flagq "-mcpu=niagara2" && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.7 ]] ; then - CTARGET_OPT="sparcv9v2-unknown-linux-gnu" - elif { is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2" ; } && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.6 ]] ; then - CTARGET_OPT="sparcv9v-unknown-linux-gnu" - elif is-flagq "-mcpu=ultrasparc3" || is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - else - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi + niagara) + if version_is_at_least 2.4 ; then + cpu="sparc64v" + elif version_is_at_least 2.2.3 ; then + cpu="sparc64b" + fi + ;; + ultrasparc3) + cpu="sparc64b" + ;; + *) + # We need to force at least v9a because the base build doesn't + # work with just v9. + # https://sourceware.org/bugzilla/show_bug.cgi?id=19477 + [[ -z ${cpu} ]] && append-flags "-Wa,-xarch=v9a" ;; esac - else - if is-flagq "-mcpu=niagara2" && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.7 ]] ; then - CTARGET_OPT="sparcv9v2-unknown-linux-gnu" - elif { is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2" ; } && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.6 ]] ; then - CTARGET_OPT="sparcv9v-unknown-linux-gnu" - elif is-flagq "-mcpu=ultrasparc3" || is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - elif { is_crosscompile && want_nptl; } || is-flagq "-mcpu=ultrasparc2" || is-flagq "-mcpu=ultrasparc"; then - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - fi + ;; + sparc-*) + case $(get-flag mcpu) in + niagara[234]) + if version_is_at_least 2.8 ; then + cpu="sparcv9v2" + elif version_is_at_least 2.4 ; then + cpu="sparcv9v" + elif version_is_at_least 2.2.3 ; then + cpu="sparcv9b" + else + cpu="sparcv9" + fi + ;; + niagara) + if version_is_at_least 2.4 ; then + cpu="sparcv9v" + elif version_is_at_least 2.2.3 ; then + cpu="sparcv9b" + else + cpu="sparcv9" + fi + ;; + ultrasparc3) + cpu="sparcv9b" + ;; + v9|ultrasparc) + cpu="sparcv9" + ;; + v8|supersparc|hypersparc|leon|leon3) + cpu="sparcv8" + ;; + esac + ;; + esac + [[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}" ;; esac } @@ -298,8 +318,9 @@ setup_env() { unset LD_RUN_PATH unset LD_ASSUME_KERNEL - multilib_env ${CTARGET_OPT:-${CTARGET}} if is_crosscompile || tc-is-cross-compiler ; then + multilib_env ${CTARGET_OPT:-${CTARGET}} + if ! use multilib ; then MULTILIB_ABIS=${DEFAULT_ABI} else diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_postinst.eblit b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_postinst.eblit index 9bf6336146..827cba9b51 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_postinst.eblit +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_postinst.eblit @@ -6,9 +6,9 @@ eblit-glibc-pkg_postinst() { # nothing to do if just installing headers just_headers && return - if ! tc-is-cross-compiler && [[ -x ${ROOT}/usr/sbin/iconvconfig ]] ; then + if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then # Generate fastloading iconv module configuration file. - "${ROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}" + "${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}" fi if ! is_crosscompile && [[ ${ROOT} == "/" ]] ; then diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_preinst.eblit b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_preinst.eblit index 4c19b76728..44735dadfc 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_preinst.eblit +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_preinst.eblit @@ -11,7 +11,7 @@ glibc_sanity_check() { cd / #228809 - # We enter ${D} so to avoid trouble if the path contains + # We enter ${ED} so to avoid trouble if the path contains # special characters; for instance if the path contains the # colon character (:), then the linker will try to split it # and look for the libraries in an unexpected place. This can @@ -49,7 +49,7 @@ eblit-glibc-pkg_preinst() { ## COREOS: host.conf is not installed [[ ${ROOT} != "/" ]] && return 0 - [[ -d ${D}/$(get_libdir) ]] || return 0 + [[ -d ${ED}/$(get_libdir) ]] || return 0 glibc_sanity_check # For newer EAPIs, this was run in pkg_pretend. diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_pretend.eblit b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_pretend.eblit index 1e16dfc421..03c947f3e3 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_pretend.eblit +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/pkg_pretend.eblit @@ -56,13 +56,15 @@ eblit-glibc-pkg_pretend() { check_devpts fi - # prevent native builds from downgrading ... maybe update to allow people - # to change between diff -r versions ? (2.3.6-r4 -> 2.3.6-r2) + # Prevent native builds from downgrading. if [[ ${MERGE_TYPE} != "buildonly" ]] && \ [[ ${ROOT} == "/" ]] && \ [[ ${CBUILD} == ${CHOST} ]] && \ [[ ${CHOST} == ${CTARGET} ]] ; then - if has_version '>'${CATEGORY}/${PF} ; then + # The high rev # is to allow people to downgrade between -r# versions. + # We want to block 2.20->2.19, but 2.20-r3->2.20-r2 should be fine. + # Hopefully we never actually use a r# this high. + if has_version ">${CATEGORY}/${P}-r10000" ; then eerror "Sanity check to keep you from breaking your system:" eerror " Downgrading glibc is not supported and a sure way to destruction" die "aborting to save your system" @@ -72,7 +74,7 @@ eblit-glibc-pkg_pretend() { then eerror "Your patched vendor kernel is broken. You need to get an" eerror "update from whoever is providing the kernel to you." - eerror "http://sourceware.org/bugzilla/show_bug.cgi?id=5227" + eerror "https://sourceware.org/bugzilla/show_bug.cgi?id=5227" eerror "http://bugs.gentoo.org/262698" die "keeping your system alive, say thank you" fi diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_configure.eblit b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_configure.eblit index 954508ca51..396bce52ca 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_configure.eblit +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_configure.eblit @@ -105,23 +105,35 @@ glibc_do_configure() { $(use_enable profile) $(use_with gd) --with-headers=$(alt_build_headers) - --prefix=/usr - --libdir=/usr/$(get_libdir) - --mandir=/usr/share/man - --infodir=/usr/share/info - --libexecdir=/usr/$(get_libdir)/misc/glibc + --prefix="${EPREFIX}/usr" + --sysconfdir="${EPREFIX}/etc" + --localstatedir="${EPREFIX}/var" + --libdir='$(prefix)'/$(get_libdir) + --mandir='$(prefix)'/share/man + --infodir='$(prefix)'/share/info + --libexecdir='$(libdir)'/misc/glibc --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion="$(glibc_banner)" $(use_multiarch || echo --disable-multi-arch) - --enable-obsolete-rpc + $(in_iuse rpc && use_enable rpc obsolete-rpc || echo --enable-obsolete-rpc) $(in_iuse systemtap && use_enable systemtap) $(in_iuse nscd && use_enable nscd) ${EXTRA_ECONF} ) + # We rely on sys-libs/timezone-data for timezone tools normally. + if version_is_at_least 2.23 ; then + myconf+=( $(use_enable vanilla timezone-tools) ) + fi + + # These libs don't have configure flags. + ac_cv_lib_audit_audit_log_user_avc_message=$(in_iuse audit && usex audit || echo no) + ac_cv_lib_cap_cap_init=$(in_iuse caps && usex caps || echo no) + # There is no configure option for this and we need to export it # since the glibc build will re-run configure on itself - export libc_cv_slibdir=/$(get_libdir) + export libc_cv_rootsbindir="${EPREFIX}/sbin" + export libc_cv_slibdir="${EPREFIX}/$(get_libdir)" # We take care of patching our binutils to use both hash styles, # and many people like to force gnu hash style only, so disable @@ -199,6 +211,9 @@ toolchain-glibc_headers_configure() { libc_cv_z_relro=yes libc_mips_abi=${ABI} libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard) + # These libs don't have configure flags. + ac_cv_lib_audit_audit_log_user_avc_message=no + ac_cv_lib_cap_cap_init=no ) einfo "Forcing cached settings:" for v in "${vars[@]}" ; do @@ -224,7 +239,7 @@ toolchain-glibc_headers_configure() { --build=${CBUILD_OPT:-${CBUILD}} --host=${CTARGET_OPT:-${CTARGET}} --with-headers=$(alt_build_headers) - --prefix=/usr + --prefix="${EPREFIX}/usr" ${EXTRA_ECONF} ) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_install.eblit b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_install.eblit index faadfb8af6..a5be641ddb 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_install.eblit +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_install.eblit @@ -102,7 +102,7 @@ toolchain-glibc_src_install() { has ${ldso_abi} $(get_install_abis) || continue ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}" - if [[ ! -L ${D}/${ldso_name} && ! -e ${D}/${ldso_name} ]] ; then + if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name} fi done @@ -111,7 +111,7 @@ toolchain-glibc_src_install() { # binary to be setuid. This is because the default owners/perms will be # exactly what we want. if in_iuse suid && ! use suid ; then - find "${D}" -name pt_chown -exec chmod -s {} + + find "${ED}" -name pt_chown -exec chmod -s {} + fi ################################################################# @@ -182,7 +182,7 @@ toolchain-glibc_headers_install() { # Make sure we install the sys-include symlink so that when # we build a 2nd stage cross-compiler, gcc finds the target # system headers correctly. See gcc/doc/gccinstall.info - dosym usr/include /usr/${CTARGET}/sys-include + dosym usr/include $(alt_prefix)/sys-include } src_strip() { diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_prepare.eblit b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_prepare.eblit index 162cf530c8..4a5c8af7f6 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_prepare.eblit +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/eblits/src_prepare.eblit @@ -43,10 +43,10 @@ eblit-glibc-src_prepare() { # Glibc is stupid sometimes, and doesn't realize that with a # static C-Only gcc, -lgcc_eh doesn't exist. - # http://sourceware.org/ml/libc-alpha/2003-09/msg00100.html - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html + # https://sourceware.org/ml/libc-alpha/2003-09/msg00100.html + # https://sourceware.org/ml/libc-alpha/2005-02/msg00042.html # But! Finally fixed in recent versions: - # http://sourceware.org/ml/libc-alpha/2012-05/msg01865.html + # https://sourceware.org/ml/libc-alpha/2012-05/msg01865.html if ! version_is_at_least 2.16 ; then echo 'int main(){}' > "${T}"/gcc_eh_test.c if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/nscd b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/nscd index e47f9b98bd..ff7154335f 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/nscd +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/files/nscd @@ -1,4 +1,4 @@ -#!/sbin/runscript +#!/sbin/openrc-run # Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/glibc-2.21-r5.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/glibc-2.22-r4.ebuild similarity index 93% rename from sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/glibc-2.21-r5.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/glibc-2.22-r4.ebuild index 50b7be7e1e..a3dfd72615 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/glibc-2.21-r5.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/glibc-2.22-r4.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2015 Gentoo Foundation +# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ @@ -27,7 +27,7 @@ case ${PV} in ;; esac GCC_BOOTSTRAP_VER="4.7.3-r1" -PATCH_VER="6" # Gentoo patchset +PATCH_VER="13" # Gentoo patchset : ${NPTL_KERN_VER:="2.6.32"} # min kernel version nptl requires IUSE="debug gd hardened multilib nscd selinux systemtap profile suid vanilla crosscompile_opts_headers-only" @@ -155,20 +155,20 @@ done eblit-src_unpack-pre() { [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib && unpack gcc-${GCC_BOOTSTRAP_VER}-multilib-bootstrap.tar.bz2 + # Bug 558636 we don't apply the pie works around for 2.22. It shoud have the support. #558636 + GLIBC_PATCH_EXCLUDE+=" 00_all_0002-workaround-crash-when-handling-signals-in-static-PIE.patch" + GLIBC_PATCH_EXCLUDE+=" 00_all_0012-disable-PIE-when-checking-for-PIC-default.patch" } eblit-src_prepare-post() { cd "${S}" + epatch "${FILESDIR}"/2.19/${PN}-2.19-ia64-gcc-4.8-reloc-hack.patch #503838 ## COREOS: features and bug fixes missing from the Gentoo patch set. epatch "${FILESDIR}"/2.23/glibc-2.23-gshadow-handle-erange.patch epatch "${FILESDIR}"/2.23/glibc-2.23-c-utf8-locale.patch if use hardened ; then - einfo "Patching to get working PIE binaries on PIE (hardened) platforms" - gcc-specs-pie && epatch "${FILESDIR}"/2.17/glibc-2.17-hardened-pie.patch - epatch "${FILESDIR}"/2.20/glibc-2.20-hardened-inittls-nosysenter.patch - # We don't enable these for non-hardened as the output is very terse -- # it only states that a crash happened. The default upstream behavior # includes backtraces and symbols. diff --git a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/metadata.xml b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/metadata.xml index a113d4369b..e6ebe220ca 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/metadata.xml +++ b/sdk_container/src/third_party/coreos-overlay/sys-libs/glibc/metadata.xml @@ -1,13 +1,17 @@ -toolchain + + toolchain@gentoo.org + Gentoo Toolchain Project + - When USE=hardened, allow fortify/stack violations to dump core (SIGABRT) and not kill self (SIGKILL) - build memusage and memusagestat tools - Build, and enable support for, the Name Service Cache Daemon - Make internal pt_chown helper setuid -- not needed if using Linux and have /dev/pts mounted with gid=5 - enable systemtap static probe points + When USE=hardened, allow fortify/stack violations to dump core (SIGABRT) and not kill self (SIGKILL) + build memusage and memusagestat tools + Build, and enable support for, the Name Service Cache Daemon + Enable obsolete RPC/NIS layers (disabling is experimental -- see bug 381391) + Make internal pt_chown helper setuid -- not needed if using Linux and have /dev/pts mounted with gid=5 + enable systemtap static probe points cpe:/a:gnu:glibc