diff options
Diffstat (limited to 'gnuefi/elf_ia32_efi.lds')
-rw-r--r-- | gnuefi/elf_ia32_efi.lds | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/gnuefi/elf_ia32_efi.lds b/gnuefi/elf_ia32_efi.lds index 5eec529..a84c673 100644 --- a/gnuefi/elf_ia32_efi.lds +++ b/gnuefi/elf_ia32_efi.lds @@ -39,18 +39,25 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; - *(SORT_BY_NAME(.init_array)) - _init_array_end = .; + __init_array_start = .; + *(SORT(.init_array.*)) + *(.init_array) + __init_array_end = .; + . = ALIGN(16); __CTOR_LIST__ = .; - *(SORT_BY_NAME(.ctors)) + *(SORT(.ctors.*)) + *(.ctors) __CTOR_END__ = .; + . = ALIGN(16); __DTOR_LIST__ = .; - *(SORT_BY_NAME(.dtors)) + *(SORT(.dtors.*)) + *(.dtors) __DTOR_END__ = .; - _fini_array = .; - *(SORT_BY_NAME(.fini_array)) - _fini_array_end = .; + . = ALIGN(16); + __fini_array_start = .; + *(SORT(.fini_array.*)) + *(.fini_array) + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ @@ -70,6 +77,10 @@ SECTIONS *(.rel.got) *(.rel.dyn) *(.rel.stab) + *(.rel.init_array*) + *(.rel.fini_array*) + *(.rel.ctors*) + *(.rel.dtors*) *(.data.rel.ro.local) *(.data.rel.local) *(.data.rel.ro) |