diff options
Diffstat (limited to 'lib/csu')
-rw-r--r-- | lib/csu/alpha/crt1.c | 2 | ||||
-rw-r--r-- | lib/csu/amd64/crt1.c | 2 | ||||
-rw-r--r-- | lib/csu/arm/crt1.c | 2 | ||||
-rw-r--r-- | lib/csu/i386-elf/crt1.c | 2 | ||||
-rw-r--r-- | lib/csu/ia64/crt1.S | 5 | ||||
-rw-r--r-- | lib/csu/powerpc/crt1.c | 2 | ||||
-rw-r--r-- | lib/csu/sparc64/crt1.c | 2 |
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); |