* 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:
parent
42e5fcbf34
commit
51272cf2e9
@ -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>
|
||||
|
||||
* 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
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
static TYPE
|
||||
init (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static TYPE
|
||||
func (void)
|
||||
{
|
||||
return 31;
|
||||
}
|
||||
extern TYPE func (void);
|
||||
|
||||
static void
|
||||
marker (void)
|
||||
{
|
||||
}
|
||||
|
||||
TYPE t;
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
/* Preinitialize registers to 0 to avoid false PASS by leftover garbage. */
|
||||
init ();
|
||||
t = func ();
|
||||
|
||||
printf ("result=" FORMAT "\n", CAST func ());
|
||||
|
||||
/* Cannot `next' with no debug info. */
|
||||
marker ();
|
||||
|
||||
return 0;
|
||||
|
@ -34,28 +34,44 @@ proc do_test {type} {
|
||||
"return from function with no debug info with a cast" \
|
||||
"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.
|
||||
gdb_test "adv marker" "\r\nresult=-1\r\n.* in marker \\(.*" \
|
||||
"full width of the returned result"
|
||||
gdb_test "print /d t" " = -1" "full width of the returned result"
|
||||
}
|
||||
|
||||
set pf_prefix $old_prefix
|
||||
}
|
||||
|
||||
foreach case {{{signed char} %d (int)} \
|
||||
{{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]
|
||||
|
||||
foreach type {{signed char} {short} {int} {long} {long long}} {
|
||||
set typeesc [string map {{ } {\ }} $type]
|
||||
set typenospace [string map {{ } -} $type]
|
||||
|
||||
if {[prepare_for_testing return-nodebug.exp "return-nodebug-$typenospace" "return-nodebug.c" \
|
||||
[list "additional_flags=-DFORMAT=\"$format\" -DTYPE=$typeesc -DCAST=$cast"]] == 0} {
|
||||
do_test $type
|
||||
set testfile "return-nodebug"
|
||||
set srcfile ${testfile}.c
|
||||
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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user