forked from Imagelibrary/binutils-gdb
* return-nodebug.c: Don't include stdio.h.
(init): Delete. (func): Delete definition and provide extern declaration. (t): New. (main): Don't call printf. Call func and store its result in t. * return-nodebug1.c: New. * return-nodebug.exp: Don't expect stdio output. Instead, print the global variable t. Drop printf formatters and cast types from foreach loop. Don't use prepare_for_testing. Compile return-nodebug.c and return-nodebug1.c in separate steps. Don't define FORMAT or CAST.
This commit is contained in:
@@ -1,3 +1,17 @@
|
|||||||
|
2009-03-18 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
|
* return-nodebug.c: Don't include stdio.h.
|
||||||
|
(init): Delete.
|
||||||
|
(func): Delete definition and provide extern declaration.
|
||||||
|
(t): New.
|
||||||
|
(main): Don't call printf. Call func and store its result in t.
|
||||||
|
* return-nodebug1.c: New.
|
||||||
|
* return-nodebug.exp: Don't expect stdio output. Instead, print
|
||||||
|
the global variable t. Drop printf formatters and cast types from
|
||||||
|
foreach loop. Don't use prepare_for_testing. Compile
|
||||||
|
return-nodebug.c and return-nodebug1.c in separate steps. Don't
|
||||||
|
define FORMAT or CAST.
|
||||||
|
|
||||||
2009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
|
2009-03-17 Paul Pluzhnikov <ppluzhnikov@google.com>
|
||||||
|
|
||||||
* gdb.base/solib-display.exp: Disable test for remote targers.
|
* gdb.base/solib-display.exp: Disable test for remote targers.
|
||||||
|
|||||||
@@ -15,34 +15,20 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <stdio.h>
|
extern TYPE func (void);
|
||||||
|
|
||||||
static TYPE
|
|
||||||
init (void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static TYPE
|
|
||||||
func (void)
|
|
||||||
{
|
|
||||||
return 31;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
marker (void)
|
marker (void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TYPE t;
|
||||||
|
|
||||||
int
|
int
|
||||||
main (void)
|
main (void)
|
||||||
{
|
{
|
||||||
/* Preinitialize registers to 0 to avoid false PASS by leftover garbage. */
|
t = func ();
|
||||||
init ();
|
|
||||||
|
|
||||||
printf ("result=" FORMAT "\n", CAST func ());
|
|
||||||
|
|
||||||
/* Cannot `next' with no debug info. */
|
|
||||||
marker ();
|
marker ();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -34,28 +34,44 @@ proc do_test {type} {
|
|||||||
"return from function with no debug info with a cast" \
|
"return from function with no debug info with a cast" \
|
||||||
"Make selected stack frame return now\\? \\(y or n\\) " "y"
|
"Make selected stack frame return now\\? \\(y or n\\) " "y"
|
||||||
|
|
||||||
|
gdb_test "advance marker" "marker \\(.*" \
|
||||||
|
"advance to marker"
|
||||||
|
|
||||||
# And if it returned the full width of the result.
|
# And if it returned the full width of the result.
|
||||||
gdb_test "adv marker" "\r\nresult=-1\r\n.* in marker \\(.*" \
|
gdb_test "print /d t" " = -1" "full width of the returned result"
|
||||||
"full width of the returned result"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
set pf_prefix $old_prefix
|
set pf_prefix $old_prefix
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach case {{{signed char} %d (int)} \
|
foreach type {{signed char} {short} {int} {long} {long long}} {
|
||||||
{{short} %d (int)} \
|
|
||||||
{{int} %d} \
|
|
||||||
{{long} %ld} \
|
|
||||||
{{long long} %lld}} {
|
|
||||||
set type [lindex $case 0]
|
|
||||||
set format [lindex $case 1]
|
|
||||||
set cast [lindex $case 2]
|
|
||||||
|
|
||||||
set typeesc [string map {{ } {\ }} $type]
|
set typeesc [string map {{ } {\ }} $type]
|
||||||
set typenospace [string map {{ } -} $type]
|
set typenospace [string map {{ } -} $type]
|
||||||
|
|
||||||
if {[prepare_for_testing return-nodebug.exp "return-nodebug-$typenospace" "return-nodebug.c" \
|
set testfile "return-nodebug"
|
||||||
[list "additional_flags=-DFORMAT=\"$format\" -DTYPE=$typeesc -DCAST=$cast"]] == 0} {
|
set srcfile ${testfile}.c
|
||||||
do_test $type
|
set srcfile1 ${testfile}1.c
|
||||||
|
set binfile ${objdir}/${subdir}/${testfile}-${typenospace}
|
||||||
|
|
||||||
|
set additional_flags "additional_flags=-DTYPE=$typeesc"
|
||||||
|
|
||||||
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}0.o" object [list debug $additional_flags]] != "" } {
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# This one is compiled without debug info.
|
||||||
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile}1.o" object [list $additional_flags]] != "" } {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug}] != "" } {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
gdb_exit
|
||||||
|
gdb_start
|
||||||
|
gdb_reinitialize_dir $srcdir/$subdir
|
||||||
|
gdb_load ${binfile}
|
||||||
|
|
||||||
|
do_test $type
|
||||||
}
|
}
|
||||||
|
|||||||
22
gdb/testsuite/gdb.base/return-nodebug1.c
Normal file
22
gdb/testsuite/gdb.base/return-nodebug1.c
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/* This testcase is part of GDB, the GNU debugger.
|
||||||
|
|
||||||
|
Copyright 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
TYPE
|
||||||
|
func (void)
|
||||||
|
{
|
||||||
|
return 31;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user