diff options
Diffstat (limited to 'elf_x86_64_efi.lds')
| -rw-r--r-- | elf_x86_64_efi.lds | 85 |
1 files changed, 44 insertions, 41 deletions
diff --git a/elf_x86_64_efi.lds b/elf_x86_64_efi.lds index 091187b8..f9811028 100644 --- a/elf_x86_64_efi.lds +++ b/elf_x86_64_efi.lds @@ -4,60 +4,63 @@ OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SECTIONS { - .text 0x0 : { - *(.text.head) - *(.text) - *(.text.*) - *(.gnu.linkonce.t.*) - *(.srodata) - *(.rodata*) - . = ALIGN(16); - _etext = .; + . = 0; + ImageBase = .; + .hash : { *(.hash) } /* this MUST come first! */ + . = ALIGN(4096); + .eh_frame : + { + *(.eh_frame) + } + . = ALIGN(4096); + .text : + { + *(.text) + } + . = ALIGN(4096); + .reloc : + { + *(.reloc) } - .dynamic : { *(.dynamic) } + . = ALIGN(4096); .data : { - *(.sdata) - *(.data) - *(.data1) - *(.data.*) - *(.got.plt) - *(.got) - - /* the EFI loader doesn't seem to like a .bss section, so we stick - * it all into .data: */ - . = ALIGN(16); - _bss = .; - *(.sbss) - *(.scommon) - *(.dynbss) - *(.bss) - *(COMMON) - . = ALIGN(16); - _bss_end = .; + *(.rodata*) + *(.got.plt) + *(.got) + *(.data*) + *(.sdata) + /* the EFI loader doesn't seem to like a .bss section, so we stick + it all into .data: */ + *(.sbss) + *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + *(.rel.local) } . = ALIGN(4096); .vendor_cert : { - *(.vendor_cert) + *(.vendor_cert) } - . = ALIGN(4096); - .rela.dyn : { *(.rela.dyn) } - .rela.plt : { *(.rela.plt) } - .rela.got : { *(.rela.got) } - .rela.data : { *(.rela.data) *(.rela.data*) } - _edata = .; - _data_size = . - _etext; - + .dynamic : { *(.dynamic) } + . = ALIGN(4096); + .rela : + { + *(.rela.data*) + *(.rela.got) + *(.rela.stab) + } . = ALIGN(4096); - .dynsym : { *(.dynsym) } + .dynsym : { *(.dynsym) } . = ALIGN(4096); - .dynstr : { *(.dynstr) } + .dynstr : { *(.dynstr) } . = ALIGN(4096); - /DISCARD/ : + .ignored.reloc : { - *(.rel.reloc) + *(.rela.reloc) *(.eh_frame) *(.note.GNU-stack) } |
