summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2019-10-18 00:19:20 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2019-10-18 00:22:21 +0100
commitf3872a506edc7da0d987bcf0a90d4709945328a7 (patch)
tree1276d9994ad747f90e20aa43839a264f60462fe6 /sys-libs/glibc/glibc-2.25-r11.ebuild
parentprofiles: Remove x11-base/xorg-proto mask (diff)
downloadgentoo-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.25-r11.ebuild')
-rw-r--r--sys-libs/glibc/glibc-2.25-r11.ebuild25
1 files changed, 22 insertions, 3 deletions
diff --git a/sys-libs/glibc/glibc-2.25-r11.ebuild b/sys-libs/glibc/glibc-2.25-r11.ebuild
index 4b3ac83a890b..0f544aa3101c 100644
--- a/sys-libs/glibc/glibc-2.25-r11.ebuild
+++ b/sys-libs/glibc/glibc-2.25-r11.ebuild
@@ -51,12 +51,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
+
is_crosscompile() {
[[ ${CHOST} != ${CTARGET} ]]
}