libiberty: fix warnings about left shifting a negative value.
GCC PR 66827 reports some problems with left shifting a negative value: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66827 Of the problems reported only two remain - in libiberty/regex.c: libiberty/regex.c:6970:11: runtime error: left shift of negative value -1 libiberty/regex.c:7165:4: runtime error: left shift of negative value -1 The patch below fixes these errors by casting the value to be shifted to unsigned before the shift occurs. No regressions were found in the libiberty testsuite or bootstrapping gcc (on an x86_64 target).
This commit is contained in:
parent
6675033211
commit
13b356b2b5
2 changed files with 7 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2015-12-21 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR 66827
|
||||||
|
* regex.c (EXTRACT_NUMBER): Cast sign byte to unsigned before left
|
||||||
|
shifting.
|
||||||
|
|
||||||
2015-11-27 Pedro Alves <palves@redhat.com>
|
2015-11-27 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
PR other/61321
|
PR other/61321
|
||||||
|
|
|
@ -685,7 +685,7 @@ typedef enum
|
||||||
# define EXTRACT_NUMBER(destination, source) \
|
# define EXTRACT_NUMBER(destination, source) \
|
||||||
do { \
|
do { \
|
||||||
(destination) = *(source) & 0377; \
|
(destination) = *(source) & 0377; \
|
||||||
(destination) += SIGN_EXTEND_CHAR (*((source) + 1)) << 8; \
|
(destination) += ((unsigned) SIGN_EXTEND_CHAR (*((source) + 1))) << 8; \
|
||||||
} while (0)
|
} while (0)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue