[RFA] more fixes to testsuite (was RE: GDB 6.8.92 available for testing)

Pierre Muller
2009-10-01T21:22:29Z

I here request approval
for changes to the testsuite related to
problems on a configuration where
gcc emits format warnings by default.

> -----Message d'origine-----
> De : gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] De la
> part de Joel Brobecker
> Envoyé : Thursday, October 01, 2009 7:29 PM
> À : Pierre Muller
> Cc : gdb@sourceware.org
> Objet : Re: GDB 6.8.92 available for testing
>
> > 3) gdb.base/shr1.c (wrong format arg type)
> > 3) is about an address, but "%p" does not seem to be supported by all
> > C lib format implementation, so I don't know if this can be fixed
> correctly.
>
> We already use %p in a couple of testcase, so let's use it again here.
> Best to avoid printing stuff on stdout/stderr when writing a testcase,
> as we don't always have access to the inferior output (for instance,
> when doing remote debugging), so matching the inferior output in the
> testcase won't work in those case. But we'd have to dig deeper in
> the history of this testcase to determine whether removing the printf
> would not impact the effectiveness of the testcase.

I used "%p" as suggested.

> For now, I vote for a group hug and the use of %p.
>
> > 4) gdb.base/unload.c (format arg not literal)
> > 5) gdb.base/watchpoint-solib.c (format arg not literal)
> > 4) and 5) seem more difficult ...
>
> Is that the source of the problem?
>
> fprintf (stderr, dlerror ());
>
> The following should take care of it:
>
> fprintf (stderr, "%s", dlerror ())
>
> --
> Joel
This was a bit more tricky, because
dlerror is a macro if __WIN32__
is defined,
I removed the macro and
separated the fprintf.

Is this OK?

Tested on gcc16, no changes in the results of these tests.

PS: the #ifdef __WIN32__
should probably be replaced by
something that is also defined for
64-bit windows, no?

2009-10-01 Pierre Muller <muller@ics.u-strasbg.fr>

* src/gdb/testsuite/gdb.base/shr1.c: Use %p in format string.
* src/gdb/testsuite/gdb.base/unload.c: Avoid warning in fprintf.
* src/gdb/testsuite/gdb.base/watchpoint-solib.c: Idem.

Index: src/gdb/testsuite/gdb.base/shr1.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/shr1.c,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 shr1.c
--- src/gdb/testsuite/gdb.base/shr1.c 28 Jun 1999 16:04:00 -0000
1.1.1.2
+++ src/gdb/testsuite/gdb.base/shr1.c 1 Oct 2009 20:58:06 -0000
@@ -25,7 +25,7 @@ int x;
sg = 6.6;
sgi++;
sgs = 8;
- printf("address of sgs is 0x%x\n", &sgs);
+ printf("address of sgs is %p\n", &sgs);
return 2*x;
}

Index: src/gdb/testsuite/gdb.base/unload.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/unload.c,v
retrieving revision 1.9
diff -u -p -r1.9 unload.c
--- src/gdb/testsuite/gdb.base/unload.c 3 Jan 2009 05:58:03 -0000 1.9
+++ src/gdb/testsuite/gdb.base/unload.c 1 Oct 2009 20:58:06 -0000
@@ -27,7 +27,6 @@
# define dlsym(handle, func) GetProcAddress (handle, func)
#endif
#define dlclose(handle) FreeLibrary (handle)
-#define dlerror() "error %d occurred", GetLastError ()
#else
#include <dlfcn.h>
#endif
@@ -53,7 +52,11 @@ int main()

if (!unloadshr)
{
- fprintf (stderr, dlerror ());
+#ifdef __WIN32__
+ fprintf (stderr, "error %d occurred", GetLastError ());
+#else
+ fprintf (stderr, "%s", dlerror ());
+#endif
exit (1);
}

Index: src/gdb/testsuite/gdb.base/watchpoint-solib.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/watchpoint-solib.c,v
retrieving revision 1.2
diff -u -p -r1.2 watchpoint-solib.c
--- src/gdb/testsuite/gdb.base/watchpoint-solib.c 3 Jan 2009 05:58:03
-0000 1.2
+++ src/gdb/testsuite/gdb.base/watchpoint-solib.c 1 Oct 2009 20:58:06
-0000
@@ -27,7 +27,6 @@
# define dlsym(handle, func) GetProcAddress (handle, func)
#endif
#define dlclose(handle) FreeLibrary (handle)
-#define dlerror() "error %d occurred", GetLastError ()
#else
#include <dlfcn.h>
#endif
@@ -42,7 +41,11 @@ void open_shlib ()

if (!handle)
{
- fprintf (stderr, dlerror ());
+#ifdef __WIN32__
+ fprintf (stderr, "error %d occurred", GetLastError ());
+#else
+ fprintf (stderr, "%s", dlerror ());
+#endif
exit (1);
}