Index: sys/arm/linux/linux_vdso.lds.s =================================================================== --- /dev/null +++ sys/arm/linux/linux_vdso.lds.s @@ -0,0 +1,67 @@ +/* + * Linker script for 32-bit vDSO. + * Copied from Linux kernel arch/arm/vdso/vdso.lds.S + * + * $FreeBSD$ + */ + +SECTIONS +{ + PROVIDE(_start = .) ; + + . = SIZEOF_HEADERS ; + + .hash : { *(.hash) } :text + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + + .note : { *(.note.*) } :text :note + + + .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr + .eh_frame : { KEEP (*(.eh_frame)) } :text + + .dynamic : { *(.dynamic) } :text :dynamic + + .rodata : { *(.rodata*) } :text + + .text : { *(.text*) } :text =0xe7f001f2 + + .got : { *(.got) } + .rel.plt : { *(.rel.plt) } + + /DISCARD/ : { + *(.note.GNU-stack) + *(.data .data.* .gnu.linkonce.d.* .sdata*) + *(.bss .sbss .dynbss .dynsbss) + } +} + + /* + * We must supply the ELF program headers explicitly to get just one + * PT_LOAD segment, and set the flags explicitly to make segments read-only. + */ +PHDRS +{ + text PT_LOAD FLAGS(5) FILEHDR PHDRS ; /* PF_R|PF_X */ + dynamic PT_DYNAMIC FLAGS(4) ; /* PF_R */ + note PT_NOTE FLAGS(4) ; /* PF_R */ + eh_frame_hdr PT_GNU_EH_FRAME ; +} + +ENTRY(linux_vsyscall); + +VERSION +{ + LINUX_2.6 { + global: + linux_vsyscall; + linux_sigcode; + linux_rt_sigcode; + local: * ; + } ; + }