https://sourceware.org/bugzilla/show_bug.cgi?id=23591
Bug ID: 23591
Summary: undefined reference to `__start___sancov_cntrs' when
building with clang + asan + fuzzing + ld.bfd
Product: binutils
Version: unspecified
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: mh-sourceware at glandium dot org
Target Milestone: ---
I haven't figured out a small test case, but here's a real world problem:
Get the Firefox/spidermonkey source from https://hg.mozilla.org/mozilla-central
Create a build directory and run the following from under it:
/path/to/mozilla-central/js/src/configure --enable-project=js --enable-fuzzing
--enable-address-sanitizer --enable-linker=bfd CC=clang
(note this also requires llvm-config, rustc, and cargo)
Then run make -j
The build fails with:
BinSource.cpp:(.text.sancov.module_ctor[sancov.module_ctor]+0x4): undefined
reference to `__start___sancov_cntrs'
BinSource.cpp:(.text.sancov.module_ctor[sancov.module_ctor]+0xb): undefined
reference to `__stop___sancov_cntrs'
BinSource.cpp:(.text.sancov.module_ctor[sancov.module_ctor]+0x17): undefined
reference to `__start___sancov_pcs'
BinSource.cpp:(.text.sancov.module_ctor[sancov.module_ctor]+0x1e): undefined
reference to `__stop___sancov_pcs'
I bisected this to the following commit:
commit 7dba9362c172f1073487536eb137feb2da30b0ff
Author: Alan Modra
Date: Fri Jun 16 19:41:41 2017 +0930
Rewrite __start and __stop symbol handling
This arranges for __start and __stop symbols to be defined before
garbage collection, for all target formats. That should allow the
COFF and PE --gc-sections to keep a singleton orphan input section,
a feature lost by 2017-06-13 commit cbd0eecf26. The fancier ELF
treatment of keeping all input sections associated with a __start or
__stop symbol, from 2015-10-23 commit 1cce69b9dc, is retained.
.startof. and .sizeof. symbols are deliberately not defined before
garbage collection, so these won't affect garbage collection of
sections.
The patch also ensures __start, __stop, .startof. and .sizeof. symbols
are defined before target size_dynamic_sections is called, albeit
with a preliminary value, so that target code doesn't need to cope
with a symbol changing from undefined at size_dynamic_sections to
defined at relocate_section.
Also, a number of problems with the testcases have been fixed.
--
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils