summaryrefslogtreecommitdiffstats
path: root/lib/csu
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2004-08-15 16:18:52 +0000
committerdfr <dfr@FreeBSD.org>2004-08-15 16:18:52 +0000
commit2f90ca8b3cce7d9b8e36a7641f90e8d59ebde4a5 (patch)
treee8c5fbe955b31ea20466f96e5959370ad849667b /lib/csu
parentce4e47fed011aaea8720c16b940600231fdab789 (diff)
downloadFreeBSD-src-2f90ca8b3cce7d9b8e36a7641f90e8d59ebde4a5.zip
FreeBSD-src-2f90ca8b3cce7d9b8e36a7641f90e8d59ebde4a5.tar.gz
Add support for TLS in statically linked programs.
Diffstat (limited to 'lib/csu')
-rw-r--r--lib/csu/alpha/crt1.c2
-rw-r--r--lib/csu/amd64/crt1.c2
-rw-r--r--lib/csu/arm/crt1.c2
-rw-r--r--lib/csu/i386-elf/crt1.c2
-rw-r--r--lib/csu/ia64/crt1.S5
-rw-r--r--lib/csu/powerpc/crt1.c2
-rw-r--r--lib/csu/sparc64/crt1.c2
7 files changed, 17 insertions, 0 deletions
diff --git a/lib/csu/alpha/crt1.c b/lib/csu/alpha/crt1.c
index b8ad3ea..7a936e9 100644
--- a/lib/csu/alpha/crt1.c
+++ b/lib/csu/alpha/crt1.c
@@ -93,6 +93,8 @@ _start(char **ap, void (*cleanup)(void), struct Struct_Obj_Entry *obj __unused,
if (&_DYNAMIC != NULL)
atexit(cleanup);
+ else
+ _init_tls();
#ifdef GCRT
atexit(_mcleanup);
diff --git a/lib/csu/amd64/crt1.c b/lib/csu/amd64/crt1.c
index 15aec44..f1f0f7b 100644
--- a/lib/csu/amd64/crt1.c
+++ b/lib/csu/amd64/crt1.c
@@ -77,6 +77,8 @@ _start(char **ap, void (*cleanup)(void))
if (&_DYNAMIC != NULL)
atexit(cleanup);
+ else
+ _init_tls();
#ifdef GCRT
atexit(_mcleanup);
diff --git a/lib/csu/arm/crt1.c b/lib/csu/arm/crt1.c
index 706aaee..bcee2ca 100644
--- a/lib/csu/arm/crt1.c
+++ b/lib/csu/arm/crt1.c
@@ -116,6 +116,8 @@ __start(int argc, char **argv, char **env,
if (&_DYNAMIC != NULL)
atexit(cleanup);
+ else
+ _init_tls();
#ifdef GCRT
atexit(_mcleanup);
diff --git a/lib/csu/i386-elf/crt1.c b/lib/csu/i386-elf/crt1.c
index 15a544c..9e8acaa 100644
--- a/lib/csu/i386-elf/crt1.c
+++ b/lib/csu/i386-elf/crt1.c
@@ -92,6 +92,8 @@ _start(char *ap, ...)
if (&_DYNAMIC != NULL)
atexit(cleanup);
+ else
+ _init_tls();
#ifdef GCRT
atexit(_mcleanup);
diff --git a/lib/csu/ia64/crt1.S b/lib/csu/ia64/crt1.S
index 9d6fb53..8740299 100644
--- a/lib/csu/ia64/crt1.S
+++ b/lib/csu/ia64/crt1.S
@@ -107,6 +107,11 @@ _start:
(p7) br.call.sptk b0=atexit
;;
}
+{ .mfb
+ nop 0
+ nop 0
+ br.call.sptk b0=_init_tls
+}
#ifdef GCRT
{ .mmi
mov gp=GP
diff --git a/lib/csu/powerpc/crt1.c b/lib/csu/powerpc/crt1.c
index 4c98271..080691c 100644
--- a/lib/csu/powerpc/crt1.c
+++ b/lib/csu/powerpc/crt1.c
@@ -100,6 +100,8 @@ _start(int argc, char **argv, char **env,
if (&_DYNAMIC != NULL)
atexit(cleanup);
+ else
+ _init_tls();
#ifdef GCRT
atexit(_mcleanup);
diff --git a/lib/csu/sparc64/crt1.c b/lib/csu/sparc64/crt1.c
index 9930830..19c0fad 100644
--- a/lib/csu/sparc64/crt1.c
+++ b/lib/csu/sparc64/crt1.c
@@ -102,6 +102,8 @@ _start(char **ap, void (*cleanup)(void), struct Struct_Obj_Entry *obj __unused,
if (&_DYNAMIC != NULL)
atexit(cleanup);
+ else
+ _init_tls();
#ifdef GCRT
atexit(_mcleanup);
OpenPOWER on IntegriCloud