Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * This is the infamous ld script for the 64 bits vdso
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * library
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #include <asm/page.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #include <asm/vdso.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) OUTPUT_ARCH(s390:64-bit)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) ENTRY(_start)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) SECTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	. = VDSO64_LBASE + SIZEOF_HEADERS;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	.hash		: { *(.hash) }			:text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	.gnu.hash	: { *(.gnu.hash) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	.dynsym		: { *(.dynsym) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	.dynstr		: { *(.dynstr) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	.gnu.version	: { *(.gnu.version) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	.gnu.version_d	: { *(.gnu.version_d) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	.gnu.version_r	: { *(.gnu.version_r) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	.note		: { *(.note.*) }		:text	:note
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	. = ALIGN(16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	.text		: {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 		*(.text .stub .text.* .gnu.linkonce.t.*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	} :text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	PROVIDE(__etext = .);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	PROVIDE(_etext = .);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	PROVIDE(etext = .);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	 * Other stuff is appended to the text segment:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	.rodata		: { *(.rodata .rodata.* .gnu.linkonce.r.*) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	.rodata1	: { *(.rodata1) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	.dynamic	: { *(.dynamic) }		:text	:dynamic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	.eh_frame_hdr	: { *(.eh_frame_hdr) }		:text	:eh_frame_hdr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	.eh_frame	: { KEEP (*(.eh_frame)) }	:text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	.gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	.rela.dyn ALIGN(8) : { *(.rela.dyn) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	.got ALIGN(8)	: { *(.got .toc) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	_end = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	PROVIDE(end = .);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	 * Stabs debugging sections are here too.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	.stab	       0 : { *(.stab) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	.stabstr       0 : { *(.stabstr) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	.stab.excl     0 : { *(.stab.excl) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	.stab.exclstr  0 : { *(.stab.exclstr) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	.stab.index    0 : { *(.stab.index) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	.stab.indexstr 0 : { *(.stab.indexstr) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	.comment       0 : { *(.comment) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	 * DWARF debug sections.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	 * Symbols in the DWARF debugging sections are relative to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	 * beginning of the section so we begin them at 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	/* DWARF 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	.debug		0 : { *(.debug) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	.line		0 : { *(.line) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	/* GNU DWARF 1 extensions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	.debug_srcinfo	0 : { *(.debug_srcinfo) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	.debug_sfnames	0 : { *(.debug_sfnames) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	/* DWARF 1.1 and DWARF 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	.debug_aranges	0 : { *(.debug_aranges) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	.debug_pubnames 0 : { *(.debug_pubnames) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	/* DWARF 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	.debug_info	0 : { *(.debug_info .gnu.linkonce.wi.*) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	.debug_abbrev	0 : { *(.debug_abbrev) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	.debug_line	0 : { *(.debug_line) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	.debug_frame	0 : { *(.debug_frame) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	.debug_str	0 : { *(.debug_str) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	.debug_loc	0 : { *(.debug_loc) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	.debug_macinfo	0 : { *(.debug_macinfo) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	/* SGI/MIPS DWARF 2 extensions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	.debug_weaknames 0 : { *(.debug_weaknames) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	.debug_funcnames 0 : { *(.debug_funcnames) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	.debug_typenames 0 : { *(.debug_typenames) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	.debug_varnames  0 : { *(.debug_varnames) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	/* DWARF 3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	.debug_pubtypes 0 : { *(.debug_pubtypes) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	.debug_ranges	0 : { *(.debug_ranges) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	. = ALIGN(PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	PROVIDE(_vdso_data = .);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	/DISCARD/	: {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 		*(.note.GNU-stack)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 		*(.branch_lt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 		*(.data .data.* .gnu.linkonce.d.* .sdata*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 		*(.bss .sbss .dynbss .dynsbss)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)  * Very old versions of ld do not recognize this name token; use the constant.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define PT_GNU_EH_FRAME	0x6474e550
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)  * We must supply the ELF program headers explicitly to get just one
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)  * PT_LOAD segment, and set the flags explicitly to make segments read-only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) PHDRS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	text		PT_LOAD FILEHDR PHDRS FLAGS(5);	/* PF_R|PF_X */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	dynamic		PT_DYNAMIC FLAGS(4);		/* PF_R */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	note		PT_NOTE FLAGS(4);		/* PF_R */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	eh_frame_hdr	PT_GNU_EH_FRAME;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)  * This controls what symbols we export from the DSO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) VERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	VDSO_VERSION_STRING {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	global:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 		 * Has to be there for the kernel to find
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 		__kernel_gettimeofday;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 		__kernel_clock_gettime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 		__kernel_clock_getres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 		__kernel_getcpu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	local: *;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) }