forked from OSchip/llvm-project
625 lines
14 KiB
Plaintext
625 lines
14 KiB
Plaintext
/*
|
|
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: }
|
|
*/
|