xref: /freebsd/sys/arm64/linux/linux_vdso.lds.s (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1d01c382eSEd Maste/*
29931033bSDmitry Chagin * Linker script for 64-bit vDSO.
3c56480a8SDmitry Chagin * Copied from Linux kernel arch/arm64/kernel/vdso/vdso.lds.S
4d01c382eSEd Maste */
5d01c382eSEd Maste
6d01c382eSEd MasteSECTIONS
7d01c382eSEd Maste{
8d01c382eSEd Maste	. = . + SIZEOF_HEADERS;
99931033bSDmitry Chagin
109931033bSDmitry Chagin	.hash		: { *(.hash) }			:text
11d01c382eSEd Maste	.gnu.hash	: { *(.gnu.hash) }
12d01c382eSEd Maste	.dynsym		: { *(.dynsym) }
13d01c382eSEd Maste	.dynstr		: { *(.dynstr) }
14d01c382eSEd Maste	.gnu.version	: { *(.gnu.version) }
15d01c382eSEd Maste	.gnu.version_d	: { *(.gnu.version_d) }
16d01c382eSEd Maste	.gnu.version_r	: { *(.gnu.version_r) }
179931033bSDmitry Chagin
18c56480a8SDmitry Chagin	/DISCARD/	: {
19c56480a8SDmitry Chagin		*(.note.GNU-stack .note.gnu.property)
20c56480a8SDmitry Chagin	}
21c56480a8SDmitry Chagin
229931033bSDmitry Chagin	.note		: { *(.note.*) }		:text	:note
239931033bSDmitry Chagin
24c56480a8SDmitry Chagin	. = ALIGN(0x100);
25c56480a8SDmitry Chagin
26c56480a8SDmitry Chagin	.text		: { *(.text*) }			:text	=0x90909090
27c56480a8SDmitry Chagin	PROVIDE (__etext = .);
28c56480a8SDmitry Chagin	PROVIDE (_etext = .);
29c56480a8SDmitry Chagin	PROVIDE (etext = .);
309931033bSDmitry Chagin
319931033bSDmitry Chagin	.dynamic	: { *(.dynamic) }		:text	:dynamic
329931033bSDmitry Chagin
339931033bSDmitry Chagin	.rodata		: { *(.rodata*) }		:text
349931033bSDmitry Chagin	.data		: {
359931033bSDmitry Chagin		*(.data*)
369931033bSDmitry Chagin	}
379931033bSDmitry Chagin
38c56480a8SDmitry Chagin	_end = .;
39c56480a8SDmitry Chagin	PROVIDE(end = .);
409931033bSDmitry Chagin
41c56480a8SDmitry Chagin	/DISCARD/	: {
42c56480a8SDmitry Chagin		*(.eh_frame .eh_frame_hdr)
43c56480a8SDmitry Chagin	}
449931033bSDmitry Chagin}
459931033bSDmitry Chagin
469931033bSDmitry ChaginPHDRS
479931033bSDmitry Chagin{
489931033bSDmitry Chagin	text		PT_LOAD		FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
499931033bSDmitry Chagin	dynamic		PT_DYNAMIC	FLAGS(4);		/* PF_R */
509931033bSDmitry Chagin	note		PT_NOTE		FLAGS(4);		/* PF_R */
519931033bSDmitry Chagin}
529931033bSDmitry Chagin
539931033bSDmitry Chagin/*
549931033bSDmitry Chagin * This controls what symbols we export from the DSO.
559931033bSDmitry Chagin */
569931033bSDmitry ChaginVERSION
579931033bSDmitry Chagin{
589931033bSDmitry Chagin	LINUX_2.6.39 {
599931033bSDmitry Chagin	global:
609931033bSDmitry Chagin		__kernel_rt_sigreturn;
619931033bSDmitry Chagin		__kernel_gettimeofday;
629931033bSDmitry Chagin		__kernel_clock_gettime;
639931033bSDmitry Chagin		__kernel_clock_getres;
649931033bSDmitry Chagin	local: *;
659931033bSDmitry Chagin	};
669931033bSDmitry Chagin
679931033bSDmitry Chagin	LINUX_0.0 {
689931033bSDmitry Chagin	global:
699931033bSDmitry Chagin		linux_platform;
709931033bSDmitry Chagin		kern_timekeep_base;
71*d957343fSDmitry Chagin		__user_rt_sigreturn;
729931033bSDmitry Chagin	local: *;
739931033bSDmitry Chagin	};
74d01c382eSEd Maste}
75