This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
vxworks tls part 1
- From: Nathan Sidwell <nathan at codesourcery dot com>
- To: binutils <binutils at sources dot redhat dot com>
- Date: Tue, 06 Nov 2007 19:06:39 +0000
- Subject: vxworks tls part 1
vxworks 6.6 supports a form of TLS. This patch adds the necessary linker script
fragments.
tested on arm, mips, sh, powerpc, i686 & sparc vxworks targets
ok?
nathan
--
Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery
2007-11-06 Nathan Sidwell <nathan@codesourcery.com>
ld/
* emulparams/vxworks.sh (OTHER_READONLY_SECTIONS,
OTHER_READWRITE_SECTIONS): Add TLS sections.
ld/testsuite/
* ld-vxworks/tls-1.d: New.
* ld-vxworks/tls-1.s: New.
Index: ld/emulparams/vxworks.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/vxworks.sh,v
retrieving revision 1.6
diff -c -3 -p -r1.6 vxworks.sh
*** ld/emulparams/vxworks.sh 27 Apr 2007 00:09:31 -0000 1.6
--- ld/emulparams/vxworks.sh 6 Nov 2007 17:15:32 -0000
*************** FINI_START='_fini = .;
*** 22,27 ****
--- 22,45 ----
FINI_END="KEEP (*(.fini\$99));
PROVIDE (${SYMPREFIX}_etext = .);"
+ OTHER_READONLY_SECTIONS=".tls_data ${RELOCATING-0} : {${RELOCATING+
+ __wrs_rtp_tls_data_start = .;
+ ___wrs_rtp_tls_data_start = .;}
+ *(.tls_data${RELOCATING+ .tls_data.*})
+ }${RELOCATING+
+ __wrs_rtp_tls_data_size = . - __wrs_rtp_tls_data_start;
+ ___wrs_rtp_tls_data_size = . - __wrs_rtp_tls_data_start;
+ __wrs_rtp_tls_data_align = ALIGNOF(.tls_data);
+ ___wrs_rtp_tls_data_align = ALIGNOF(.tls_data);}"
+
+ OTHER_READWRITE_SECTIONS=".tls_vars ${RELOCATING-0} : {${RELOCATING+
+ __wrs_rtp_tls_vars_start = .;
+ ___wrs_rtp_tls_vars_start = .;}
+ *(.tls_vars${RELOCATING+ .tls_vars.*})
+ }${RELOCATING+
+ __wrs_rtp_tls_vars_size = SIZEOF(.tls_vars);
+ ___wrs_rtp_tls_vars_size = SIZEOF(.tls_vars);}"
+
ETEXT_NAME=etext_unrelocated
OTHER_END_SYMBOLS="PROVIDE (${SYMPREFIX}_ehdr = ${TEXT_START_ADDR});"
DATA_END_SYMBOLS=".edata : { PROVIDE (${SYMPREFIX}_edata = .); }"
Index: ld/testsuite/ld-vxworks/tls-1.d
===================================================================
RCS file: ld/testsuite/ld-vxworks/tls-1.d
diff -N ld/testsuite/ld-vxworks/tls-1.d
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- ld/testsuite/ld-vxworks/tls-1.d 6 Nov 2007 19:01:11 -0000
***************
*** 0 ****
--- 1,25 ----
+ # source: tls-1.s
+ # ld: --entry foo -q
+ # nm: -r
+
+ #...
+ [0-9a-f]+ N __wrs_rtp_tls_vars_start
+ #...
+ 0000000c A __wrs_rtp_tls_vars_size
+ #...
+ [0-9a-f]+ N __wrs_rtp_tls_data_start
+ #...
+ 00000004 A __wrs_rtp_tls_data_size
+ #...
+ 00000004 A __wrs_rtp_tls_data_align
+ #...
+ [0-9a-f]+ N ___wrs_rtp_tls_vars_start
+ #...
+ 0000000c A ___wrs_rtp_tls_vars_size
+ #...
+ [0-9a-f]+ N ___wrs_rtp_tls_data_start
+ #...
+ 00000004 A ___wrs_rtp_tls_data_size
+ #...
+ 00000004 A ___wrs_rtp_tls_data_align
+ #pass
Index: ld/testsuite/ld-vxworks/tls-1.s
===================================================================
RCS file: ld/testsuite/ld-vxworks/tls-1.s
diff -N ld/testsuite/ld-vxworks/tls-1.s
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- ld/testsuite/ld-vxworks/tls-1.s 6 Nov 2007 19:01:11 -0000
***************
*** 0 ****
--- 1,19 ----
+ .globl foo
+ foo:
+
+ .section .tls_data
+ .p2align 2
+ .type i,%object
+ .size i,4
+ i:
+ .space 4
+ .globl __tls__i
+ .section .tls_vars
+ .p2align 2
+ .type __tls__i,%object
+ .size __tls__i,12
+ __tls__i:
+ .4byte i
+ .4byte 0
+ .4byte 4
+