Home | History | Annotate | Line # | Download | only in conf
kern.ldscript revision 1.10
      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.9   maxv 	}
     28   1.9   maxv 
     29   1.9   maxv 	PROVIDE(_etext = .);
     30   1.9   maxv 	PROVIDE(etext = .);
     31   1.8   maxv 
     32   1.8   maxv 	/*
     33   1.8   maxv 	 * Adjust the address for the data segment. Move .data to the next
     34   1.8   maxv 	 * L2 block, and .text and .rodata will be set readonly if needed.
     35   1.8   maxv 	 */
     36   1.9   maxv 	PROVIDE(_erodata = .);
     37   1.9   maxv 	. = ALIGN(L2_SIZE);
     38   1.9   maxv 
     39   1.9   maxv 	.data :
     40   1.8   maxv 	{
     41   1.9   maxv 		PROVIDE(__data_start = .);
     42   1.9   maxv 		*(.data)
     43   1.8   maxv 	}
     44   1.8   maxv 
     45  1.10  skrll 	. = ALIGN(COHERENCY_UNIT);
     46   1.8   maxv 	.data.cacheline_aligned :
     47   1.8   maxv 	{
     48   1.8   maxv 		*(.data.cacheline_aligned)
     49   1.8   maxv 	}
     50  1.10  skrll 	. = ALIGN(COHERENCY_UNIT);
     51   1.8   maxv 	.data.read_mostly :
     52   1.8   maxv 	{
     53   1.8   maxv 		*(.data.read_mostly)
     54   1.8   maxv 	}
     55  1.10  skrll 	. = ALIGN(COHERENCY_UNIT);
     56   1.8   maxv 
     57   1.9   maxv 	_edata = .;
     58   1.9   maxv 	PROVIDE (edata = .);
     59   1.8   maxv 
     60   1.8   maxv 	__bss_start = .;
     61   1.8   maxv 	__bss_start__ = .;
     62   1.8   maxv 	.bss :
     63   1.8   maxv 	{
     64   1.9   maxv 		*(.bss)
     65   1.9   maxv 		*(.bss.*)
     66   1.8   maxv 		*(COMMON)
     67   1.8   maxv 
     68   1.8   maxv 		/*
     69   1.8   maxv 		 * Align here to ensure that the .bss section occupies space
     70   1.8   maxv 		 * up to _end. Align after .bss to ensure correct alignment
     71   1.8   maxv 		 * even if the .bss section disappears because there are no
     72   1.8   maxv 		 * input sections.
     73   1.8   maxv 		 *
     74   1.8   maxv 		 * FIXME: Why do we need it? When there is no .bss section,
     75   1.8   maxv 		 * we don't pad the .data section.
     76   1.8   maxv 		 */
     77   1.8   maxv 		. = ALIGN(. != 0 ? 32 / 8 : 1);
     78   1.8   maxv 	}
     79   1.9   maxv 	_bss_end__ = . ;
     80   1.9   maxv 	__bss_end__ = . ;
     81   1.8   maxv 	. = ALIGN(32 / 8);
     82   1.8   maxv 
     83   1.8   maxv 	__end__ = . ;
     84   1.9   maxv 	_end = .;
     85   1.9   maxv 	PROVIDE(end = .);
     86   1.1   matt }
     87