This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[testsuite] Really ensure printf/fprintf are available in dprintf.exp


I noticed some fails of gdb.base/dprintf.exp on tic6x-elf-gdb testing.

 FAIL: gdb.base/dprintf.exp: 1st dprintf, call
 FAIL: gdb.base/dprintf.exp: 2nd dprintf, call

caused by unable to find symbol "printf" and "malloc",

 (gdb) continue
 Continuing.
 kickoff
 also to stderr
 No symbol "printf" in current context.

If printf/fprintf only prints constant string, compiler will replace
them to puts/fwrite respectively, and actual printf/fprintf is not
linked into executable.  This problem should affect other ELF gdb.

This patch simply add extra parameter in printf/fprintf to make sure
they are linked, instead of puts/fwrite.

I'll apply it in two or three days if no comments.

gdb/testsuite:

2012-06-01  Yao Qi  <yao@codesourcery.com>

	* gdb.base/dprintf.c (main): Add extra parameter.
	(bar): New function.  It is a dead function, but to ensure
	'malloc' is linked explicitly.
---
 gdb/testsuite/gdb.base/dprintf.c |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.base/dprintf.c b/gdb/testsuite/gdb.base/dprintf.c
index 283ff58..8140a3e 100644
--- a/gdb/testsuite/gdb.base/dprintf.c
+++ b/gdb/testsuite/gdb.base/dprintf.c
@@ -33,8 +33,8 @@ main (int argc, char *argv[])
   int loc = 1234;
 
   /* Ensure these functions are available.  */
-  printf ("kickoff\n");
-  fprintf (stderr, "also to stderr\n");
+  printf ("kickoff %d\n", loc);
+  fprintf (stderr, "also to stderr %d\n", loc);
 
   foo (loc++);
   foo (loc++);
@@ -42,3 +42,17 @@ main (int argc, char *argv[])
   return g;
 }
 
+#include <stdlib.h>
+/* Make sure function 'malloc' is linked into program.  One some bare-mental
+   port, if we don't use 'malloc', it will not be linked in program.  'malloc'
+   is needed, otherwise we'll see such error message
+
+   evaluation of this expression requires the program to have a function
+   "malloc".  */
+void
+bar (void)
+{
+  void *p = malloc (16);
+
+  free (p);
+}
-- 
1.7.0.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]