forked from tianocore/edk2
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BaseTools: Add ClangBase.lds for CLANG8 tool chain with max-page-size
LLVM LLD linker doesn't support common-page-size option. So, max-page-size is used. To not impact GCC tool chain, new ClangBase.lds is added. Signed-off-by: Liming Gao <[email protected]> Reviewed-by: Feng Bob C <[email protected]>
- Loading branch information
1 parent
c410ad4
commit c1aa3ba
Showing
1 changed file
with
79 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/** @file | ||
|
||
Unified linker script for GCC based builds | ||
|
||
Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR> | ||
Copyright (c) 2015, Linaro Ltd. All rights reserved.<BR> | ||
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR> | ||
|
||
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(MAXPAGESIZE)) { | ||
*(.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(MAXPAGESIZE)) { | ||
*(.data .data.* .gnu.linkonce.d.*) | ||
*(.bss .bss.*) | ||
} | ||
|
||
.eh_frame ALIGN(CONSTANT(MAXPAGESIZE)) : { | ||
KEEP (*(.eh_frame)) | ||
} | ||
|
||
.rela (INFO) : { | ||
*(.rela .rela.*) | ||
} | ||
|
||
.hii : ALIGN(CONSTANT(MAXPAGESIZE)) { | ||
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) | ||
} | ||
} |