[Bug 223752] clang __attribute__((constructor)) gets wrong input parameters
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Mon Nov 20 00:57:32 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=223752
--- Comment #11 from Mark Millard <markmi at dsl-only.net> ---
(In reply to dstaesse from comment #8)
(In reply to dstaesse from comment #8)
I took a quick grep for -r325700 (head):
# grep -r __init_array_start /usr/src/* | more
/usr/src/contrib/llvm/tools/lld/ELF/Writer.cpp: Define("__init_array_start",
"__init_array_end", Out::InitArray);
/usr/src/contrib/binutils/ld/scripttempl/elf.sc:
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN
(${USER_LABEL_PREFIX}__init_array_start = .);}}
/usr/src/contrib/binutils/ld/ChangeLog-2006: (__preinit_array_start,
__preinit_array_end, __init_array_start,
/usr/src/lib/csu/common/ignore_init.c:extern void (*__init_array_start[])(int,
char **, char **) __hidden;
/usr/src/lib/csu/common/ignore_init.c: array_size = __init_array_end -
__init_array_start;
/usr/src/lib/csu/common/ignore_init.c: fn = __init_array_start[n];
/usr/src/sys/conf/ldscript.amd64: PROVIDE_HIDDEN (__init_array_start = .);
/usr/src/sys/conf/ldscript.i386: PROVIDE_HIDDEN (__init_array_start = .);
/usr/src/sys/contrib/octeon-sdk/cvmx-shared-linux-o32.ld: PROVIDE
(__init_array_start = .);
/usr/src/sys/contrib/octeon-sdk/cvmx-shared-linux.ld: PROVIDE_HIDDEN
(__init_array_start = .);
/usr/src/sys/contrib/octeon-sdk/cvmx-shared-linux-n32.ld: PROVIDE_HIDDEN
(__init_array_start = .);
Note the ldscript.* are limited to amd64 and i386 mentioning
__init_array_start explicitly. The whole block of text:
.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
}
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
}
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(.fini_array))
KEEP (*(SORT(.fini_array.*)))
PROVIDE_HIDDEN (__fini_array_end = .);
}
seems to only to be for those two ldscript.*'s.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-toolchain
mailing list