| Summary: | cross-ia64-unknown-linux-gnu/gcc: libgcc.a has undefined references to __libunwind_* symbols | ||
|---|---|---|---|
| Product: | Gentoo Linux | Reporter: | Michael Kosarev <russiane39> |
| Component: | [OLD] Development | Assignee: | Gentoo Toolchain Maintainers <toolchain> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | slyfox |
| Priority: | Normal | ||
| Version: | unspecified | ||
| Hardware: | All | ||
| OS: | Linux | ||
| URL: | http://gcc.gnu.org/PR52990 | ||
| Whiteboard: | |||
| Package list: | Runtime testing required: | --- | |
| Attachments: | Output of emerge --info on CHOST | ||
|
Description
Michael Kosarev
2012-04-12 03:51:26 UTC
Created attachment 308601 [details]
Output of emerge --info on CHOST
Some observations:
gcc does not install libunwind.a/.so when --disable-shared flag is passed:
gcc-4.6.2/work/build/ia64-unknown-linux-gnu/libgcc/Makefile:
ifeq ($(enable_shared),yes)
iterator = $(srcdir)/empty.mk $(patsubst %,$(srcdir)/shared-object.mk,$(iter-items))
install-shared = install-shared
ifneq ($(LIBUNWIND),)
install-libunwind = install-libunwind
endif
...
install-leaf: $(install-shared) $(install-libunwind)
and it makes glibc sad.
@toolchain ninjas:
In --disable-shared libunwind* contents should sit in libgcc.a, right?
I guess it's a simple as
libgcc-objects += $(libunwind-objects)
but i can't figure where to plug it to not break all the targets.
glibc build broke when this commit was made: http://sources.gentoo.org/sys-libs/glibc/files/eblits/src_compile.eblit?r1=1.19&r2=1.20 (In reply to comment #3) that wouldn't help because the static unwind objects do not contain __libunwind_xxx symbols. they only show up in the shared objects. in an ia64 build with shared libs, libgcc.a wouldn't refer to __libunwind_xxx either. only libgcc_s.so would. nor would libunwind.a contain the symbols, only libunwind.so. __libunwind_Unwind_GetBSP ./libgcc_s.so.1 __libunwind_Unwind_GetBSP ./unwind-compat_s.o __libunwind_Unwind_GetBSP ./libunwind.so.7 __libunwind_Unwind_GetBSP ./unwind-ia64_s.o gcc could be made to work ... but i'm not sure if it's worth it: - if enable_shared == no, then add the unwind objs to libgcc.a - if enable_shared == no, build unwind-ia64.o with -DLIBUNWIND_ALIASES - edit gcc/config/ia64/unwind-ia64.c and change it to: ... && (defined(SHARED) || defined(LIBUNWIND_ALIASES)) && ... i've restored the glibc hack in the mean time: http://sources.gentoo.org/sys-libs/glibc/files/eblits/src_compile.eblit?r1=1.23&r2=1.24 |