[glibc/azanella/clang] elf: Do not cast TLS_DTV_UNALLOCATED to void

Adhemerval Zanella azanella@sourceware.org
Wed Apr 17 20:11:23 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d5eaf6b1068e06df0d6f7ece3c32f7c0b8cedf78

commit d5eaf6b1068e06df0d6f7ece3c32f7c0b8cedf78
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Mar 25 15:46:10 2022 -0300

    elf: Do not cast TLS_DTV_UNALLOCATED to void
    
    The test-as-const-tlsdesc uses _Static_assert to verify the constants
    generated and clang warns the expression is not an integral constant
    expression because the cast performs a conversion (and it is no
    allowed).

Diff:
---
 elf/dl-tls.c                | 2 ++
 sysdeps/aarch64/tlsdesc.sym | 2 +-
 sysdeps/arc/dl-tls.h        | 2 +-
 sysdeps/generic/dl-dtv.h    | 2 +-
 sysdeps/loongarch/dl-tls.h  | 3 ---
 sysdeps/riscv/dl-tls.h      | 2 +-
 6 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 7b3dd9ab60..020ec60957 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -75,6 +75,8 @@
 /* Default for dl_tls_static_optional.  */
 #define OPTIONAL_TLS 512
 
+#define TLS_DTV_UNALLOCATED ((void *) TLS_DTV_UNALLOCATED_VALUE)
+
 /* Compute the static TLS surplus based on the namespace count and the
    TLS space that can be used for optimizations.  */
 static inline int
diff --git a/sysdeps/aarch64/tlsdesc.sym b/sysdeps/aarch64/tlsdesc.sym
index a06a719779..477585bdcb 100644
--- a/sysdeps/aarch64/tlsdesc.sym
+++ b/sysdeps/aarch64/tlsdesc.sym
@@ -15,4 +15,4 @@ TLSDESC_MODID		offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_module)
 TLSDESC_MODOFF		offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_offset)
 TCBHEAD_DTV		offsetof(tcbhead_t, dtv)
 DTV_COUNTER		offsetof(dtv_t, counter)
-TLS_DTV_UNALLOCATED	TLS_DTV_UNALLOCATED
+TLS_DTV_UNALLOCATED	TLS_DTV_UNALLOCATED_VALUE
diff --git a/sysdeps/arc/dl-tls.h b/sysdeps/arc/dl-tls.h
index e498fab8fe..70c26a68b3 100644
--- a/sysdeps/arc/dl-tls.h
+++ b/sysdeps/arc/dl-tls.h
@@ -27,4 +27,4 @@ typedef struct
 extern void *__tls_get_addr (tls_index *ti);
 
 /* Value used for dtv entries for which the allocation is delayed.  */
-#define TLS_DTV_UNALLOCATED	((void *) -1l)
+#define TLS_DTV_UNALLOCATED_VALE -1l
diff --git a/sysdeps/generic/dl-dtv.h b/sysdeps/generic/dl-dtv.h
index a1d8c0915d..f13b4d5c2f 100644
--- a/sysdeps/generic/dl-dtv.h
+++ b/sysdeps/generic/dl-dtv.h
@@ -33,6 +33,6 @@ typedef union dtv
 } dtv_t;
 
 /* Value used for dtv entries for which the allocation is delayed.  */
-#define TLS_DTV_UNALLOCATED ((void *) -1l)
+#define TLS_DTV_UNALLOCATED_VALUE -1l
 
 #endif /* _DLT_DTV_H */
diff --git a/sysdeps/loongarch/dl-tls.h b/sysdeps/loongarch/dl-tls.h
index 29924b866d..d87a05b95e 100644
--- a/sysdeps/loongarch/dl-tls.h
+++ b/sysdeps/loongarch/dl-tls.h
@@ -41,6 +41,3 @@ extern void *__tls_get_addr (tls_index *ti);
 
 #define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET)
 #define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET)
-
-/* Value used for dtv entries for which the allocation is delayed.  */
-#define TLS_DTV_UNALLOCATED ((void *) -1l)
diff --git a/sysdeps/riscv/dl-tls.h b/sysdeps/riscv/dl-tls.h
index 049161f02f..c138c5ce70 100644
--- a/sysdeps/riscv/dl-tls.h
+++ b/sysdeps/riscv/dl-tls.h
@@ -45,4 +45,4 @@ extern void *__tls_get_addr (tls_index *ti);
 #define __TLS_GET_ADDR(__ti)	(__tls_get_addr (__ti) - TLS_DTV_OFFSET)
 
 /* Value used for dtv entries for which the allocation is delayed.  */
-#define TLS_DTV_UNALLOCATED	((void *) -1l)
+#define TLS_DTV_UNALLOCATED_VALUE -1l


More information about the Glibc-cvs mailing list