diff --git a/gnuefi/elf_aarch64_efi.lds b/gnuefi/elf_aarch64_efi.lds index 7657bb3..48d5106 100644 --- a/gnuefi/elf_aarch64_efi.lds +++ b/gnuefi/elf_aarch64_efi.lds @@ -48,10 +48,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -60,10 +60,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/gnuefi/elf_arm_efi.lds b/gnuefi/elf_arm_efi.lds index 3c9f919..0964d35 100644 --- a/gnuefi/elf_arm_efi.lds +++ b/gnuefi/elf_arm_efi.lds @@ -35,10 +35,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -47,10 +47,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/gnuefi/elf_ia32_efi.lds b/gnuefi/elf_ia32_efi.lds index 964530c..0c1f2a7 100644 --- a/gnuefi/elf_ia32_efi.lds +++ b/gnuefi/elf_ia32_efi.lds @@ -39,10 +39,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -51,10 +51,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/gnuefi/elf_ia32_fbsd_efi.lds b/gnuefi/elf_ia32_fbsd_efi.lds index c5c5dae..0377d4f 100644 --- a/gnuefi/elf_ia32_fbsd_efi.lds +++ b/gnuefi/elf_ia32_fbsd_efi.lds @@ -48,10 +48,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -60,10 +60,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/gnuefi/elf_ia64_efi.lds b/gnuefi/elf_ia64_efi.lds index f85cb91..46aee72 100644 --- a/gnuefi/elf_ia64_efi.lds +++ b/gnuefi/elf_ia64_efi.lds @@ -49,10 +49,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -61,10 +61,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/gnuefi/elf_mips64el_efi.lds b/gnuefi/elf_mips64el_efi.lds index 80312bf..3721c56 100644 --- a/gnuefi/elf_mips64el_efi.lds +++ b/gnuefi/elf_mips64el_efi.lds @@ -36,10 +36,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -48,10 +48,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/gnuefi/elf_x86_64_efi.lds b/gnuefi/elf_x86_64_efi.lds index c9564a2..22409de 100644 --- a/gnuefi/elf_x86_64_efi.lds +++ b/gnuefi/elf_x86_64_efi.lds @@ -46,10 +46,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -58,10 +58,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/gnuefi/elf_x86_64_fbsd_efi.lds b/gnuefi/elf_x86_64_fbsd_efi.lds index e8a6825..55bed4a 100644 --- a/gnuefi/elf_x86_64_fbsd_efi.lds +++ b/gnuefi/elf_x86_64_fbsd_efi.lds @@ -44,10 +44,10 @@ SECTIONS * have NULLs which aren't guaranteed to be at the end. */ . = ALIGN(16); - _init_array = .; + __init_array_start = .; *(SORT(.init_array.*)) *(.init_array) - _init_array_end = .; + __init_array_end = .; __CTOR_LIST__ = .; *(SORT(.ctors.*)) *(.ctors) @@ -56,10 +56,10 @@ SECTIONS *(SORT(.dtors.*)) *(.dtors) __DTOR_END__ = .; - _fini_array = .; + __fini_array_start = .; *(SORT(.fini_array.*)) *(.fini_array) - _fini_array_end = .; + __fini_array_end = .; /* the EFI loader doesn't seem to like a .bss section, so we stick it all into .data: */ diff --git a/lib/ctors.S b/lib/ctors.S index fe0f23a..cdd4629 100644 --- a/lib/ctors.S +++ b/lib/ctors.S @@ -10,11 +10,11 @@ */ .section .init_array, "aw", @init_array .p2align 3, 0 - .globl _init_array -_init_array: + .globl __init_array_start +__init_array_start: .p2align 3, 0 - .globl _init_array_end -_init_array_end: + .globl __init_array_end +__init_array_end: .long 0 .section .ctors, "aw", @progbits .p2align 3, 0 @@ -34,11 +34,11 @@ __DTOR_END__: .long 0 .section .fini_array, "aw", @fini_array .p2align 3, 0 - .globl _fini_array -_fini_array: + .globl __fini_array_start +__fini_array_start: .p2align 3, 0 - .globl _fini_array_end -_fini_array_end: + .globl __fini_array_end +__fini_array_end: .long 0 #if defined(__ELF__) && defined(__linux__) diff --git a/lib/entry.c b/lib/entry.c index 21bf0e6..5032f81 100644 --- a/lib/entry.c +++ b/lib/entry.c @@ -13,16 +13,16 @@ * end/END definitions, and the fact that they're mergeable, they can also * have NULLs which aren't guaranteed to be at the end. */ -extern UINTN _init_array, _init_array_end; +extern UINTN __init_array_start, __init_array_end; extern UINTN __CTOR_LIST__, __CTOR_END__; -extern UINTN _fini_array, _fini_array_end; +extern UINTN __fini_array_start, __fini_array_end; extern UINTN __DTOR_LIST__, __DTOR_END__; typedef void (*funcp)(void); static void ctors(void) { - for (funcp *location = (void *)&_init_array; location < (funcp *)&_init_array_end; location++) { + for (funcp *location = (void *)&__init_array_start; location < (funcp *)&__init_array_end; location++) { funcp func = *location; if (location != NULL) func(); @@ -43,7 +43,7 @@ static void dtors(void) func(); } - for (funcp *location = (void *)&_fini_array; location < (funcp *)&_fini_array_end; location++) { + for (funcp *location = (void *)&__fini_array_start; location < (funcp *)&__fini_array_end; location++) { funcp func = *location; if (location != NULL) func();