Message ID | 20250507142110.3452012-5-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | Add initial support for --enable-ubsan | expand |
* Adhemerval Zanella: > From: Richard Henderson <rth@twiddle.net> > > When building with --enable-ubsan, the relocation code triggers: > > UBSAN: Undefined behaviour in get-dynamic-info.h:56:30 left shift of 1879047925 by 1 cannot be represented in type 'int' > > Originally from > https://sourceware.org/pipermail/libc-alpha/2015-August/063015.html. > --- > elf/elf.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/elf/elf.h b/elf/elf.h > index 1e1a59c14d..d48cf47b9a 100644 > --- a/elf/elf.h > +++ b/elf/elf.h > @@ -995,7 +995,7 @@ typedef struct > range. Be compatible. */ > #define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */ > #define DT_FILTER 0x7fffffff /* Shared object to get values from */ > -#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) > +#define DT_EXTRATAGIDX(tag) (-((Elf32_Sword)((Elf32_Word)(tag) * 2) / 2 + 1)) > #define DT_EXTRANUM 3 > > /* Values of `d_un.d_val' in the DT_FLAGS entry. */ Doesn't this change the type of the constant? And rely on a GCC extension? Thanks, Florian
diff --git a/elf/elf.h b/elf/elf.h index 1e1a59c14d..d48cf47b9a 100644 --- a/elf/elf.h +++ b/elf/elf.h @@ -995,7 +995,7 @@ typedef struct range. Be compatible. */ #define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */ #define DT_FILTER 0x7fffffff /* Shared object to get values from */ -#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) +#define DT_EXTRATAGIDX(tag) (-((Elf32_Sword)((Elf32_Word)(tag) * 2) / 2 + 1)) #define DT_EXTRANUM 3 /* Values of `d_un.d_val' in the DT_FLAGS entry. */
From: Richard Henderson <rth@twiddle.net> When building with --enable-ubsan, the relocation code triggers: UBSAN: Undefined behaviour in get-dynamic-info.h:56:30 left shift of 1879047925 by 1 cannot be represented in type 'int' Originally from https://sourceware.org/pipermail/libc-alpha/2015-August/063015.html. --- elf/elf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)