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