Summary: | sys-libs/glibc: splitdebug strips two times some files. | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Diego Elio Pettenò (RETIRED) <flameeyes> |
Component: | Core | Assignee: | Gentoo Toolchain Maintainers <toolchain> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | solar |
Priority: | High | Keywords: | InVCS, REGRESSION |
Version: | 2.1 | ||
Hardware: | AMD64 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 933986 | ||
Attachments: | Double-stripped files |
Description
Diego Elio Pettenò (RETIRED)
2006-01-07 11:00:59 UTC
Strange that your the first one to hit this. I've rebuilt glibc several times. If it's not a problem with just your install then I suppose we can add a [ "${RESTRICT//*splitdebug*/true}" == "true" ] && return 0 to the save_elf_debug() function of prepstrip Might be because of multilib? Not sure. It might also because of -g3 in CFLAGS, but I would be suprised if that is the case (for the news, the whole rest of the system is built with -g3). It's for sure not --as-needed, as I was able to build without splitdebug, both with and without --as-needed. Anyway, the .debug.debug is for sure caused by splitdebug: prepallstrip called from the ebuild creates the first /usr/lib/debug directory, then it goes on and restrip it, again. Okay I can completely rule out the --as-needed route as this night I was able to build glibc while using --as-needed and bash still works. Remains splitdebug/multilib and -g3. I'll see if I can try -g3 today and see if it's that... also if I'm not really happy to do so :P Created attachment 76700 [details]
Double-stripped files
Okay, I can confirm the debug.debug problem (splitdebug run two times) and I'm attaching a list of files that are created with debug.debug names.
The system didn't broke this time with only splitdebug and no -g3 so the breakage comes from that instead.
Index: prepstrip =================================================================== --- prepstrip (revision 2558) +++ prepstrip (working copy) @@ -21,6 +21,9 @@ [ "${FEATURES//*splitdebug*/true}" != "true" ] && return 0 + # dont save debug info twice. + [ "${x:7}" == ".debug" ] && return 0 + mkdir -p $(dirname ${y}) ${CHOST}-objcopy --only-keep-debug ${x} ${y}.debug ${CHOST}-objcopy --add-gnu-debuglink=${y}.debug ${x} that prevents double foo.bar.debug.debug but you still have a problem that your *.debug files just got stripped by the double calling of the prepallstrip. Blame glibc for that one. Can't prepstrip just ignore /usr/lib/debug when checking it? That's where all debug info should be anyway. There is no point in that really. Everything thats double stripped will result in non functional debug info anyway. I'd say your best bet is to find out why the prepallstrip is called directly from the ebuild. I can see ebuilds calling it directly only if it were to explicity set 'nostrip' like for the sake of preventing libpthread_db.so or the likes from getting stripped at all. strip is called by glibc because it's needed to get stripping while cross-compiling done correctly this bug happens on multilib systems only and it's because of the way the ebuild has been rewritten: src_install() { foreach abi { glibc_src_install } } glibc_src_install() { prepstrip } thanks for testing, ive updated glibc ebuilds and portage |