[Bug 246322] ld.bfd error on releng/11.4 confuses many autoconf scripts
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Aug 5 15:28:05 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246322
--- Comment #14 from Conrad Meyer <cem at freebsd.org> ---
Could the cflags be more constrained to the specific problematic CUs? For gcc
crt (probably dead now?), the exclusion should only be needed for crtend.o/So.
That could either be a Makefile change, or we could #if 0 these lines from
crtstuff.c?
https://svnweb.freebsd.org/base/head/contrib/gcc/crtstuff.c?revision=169690&view=markup&pathrev=209294#l483
(inside a defined(CRT_END) section starting at line 446).
For llvm csu, the issue reported was specific to i386 crt1.o; globally
disabling unwind seems heavy-handed. Ideally we get a _start frame on i386,
but as a first step we should undisable these frames on !i386.
I don't see any obvious reason llvm csu would actually emit any special
last-CIE eh_frame value for i386; unlike the GNU one above, there isn't any
eh_frame section symbol with magic zero value in any of the lib/csu code. The
weirdest thing about i386 crt1.o is that it has two DW_TAG_compile_units and
also two CIEs.
Supposing that is ld.bfd's problem, could crt1 be a .a?
Alternatively, we could disable the unwind directives in crt1_s.S, keeping
unwind directives for the rest of crt1.o (_start1, etc). We'd lose _start, but
still have a _start1 frame below main.
(There is a special __EH_FRAME_LIST_END__ in
contrib/llvm-project/compiler-rt/lib/crt/crtend.c, but as far as I can tell we
don't build that file into userspace anywhere and it wouldn't be impacted by
lib/csu/Makefile.inc CFLAGS. We use the one in lib/csu/common/crtend.c.)
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-toolchain
mailing list