0001
0002
0003
0004
0005
0006
0007 #if defined(BUILD_VDSO64)
0008 # define SHDR_SIZE 64
0009 #elif defined(BUILD_VDSO32)
0010 # define SHDR_SIZE 40
0011 #else
0012 # error unknown VDSO target
0013 #endif
0014
0015 #define NUM_FAKE_SHDRS 7
0016
0017 SECTIONS
0018 {
0019
0020
0021
0022
0023
0024
0025
0026 vvar_start = . -8192;
0027 vvar_data = vvar_start;
0028
0029 . = SIZEOF_HEADERS;
0030
0031 .hash : { *(.hash) } :text
0032 .gnu.hash : { *(.gnu.hash) }
0033 .dynsym : { *(.dynsym) }
0034 .dynstr : { *(.dynstr) }
0035 .gnu.version : { *(.gnu.version) }
0036 .gnu.version_d : { *(.gnu.version_d) }
0037 .gnu.version_r : { *(.gnu.version_r) }
0038
0039 .dynamic : { *(.dynamic) } :text :dynamic
0040
0041 .rodata : {
0042 *(.rodata*)
0043 *(.data*)
0044 *(.sdata*)
0045 *(.got.plt) *(.got)
0046 *(.gnu.linkonce.d.*)
0047 *(.bss*)
0048 *(.dynbss*)
0049 *(.gnu.linkonce.b.*)
0050
0051
0052
0053
0054
0055 VDSO_FAKE_SECTION_TABLE_START = .;
0056 . = . + NUM_FAKE_SHDRS * SHDR_SIZE;
0057 VDSO_FAKE_SECTION_TABLE_END = .;
0058 } :text
0059
0060 .fake_shstrtab : { *(.fake_shstrtab) } :text
0061
0062
0063 .note : { *(.note.*) } :text :note
0064
0065 .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr
0066 .eh_frame : { KEEP (*(.eh_frame)) } :text
0067
0068
0069
0070
0071
0072
0073
0074 .text : { *(.text*) } :text =0x90909090,
0075
0076 /DISCARD/ : {
0077 *(.discard)
0078 *(.discard.*)
0079 *(__bug_table)
0080 }
0081 }
0082
0083
0084
0085
0086 #define PT_GNU_EH_FRAME 0x6474e550
0087
0088
0089
0090
0091
0092 PHDRS
0093 {
0094 text PT_LOAD FLAGS(5) FILEHDR PHDRS;
0095 dynamic PT_DYNAMIC FLAGS(4);
0096 note PT_NOTE FLAGS(4);
0097 eh_frame_hdr PT_GNU_EH_FRAME;
0098 }