~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/s390/boot/vmlinux.lds.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #include <asm-generic/vmlinux.lds.h>
  3 #include <asm/vmlinux.lds.h>
  4 #include <asm/thread_info.h>
  5 #include <asm/page.h>
  6 #include <asm/sclp.h>
  7 #include "boot.h"
  8 
  9 OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
 10 OUTPUT_ARCH(s390:64-bit)
 11 
 12 ENTRY(startup)
 13 
 14 SECTIONS
 15 {
 16         . = 0;
 17         .ipldata : {
 18                 *(.ipldata)
 19         }
 20         . = IPL_START;
 21         .head.text : {
 22                 _head = . ;
 23                 HEAD_TEXT
 24                 _ehead = . ;
 25         }
 26         . = PARMAREA;
 27         .parmarea : {
 28                 *(.parmarea)
 29         }
 30         .text : {
 31                 _text = .;      /* Text */
 32                 *(.text)
 33                 *(.text.*)
 34                 INIT_TEXT
 35                 _etext = . ;
 36         }
 37         .rodata : {
 38                 _rodata = . ;
 39                 *(.rodata)       /* read-only data */
 40                 *(.rodata.*)
 41                 _erodata = . ;
 42         }
 43         .got : {
 44                 *(.got)
 45         }
 46         NOTES
 47         .data : {
 48                 _data = . ;
 49                 *(.data)
 50                 *(.data.*)
 51                 _edata = . ;
 52         }
 53 
 54         BOOT_DATA
 55         BOOT_DATA_PRESERVED
 56 
 57         /*
 58          * This is the BSS section of the decompressor and not of the decompressed Linux kernel.
 59          * It will consume place in the decompressor's image.
 60          */
 61         . = ALIGN(8);
 62         .bss : {
 63                 _bss = . ;
 64                 *(.bss)
 65                 *(.bss.*)
 66                 *(COMMON)
 67                 /*
 68                  * Stacks for the decompressor
 69                  */
 70                 . = ALIGN(PAGE_SIZE);
 71                 _dump_info_stack_start = .;
 72                 . += PAGE_SIZE;
 73                 _dump_info_stack_end = .;
 74                 . = ALIGN(PAGE_SIZE);
 75                 _stack_start = .;
 76                 . += BOOT_STACK_SIZE;
 77                 _stack_end = .;
 78                 _ebss = .;
 79         }
 80 
 81         /*
 82          * uncompressed image info used by the decompressor it should match
 83          * struct vmlinux_info. It comes from .vmlinux.info section of
 84          * uncompressed vmlinux in a form of info.o
 85          */
 86         . = ALIGN(8);
 87         .vmlinux.info : {
 88                 _vmlinux_info = .;
 89                 *(.vmlinux.info)
 90         }
 91 
 92         .decompressor.syms : {
 93                 . += 1; /* make sure we have \0 before the first entry */
 94                 . = ALIGN(2);
 95                 _decompressor_syms_start = .;
 96                 *(.decompressor.syms)
 97                 _decompressor_syms_end = .;
 98         }
 99 
100         _decompressor_end = .;
101 
102         . = ALIGN(4);
103         .vmlinux.relocs : {
104                 __vmlinux_relocs_64_start = .;
105                 *(.vmlinux.relocs_64)
106                 __vmlinux_relocs_64_end = .;
107         }
108 
109 #ifdef CONFIG_KERNEL_UNCOMPRESSED
110         . = ALIGN(PAGE_SIZE);
111         . += AMODE31_SIZE;              /* .amode31 section */
112 
113         /*
114          * Make sure the location counter is not less than TEXT_OFFSET.
115          * _SEGMENT_SIZE is not available, use ALIGN(1 << 20) instead.
116          */
117         . = MAX(TEXT_OFFSET, ALIGN(1 << 20));
118 #else
119         . = ALIGN(8);
120 #endif
121         .rodata.compressed : {
122                 _compressed_start = .;
123                 *(.vmlinux.bin.compressed)
124                 _compressed_end = .;
125         }
126 
127 #define SB_TRAILER_SIZE 32
128         /* Trailer needed for Secure Boot */
129         . += SB_TRAILER_SIZE; /* make sure .sb.trailer does not overwrite the previous section */
130         . = ALIGN(4096) - SB_TRAILER_SIZE;
131         .sb.trailer : {
132                 QUAD(0)
133                 QUAD(0)
134                 QUAD(0)
135                 QUAD(0x000000207a49504c)
136         }
137         _end = .;
138 
139         DWARF_DEBUG
140         ELF_DETAILS
141 
142         /*
143          * Make sure that the .got.plt is either completely empty or it
144          * contains only the three reserved double words.
145          */
146         .got.plt : {
147                 *(.got.plt)
148         }
149         ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
150 
151         /*
152          * Sections that should stay zero sized, which is safer to
153          * explicitly check instead of blindly discarding.
154          */
155         .plt : {
156                 *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
157         }
158         ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
159         .rela.dyn : {
160                 *(.rela.*) *(.rela_*)
161         }
162         ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
163 
164         /* Sections to be discarded */
165         /DISCARD/ : {
166                 COMMON_DISCARDS
167                 *(.eh_frame)
168                 *(__ex_table)
169                 *(*__ksymtab*)
170                 *(___kcrctab*)
171         }
172 }

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php