Home | History | Annotate | Download | only in Scripts
      1 /** @file
      2 
      3   Unified linker script for GCC based builds
      4 
      5   Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
      6   Copyright (c) 2015, Linaro Ltd. All rights reserved.<BR>
      7   (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
      8 
      9   This program and the accompanying materials are licensed and made available under
     10   the terms and conditions of the BSD License that accompanies this distribution.
     11   The full text of the license may be found at
     12   http://opensource.org/licenses/bsd-license.php.
     13 
     14   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     15   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     16 
     17 **/
     18 
     19 SECTIONS {
     20 
     21   /*
     22    * The PE/COFF binary consists of DOS and PE/COFF headers, and a sequence of
     23    * section headers adding up to PECOFF_HEADER_SIZE bytes (which differs
     24    * between 32-bit and 64-bit builds). The actual start of the .text section
     25    * will be rounded up based on its actual alignment.
     26    */
     27   . = PECOFF_HEADER_SIZE;
     28 
     29   .text : ALIGN(CONSTANT(COMMONPAGESIZE)) {
     30     *(.text .text.* .stub .gnu.linkonce.t.*)
     31     *(.rodata .rodata.* .gnu.linkonce.r.*)
     32     *(.got .got.*)
     33 
     34     /*
     35      * The contents of AutoGen.c files are constant from the POV of the program,
     36      * but most of its contents end up in .data or .bss by default since few of
     37      * the variable definitions that get emitted are declared as CONST.
     38      */
     39     *:AutoGen.obj(.data .data.* .bss .bss.*)
     40   }
     41 
     42   /*
     43    * The alignment of the .data section should be less than or equal to the
     44    * alignment of the .text section. This ensures that the relative offset
     45    * between these sections is the same in the ELF and the PE/COFF versions of
     46    * this binary.
     47    */
     48   .data ALIGN(ALIGNOF(.text)) : ALIGN(CONSTANT(COMMONPAGESIZE)) {
     49     *(.data .data.* .gnu.linkonce.d.*)
     50     *(.bss .bss.*)
     51   }
     52 
     53   .eh_frame ALIGN(CONSTANT(COMMONPAGESIZE)) : {
     54     KEEP (*(.eh_frame))
     55   }
     56 
     57   .rela (INFO) : {
     58     *(.rela .rela.*)
     59   }
     60 
     61   .hii : ALIGN(CONSTANT(COMMONPAGESIZE)) {
     62     KEEP (*(.hii))
     63   }
     64 
     65   /*
     66    * Retain the GNU build id but in a non-allocatable section so GenFw
     67    * does not copy it into the PE/COFF image.
     68    */
     69   .build-id (INFO) : { *(.note.gnu.build-id) }
     70 
     71   /DISCARD/ : {
     72     *(.note.GNU-stack)
     73     *(.gnu_debuglink)
     74     *(.interp)
     75     *(.dynsym)
     76     *(.dynstr)
     77     *(.dynamic)
     78     *(.hash)
     79     *(.comment)
     80     *(COMMON)
     81   }
     82 }
     83