diff --git a/elf_x86_64.x b/elf_x86_64.x index 611793e..4aaf526 100644 --- a/elf_x86_64.x +++ b/elf_x86_64.x @@ -37,14 +37,14 @@ SECTIONS { } .init_array : { PROVIDE_HIDDEN(__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array*)) + KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP(*(.init_array .ctors)) PROVIDE_HIDDEN(__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN(__fini_array_start = .); - KEEP(*(SORT(.fini_array.*))) - KEEP(*(.fini_array*)) + KEEP(*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) + KEEP(*(.fini_array .dtors)) PROVIDE_HIDDEN(__fini_array_end = .); } }