| /* |
| This test exercises parsing typical commands found in GNU ld linker scripts. |
| RUN: linker-script-test %s | FileCheck %s |
| */ |
| |
| SEARCH_DIR("/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); |
| SECTIONS |
| { |
| PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS; |
| .interp : { *(.interp) } |
| .note.gnu.build-id : { *(.note.gnu.build-id) } |
| .hash : { *(.hash) } |
| .rela.dyn : |
| { |
| *(.rela.init) |
| *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) |
| *(.rela.fini) |
| *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) |
| } |
| .rela.plt : |
| { |
| *(.rela.plt) |
| PROVIDE_HIDDEN (__rela_iplt_start = .); |
| *(.rela.iplt) |
| PROVIDE_HIDDEN (__rela_iplt_end = .); |
| } |
| .init : |
| { |
| FILL (0x90909090) |
| KEEP (*(SORT_NONE(.init))) |
| } =0x909090909090909090909090 |
| PROVIDE (__etext = .); |
| .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } |
| .exception_ranges : ONLY_IF_RO { *(.exception_ranges |
| .exception_ranges*) } |
| . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); |
| /* Exception handling */ |
| .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } |
| .ctors : |
| { |
| KEEP (*crtbegin.o(.ctors)) |
| KEEP (*crtbegin?.o(.ctors)) |
| KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) |
| KEEP (*(SORT(.ctors.*))) |
| KEEP (*(.ctors)) |
| } |
| .dtors : |
| { |
| KEEP (*crtbegin.o(.dtors)) |
| KEEP (*crtbegin?.o(.dtors)) |
| KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) |
| KEEP (*(SORT(.dtors.*))) |
| KEEP (*(.dtors)) |
| } |
| . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); |
| .got.plt : { *(.got.plt) *(.igot.plt) } |
| .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : |
| { |
| *(.lrodata .lrodata.* .gnu.linkonce.lr.*) |
| } |
| .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : |
| { |
| *(.ldata .ldata.* .gnu.linkonce.l.*) |
| . = ALIGN(. != 0 ? 64 / 8 : 1); |
| } |
| . = ALIGN(64 / 8); |
| _end = .; PROVIDE (end = .); |
| . = DATA_SEGMENT_END (.); |
| /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } |
| } |
| |
| /* |
| CHECK: kw_search_dir: SEARCH_DIR |
| CHECK: l_paren: ( |
| CHECK: identifier: /usr/x86_64-linux-gnu/lib64 |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: kw_search_dir: SEARCH_DIR |
| CHECK: l_paren: ( |
| CHECK: identifier: =/usr/local/lib/x86_64-linux-gnu |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: kw_sections: SECTIONS |
| CHECK: l_brace: { |
| CHECK: kw_provide: PROVIDE |
| CHECK: l_paren: ( |
| CHECK: identifier: __executable_start |
| CHECK: equal: = |
| CHECK: identifier: SEGMENT_START |
| CHECK: l_paren: ( |
| CHECK: identifier: text-segment |
| CHECK: comma: , |
| CHECK: number: 0x400000 |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: identifier: . |
| CHECK: equal: = |
| CHECK: identifier: SEGMENT_START |
| CHECK: l_paren: ( |
| CHECK: identifier: text-segment |
| CHECK: comma: , |
| CHECK: number: 0x400000 |
| CHECK: r_paren: ) |
| CHECK: plus: + |
| CHECK: identifier: SIZEOF_HEADERS |
| CHECK: semicolon: ; |
| CHECK: identifier: .interp |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .interp |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .note.gnu.build-id |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .note.gnu.build-id |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .hash |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .hash |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .rela.dyn |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .rela.init |
| CHECK: r_paren: ) |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .rela.text |
| CHECK: identifier: .rela.text.* |
| CHECK: identifier: .rela.gnu.linkonce.t.* |
| CHECK: r_paren: ) |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .rela.fini |
| CHECK: r_paren: ) |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .rela.rodata |
| CHECK: identifier: .rela.rodata.* |
| CHECK: identifier: .rela.gnu.linkonce.r.* |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .rela.plt |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .rela.plt |
| CHECK: r_paren: ) |
| CHECK: kw_provide_hidden: PROVIDE_HIDDEN |
| CHECK: l_paren: ( |
| CHECK: identifier: __rela_iplt_start |
| CHECK: equal: = |
| CHECK: identifier: . |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .rela.iplt |
| CHECK: r_paren: ) |
| CHECK: kw_provide_hidden: PROVIDE_HIDDEN |
| CHECK: l_paren: ( |
| CHECK: identifier: __rela_iplt_end |
| CHECK: equal: = |
| CHECK: identifier: . |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: r_brace: } |
| CHECK: identifier: .init |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: kw_fill: FILL |
| CHECK: l_paren: ( |
| CHECK: number: 0x90909090 |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: kw_sort_none: SORT_NONE |
| CHECK: l_paren: ( |
| CHECK: identifier: .init |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: kw_provide: PROVIDE |
| CHECK: l_paren: ( |
| CHECK: identifier: __etext |
| CHECK: equal: = |
| CHECK: identifier: . |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: identifier: .eh_frame |
| CHECK: colon: : |
| CHECK: kw_only_if_ro: ONLY_IF_RO |
| CHECK: l_brace: { |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .eh_frame |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .exception_ranges |
| CHECK: colon: : |
| CHECK: kw_only_if_ro: ONLY_IF_RO |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .exception_ranges |
| CHECK: identifier: .exception_ranges* |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: . |
| CHECK: equal: = |
| CHECK: kw_align: ALIGN |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: minus: - |
| CHECK: l_paren: ( |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: minus: - |
| CHECK: identifier: . |
| CHECK: r_paren: ) |
| CHECK: amp: & |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: minus: - |
| CHECK: number: 1 |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: identifier: . |
| CHECK: equal: = |
| CHECK: identifier: DATA_SEGMENT_ALIGN |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: comma: , |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: COMMONPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: identifier: .eh_frame |
| CHECK: colon: : |
| CHECK: kw_only_if_rw: ONLY_IF_RW |
| CHECK: l_brace: { |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .eh_frame |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .ctors |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: identifier: *crtbegin.o |
| CHECK: l_paren: ( |
| CHECK: identifier: .ctors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: identifier: *crtbegin?.o |
| CHECK: l_paren: ( |
| CHECK: identifier: .ctors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: kw_exclude_file: EXCLUDE_FILE |
| CHECK: l_paren: ( |
| CHECK: identifier: *crtend.o |
| CHECK: identifier: *crtend?.o |
| CHECK: r_paren: ) |
| CHECK: identifier: .ctors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: kw_sort_by_name: SORT |
| CHECK: l_paren: ( |
| CHECK: identifier: .ctors.* |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .ctors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .dtors |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: identifier: *crtbegin.o |
| CHECK: l_paren: ( |
| CHECK: identifier: .dtors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: identifier: *crtbegin?.o |
| CHECK: l_paren: ( |
| CHECK: identifier: .dtors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: kw_exclude_file: EXCLUDE_FILE |
| CHECK: l_paren: ( |
| CHECK: identifier: *crtend.o |
| CHECK: identifier: *crtend?.o |
| CHECK: r_paren: ) |
| CHECK: identifier: .dtors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: kw_sort_by_name: SORT |
| CHECK: l_paren: ( |
| CHECK: identifier: .dtors.* |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: kw_keep: KEEP |
| CHECK: l_paren: ( |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .dtors |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: . |
| CHECK: equal: = |
| CHECK: identifier: DATA_SEGMENT_RELRO_END |
| CHECK: l_paren: ( |
| CHECK: identifier: SIZEOF |
| CHECK: l_paren: ( |
| CHECK: identifier: .got.plt |
| CHECK: r_paren: ) |
| CHECK: greaterequal: >= |
| CHECK: number: 24 |
| CHECK: question: ? |
| CHECK: number: 24 |
| CHECK: colon: : |
| CHECK: number: 0 |
| CHECK: comma: , |
| CHECK: identifier: . |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: identifier: .got.plt |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .got.plt |
| CHECK: r_paren: ) |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .igot.plt |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .lrodata |
| CHECK: kw_align: ALIGN |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: plus: + |
| CHECK: l_paren: ( |
| CHECK: identifier: . |
| CHECK: amp: & |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: minus: - |
| CHECK: number: 1 |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .lrodata |
| CHECK: identifier: .lrodata.* |
| CHECK: identifier: .gnu.linkonce.lr.* |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: identifier: .ldata |
| CHECK: kw_align: ALIGN |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: plus: + |
| CHECK: l_paren: ( |
| CHECK: identifier: . |
| CHECK: amp: & |
| CHECK: l_paren: ( |
| CHECK: identifier: CONSTANT |
| CHECK: l_paren: ( |
| CHECK: identifier: MAXPAGESIZE |
| CHECK: r_paren: ) |
| CHECK: minus: - |
| CHECK: number: 1 |
| CHECK: r_paren: ) |
| CHECK: r_paren: ) |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .ldata |
| CHECK: identifier: .ldata.* |
| CHECK: identifier: .gnu.linkonce.l.* |
| CHECK: r_paren: ) |
| CHECK: identifier: . |
| CHECK: equal: = |
| CHECK: kw_align: ALIGN |
| CHECK: l_paren: ( |
| CHECK: identifier: . |
| CHECK: exclaimequal: != |
| CHECK: number: 0 |
| CHECK: question: ? |
| CHECK: number: 64 |
| CHECK: slash: / |
| CHECK: number: 8 |
| CHECK: colon: : |
| CHECK: number: 1 |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: r_brace: } |
| CHECK: identifier: . |
| CHECK: equal: = |
| CHECK: kw_align: ALIGN |
| CHECK: l_paren: ( |
| CHECK: number: 64 |
| CHECK: slash: / |
| CHECK: number: 8 |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: identifier: _end |
| CHECK: equal: = |
| CHECK: identifier: . |
| CHECK: semicolon: ; |
| CHECK: kw_provide: PROVIDE |
| CHECK: l_paren: ( |
| CHECK: identifier: end |
| CHECK: equal: = |
| CHECK: identifier: . |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: identifier: . |
| CHECK: equal: = |
| CHECK: identifier: DATA_SEGMENT_END |
| CHECK: l_paren: ( |
| CHECK: identifier: . |
| CHECK: r_paren: ) |
| CHECK: semicolon: ; |
| CHECK: kw_discard: /DISCARD/ |
| CHECK: colon: : |
| CHECK: l_brace: { |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .note.GNU-stack |
| CHECK: r_paren: ) |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .gnu_debuglink |
| CHECK: r_paren: ) |
| CHECK: star: * |
| CHECK: l_paren: ( |
| CHECK: identifier: .gnu.lto_* |
| CHECK: r_paren: ) |
| CHECK: r_brace: } |
| CHECK: r_brace: } |
| CHECK: eof: |
| CHECK: SEARCH_DIR("/usr/x86_64-linux-gnu/lib64") |
| CHECK: SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu") |
| CHECK: SECTIONS |
| CHECK: { |
| CHECK: PROVIDE(__executable_start = SEGMENT_START(text-segment, 4194304)) |
| CHECK: . = (SEGMENT_START(text-segment, 4194304) + SIZEOF_HEADERS) |
| CHECK: .interp : |
| CHECK: { |
| CHECK: *(.interp) |
| CHECK: } |
| CHECK: .note.gnu.build-id : |
| CHECK: { |
| CHECK: *(.note.gnu.build-id) |
| CHECK: } |
| CHECK: .hash : |
| CHECK: { |
| CHECK: *(.hash) |
| CHECK: } |
| CHECK: .rela.dyn : |
| CHECK: { |
| CHECK: *(.rela.init) |
| CHECK: *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) |
| CHECK: *(.rela.fini) |
| CHECK: *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) |
| CHECK: } |
| CHECK: .rela.plt : |
| CHECK: { |
| CHECK: *(.rela.plt) |
| CHECK: PROVIDE_HIDDEN(__rela_iplt_start = .) |
| CHECK: *(.rela.iplt) |
| CHECK: PROVIDE_HIDDEN(__rela_iplt_end = .) |
| CHECK: } |
| CHECK: .init : |
| CHECK: { |
| CHECK: FILL(0x90909090) |
| CHECK: KEEP(*(SORT_NONE(.init))) |
| CHECK: } =0x909090909090909090909090 |
| CHECK: PROVIDE(__etext = .) |
| CHECK: .eh_frame : |
| CHECK: ONLY_IF_RO { |
| CHECK: KEEP(*(.eh_frame)) |
| CHECK: } |
| CHECK: .exception_ranges : |
| CHECK: ONLY_IF_RO { |
| CHECK: *(.exception_ranges .exception_ranges*) |
| CHECK: } |
| CHECK: . = (ALIGN(CONSTANT(MAXPAGESIZE)) - ((CONSTANT(MAXPAGESIZE) - .) & (CONSTANT(MAXPAGESIZE) - 1))) |
| CHECK: . = DATA_SEGMENT_ALIGN(CONSTANT(MAXPAGESIZE), CONSTANT(COMMONPAGESIZE)) |
| CHECK: .eh_frame : |
| CHECK: ONLY_IF_RW { |
| CHECK: KEEP(*(.eh_frame)) |
| CHECK: } |
| CHECK: .ctors : |
| CHECK: { |
| CHECK: KEEP(*crtbegin.o(.ctors)) |
| CHECK: KEEP(*crtbegin?.o(.ctors)) |
| CHECK: KEEP(*(EXCLUDE_FILE(*crtend.o *crtend?.o ) .ctors)) |
| CHECK: KEEP(*(SORT_BY_NAME(.ctors.*))) |
| CHECK: KEEP(*(.ctors)) |
| CHECK: } |
| CHECK: .dtors : |
| CHECK: { |
| CHECK: KEEP(*crtbegin.o(.dtors)) |
| CHECK: KEEP(*crtbegin?.o(.dtors)) |
| CHECK: KEEP(*(EXCLUDE_FILE(*crtend.o *crtend?.o ) .dtors)) |
| CHECK: KEEP(*(SORT_BY_NAME(.dtors.*))) |
| CHECK: KEEP(*(.dtors)) |
| CHECK: } |
| CHECK: . = DATA_SEGMENT_RELRO_END((SIZEOF(.got.plt) >= 24) ? 24 : 0, .) |
| CHECK: .got.plt : |
| CHECK: { |
| CHECK: *(.got.plt) |
| CHECK: *(.igot.plt) |
| CHECK: } |
| CHECK: .lrodata (ALIGN(CONSTANT(MAXPAGESIZE)) + (. & (CONSTANT(MAXPAGESIZE) - 1))) : |
| CHECK: { |
| CHECK: *(.lrodata .lrodata.* .gnu.linkonce.lr.*) |
| CHECK: } |
| CHECK: .ldata (ALIGN(CONSTANT(MAXPAGESIZE)) + (. & (CONSTANT(MAXPAGESIZE) - 1))) : |
| CHECK: { |
| CHECK: *(.ldata .ldata.* .gnu.linkonce.l.*) |
| CHECK: . = ALIGN((. != 0) ? (64 / 8) : 1) |
| CHECK: } |
| CHECK: . = ALIGN((64 / 8)) |
| CHECK: _end = . |
| CHECK: PROVIDE(end = .) |
| CHECK: . = DATA_SEGMENT_END(.) |
| CHECK: : |
| CHECK: { |
| CHECK: *(.note.GNU-stack) |
| CHECK: *(.gnu_debuglink) |
| CHECK: *(.gnu.lto_*) |
| CHECK: } |
| CHECK: } |
| */ |