Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH v2] gdb/i387-tdep.c: Avoid warning for "-Werror=strict-overflow"
@ 2014-10-12 13:22 Chen Gang
  2014-10-12 14:13 ` Iain Buclaw
  2014-10-13 15:16 ` Mark Kettenis
  0 siblings, 2 replies; 13+ messages in thread
From: Chen Gang @ 2014-10-12 13:22 UTC (permalink / raw)
  To: gdb-patches; +Cc: Pedro Alves, Mark Kettenis

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)


^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [PATCH v2] gdb/i387-tdep.c: Avoid warning for "-Werror=strict-overflow"
@ 2014-10-12 23:48 Chen Gang
  2014-11-10  1:39 ` Chen Gang
  0 siblings, 1 reply; 13+ messages in thread
From: Chen Gang @ 2014-10-12 23:48 UTC (permalink / raw)
  To: Iain Buclaw; +Cc: gdb-patches, Pedro Alves, Mark Kettenis

Oh, really it is. Originally, I skipped it (do not know it should be as an issue, too). Also sorry for my poor English: misunderstand what you said (this patch can still continue, although gcc 5 has another issue).

And next, I shall try to fix it, based on what bugzilla has done. But excuse me, I have no enough time resource on it, so maybe can not finish within this month (try to finish within next month) .

Thanks

Send from Lenovo A788t.

Iain Buclaw <ibuclaw@gdcproject.org> wrote:

>On 12 October 2014 15:47, Chen Gang <gang.chen.5i5j@gmail.com> wrote:
>> On 10/12/14 22:13, Iain Buclaw wrote:
>>> On 12 October 2014 14:28, Chen Gang <gang.chen.5i5j@gmail.com> wrote:
>>>> 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:
>>>>
>>>
>>> I had noted the same on GCC 5.0.0 development, found that the line
>>> number in the warning was wrong and raised a bug
>>> (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63510), just didn't get
>>> round to submitting a patch for gdb.
>>>
>>
>> But for me, what compiler has done is correct: "-Werror=strict-overflow"
>> need include "(X + c) >= X" for signed overflow. And our case matches
>> this case:
>>
>
>The compiler has done right, but that still doesn't stop the reported
>line number being wrong.
>
>-- Iain.

^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [PATCH v2] gdb/i387-tdep.c: Avoid warning for "-Werror=strict-overflow"
@ 2014-10-16  0:03 Chen Gang
  0 siblings, 0 replies; 13+ messages in thread
From: Chen Gang @ 2014-10-16  0:03 UTC (permalink / raw)
  To: Mark Kettenis; +Cc: brobecker, gdb-patches, palves

OK, I will send patch v3 for it.

Send from Lenovo A788t.

Mark Kettenis <mark.kettenis@xs4all.nl> wrote:

>> Date: Wed, 15 Oct 2014 11:47:11 -0700
>> From: Joel Brobecker <brobecker@adacore.com>
>> 
>> Hi Mark,
>> 
>> > > Sorry, I disagree with this approach.  I think your compiler is really
>> > > being unhelpful here.  See if a newer GCC version of the compiler
>> > > still triggers that warning.  If so, complain to the GCC people.
>> 
>> Would you be OK with Pedro's suggested approach where we have
>> an additional macro that provides the number of ST registers?
>> That should get rid of the warning, and it seems like the code
>> might actually even be slightly better for it; it would make it
>> obvious that you iterate over a fixed number of registers, and
>> which ones you are interating over; [ST0 .. XMM0[ does not make
>> it as clear that the range only refers to ST registers, for instance.
>
>Pedro's suggestion made sense to me.

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2015-01-09 21:50 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-12 13:22 [PATCH v2] gdb/i387-tdep.c: Avoid warning for "-Werror=strict-overflow" Chen Gang
2014-10-12 14:13 ` Iain Buclaw
2014-10-12 14:41   ` Chen Gang
2014-10-12 17:48     ` Iain Buclaw
2014-10-13 15:16 ` Mark Kettenis
2014-10-13 15:59   ` Chen Gang
2014-10-14 21:31     ` Chen Gang
2014-10-15 18:47     ` Joel Brobecker
2014-10-15 18:59       ` Mark Kettenis
2014-10-12 23:48 Chen Gang
2014-11-10  1:39 ` Chen Gang
2015-01-09 21:50   ` Chen Gang S
2014-10-16  0:03 Chen Gang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox