uboot/arch/x86/cpu/u-boot.lds
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2002
   3 * Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
   4 *
   5 * SPDX-License-Identifier:     GPL-2.0+
   6 */
   7
   8#include <config.h>
   9OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
  10OUTPUT_ARCH(i386)
  11ENTRY(_start)
  12
  13SECTIONS
  14{
  15#ifndef CONFIG_CMDLINE
  16        /DISCARD/ : { *(.u_boot_list_2_cmd_*) }
  17#endif
  18
  19        . = CONFIG_SYS_TEXT_BASE;       /* Location of bootcode in flash */
  20        __text_start = .;
  21        .text  : { *(.text*); }
  22
  23        . = ALIGN(4);
  24
  25        . = ALIGN(4);
  26        .u_boot_list : {
  27                KEEP(*(SORT(.u_boot_list*)));
  28        }
  29
  30        . = ALIGN(4);
  31        .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
  32
  33        . = ALIGN(4);
  34        .data : { *(.data*) }
  35
  36        . = ALIGN(4);
  37        .hash : { *(.hash*) }
  38
  39        . = ALIGN(4);
  40        .got : { *(.got*) }
  41
  42        . = ALIGN(4);
  43        __data_end = .;
  44        __init_end = .;
  45
  46        . = ALIGN(4);
  47        .dynsym : { *(.dynsym*) }
  48
  49        . = ALIGN(4);
  50        __rel_dyn_start = .;
  51        .rel.dyn : {
  52                *(.rel*)
  53        }
  54        __rel_dyn_end = .;
  55        . = ALIGN(4);
  56        _end = .;
  57
  58        .bss __rel_dyn_start (OVERLAY) : {
  59                __bss_start = .;
  60                *(.bss)
  61                *(COM*)
  62                . = ALIGN(4);
  63                __bss_end = .;
  64        }
  65
  66        /DISCARD/ : { *(.dynstr*) }
  67        /DISCARD/ : { *(.dynamic*) }
  68        /DISCARD/ : { *(.plt*) }
  69        /DISCARD/ : { *(.interp*) }
  70        /DISCARD/ : { *(.gnu*) }
  71
  72#ifdef CONFIG_X86_RESET_VECTOR
  73        /*
  74         * The following expressions place the 16-bit Real-Mode code and
  75         * Reset Vector at the end of the Flash ROM
  76         */
  77        . = START_16 - RESET_SEG_START;
  78        .start16 : AT (START_16) {
  79                KEEP(*(.start16));
  80        }
  81
  82        . = RESET_VEC_LOC - RESET_SEG_START;
  83        .resetvec : AT (RESET_VEC_LOC) {
  84                KEEP(*(.resetvec));
  85        }
  86#endif
  87
  88}
  89