diff --git a/stand/efi/loader/arch/amd64/ldscript.amd64 b/stand/efi/loader/arch/amd64/ldscript.amd64 --- a/stand/efi/loader/arch/amd64/ldscript.amd64 +++ b/stand/efi/loader/arch/amd64/ldscript.amd64 @@ -11,8 +11,16 @@ . = ALIGN(4096); .eh_frame : { - *(.eh_frame) + __eh_frame_start = .; + KEEP(*(.eh_frame)) + __eh_frame_end = .; } + .eh_frame_hdr : + { + KEEP(*(.eh_frame_hdr)) + } + __eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0; + __eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0; . = ALIGN(4096); .text : { *(.text .stub .text.* .gnu.linkonce.t.*) diff --git a/stand/efi/loader/arch/arm/ldscript.arm b/stand/efi/loader/arch/arm/ldscript.arm --- a/stand/efi/loader/arch/arm/ldscript.arm +++ b/stand/efi/loader/arch/arm/ldscript.arm @@ -13,6 +13,18 @@ *(.gnu.warning) *(.gnu.linkonce.t*) } =0 + .eh_frame : + { + __eh_frame_start = .; + KEEP(*(.eh_frame)) + __eh_frame_end = .; + } + .eh_frame_hdr : + { + KEEP(*(.eh_frame_hdr)) + } + __eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0; + __eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0; _etext = .; PROVIDE (etext = .); . = ALIGN(16); diff --git a/stand/efi/loader/arch/arm64/ldscript.arm64 b/stand/efi/loader/arch/arm64/ldscript.arm64 --- a/stand/efi/loader/arch/arm64/ldscript.arm64 +++ b/stand/efi/loader/arch/arm64/ldscript.arm64 @@ -17,6 +17,19 @@ *(.plt) } =0xD4200000 . = ALIGN(16); + .eh_frame : + { + __eh_frame_start = .; + KEEP(*(.eh_frame)) + __eh_frame_end = .; + } + .eh_frame_hdr : + { + KEEP(*(.eh_frame_hdr)) + } + __eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0; + __eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0; + . = ALIGN(16); .data : { *(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata1) diff --git a/stand/efi/loader/arch/i386/ldscript.i386 b/stand/efi/loader/arch/i386/ldscript.i386 --- a/stand/efi/loader/arch/i386/ldscript.i386 +++ b/stand/efi/loader/arch/i386/ldscript.i386 @@ -9,6 +9,19 @@ ImageBase = .; . = SIZEOF_HEADERS; . = ALIGN(4096); + .eh_frame : + { + __eh_frame_start = .; + KEEP(*(.eh_frame)) + __eh_frame_end = .; + } + .eh_frame_hdr : + { + KEEP(*(.eh_frame_hdr)) + } + __eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0; + __eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0; + . = ALIGN(4096); .text : { *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ diff --git a/stand/efi/loader/arch/riscv/ldscript.riscv b/stand/efi/loader/arch/riscv/ldscript.riscv --- a/stand/efi/loader/arch/riscv/ldscript.riscv +++ b/stand/efi/loader/arch/riscv/ldscript.riscv @@ -15,6 +15,19 @@ *(.plt) } =0x9090 . = ALIGN(16); + .eh_frame : + { + __eh_frame_start = .; + KEEP(*(.eh_frame)) + __eh_frame_end = .; + } + .eh_frame_hdr : + { + KEEP(*(.eh_frame_hdr)) + } + __eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0; + __eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0; + . = ALIGN(16); .data : { *(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata1) diff --git a/stand/kboot/arch/aarch64/ldscript.aarch64 b/stand/kboot/arch/aarch64/ldscript.aarch64 --- a/stand/kboot/arch/aarch64/ldscript.aarch64 +++ b/stand/kboot/arch/aarch64/ldscript.aarch64 @@ -11,8 +11,16 @@ . = ALIGN(4096); .eh_frame : { - *(.eh_frame) + __eh_frame_start = .; + KEEP(*(.eh_frame)) + __eh_frame_end = .; } + .eh_frame_hdr : + { + KEEP(*(.eh_frame_hdr)) + } + __eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0; + __eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0; . = ALIGN(4096); .text : { *(.text .stub .text.* .gnu.linkonce.t.*) diff --git a/stand/kboot/arch/amd64/ldscript.amd64 b/stand/kboot/arch/amd64/ldscript.amd64 --- a/stand/kboot/arch/amd64/ldscript.amd64 +++ b/stand/kboot/arch/amd64/ldscript.amd64 @@ -11,8 +11,16 @@ . = ALIGN(4096); .eh_frame : { - *(.eh_frame) + __eh_frame_start = .; + KEEP(*(.eh_frame)) + __eh_frame_end = .; } + .eh_frame_hdr : + { + KEEP(*(.eh_frame_hdr)) + } + __eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0; + __eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0; . = ALIGN(4096); .text : { *(.text .stub .text.* .gnu.linkonce.t.*)