Home | History | Annotate | Line # | Download | only in conf
kern.ldscript revision 1.11
      1   1.6    ryo #include "assym.h"
      2   1.6    ryo 
      3   1.1   matt /* Default linker script, for normal executables */
      4   1.1   matt OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64",
      5   1.1   matt 	      "elf64-littleaarch64")
      6   1.1   matt OUTPUT_ARCH(aarch64)
      7   1.1   matt ENTRY(_start)
      8   1.8   maxv 
      9   1.1   matt SECTIONS
     10   1.1   matt {
     11   1.8   maxv 	.text :
     12   1.8   maxv 	{
     13   1.9   maxv 		PROVIDE(__kernel_text = .);
     14   1.8   maxv 		*(.text)
     15   1.9   maxv 		*(.text.*)
     16   1.9   maxv 		*(.stub)
     17   1.8   maxv 	} =0
     18   1.8   maxv 
     19   1.8   maxv 	/* Move .rodata to the next L2 block to set unexecutable */
     20   1.9   maxv 	. = ALIGN(L2_SIZE);
     21   1.9   maxv 
     22   1.9   maxv 	PROVIDE(__rodata_start = .);
     23   1.9   maxv 	.rodata :
     24   1.9   maxv 	{
     25   1.9   maxv 		*(.rodata)
     26   1.9   maxv 		*(.rodata.*)
     27  1.11   maxv 		. = ALIGN(64);
     28  1.11   maxv 		__CTOR_LIST__ = .;
     29  1.11   maxv 		*(.ctors)
     30  1.11   maxv 		*(.init_array)
     31  1.11   maxv 		__CTOR_END__ = .;
     32   1.9   maxv 	}
     33   1.9   maxv 
     34   1.9   maxv 	PROVIDE(_etext = .);
     35   1.9   maxv 	PROVIDE(etext = .);
     36   1.8   maxv 
     37   1.8   maxv 	/*
     38   1.8   maxv 	 * Adjust the address for the data segment. Move .data to the next
     39   1.8   maxv 	 * L2 block, and .text and .rodata will be set readonly if needed.
     40   1.8   maxv 	 */
     41   1.9   maxv 	PROVIDE(_erodata = .);
     42   1.9   maxv 	. = ALIGN(L2_SIZE);
     43   1.9   maxv 
     44   1.9   maxv 	.data :
     45   1.8   maxv 	{
     46   1.9   maxv 		PROVIDE(__data_start = .);
     47   1.9   maxv 		*(.data)
     48   1.8   maxv 	}
     49   1.8   maxv 
     50  1.10  skrll 	. = ALIGN(COHERENCY_UNIT);
     51   1.8   maxv 	.data.cacheline_aligned :
     52   1.8   maxv 	{
     53   1.8   maxv 		*(.data.cacheline_aligned)
     54   1.8   maxv 	}
     55  1.10  skrll 	. = ALIGN(COHERENCY_UNIT);
     56   1.8   maxv 	.data.read_mostly :
     57   1.8   maxv 	{
     58   1.8   maxv 		*(.data.read_mostly)
     59   1.8   maxv 	}
     60  1.10  skrll 	. = ALIGN(COHERENCY_UNIT);
     61   1.8   maxv 
     62   1.9   maxv 	_edata = .;
     63   1.9   maxv 	PROVIDE (edata = .);
     64   1.8   maxv 
     65   1.8   maxv 	__bss_start = .;
     66   1.8   maxv 	__bss_start__ = .;
     67   1.8   maxv 	.bss :
     68   1.8   maxv 	{
     69   1.9   maxv 		*(.bss)
     70   1.9   maxv 		*(.bss.*)
     71   1.8   maxv 		*(COMMON)
     72   1.8   maxv 
     73   1.8   maxv 		/*
     74   1.8   maxv 		 * Align here to ensure that the .bss section occupies space
     75   1.8   maxv 		 * up to _end. Align after .bss to ensure correct alignment
     76   1.8   maxv 		 * even if the .bss section disappears because there are no
     77   1.8   maxv 		 * input sections.
     78   1.8   maxv 		 *
     79   1.8   maxv 		 * FIXME: Why do we need it? When there is no .bss section,
     80   1.8   maxv 		 * we don't pad the .data section.
     81   1.8   maxv 		 */
     82   1.8   maxv 		. = ALIGN(. != 0 ? 32 / 8 : 1);
     83   1.8   maxv 	}
     84   1.9   maxv 	_bss_end__ = . ;
     85   1.9   maxv 	__bss_end__ = . ;
     86   1.8   maxv 	. = ALIGN(32 / 8);
     87   1.8   maxv 
     88   1.8   maxv 	__end__ = . ;
     89   1.9   maxv 	_end = .;
     90   1.9   maxv 	PROVIDE(end = .);
     91   1.1   matt }
     92