From c6281c6a195edee611858a8d802ff5f3dee34aa5 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Tue, 30 Sep 2014 22:47:39 -0400
Subject: [PATCH 63/74] Revert header changes
Revert "Do the same for ia32..."
and "Generate a sane PE header on shim, fallback, and MokManager."
This reverts commit 6744a7ef8eca44948565c3d1244ec931ed3f6fee.
and commit 0e7ba5947eb38b79de2051ecf3b95055e620475c.
These are premature and I can do this without such drastic measures.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
Makefile | 42 +++----------
crt0-efi-ia32.S | 180 -----------------------------------------------------
crt0-efi-x86_64.S | 177 ----------------------------------------------------
elf_ia32_efi.lds | 83 ++++++++++++------------
elf_x86_64_efi.lds | 85 +++++++++++++------------
5 files changed, 97 insertions(+), 470 deletions(-)
delete mode 100644 crt0-efi-ia32.S
delete mode 100644 crt0-efi-x86_64.S
diff --git a/Makefile b/Makefile
index a52984f..5bc513c 100644
--- a/Makefile
+++ b/Makefile
@@ -6,25 +6,16 @@ ARCH = $(shell $(CC) -dumpmachine | cut -f1 -d- | sed s,i[3456789]86,ia32,)
SUBDIRS = Cryptlib lib
+LIB_PATH = /usr/lib64
+
EFI_INCLUDE := /usr/include/efi
EFI_INCLUDES = -nostdinc -ICryptlib -ICryptlib/Include -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol -Iinclude
-ifeq ($(ARCH),ia32)
-LIB_PATH := /usr/lib
-EFI_PATH := /usr/lib/gnuefi
-endif
-LIB_PATH ?= /usr/lib64
-EFI_PATH ?= /usr/lib64/gnuefi
+EFI_PATH := /usr/lib64/gnuefi
LIB_GCC = $(shell $(CC) -print-libgcc-file-name)
EFI_LIBS = -lefi -lgnuefi --start-group Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a --end-group $(LIB_GCC)
-ifeq ($(ARCH),x86_64)
-EFI_CRT_OBJS := crt0-efi-$(ARCH).o
-else ifeq ($(ARCH),ia32)
-EFI_CRT_OBJS := crt0-efi-$(ARCH).o
-else
-EFI_CRT_OBJS ?= $(EFI_PATH)/crt0-efi-$(ARCH).o
-endif
+EFI_CRT_OBJS = $(EFI_PATH)/crt0-efi-$(ARCH).o
EFI_LDS = elf_$(ARCH)_efi.lds
DEFAULT_LOADER := \\\\grub.efi
@@ -61,11 +52,11 @@ ifneq ($(origin VENDOR_DBX_FILE), undefined)
CFLAGS += -DVENDOR_DBX_FILE=\"$(VENDOR_DBX_FILE)\"
endif
-LDFLAGS = -nostdlib -znocombreloc -T $(EFI_LDS) -shared -Bsymbolic -L$(EFI_PATH) -L$(LIB_PATH) -LCryptlib -LCryptlib/OpenSSL
+LDFLAGS = -nostdlib -znocombreloc -T $(EFI_LDS) -shared -Bsymbolic -L$(EFI_PATH) -L$(LIB_PATH) -LCryptlib -LCryptlib/OpenSSL $(EFI_CRT_OBJS)
VERSION = 0.7
-TARGET += shim.efi MokManager.efi.signed fallback.efi.signed
+TARGET = shim.efi MokManager.efi.signed fallback.efi.signed
OBJS = shim.o netboot.o cert.o replacements.o version.o
KEYS = shim_cert.h ocsp.* ca.* shim.crt shim.csr shim.p12 shim.pem shim.key shim.cer
SOURCES = shim.c shim.h netboot.c include/PeImage.h include/wincert.h include/console.h replacements.c replacements.h version.c version.h
@@ -103,17 +94,17 @@ shim.o: $(SOURCES) shim_cert.h
cert.o : cert.S
$(CC) $(CFLAGS) -c -o $@ $<
-shim.so: $(OBJS) Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a lib/lib.a $(EFI_CRT_OBJS)
+shim.so: $(OBJS) Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a lib/lib.a
$(LD) -o $@ $(LDFLAGS) $^ $(EFI_LIBS)
fallback.o: $(FALLBACK_SRCS)
-fallback.so: $(FALLBACK_OBJS) Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a lib/lib.a $(EFI_CRT_OBJS)
+fallback.so: $(FALLBACK_OBJS) Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a lib/lib.a
$(LD) -o $@ $(LDFLAGS) $^ $(EFI_LIBS)
MokManager.o: $(MOK_SOURCES)
-MokManager.so: $(MOK_OBJS) Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a lib/lib.a $(EFI_CRT_OBJS)
+MokManager.so: $(MOK_OBJS) Cryptlib/libcryptlib.a Cryptlib/OpenSSL/libopenssl.a lib/lib.a
$(LD) -o $@ $(LDFLAGS) $^ $(EFI_LIBS) lib/lib.a
Cryptlib/libcryptlib.a:
@@ -137,23 +128,8 @@ SUBSYSTEM := 0xa
LDFLAGS += --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
endif
-ifeq ($(ARCH),x86_64)
-FORMAT := -O binary
-SUBSYSTEM := 0xa
-LDFLAGS += --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
-endif
-
-ifeq ($(ARCH),ia32)
-FORMAT := -O binary
-SUBSYSTEM := 0xa
-LDFLAGS += --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
-endif
-
FORMAT ?= --target efi-app-$(ARCH)
-crt0-efi-$(ARCH).o : crt0-efi-$(ARCH).S
- $(CC) $(CFLAGS) -DEFI_SUBSYSTEM=$(SUBSYSTEM) -c -o $@ $<
-
%.efi: %.so
$(OBJCOPY) -j .text -j .sdata -j .data \
-j .dynamic -j .dynsym -j .rel* \
diff --git a/crt0-efi-ia32.S b/crt0-efi-ia32.S
deleted file mode 100644
index 70b5b44..0000000
--- a/crt0-efi-ia32.S
+++ /dev/null
@@ -1,180 +0,0 @@
-/* crt0-efi-x86_64.S - x86_64 EFI startup code.
- *
- * Copyright 2014 Red Hat, Inc. <pjones@redhat.com>
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- .section .text.head
-
- /*
- * Magic "MZ" signature for PE/COFF
- */
- .globl ImageBase
-ImageBase:
- .ascii "MZ"
- .skip 58 // 'MZ' + pad + offset == 64
- .long pe_header - ImageBase // Offset to the PE header.
- .long 0x0eba1f0e /* terrifying code */
- .long 0xcd09b400 /* terrifying code */
- .long 0x4c01b821 /* terrifying code */
- .short 0x21cd /* terrfiying code */
- .ascii "The only winning move is not to play.\r\r\n$" /* DOS text */
- .skip 9
-pe_header:
- .ascii "PE"
- .short 0
-coff_header:
- .short 0x014c // i386
- .short 1 // nr_sections
- .long 0 // TimeDateStamp
- .long 0 // PointerToSymbolTable
- .long 0 // NumberOfSymbols
- .short section_table - optional_header // SizeOfOptionalHeader
- .short 0x306 // Characteristics.
- // IMAGE_FILE_DEBUG_STRIPPED |
- // IMAGE_FILE_EXECUTABLE_IMAGE |
- // IMAGE_FILE_LINE_NUMS_STRIPPED
- // | IMAGE_FILE_32BIT_MACHINE
-optional_header:
- .short 0x10b // PE32+ format
- .byte 0x02 // MajorLinkerVersion
- .byte 0x18 // MinorLinkerVersion
- .long _edata - _start // SizeOfCode
- .long 0 // SizeOfInitializedData
- .long 0 // SizeOfUninitializedData
- .long _start - ImageBase // AddressOfEntryPoint
- .long _start - ImageBase // BaseOfCode
- .long 0 // BaseOfData
-
-extra_header_fields:
- .long 0 // ImageBase
- .long 0x20 // SectionAlignment
- .long 0x8 // FileAlignment
- .short 0 // MajorOperatingSystemVersion
- .short 0 // MinorOperatingSystemVersion
- .short 0 // MajorImageVersion
- .short 0 // MinorImageVersion
- .short 0 // MajorSubsystemVersion
- .short 0 // MinorSubsystemVersion
- .long 0 // Win32VersionValue
-
- .long _edata - ImageBase // SizeOfImage
-
- // Everything before the kernel image is considered part of the header
- .long _start - ImageBase // SizeOfHeaders
- .long 0 // CheckSum
- .short EFI_SUBSYSTEM // Subsystem
- .short 0 // DllCharacteristics
- .long 0 // SizeOfStackReserve
- .long 0 // SizeOfStackCommit
- .long 0 // SizeOfHeapReserve
- .long 0 // SizeOfHeapCommit
- .long 0 // LoaderFlags
- .long 0x10 // NumberOfRvaAndSizes
-
- .quad 0 // ExportTable
- .quad 0 // ImportTable
- .quad 0 // ResourceTable
- .quad 0 // ExceptionTable
- .quad 0 // CertificationTable
- .quad 0 // BaseRelocationTable
- .quad 0 // DebugTable
- .quad 0 // ArchTable
- .quad 0 // GlobalPointerTable
- .quad 0 // .tls
- .quad 0 // LoadConfigTable
- .quad 0 // BoundImportsTable
- .quad 0 // ImportAddressTable
- .quad 0 // DelayLoadImportTable
- .quad 0 // ClrRuntimeHeader (.cor)
- .quad 0 // Reserved
-
- // Section table
-section_table:
- .ascii ".text"
- .byte 0
- .byte 0
- .byte 0 // end of 0 padding of section name
-
- .long _edata - _start // VirtualSize
- .long _start - ImageBase // VirtualAddress
- .long _edata - _start // SizeOfRawData
- .long _start - ImageBase // PointerToRawData
- .long 0 // PointerToRelocations (0 for executables)
- .long 0 // PointerToLineNumbers (0 for executables)
- .short 0 // NumberOfRelocations (0 for executables)
- .short 0 // NumberOfLineNumbers (0 for executables)
- .long 0x60500020 // Characteristics (section flags)
-
- /*
- * The EFI application loader requires a relocation section
- * because EFI applications must be relocatable. This is a
- * dummy section as far as we are concerned.
- */
- .ascii ".reloc"
- .byte 0
- .byte 0 // end of 0 padding of section name
-
- .long 0 // VirtualSize
- .long 0 // VirtualAddress
- .long 0 // SizeOfRawData
- .long 0 // PointerToRawData
- .long 0 // PointerToRelocations
- .long 0 // PointerToLineNumbers
- .short 0 // NumberOfRelocations
- .short 0 // NumberOfLineNumbers
- .long 0x42100040 // Characteristics (section flags)
-
- /* most if not all ia32 binaries binutils makes seem to have .text
- * starting at 0x400; no reason to assume that's a bad idea. */
- .align 1024
-
-_start:
- pushl %ebp
- movl %esp,%ebp
-
- pushl 12(%ebp) # copy "image" argument
- pushl 8(%ebp) # copy "systab" argument
-
- call 0f
-0: popl %eax
- movl %eax,%ebx
-
- addl $ImageBase-0b,%eax # %eax = ldbase
- addl $_DYNAMIC-0b,%ebx # %ebx = _DYNAMIC
-
- pushl %ebx # pass _DYNAMIC as second argument
- pushl %eax # pass ldbase as first argument
- call _relocate
- popl %ebx
- popl %ebx
- testl %eax,%eax
- jne .exit
-
- call efi_main # call app with "image" and "systab" argument
-
-.exit:
- leave
- ret
diff --git a/crt0-efi-x86_64.S b/crt0-efi-x86_64.S
deleted file mode 100644
index f334a63..0000000
--- a/crt0-efi-x86_64.S
+++ /dev/null
@@ -1,177 +0,0 @@
-/* crt0-efi-x86_64.S - x86_64 EFI startup code.
- *
- * Copyright 2014 Red Hat, Inc. <pjones@redhat.com>
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- .section .text.head
-
- /*
- * Magic "MZ" signature for PE/COFF
- */
- .globl ImageBase
-ImageBase:
- .ascii "MZ"
- .skip 58 // 'MZ' + pad + offset == 64
- .long pe_header - ImageBase // Offset to the PE header.
- .long 0x0eba1f0e /* terrifying code */
- .long 0xcd09b400 /* terrifying code */
- .long 0x4c01b821 /* terrifying code */
- .short 0x21cd /* terrfiying code */
- .ascii "The only winning move is not to play.\r\r\n$" /* DOS text */
- .skip 9
-pe_header:
- .ascii "PE"
- .short 0
-coff_header:
- .short 0x8664 // x86_64
- .short 1 // nr_sections
- .long 0 // TimeDateStamp
- .long 0 // PointerToSymbolTable
- .long 0 // NumberOfSymbols
- .short section_table - optional_header // SizeOfOptionalHeader
- .short 0x206 // Characteristics.
- // IMAGE_FILE_DEBUG_STRIPPED |
- // IMAGE_FILE_EXECUTABLE_IMAGE |
- // IMAGE_FILE_LINE_NUMS_STRIPPED
-optional_header:
- .short 0x20b // PE32+ format
- .byte 0x02 // MajorLinkerVersion
- .byte 0x18 // MinorLinkerVersion
- .long _edata - _start // SizeOfCode
- .long 0 // SizeOfInitializedData
- .long 0 // SizeOfUninitializedData
- .long _start - ImageBase // AddressOfEntryPoint
- .long _start - ImageBase // BaseOfCode
-
-extra_header_fields:
- .quad 0 // ImageBase
- .long 0x20 // SectionAlignment
- .long 0x8 // FileAlignment
- .short 0 // MajorOperatingSystemVersion
- .short 0 // MinorOperatingSystemVersion
- .short 0 // MajorImageVersion
- .short 0 // MinorImageVersion
- .short 0 // MajorSubsystemVersion
- .short 0 // MinorSubsystemVersion
- .long 0 // Win32VersionValue
-
- .long _edata - ImageBase // SizeOfImage
-
- // Everything before the kernel image is considered part of the header
- .long _start - ImageBase // SizeOfHeaders
- .long 0 // CheckSum
- .short EFI_SUBSYSTEM // Subsystem
- .short 0 // DllCharacteristics
- .quad 0 // SizeOfStackReserve
- .quad 0 // SizeOfStackCommit
- .quad 0 // SizeOfHeapReserve
- .quad 0 // SizeOfHeapCommit
- .long 0 // LoaderFlags
- .long 0x10 // NumberOfRvaAndSizes
-
- .quad 0 // ExportTable
- .quad 0 // ImportTable
- .quad 0 // ResourceTable
- .quad 0 // ExceptionTable
- .quad 0 // CertificationTable
- .quad 0 // BaseRelocationTable
- .quad 0 // DebugTable
- .quad 0 // ArchTable
- .quad 0 // GlobalPointerTable
- .quad 0 // .tls
- .quad 0 // LoadConfigTable
- .quad 0 // BoundImportsTable
- .quad 0 // ImportAddressTable
- .quad 0 // DelayLoadImportTable
- .quad 0 // ClrRuntimeHeader (.cor)
- .quad 0 // Reserved
-
- // Section table
-section_table:
- .ascii ".text"
- .byte 0
- .byte 0
- .byte 0 // end of 0 padding of section name
-
- .long _edata - _start // VirtualSize
- .long _start - ImageBase // VirtualAddress
- .long _edata - _start // SizeOfRawData
- .long _start - ImageBase // PointerToRawData
- .long 0 // PointerToRelocations (0 for executables)
- .long 0 // PointerToLineNumbers (0 for executables)
- .short 0 // NumberOfRelocations (0 for executables)
- .short 0 // NumberOfLineNumbers (0 for executables)
- .long 0x60500020 // Characteristics (section flags)
-
- /*
- * The EFI application loader requires a relocation section
- * because EFI applications must be relocatable. This is a
- * dummy section as far as we are concerned.
- */
- .ascii ".reloc"
- .byte 0
- .byte 0 // end of 0 padding of section name
-
- .long 0 // VirtualSize
- .long 0 // VirtualAddress
- .long 0 // SizeOfRawData
- .long 0 // PointerToRawData
- .long 0 // PointerToRelocations
- .long 0 // PointerToLineNumbers
- .short 0 // NumberOfRelocations
- .short 0 // NumberOfLineNumbers
- .long 0x42100040 // Characteristics (section flags)
-
- /* x86-64 needs this padding here; without it, some machines simply
- * refuse to admit this is an EFI binary. I'm not really sure why;
- * reading the spec, it's unclear, but you'd expect it would need to
- * be aligned to (1 << FileAlignment), which would mean not having
- * the spacing.
- */
- .quad 0
-_start:
- subq $8, %rsp
- pushq %rcx
- pushq %rdx
-
-0:
- lea ImageBase(%rip), %rdi
- lea _DYNAMIC(%rip), %rsi
-
- popq %rcx
- popq %rdx
- pushq %rcx
- pushq %rdx
- call _relocate
-
- popq %rdi
- popq %rsi
-
- call efi_main
- addq $8, %rsp
-
-.exit:
- ret
diff --git a/elf_ia32_efi.lds b/elf_ia32_efi.lds
index b649e15..12d4085 100644
--- a/elf_ia32_efi.lds
+++ b/elf_ia32_efi.lds
@@ -3,56 +3,61 @@ OUTPUT_ARCH(i386)
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);
+ .text :
+ {
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ }
+ .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*)
+ *(.data)
+ *(.data1)
+ *(.data.*)
+ *(.sdata)
+ *(.got.plt)
+ *(.got)
+ /* the EFI loader doesn't seem to like a .bss section, so we stick
+ it all into .data: */
+ *(.sbss)
+ *(.scommon)
+ *(.dynbss)
+ *(.bss)
+ *(COMMON)
}
. = ALIGN(4096);
.vendor_cert :
{
- *(.vendor_cert)
+ *(.vendor_cert)
}
-
. = ALIGN(4096);
- .rel.dyn : { *(.rel.dyn) }
- .rel.plt : { *(.rel.plt) }
- .rel.got : { *(.rel.got) }
- .rel.data : { *(.rel.data) *(.rel.data*) }
- _edata = .;
- _data_size = . - _etext;
-
+ .dynamic : { *(.dynamic) }
+ . = ALIGN(4096);
+ .rel :
+ {
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.got)
+ *(.rel.stab)
+ *(.data.rel.ro.local)
+ *(.data.rel.local)
+ *(.data.rel.ro)
+ *(.data.rel*)
+ }
. = ALIGN(4096);
- .dynsym : { *(.dynsym) }
+ .dynsym : { *(.dynsym) }
. = ALIGN(4096);
- .dynstr : { *(.dynstr) }
+ .dynstr : { *(.dynstr) }
. = ALIGN(4096);
/DISCARD/ :
{
diff --git a/elf_x86_64_efi.lds b/elf_x86_64_efi.lds
index 091187b..f981102 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)
}
--
1.9.3