1 # If you change this file, please also look at files which source this one:
2 # armelf_vxworks.sh elf32ebmipvxworks.sh elf32elmipvxworks.sh
3 # elf_i386_vxworks.sh elf32ppcvxworks.sh elf32_sparc_vxworks.sh
6 # The Diab tools use a different init/fini convention. Initialization code
7 # is place in sections named ".init$NN". These sections are then concatenated
8 # into the .init section. It is important that .init$00 be first and .init$99
9 # be last. The other sections should be sorted, but the current linker script
10 # parse does not seem to allow that with the SORT keyword in this context.
11 INIT_START
='_init = .;
13 KEEP (*(.init$0[1-9]));
14 KEEP (*(.init$[1-8][0-9]));
15 KEEP (*(.init$9[0-8]));'
16 INIT_END
='KEEP (*(.init$99));'
17 FINI_START
='_fini = .;
19 KEEP (*(.fini$0[1-9]));
20 KEEP (*(.fini$[1-8][0-9]));
21 KEEP (*(.fini$9[0-8]));'
22 FINI_END
="KEEP (*(.fini\$99));
23 PROVIDE (${SYMPREFIX}_etext = .);"
25 OTHER_READWRITE_SECTIONS
=".tls_data ${RELOCATING-0} : {${RELOCATING+
26 __wrs_rtp_tls_data_start = .;
27 ___wrs_rtp_tls_data_start = .;}
28 *(.tls_data${RELOCATING+ .tls_data.*})
30 __wrs_rtp_tls_data_size = . - __wrs_rtp_tls_data_start;
31 ___wrs_rtp_tls_data_size = . - __wrs_rtp_tls_data_start;
32 __wrs_rtp_tls_data_align = ALIGNOF(.tls_data);
33 ___wrs_rtp_tls_data_align = ALIGNOF(.tls_data);}
34 .tls_vars ${RELOCATING-0} : {${RELOCATING+
35 __wrs_rtp_tls_vars_start = .;
36 ___wrs_rtp_tls_vars_start = .;}
37 *(.tls_vars${RELOCATING+ .tls_vars.*})
39 __wrs_rtp_tls_vars_size = SIZEOF(.tls_vars);
40 ___wrs_rtp_tls_vars_size = SIZEOF(.tls_vars);}"
42 TEXT_START_ADDR
="(DEFINED (__wrs_rtp_base) ? __wrs_rtp_base : 0)"
43 ETEXT_NAME
=etext_unrelocated
44 OTHER_END_SYMBOLS
="PROVIDE (${SYMPREFIX}_ehdr = ${TEXT_START_ADDR});"
45 DATA_END_SYMBOLS
=".edata : { PROVIDE (${SYMPREFIX}_edata = .); }"
46 VXWORKS_BASE_EM_FILE
=$EXTRA_EM_FILE