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