1b1994897Sopenharmony_ci/* Huawei Technologies Co.,Ltd. */ 2b1994897Sopenharmony_ci 3b1994897Sopenharmony_ci/* 4b1994897Sopenharmony_ci Panda linker script for placement of sections above 4GB. 5b1994897Sopenharmony_ci*/ 6b1994897Sopenharmony_ciSECTIONS { 7b1994897Sopenharmony_ci /* 8b1994897Sopenharmony_ci ASAN reserves (mmap) addresses for its own needs, 9b1994897Sopenharmony_ci so we have difference start addresses for asan and default buildings 10b1994897Sopenharmony_ci */ 11b1994897Sopenharmony_ci . = DEFINED(LSFLAG_ASAN) ? 0x100100000000 : 0x100010000; 12b1994897Sopenharmony_ci 13b1994897Sopenharmony_ci .interp : { *(.interp) } 14b1994897Sopenharmony_ci .note : { *SORT(.note*) } 15b1994897Sopenharmony_ci .hash : { *(.hash) *(.gnu.hash) } 16b1994897Sopenharmony_ci 17b1994897Sopenharmony_ci .dynsym : { *(.dynsym) } 18b1994897Sopenharmony_ci .dynstr : { *(.dynstr) } 19b1994897Sopenharmony_ci 20b1994897Sopenharmony_ci .gnu.version : { *(.gnu.version*) } 21b1994897Sopenharmony_ci 22b1994897Sopenharmony_ci .rela.dyn : { 23b1994897Sopenharmony_ci *(.rela.init) 24b1994897Sopenharmony_ci *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) 25b1994897Sopenharmony_ci *(.rela.fini) 26b1994897Sopenharmony_ci *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) 27b1994897Sopenharmony_ci *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) 28b1994897Sopenharmony_ci *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) 29b1994897Sopenharmony_ci *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) 30b1994897Sopenharmony_ci *(.rela.ctors) 31b1994897Sopenharmony_ci *(.rela.dtors) 32b1994897Sopenharmony_ci *(.rela.got) 33b1994897Sopenharmony_ci *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) 34b1994897Sopenharmony_ci *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) 35b1994897Sopenharmony_ci *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) 36b1994897Sopenharmony_ci *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) 37b1994897Sopenharmony_ci *(.rela.ifunc) 38b1994897Sopenharmony_ci } 39b1994897Sopenharmony_ci .rela.plt : { 40b1994897Sopenharmony_ci *(.rela.plt) 41b1994897Sopenharmony_ci PROVIDE_HIDDEN (__rela_iplt_start = .); 42b1994897Sopenharmony_ci *(.rela.iplt) 43b1994897Sopenharmony_ci PROVIDE_HIDDEN (__rela_iplt_end = .); 44b1994897Sopenharmony_ci } 45b1994897Sopenharmony_ci 46b1994897Sopenharmony_ci .init : { KEEP (*(SORT_NONE(.init))) } 47b1994897Sopenharmony_ci .plt : { *(.plt) *(.iplt) } 48b1994897Sopenharmony_ci .plt.got : { *(.plt.got) } 49b1994897Sopenharmony_ci .plt.sec : { *(.plt.sec) } 50b1994897Sopenharmony_ci .text : { *(.text .stub .text.*) } 51b1994897Sopenharmony_ci .fini : { KEEP (*(SORT_NONE(.fini))) } 52b1994897Sopenharmony_ci 53b1994897Sopenharmony_ci .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } 54b1994897Sopenharmony_ci .rodata1 : { *(.rodata1) } 55b1994897Sopenharmony_ci 56b1994897Sopenharmony_ci .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } 57b1994897Sopenharmony_ci .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } 58b1994897Sopenharmony_ci 59b1994897Sopenharmony_ci .preinit_array : { 60b1994897Sopenharmony_ci PROVIDE_HIDDEN (__preinit_array_start = .); 61b1994897Sopenharmony_ci KEEP (*(.preinit_array)) 62b1994897Sopenharmony_ci PROVIDE_HIDDEN (__preinit_array_end = .); 63b1994897Sopenharmony_ci } 64b1994897Sopenharmony_ci .init_array : { 65b1994897Sopenharmony_ci PROVIDE_HIDDEN (__init_array_start = .); 66b1994897Sopenharmony_ci KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) 67b1994897Sopenharmony_ci KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) 68b1994897Sopenharmony_ci PROVIDE_HIDDEN (__init_array_end = .); 69b1994897Sopenharmony_ci } 70b1994897Sopenharmony_ci .fini_array : { 71b1994897Sopenharmony_ci PROVIDE_HIDDEN (__fini_array_start = .); 72b1994897Sopenharmony_ci KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) 73b1994897Sopenharmony_ci KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 74b1994897Sopenharmony_ci PROVIDE_HIDDEN (__fini_array_end = .); 75b1994897Sopenharmony_ci } 76b1994897Sopenharmony_ci 77b1994897Sopenharmony_ci .ctors : { 78b1994897Sopenharmony_ci KEEP (*crtbegin.o(.ctors)) 79b1994897Sopenharmony_ci KEEP (*crtbegin?.o(.ctors)) 80b1994897Sopenharmony_ci KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) 81b1994897Sopenharmony_ci KEEP (*(SORT(.ctors.*))) 82b1994897Sopenharmony_ci KEEP (*(.ctors)) 83b1994897Sopenharmony_ci } 84b1994897Sopenharmony_ci .dtors : { 85b1994897Sopenharmony_ci KEEP (*crtbegin.o(.dtors)) 86b1994897Sopenharmony_ci KEEP (*crtbegin?.o(.dtors)) 87b1994897Sopenharmony_ci KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) 88b1994897Sopenharmony_ci KEEP (*(SORT(.dtors.*))) 89b1994897Sopenharmony_ci KEEP (*(.dtors)) 90b1994897Sopenharmony_ci } 91b1994897Sopenharmony_ci 92b1994897Sopenharmony_ci .jcr : { KEEP (*(.jcr)) } 93b1994897Sopenharmony_ci 94b1994897Sopenharmony_ci .dynamic : { *(.dynamic) } 95b1994897Sopenharmony_ci 96b1994897Sopenharmony_ci .got : { *(.got) *(.igot) } 97b1994897Sopenharmony_ci .got.plt : { *(.got.plt) *(.igot.plt) } 98b1994897Sopenharmony_ci 99b1994897Sopenharmony_ci .data : { *(.data .data.* .gnu.linkonce.d.*) } 100b1994897Sopenharmony_ci .data1 : { *(.data1) } 101b1994897Sopenharmony_ci .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) } 102b1994897Sopenharmony_ci 103b1994897Sopenharmony_ci .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } 104b1994897Sopenharmony_ci .lrodata : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } 105b1994897Sopenharmony_ci .ldata : { *(.ldata .ldata.* .gnu.linkonce.l.*) } 106b1994897Sopenharmony_ci 107b1994897Sopenharmony_ci .comment : { *(.comment) } 108b1994897Sopenharmony_ci} 109