xref: /freebsd/sys/amd64/linux32/linux32_vdso.lds.s (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1bdc37934SDmitry Chagin/*
2bdc37934SDmitry Chagin * Linker script for 32-bit vDSO.
3bdc37934SDmitry Chagin * Copied from Linux kernel arch/x86/vdso/vdso-layout.lds.S
4bdc37934SDmitry Chagin * and arch/x86/vdso/vdso32/vdso32.lds.S
5bdc37934SDmitry Chagin */
6bdc37934SDmitry Chagin
7bdc37934SDmitry ChaginSECTIONS
8bdc37934SDmitry Chagin{
9bdc37934SDmitry Chagin	. = . + SIZEOF_HEADERS;
10bdc37934SDmitry Chagin
11bdc37934SDmitry Chagin	.hash		: { *(.hash) }			:text
12bdc37934SDmitry Chagin	.gnu.hash	: { *(.gnu.hash) }
13bdc37934SDmitry Chagin	.dynsym		: { *(.dynsym) }
14bdc37934SDmitry Chagin	.dynstr		: { *(.dynstr) }
15bdc37934SDmitry Chagin	.gnu.version	: { *(.gnu.version) }
16bdc37934SDmitry Chagin	.gnu.version_d	: { *(.gnu.version_d) }
17bdc37934SDmitry Chagin	.gnu.version_r	: { *(.gnu.version_r) }
18bdc37934SDmitry Chagin
19bdc37934SDmitry Chagin	.note		: { *(.note.*) }		:text	:note
20bdc37934SDmitry Chagin
21bdc37934SDmitry Chagin	.eh_frame_hdr	: { *(.eh_frame_hdr) }		:text	:eh_frame_hdr
22bdc37934SDmitry Chagin	.eh_frame	: { KEEP (*(.eh_frame)) }	:text
23bdc37934SDmitry Chagin
24bdc37934SDmitry Chagin	.dynamic	: { *(.dynamic) }		:text	:dynamic
25bdc37934SDmitry Chagin
26bdc37934SDmitry Chagin	.rodata		: { *(.rodata*) }		:text
27bdc37934SDmitry Chagin	.data		: {
28bdc37934SDmitry Chagin	      *(.data*)
29bdc37934SDmitry Chagin	      *(.sdata*)
30bdc37934SDmitry Chagin	      *(.got.plt) *(.got)
31bdc37934SDmitry Chagin	      *(.gnu.linkonce.d.*)
32bdc37934SDmitry Chagin	      *(.bss*)
33bdc37934SDmitry Chagin	      *(.dynbss*)
34bdc37934SDmitry Chagin	      *(.gnu.linkonce.b.*)
35bdc37934SDmitry Chagin	}
36bdc37934SDmitry Chagin
37bdc37934SDmitry Chagin	.altinstructions	: { *(.altinstructions) }
38bdc37934SDmitry Chagin	.altinstr_replacement	: { *(.altinstr_replacement) }
39bdc37934SDmitry Chagin
40bdc37934SDmitry Chagin	. = ALIGN(0x100);
41bdc37934SDmitry Chagin	.text		: { *(.text*) }			:text	=0x90909090
42bdc37934SDmitry Chagin}
43bdc37934SDmitry Chagin
44bdc37934SDmitry ChaginPHDRS
45bdc37934SDmitry Chagin{
46bdc37934SDmitry Chagin	text		PT_LOAD		FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
47bdc37934SDmitry Chagin	dynamic		PT_DYNAMIC	FLAGS(4);		/* PF_R */
48bdc37934SDmitry Chagin	note		PT_NOTE		FLAGS(4);		/* PF_R */
49bdc37934SDmitry Chagin	eh_frame_hdr	PT_GNU_EH_FRAME;
50bdc37934SDmitry Chagin}
51bdc37934SDmitry Chagin
52bdc37934SDmitry ChaginVERSION
53bdc37934SDmitry Chagin{
549931033bSDmitry Chagin	LINUX_2.6 {
559931033bSDmitry Chagin	global:
569931033bSDmitry Chagin		__vdso_clock_gettime;
579931033bSDmitry Chagin		__vdso_gettimeofday;
589931033bSDmitry Chagin		__vdso_time;
595a6a4fb2SDmitry Chagin		__vdso_getcpu;
609931033bSDmitry Chagin		__vdso_clock_getres;
619931033bSDmitry Chagin		__vdso_clock_gettime64;
629931033bSDmitry Chagin	};
639931033bSDmitry Chagin
64bdc37934SDmitry Chagin	LINUX_2.5 {
65bdc37934SDmitry Chagin	global:
669931033bSDmitry Chagin		__kernel_vsyscall;
679931033bSDmitry Chagin		__kernel_sigreturn;
689931033bSDmitry Chagin		__kernel_rt_sigreturn;
699931033bSDmitry Chagin	local: *;
709931033bSDmitry Chagin	};
719931033bSDmitry Chagin
729931033bSDmitry Chagin	LINUX_0.0 {
739931033bSDmitry Chagin	global:
740020bdf1SDmitry Chagin		linux_platform;
759931033bSDmitry Chagin		kern_timekeep_base;
769931033bSDmitry Chagin		kern_tsc_selector;
775a6a4fb2SDmitry Chagin		kern_cpu_selector;
78*8f9635dcSDmitry Chagin		linux32_vdso_sigcode;
79*8f9635dcSDmitry Chagin		linux32_vdso_rt_sigcode;
80bdc37934SDmitry Chagin	local: *;
81bdc37934SDmitry Chagin	};
82bdc37934SDmitry Chagin}
83