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