mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-07 16:13:03 +00:00
ubsan: undefined shift in sign_extend
* libhppa.h (sign_extend): Avoid undefined behaviour.
This commit is contained in:
@@ -162,7 +162,7 @@ enum hppa_reloc_expr_type_alt
|
|||||||
static inline unsigned ATTRIBUTE_UNUSED
|
static inline unsigned ATTRIBUTE_UNUSED
|
||||||
sign_extend (unsigned x, unsigned len)
|
sign_extend (unsigned x, unsigned len)
|
||||||
{
|
{
|
||||||
unsigned signbit = (1 << (len - 1));
|
unsigned signbit = (1u << (len - 1));
|
||||||
unsigned mask = (signbit << 1) - 1;
|
unsigned mask = (signbit << 1) - 1;
|
||||||
return ((x & mask) ^ signbit) - signbit;
|
return ((x & mask) ^ signbit) - signbit;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user