/** @file Unified linker script for GCC based builds Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.
Copyright (c) 2015, Linaro Ltd. All rights reserved.
(C) Copyright 2016 Hewlett Packard Enterprise Development LP
SPDX-License-Identifier: BSD-2-Clause-Patent **/ SECTIONS { /* * The PE/COFF binary consists of DOS and PE/COFF headers, and a sequence of * section headers adding up to PECOFF_HEADER_SIZE bytes (which differs * between 32-bit and 64-bit builds). The actual start of the .text section * will be rounded up based on its actual alignment. */ . = PECOFF_HEADER_SIZE; .text : ALIGN(CONSTANT(COMMONPAGESIZE)) { *(.text .text.* .stub .gnu.linkonce.t.*) *(.rodata .rodata.* .gnu.linkonce.r.*) *(.got .got.*) /* * The contents of AutoGen.c files are mostly constant from the POV of the * program, but most of it ends up in .data or .bss by default since few of * the variable definitions that get emitted are declared as CONST. * Unfortunately, we cannot pull it into the .text section entirely, since * patchable PCDs are also emitted here, but we can at least move all of the * emitted GUIDs here. */ *:AutoGen.obj(.data.g*Guid) } /* * The alignment of the .data section should be less than or equal to the * alignment of the .text section. This ensures that the relative offset * between these sections is the same in the ELF and the PE/COFF versions of * this binary. */ .data ALIGN(ALIGNOF(.text)) : ALIGN(CONSTANT(COMMONPAGESIZE)) { *(.data .data.* .gnu.linkonce.d.*) *(.bss .bss.*) __beginning_of_section_ctors = .; /* create symbol for start of section */ KEEP(*(.ctors .init_array)) /* .ctors is used on macOS, .init_array on Linux */ __end_of_section_ctors = .; /* create symbol for end of section */ } .eh_frame ALIGN(CONSTANT(COMMONPAGESIZE)) : { KEEP (*(.eh_frame)) } .rela (INFO) : { *(.rela .rela.*) } .hii : ALIGN(CONSTANT(COMMONPAGESIZE)) { KEEP (*(.hii)) } /* * Retain the GNU build id but in a non-allocatable section so GenFw * does not copy it into the PE/COFF image. */ .build-id (INFO) : { *(.note.gnu.build-id) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.interp) *(.dynsym) *(.dynstr) *(.dynamic) *(.hash .gnu.hash) *(.comment) *(COMMON) } }