This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[testsuite] Really ensure printf/fprintf are available in dprintf.exp
- From: Yao Qi <yao at codesourcery dot com>
- To: <gdb-patches at sourceware dot org>
- Date: Fri, 1 Jun 2012 20:48:05 +0800
- Subject: [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