1*df24e178SHelge Deller/* SPDX-License-Identifier: GPL-2.0 */
2*df24e178SHelge Deller/*
3*df24e178SHelge Deller * This is the infamous ld script for the 32 bits vdso library
4*df24e178SHelge Deller */
5*df24e178SHelge Deller#include <asm/vdso.h>
6*df24e178SHelge Deller#include <asm/page.h>
7*df24e178SHelge Deller
8*df24e178SHelge Deller/* Default link addresses for the vDSOs */
9*df24e178SHelge DellerOUTPUT_FORMAT("elf32-hppa-linux")
10*df24e178SHelge DellerOUTPUT_ARCH(hppa)
11*df24e178SHelge DellerENTRY(_start)
12*df24e178SHelge Deller
13*df24e178SHelge DellerSECTIONS
14*df24e178SHelge Deller{
15*df24e178SHelge Deller  . = VDSO_LBASE + SIZEOF_HEADERS;
16*df24e178SHelge Deller  .hash           : { *(.hash) }			:text
17*df24e178SHelge Deller  .gnu.hash       : { *(.gnu.hash) }
18*df24e178SHelge Deller  .dynsym         : { *(.dynsym) }
19*df24e178SHelge Deller  .dynstr         : { *(.dynstr) }
20*df24e178SHelge Deller  .gnu.version    : { *(.gnu.version) }
21*df24e178SHelge Deller  .gnu.version_d  : { *(.gnu.version_d) }
22*df24e178SHelge Deller  .gnu.version_r  : { *(.gnu.version_r) }
23*df24e178SHelge Deller
24*df24e178SHelge Deller  .note		  : { *(.note.*) } 			:text	:note
25*df24e178SHelge Deller
26*df24e178SHelge Deller  . = ALIGN (16);
27*df24e178SHelge Deller  .text :
28*df24e178SHelge Deller  {
29*df24e178SHelge Deller    *(.text .stub .text.* .gnu.linkonce.t.*)
30*df24e178SHelge Deller  }
31*df24e178SHelge Deller  PROVIDE (__etext = .);
32*df24e178SHelge Deller  PROVIDE (_etext = .);
33*df24e178SHelge Deller  PROVIDE (etext = .);
34*df24e178SHelge Deller
35*df24e178SHelge Deller  /* Other stuff is appended to the text segment: */
36*df24e178SHelge Deller  .rodata		: { *(.rodata .rodata.* .gnu.linkonce.r.*) }
37*df24e178SHelge Deller  .rodata1		: { *(.rodata1) }
38*df24e178SHelge Deller  .rodata2		: { *(.data.rel.ro) }
39*df24e178SHelge Deller
40*df24e178SHelge Deller  .eh_frame_hdr		: { *(.eh_frame_hdr) }		:text	:eh_frame_hdr
41*df24e178SHelge Deller  .eh_frame		: { KEEP (*(.eh_frame)) }	:text
42*df24e178SHelge Deller  .gcc_except_table	: { *(.gcc_except_table) }
43*df24e178SHelge Deller  .fixup		: { *(.fixup) }
44*df24e178SHelge Deller
45*df24e178SHelge Deller  .dynamic		: { *(.dynamic) }		:text	:dynamic
46*df24e178SHelge Deller  .plt : { *(.plt) }
47*df24e178SHelge Deller  .got : { *(.got) }
48*df24e178SHelge Deller
49*df24e178SHelge Deller  _end = .;
50*df24e178SHelge Deller  __end = .;
51*df24e178SHelge Deller  PROVIDE (end = .);
52*df24e178SHelge Deller
53*df24e178SHelge Deller
54*df24e178SHelge Deller  /* Stabs debugging sections are here too
55*df24e178SHelge Deller   */
56*df24e178SHelge Deller  .stab 0 : { *(.stab) }
57*df24e178SHelge Deller  .stabstr 0 : { *(.stabstr) }
58*df24e178SHelge Deller  .stab.excl 0 : { *(.stab.excl) }
59*df24e178SHelge Deller  .stab.exclstr 0 : { *(.stab.exclstr) }
60*df24e178SHelge Deller  .stab.index 0 : { *(.stab.index) }
61*df24e178SHelge Deller  .stab.indexstr 0 : { *(.stab.indexstr) }
62*df24e178SHelge Deller  .comment 0 : { *(.comment) }
63*df24e178SHelge Deller  .debug 0 : { *(.debug) }
64*df24e178SHelge Deller  .line 0 : { *(.line) }
65*df24e178SHelge Deller
66*df24e178SHelge Deller  .debug_srcinfo 0 : { *(.debug_srcinfo) }
67*df24e178SHelge Deller  .debug_sfnames 0 : { *(.debug_sfnames) }
68*df24e178SHelge Deller
69*df24e178SHelge Deller  .debug_aranges 0 : { *(.debug_aranges) }
70*df24e178SHelge Deller  .debug_pubnames 0 : { *(.debug_pubnames) }
71*df24e178SHelge Deller
72*df24e178SHelge Deller  .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
73*df24e178SHelge Deller  .debug_abbrev 0 : { *(.debug_abbrev) }
74*df24e178SHelge Deller  .debug_line 0 : { *(.debug_line) }
75*df24e178SHelge Deller  .debug_frame 0 : { *(.debug_frame) }
76*df24e178SHelge Deller  .debug_str 0 : { *(.debug_str) }
77*df24e178SHelge Deller  .debug_loc 0 : { *(.debug_loc) }
78*df24e178SHelge Deller  .debug_macinfo 0 : { *(.debug_macinfo) }
79*df24e178SHelge Deller
80*df24e178SHelge Deller  .debug_weaknames 0 : { *(.debug_weaknames) }
81*df24e178SHelge Deller  .debug_funcnames 0 : { *(.debug_funcnames) }
82*df24e178SHelge Deller  .debug_typenames 0 : { *(.debug_typenames) }
83*df24e178SHelge Deller  .debug_varnames 0 : { *(.debug_varnames) }
84*df24e178SHelge Deller
85*df24e178SHelge Deller  /DISCARD/ : { *(.note.GNU-stack) }
86*df24e178SHelge Deller  /DISCARD/ : { *(.data .data.* .gnu.linkonce.d.* .sdata*) }
87*df24e178SHelge Deller  /DISCARD/ : { *(.bss .sbss .dynbss .dynsbss) }
88*df24e178SHelge Deller}
89*df24e178SHelge Deller
90*df24e178SHelge Deller
91*df24e178SHelge DellerPHDRS
92*df24e178SHelge Deller{
93*df24e178SHelge Deller  text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */
94*df24e178SHelge Deller  note PT_NOTE FLAGS(4); /* PF_R */
95*df24e178SHelge Deller  dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
96*df24e178SHelge Deller  eh_frame_hdr PT_GNU_EH_FRAME;
97*df24e178SHelge Deller}
98*df24e178SHelge Deller
99*df24e178SHelge Deller
100*df24e178SHelge Deller/*
101*df24e178SHelge Deller * This controls what symbols we export from the DSO.
102*df24e178SHelge Deller */
103*df24e178SHelge DellerVERSION
104*df24e178SHelge Deller{
105*df24e178SHelge Deller  VDSO_VERSION_STRING {
106*df24e178SHelge Deller    global:
107*df24e178SHelge Deller	__kernel_sigtramp_rt32;
108*df24e178SHelge Deller	__kernel_restart_syscall32;
109*df24e178SHelge Deller    local: *;
110*df24e178SHelge Deller  };
111*df24e178SHelge Deller}
112