94 lines
1.9 KiB
Text
94 lines
1.9 KiB
Text
/* PHDRS specifies ELF Program Headers (or segments) to the plugin linker */
|
|
PHDRS {
|
|
plugin PT_LOAD ; /* Specifies that the plugin segment should be loaded from file */
|
|
shorts PT_LOAD ; /* Specifies that the shorts segment should be loaded from file */
|
|
}
|
|
|
|
SECTIONS {
|
|
.text 0: {
|
|
_ftext = . ;
|
|
*(.text)
|
|
*(.text.*)
|
|
*(.gnu.linkonce.t*)
|
|
KEEP(*(.init))
|
|
KEEP(*(.fini))
|
|
QUAD(0)
|
|
} : plugin /*The ": plugin" tells the linker to assign this and
|
|
the following sections to the "plugin" segment*/
|
|
PROVIDE(_etext = .);
|
|
PROVIDE(etext = .);
|
|
|
|
.reginfo : { *(.reginfo) }
|
|
|
|
/* Global/static constructors and deconstructors. */
|
|
.ctors ALIGN(16): {
|
|
___plugin_ctors = .;
|
|
KEEP(*(SORT(.ctors.*)))
|
|
KEEP(*(.ctors))
|
|
___plugin_ctors_end = .;
|
|
}
|
|
.dtors ALIGN(16): {
|
|
___plugin_dtors = .;
|
|
KEEP(*(SORT(.dtors.*)))
|
|
KEEP(*(.dtors))
|
|
___plugin_dtors_end = .;
|
|
}
|
|
|
|
/* Static data. */
|
|
.rodata ALIGN(128): {
|
|
*(.rodata)
|
|
*(.rodata.*)
|
|
*(.gnu.linkonce.r*)
|
|
}
|
|
|
|
.data ALIGN(128): {
|
|
_fdata = . ;
|
|
*(.data)
|
|
*(.data.*)
|
|
*(.gnu.linkonce.d*)
|
|
SORT(CONSTRUCTORS)
|
|
}
|
|
|
|
.rdata ALIGN(128): { *(.rdata) }
|
|
.gcc_except_table ALIGN(128): { *(.gcc_except_table) }
|
|
|
|
.bss ALIGN(128) : {
|
|
*(.bss)
|
|
*(.bss.*)
|
|
*(.gnu.linkonce.b*)
|
|
*(COMMON)
|
|
}
|
|
_end_bss = .;
|
|
|
|
_end = . ;
|
|
PROVIDE(end = .);
|
|
|
|
/* Symbols needed by crt0.s. */
|
|
PROVIDE(_heap_size = -1);
|
|
PROVIDE(_stack = -1);
|
|
PROVIDE(_stack_size = 128 * 1024);
|
|
|
|
/*We assign the output location counter to the plugin hole made
|
|
in main_prog.ld, then assign the small data sections to the shorts segment*/
|
|
. = __plugin_hole_start;
|
|
.lit4 ALIGN(128): { *(.lit4) } : shorts
|
|
.lit8 ALIGN(128): { *(.lit8) }
|
|
|
|
.sdata ALIGN(128): {
|
|
*(.sdata)
|
|
*(.sdata.*)
|
|
*(.gnu.linkonce.s*)
|
|
}
|
|
|
|
_edata = .;
|
|
PROVIDE(edata = .);
|
|
|
|
/* Uninitialized data. */
|
|
.sbss ALIGN(128) : {
|
|
_fbss = . ;
|
|
*(.sbss)
|
|
*(.sbss.*)
|
|
*(.gnu.linkonce.sb*)
|
|
*(.scommon)
|
|
}
|
|
}
|