diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2019-10-18 00:19:20 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2019-10-18 00:22:21 +0100 |
commit | f3872a506edc7da0d987bcf0a90d4709945328a7 (patch) | |
tree | 1276d9994ad747f90e20aa43839a264f60462fe6 /sys-libs/glibc/glibc-2.19-r2.ebuild | |
parent | profiles: Remove x11-base/xorg-proto mask (diff) | |
download | gentoo-f3872a506edc7da0d987bcf0a90d4709945328a7.tar.gz gentoo-f3872a506edc7da0d987bcf0a90d4709945328a7.tar.bz2 gentoo-f3872a506edc7da0d987bcf0a90d4709945328a7.zip |
sys-libs/glibc: restore strip quirk for 'libpthread.so.0'
This change effectively reverts commit e14229b10b513a
("sys-libs/glibc: drop prepallstrip, bug #587296")
gdb still relies on libpthread being unstripped.
See https://bugs.gentoo.org/697910 for details and reproducer.
Also see ebuild note that explains indirect mechanics
of how glibc relies on gdb's ability to traverse local symbols.
In EAPI=7 ebuilds (glibc-9999) we do selective stripping.
Reported-by: Minux
Closes: https://bugs.gentoo.org/697910
Bug: https://bugs.gentoo.org/587296
Bug: https://bugs.gentoo.org/46186
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Package-Manager: Portage-2.3.76, Repoman-2.3.17
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'sys-libs/glibc/glibc-2.19-r2.ebuild')
-rw-r--r-- | sys-libs/glibc/glibc-2.19-r2.ebuild | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/sys-libs/glibc/glibc-2.19-r2.ebuild b/sys-libs/glibc/glibc-2.19-r2.ebuild index 20b236f90376..de97f1158877 100644 --- a/sys-libs/glibc/glibc-2.19-r2.ebuild +++ b/sys-libs/glibc/glibc-2.19-r2.ebuild @@ -56,12 +56,31 @@ export CTARGET=${CTARGET:-${CHOST}} if [[ ${CTARGET} == ${CHOST} ]] ; then if [[ ${CATEGORY} == cross-* ]] ; then export CTARGET=${CATEGORY#cross-} - # portage's attempt to strip breaks non-native bianries - # at least on arm: bug #697428 - RESTRICT=strip fi fi +# Note [Disable automatic stripping] +# Disabling automatic stripping for a few reasons: +# - portage's attempt to strip breaks non-native binaries at least on +# arm: bug #697428 +# - portage's attempt to strip libpthread.so.0 breaks gdb thread +# enumeration: bug #697910. This is quite subtle: +# * gdb uses glibc's libthread_db-1.0.so to enumerate threads. +# * libthread_db-1.0.so needs access to libpthread.so.0 local symbols +# via 'ps_pglobal_lookup' symbol defined in gdb. +# * 'ps_pglobal_lookup' uses '.symtab' section table to resolve all +# known symbols in 'libpthread.so.0'. Specifically 'nptl_version' +# (unexported) is used to sanity check compatibility before enabling +# debugging. +# Also see https://sourceware.org/gdb/wiki/FAQ#GDB_does_not_see_any_threads_besides_the_one_in_which_crash_occurred.3B_or_SIGTRAP_kills_my_program_when_I_set_a_breakpoint +# * normal 'strip' command trims '.symtab' +# Thus our main goal here is to prevent 'libpthread.so.0' from +# losing it's '.symtab' entries. +# As Gentoo's strip does not allow us to pass less aggressive stripping +# options and does not check the machine target we disable stripping +# entirely. +RESTRICT=strip + # We need a new-enough binutils/gcc to match upstream baseline. # Also we need to make sure our binutils/gcc supports TLS. COMMON_DEPEND=" |