1fea25720SGraeme Russ/* 2fea25720SGraeme Russ * (C) Copyright 2002 3fa82f871SAlbert ARIBAUD * Daniel Engström, Omicron Ceti AB, daniel@omicron.se. 4fea25720SGraeme Russ * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6fea25720SGraeme Russ */ 7fea25720SGraeme Russ 8fea25720SGraeme Russ#include <config.h> 9fea25720SGraeme RussOUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 10fea25720SGraeme RussOUTPUT_ARCH(i386) 11fea25720SGraeme RussENTRY(_start) 12fea25720SGraeme Russ 13fea25720SGraeme RussSECTIONS 14fea25720SGraeme Russ{ 15c1352119SSimon Glass#ifndef CONFIG_CMDLINE 16c1352119SSimon Glass /DISCARD/ : { *(.u_boot_list_2_cmd_*) } 17c1352119SSimon Glass#endif 18c1352119SSimon Glass 19fea25720SGraeme Russ . = CONFIG_SYS_TEXT_BASE; /* Location of bootcode in flash */ 20fea25720SGraeme Russ __text_start = .; 21fea25720SGraeme Russ .text : { *(.text*); } 22fea25720SGraeme Russ 23fea25720SGraeme Russ . = ALIGN(4); 24fea25720SGraeme Russ 25fea25720SGraeme Russ . = ALIGN(4); 2655675142SMarek Vasut .u_boot_list : { 27ef123c52SAlbert ARIBAUD KEEP(*(SORT(.u_boot_list*))); 2855675142SMarek Vasut } 2955675142SMarek Vasut 3055675142SMarek Vasut . = ALIGN(4); 3165e4c0b1SSimon Glass .rodata : { 3265e4c0b1SSimon Glass *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) 3365e4c0b1SSimon Glass KEEP(*(.rodata.efi.init)); 3465e4c0b1SSimon Glass } 35fea25720SGraeme Russ 36fea25720SGraeme Russ . = ALIGN(4); 37fea25720SGraeme Russ .data : { *(.data*) } 38fea25720SGraeme Russ 39fea25720SGraeme Russ . = ALIGN(4); 40fea25720SGraeme Russ .hash : { *(.hash*) } 41fea25720SGraeme Russ 42fea25720SGraeme Russ . = ALIGN(4); 43fea25720SGraeme Russ .got : { *(.got*) } 44fea25720SGraeme Russ 45fea25720SGraeme Russ . = ALIGN(4); 4665e4c0b1SSimon Glass 4765e4c0b1SSimon Glass .__efi_runtime_start : { 4865e4c0b1SSimon Glass *(.__efi_runtime_start) 4965e4c0b1SSimon Glass } 5065e4c0b1SSimon Glass 5165e4c0b1SSimon Glass .efi_runtime : { 5265e4c0b1SSimon Glass *(efi_runtime_text) 5365e4c0b1SSimon Glass *(efi_runtime_data) 5465e4c0b1SSimon Glass } 5565e4c0b1SSimon Glass 5665e4c0b1SSimon Glass .__efi_runtime_stop : { 5765e4c0b1SSimon Glass *(.__efi_runtime_stop) 5865e4c0b1SSimon Glass } 5965e4c0b1SSimon Glass 6065e4c0b1SSimon Glass .efi_runtime_rel_start : 6165e4c0b1SSimon Glass { 6265e4c0b1SSimon Glass *(.__efi_runtime_rel_start) 6365e4c0b1SSimon Glass } 6465e4c0b1SSimon Glass 6565e4c0b1SSimon Glass .efi_runtime_rel : { 6665e4c0b1SSimon Glass *(.relefi_runtime_text) 6765e4c0b1SSimon Glass *(.relefi_runtime_data) 6865e4c0b1SSimon Glass } 6965e4c0b1SSimon Glass 7065e4c0b1SSimon Glass .efi_runtime_rel_stop : 7165e4c0b1SSimon Glass { 7265e4c0b1SSimon Glass *(.__efi_runtime_rel_stop) 7365e4c0b1SSimon Glass } 7465e4c0b1SSimon Glass 7565e4c0b1SSimon Glass . = ALIGN(4); 7665e4c0b1SSimon Glass 77fea25720SGraeme Russ __data_end = .; 7886cfb6bdSSimon Glass __init_end = .; 79fea25720SGraeme Russ 80fea25720SGraeme Russ . = ALIGN(4); 81f82d15eaSSimon Glass .dynsym : { *(.dynsym*) } 82fea25720SGraeme Russ 83fea25720SGraeme Russ . = ALIGN(4); 84fea25720SGraeme Russ __rel_dyn_start = .; 85091c4943SSimon Glass .rel.dyn : { 86091c4943SSimon Glass *(.rel*) 87091c4943SSimon Glass } 88fea25720SGraeme Russ __rel_dyn_end = .; 894b491b8dSSimon Glass . = ALIGN(4); 904b491b8dSSimon Glass _end = .; 91fea25720SGraeme Russ 92f82d15eaSSimon Glass .bss __rel_dyn_start (OVERLAY) : { 93f82d15eaSSimon Glass __bss_start = .; 94f82d15eaSSimon Glass *(.bss) 95f82d15eaSSimon Glass *(COM*) 96f82d15eaSSimon Glass . = ALIGN(4); 97f82d15eaSSimon Glass __bss_end = .; 98f82d15eaSSimon Glass } 99f82d15eaSSimon Glass 100fea25720SGraeme Russ /DISCARD/ : { *(.dynstr*) } 101fea25720SGraeme Russ /DISCARD/ : { *(.dynamic*) } 102fea25720SGraeme Russ /DISCARD/ : { *(.plt*) } 103fea25720SGraeme Russ /DISCARD/ : { *(.interp*) } 104fea25720SGraeme Russ /DISCARD/ : { *(.gnu*) } 105fea25720SGraeme Russ 106*972188b3SSimon Glass#ifdef CONFIG_X86_16BIT_INIT 107fea25720SGraeme Russ /* 108fea25720SGraeme Russ * The following expressions place the 16-bit Real-Mode code and 109fea25720SGraeme Russ * Reset Vector at the end of the Flash ROM 110fea25720SGraeme Russ */ 111a6a95784SSimon Glass . = START_16 - RESET_SEG_START; 112a6a95784SSimon Glass .start16 : AT (START_16) { 113a6a95784SSimon Glass KEEP(*(.start16)); 114a6a95784SSimon Glass } 115fea25720SGraeme Russ 116a6a95784SSimon Glass . = RESET_VEC_LOC - RESET_SEG_START; 117a6a95784SSimon Glass .resetvec : AT (RESET_VEC_LOC) { 118a6a95784SSimon Glass KEEP(*(.resetvec)); 119a6a95784SSimon Glass } 120b16f521aSGabe Black#endif 121a6a95784SSimon Glass 122fea25720SGraeme Russ} 123