summaryrefslogtreecommitdiff
path: root/ldso
diff options
context:
space:
mode:
authorHans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>2009-12-16 13:12:00 +0100
committerHans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>2009-12-17 13:45:51 +0100
commitf3217f9be3225c4943677d03b274cbc0cb4ed228 (patch)
treecd994714586789ad2d039b62e5411406176e0396 /ldso
parent02a89fe640faeb77920643190bff29894e503d64 (diff)
check if USE_TLS is defined before use
This patch will convert all the #ifdef USE_TLS and #if USE_TLS to #if defined(USE_TLS) && USE_TLS. By checking if the USE_TLS is defined before checking its value will result in correct behavior for architectures not defining this config symbol. Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com> Acked-by: Carmelo AMOROSO <carmelo.amoroso@st.com>
Diffstat (limited to 'ldso')
-rw-r--r--ldso/include/dl-hash.h4
-rw-r--r--ldso/ldso/dl-elf.c8
-rw-r--r--ldso/ldso/dl-hash.c4
-rw-r--r--ldso/ldso/dl-startup.c2
-rw-r--r--ldso/ldso/ldso.c18
-rw-r--r--ldso/libdl/libdl.c20
6 files changed, 28 insertions, 28 deletions
diff --git a/ldso/include/dl-hash.h b/ldso/include/dl-hash.h
index 22042145e..34333f40f 100644
--- a/ldso/include/dl-hash.h
+++ b/ldso/include/dl-hash.h
@@ -35,7 +35,7 @@ struct elf_resolve {
struct elf_resolve * prev;
/* Nothing after this address is used by gdb. */
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/* Thread-local storage related info. */
/* Start of the initialization image. */
@@ -138,7 +138,7 @@ extern struct elf_resolve * _dl_add_elf_hash_table(const char * libname,
unsigned long dynamic_addr, unsigned long dynamic_size);
/* Only need extra arg with some configurations */
-#if !(USE_TLS || defined __FDPIC__)
+#if !((defined(USE_TLS) && USE_TLS) || defined __FDPIC__)
# define _dl_lookup_hash(n, r, m, c, t) _dl_lookup_hash(n, r, m, c)
#endif
extern char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt,
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index 6bf5bbd6a..a0db63750 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -329,7 +329,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
ElfW(Dyn) *dpnt;
struct elf_resolve *tpnt;
ElfW(Phdr) *ppnt;
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
ElfW(Phdr) *tlsppnt = NULL;
#endif
char *status, *header;
@@ -437,7 +437,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
}
}
if (ppnt->p_type == PT_TLS) {
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
if (ppnt->p_memsz == 0)
/* Nothing to do for an empty segment. */
continue;
@@ -733,7 +733,7 @@ struct elf_resolve *_dl_load_elf_shared_library(int secure,
tpnt->ppnt = (ElfW(Phdr) *) DL_RELOC_ADDR(tpnt->loadaddr, epnt->e_phoff);
tpnt->n_phent = epnt->e_phnum;
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
if (tlsppnt) {
_dl_debug_early("Found TLS header for %s\n", libname);
#if NO_TLS_OFFSET != 0
@@ -875,7 +875,7 @@ int _dl_fixup(struct dyn_elf *rpnt, int now_flag)
#if 0
/* _dl_add_to_slotinfo is called by init_tls() for initial DSO
or by dlopen() for dynamically loaded DSO. */
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/* Add object to slot information data if necessasy. */
if (tpnt->l_tls_blocksize != 0 && tls_init_tp_called)
_dl_add_to_slotinfo ((struct link_map *) tpnt);
diff --git a/ldso/ldso/dl-hash.c b/ldso/ldso/dl-hash.c
index 6d54f37b9..0048734ba 100644
--- a/ldso/ldso/dl-hash.c
+++ b/ldso/ldso/dl-hash.c
@@ -158,7 +158,7 @@ static __attribute_noinline__ const ElfW(Sym) *
check_match (const ElfW(Sym) *sym, char *strtab, const char* undef_name, int type_class)
{
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
if ((sym->st_value == 0 && (ELF_ST_TYPE(sym->st_info) != STT_TLS))
|| (type_class & (sym->st_shndx == SHN_UNDEF)))
/* No value or undefined symbol itself */
@@ -335,7 +335,7 @@ char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, struct elf_resolve
if (sym) {
/* At this point we have found the requested symbol, do binding */
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
if (ELF_ST_TYPE(sym->st_info) == STT_TLS) {
_dl_assert(tpntp != NULL);
*tpntp = tpnt;
diff --git a/ldso/ldso/dl-startup.c b/ldso/ldso/dl-startup.c
index 91b11dc7f..a51b583a4 100644
--- a/ldso/ldso/dl-startup.c
+++ b/ldso/ldso/dl-startup.c
@@ -215,7 +215,7 @@ DL_START(unsigned long args)
* more work than what is done below for the
* loader will have to happen.
*/
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/* This was done by _dl_memset above. */
/* tpnt->l_tls_modid = 0; */
# if NO_TLS_OFFSET != 0
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index 125cf966c..9903b1ceb 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -38,7 +38,7 @@
#define ALLOW_ZERO_PLTGOT
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
#include "dl-tls.c"
#endif
@@ -225,7 +225,7 @@ void _dl_free(void *p)
(*_dl_free_function) (p);
}
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
void *_dl_memalign(size_t __boundary, size_t __size)
{
void *result;
@@ -294,7 +294,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
ElfW(Addr) relro_addr = 0;
size_t relro_size = 0;
struct stat st;
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
void *tcbp = NULL;
#endif
@@ -371,7 +371,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
unlazy = RTLD_NOW;
}
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
_dl_error_catch_tsd = &_dl_initial_error_catch_tsd;
_dl_init_static_tls = &_dl_nothread_init_static_tls;
#endif
@@ -491,7 +491,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
/* Discover any TLS sections if the target supports them. */
if (ppnt->p_type == PT_TLS) {
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
if (ppnt->p_memsz > 0) {
app_tpnt->l_tls_blocksize = ppnt->p_memsz;
app_tpnt->l_tls_align = ppnt->p_align;
@@ -518,7 +518,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
app_tpnt->relro_addr = relro_addr;
app_tpnt->relro_size = relro_size;
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/*
* Adjust the address of the TLS initialization image in
* case the executable is actually an ET_DYN object.
@@ -918,7 +918,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
}
#endif
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/* We do not initialize any of the TLS functionality unless any of the
* initial modules uses TLS. This makes dynamic loading of modules with
* TLS impossible, but to support it requires either eagerly doing setup
@@ -971,7 +971,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
_dl_protect_relro (tpnt);
}
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
if (!was_tls_init_tp_called && _dl_tls_max_dtv_idx > 0)
++_dl_tls_generation;
@@ -1058,7 +1058,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
_dl_malloc_function = (void* (*)(size_t)) (intptr_t) _dl_find_hash(__C_SYMBOL_PREFIX__ "malloc",
_dl_symbol_tables, NULL, ELF_RTYPE_CLASS_PLT, NULL);
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/* Find the real functions and make ldso functions use them from now on */
_dl_calloc_function = (void* (*)(size_t, size_t)) (intptr_t)
_dl_find_hash(__C_SYMBOL_PREFIX__ "calloc", _dl_symbol_tables, NULL, ELF_RTYPE_CLASS_PLT, NULL);
diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c
index 22b622d28..05a68ddcc 100644
--- a/ldso/libdl/libdl.c
+++ b/ldso/libdl/libdl.c
@@ -39,14 +39,14 @@
#include <tls.h>
#endif
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
#include <ldsodefs.h>
extern void (*_dl_init_static_tls) (struct link_map *);
extern void _dl_add_to_slotinfo(struct link_map *l);
#endif
#ifdef SHARED
-# if USE_TLS
+# if defined(USE_TLS) && USE_TLS
# include <dl-tls.h>
extern struct link_map *_dl_update_slotinfo(unsigned long int req_modid);
# endif
@@ -112,7 +112,7 @@ struct r_debug *_dl_debug_addr = NULL;
#include "../ldso/dl-debug.c"
-# if USE_TLS
+# if defined(USE_TLS) && USE_TLS
/*
* Giving this initialized value preallocates some surplus bytes in the
* static TLS area, see __libc_setup_tls (libc-tls.c).
@@ -166,7 +166,7 @@ static const char *const dl_error_names[] = {
};
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
#ifdef SHARED
/*
* Systems which do not have tls_index also probably have to define
@@ -284,7 +284,7 @@ void *dlopen(const char *libname, int flag)
unsigned int nlist, i;
struct elf_resolve **init_fini_list;
static bool _dl_init;
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
bool any_tls = false;
#endif
@@ -519,7 +519,7 @@ void *dlopen(const char *libname, int flag)
/* TODO: Should we set the protections of all pages back to R/O now ? */
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
for (i=0; i < nlist; i++) {
struct elf_resolve *tmp_tpnt = init_fini_list[i];
@@ -670,7 +670,7 @@ void *dlsym(void *vhandle, const char *name)
tpnt = handle->dyn; /* Only search RTLD_GLOBAL objs if global object */
ret = _dl_find_hash(name2, handle, NULL, 0, &tls_tpnt);
-#if defined USE_TLS && defined SHARED
+#if defined(USE_TLS) && USE_TLS && defined SHARED
if (tls_tpnt) {
/* The found symbol is a thread-local storage variable.
Return the address for to the current thread. */
@@ -709,7 +709,7 @@ static int do_dlclose(void *vhandle, int need_fini)
struct dyn_elf *handle;
unsigned int end;
unsigned int i, j;
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
bool any_tls = false;
size_t tls_free_start = NO_TLS_OFFSET;
size_t tls_free_end = NO_TLS_OFFSET;
@@ -771,7 +771,7 @@ static int do_dlclose(void *vhandle, int need_fini)
end = ppnt->p_vaddr + ppnt->p_memsz;
}
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/* Do the cast to make things easy. */
tls_lmap = (struct link_map *) tpnt;
@@ -924,7 +924,7 @@ static int do_dlclose(void *vhandle, int need_fini)
free(handle->init_fini.init_fini);
free(handle);
-#if USE_TLS
+#if defined(USE_TLS) && USE_TLS
/* If we removed any object which uses TLS bump the generation counter. */
if (any_tls) {
if (__builtin_expect(++_dl_tls_generation == 0, 0)) {