[Bug sanitizer/55617] static constructors are not being instrumented correctly on darwin
glider at google dot com
gcc-bugzilla@gcc.gnu.org
Tue Jan 29 11:56:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55617
--- Comment #7 from Alexander Potapenko <glider at google dot com> 2013-01-29 11:56:02 UTC ---
Here's the dump of __mod_init_func (the static ctors array):
===================================================
Disassembly of section __DATA.__mod_init_func:
0000000100001040 <__DATA.__mod_init_func>:
100001040: 5c pop %rsp
100001041: 0d 00 00 01 00 or $0x10000,%eax
100001046: 00 00 add %al,(%rax)
100001048: 88 0d 00 00 01 00 mov %cl,0x10000(%rip) #
10001104e <_ret+0xff6e>
===================================================
-- Looks like both __GLOBAL__sub_I_00099_1_cov.cc (0000000100000d88, which is
the analog of _asan.module_ctor in Clang instrumentation) and
__GLOBAL__sub_I_cov.cc (0000000100000d5c, the original module ctor) are present
in __mod_init_func, but are ordered incorrectly.
I've fixed the order using bvi for OS X:
===================================================
0000000100001040 <__DATA.__mod_init_func>:
100001040: 88 0d 00 00 01 00 mov %cl,0x10000(%rip) #
100011046 <_ret+0xff66>
100001046: 00 00 add %al,(%rax)
100001048: 5c pop %rsp
100001049: 0d 00 00 01 00 or $0x10000,%eax
===================================================
and the resulting binary didn't segfault for me.
More information about the Gcc-bugs
mailing list