http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52489
Bug #: 52489
Summary: LTO drops init_array/fini_array sections
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: lto
AssignedTo: [email protected]
ReportedBy: [email protected]
Hi!
When both optimization (-O > 0) and LTO are enabled then init_array and
fini_array sections are missing from the final binary. Without -flto or with
-O0 these sections are not removed.
This prevents building e.g. glibc with LTO (check for init/fini array fails
because the compiled binary does not contain them - I'v checked it by hand
also).
Here is the conftest code:
int _start (void) { return 0; }
int __start (void) { return 0; }
int foo (void) { return 1; }
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
CFLAGS: -O2 -flto -static -nostartfiles -nostdlib
This bug may be the same with #51255!