This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH v2] gdb/i387-tdep.c: Avoid warning for "-Werror=strict-overflow"
- From: Chen Gang <gang dot chen dot 5i5j at gmail dot com>
- To: gdb-patches at sourceware dot org
- Cc: Pedro Alves <palves at redhat dot com>, Mark Kettenis <mark dot kettenis at xs4all dot nl>
- Date: Sun, 12 Oct 2014 21:28:40 +0800
- Subject: [PATCH v2] gdb/i387-tdep.c: Avoid warning for "-Werror=strict-overflow"
- Authentication-results: sourceware.org; auth=none
gdb requires "-Werror", and I387_ST0_REGNUM (tdep) is 'variable', then
compiler can think that I387_ST0_REGNUM (tdep) may be a large number,
which may cause issue, so report warning.
Need fix this warning, and still keep the code clear enough for readers.
The related warning under Darwin with gnu built gcc:
gcc -g -O2 -I. -I../../binutils-gdb/gdb -I../../binutils-gdb/gdb/common -I../../binutils-gdb/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../binutils-gdb/gdb/../include/opcode -I../../binutils-gdb/gdb/../opcodes/.. -I../../binutils-gdb/gdb/../readline/.. -I../bfd -I../../binutils-gdb/gdb/../bfd -I../../binutils-gdb/gdb/../include -I../libdecnumber -I../../binutils-gdb/gdb/../libdecnumber -I../../binutils-gdb/gdb/gnulib/import -Ibuild-gnulib/import -DTUI=1 -D_THREAD_SAFE -I/usr/local/Cellar/guile/2.0.11/include/guile/2.0 -I/usr/local/Cellar/gmp/6.0.0a/include -I/usr/local/Cellar/readline/6.3.5/include -I/usr/local/Cellar/bdw-gc/7.2e/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-protot
ypes -Wdeclaration-after-statement -Wempty-body -Wmissing-parameter-type -Wold-style-declaration -Wold-style-definition -Wformat-nonliteral -Werror -c -o i387-tdep.o -MT i387-tdep.o -MMD -MP -MF .deps/i387-tdep.Tpo ../../binutils-gdb/gdb/i387-tdep.c
../../binutils-gdb/gdb/i387-tdep.c: In function 'i387_supply_fsave':
../../binutils-gdb/gdb/i387-tdep.c:447:1: error: assuming signed overflow does not occur when assuming that (X + c) >= X is always true [-Werror=strict-overflow]
i387_supply_fsave (struct regcache *regcache, int regnum, const void *fsave)
^
../../binutils-gdb/gdb/i387-tdep.c: In function 'i387_collect_fsave':
../../binutils-gdb/gdb/i387-tdep.c:502:1: error: assuming signed overflow does not occur when assuming that (X + c) >= X is always true [-Werror=strict-overflow]
i387_collect_fsave (const struct regcache *regcache, int regnum, void *fsave)
^
cc1: all warnings being treated as errors
2014-10-13 Chen Gang <gang.chen.5i5j@gmail.com>
* i387-tdep.c (i387_supply_fsave): Avoid warning for
"-Werror=strict-overflow"
---
gdb/i387-tdep.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c
index d66ac6a..609b5be 100644
--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -450,11 +450,12 @@ i387_supply_fsave (struct regcache *regcache, int regnum, const void *fsave)
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
const gdb_byte *regs = fsave;
- int i;
+ int i, end;
gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM);
- for (i = I387_ST0_REGNUM (tdep); i < I387_XMM0_REGNUM (tdep); i++)
+ end = I387_XMM0_REGNUM (tdep); /* -Werror=strict-overflow for (X + c) >= X */
+ for (i = I387_ST0_REGNUM (tdep); i < end; i++)
if (regnum == -1 || regnum == i)
{
if (fsave == NULL)
@@ -503,11 +504,12 @@ i387_collect_fsave (const struct regcache *regcache, int regnum, void *fsave)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache));
gdb_byte *regs = fsave;
- int i;
+ int i, end;
gdb_assert (tdep->st0_regnum >= I386_ST0_REGNUM);
- for (i = I387_ST0_REGNUM (tdep); i < I387_XMM0_REGNUM (tdep); i++)
+ end = I387_XMM0_REGNUM (tdep); /* -Werror=strict-overflow for (X + c) >= X */
+ for (i = I387_ST0_REGNUM (tdep); i < end; i++)
if (regnum == -1 || regnum == i)
{
/* Most of the FPU control registers occupy only 16 bits in
--
1.8.5.2 (Apple Git-48)