/**************************************************************************** * boards/arm64/qemu/qemu-armv8a/scripts/dramboot.ld * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. The * ASF licenses this file to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * ****************************************************************************/ #include OUTPUT_ARCH(aarch64) ENTRY(__start) PHDRS { text PT_LOAD ; } SECTIONS { . = 0x40280000; /* uboot load address */ /* where the global variable out-of-bounds detection information located */ #ifdef CONFIG_MM_KASAN_GLOBAL .kasan.unused : { *(.data..LASANLOC*) } .kasan.global : { KEEP (*(.data..LASAN0)) KEEP (*(.data.rel.local..LASAN0)) } .kasan.shadows : { *(.kasan.shadows) } #endif _start = .; .text : { _stext = .; /* Text section */ *(.start .start.*) /* Place __start here */ *(.text) *(.text.cold) *(.text.unlikely) *(.fixup) *(.gnu.warning) } :text = 0x9090 . = ALIGN(4096); .init_section : { _sinit = ABSOLUTE(.); KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP(*(.init_array EXCLUDE_FILE(*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o) .ctors)) _einit = ABSOLUTE(.); } . = ALIGN(4096); .vector : { _vector_start = .; KEEP(*(.exc_vector_table)) KEEP(*(".exc_vector_table.*")) KEEP(*(.vectors)) _vector_end = .; } :text . = ALIGN(4096); _etext = .; /* End_1 of .text */ _sztext = _etext - _stext; _sload = .; . += 1048576; _eload = .; _szload = _eload - _sload; . = ALIGN(4096); .rodata : { _srodata = .; /* Read-only data */ *(.rodata) *(.rodata.*) *(.data.rel.ro) *(.data.rel.ro.*) } :text . = ALIGN(4096); _erodata = .; /* End of read-only data */ _szrodata = _erodata - _srodata; _eronly = .; /* End of read-only data */ . = ALIGN(4096); .data : { /* Data */ _sdata = .; *(.data.page_aligned) *(.data) . = ALIGN(8); __start_impls = .; *(.impls) KEEP(*(.impls)) . = ALIGN(4); __stop_impls = .; *(.data.rel) *(.data.rel.*) CONSTRUCTORS } :text _edata = .; /* End+1 of .data */ .bss : { /* BSS */ . = ALIGN(8); _sbss = .; *(.bss) . = ALIGN(8); } :text . = ALIGN(4096); _ebss = .; _szbss = _ebss - _sbss; .initstack : { /* INIT STACK */ _s_initstack = .; *(.initstack) . = ALIGN(16); } :text . = ALIGN(4096); _e_initstack = . ; g_idle_topstack = . ; _szdata = _e_initstack - _sdata; /* Sections to be discarded */ /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) *(.eh_frame) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } }