diff options
author | Luis Machado <luisgpm@br.ibm.com> | 2007-10-25 20:30:26 +0000 |
---|---|---|
committer | Luis Machado <luisgpm@br.ibm.com> | 2007-10-25 20:30:26 +0000 |
commit | c3b0a2b5d7ec819308f8210fd9a1c9dc05fd5472 (patch) | |
tree | 78562f0b1f269fe87c190e67c4823cf5495cbd33 /gdb/testsuite/gdb.opt | |
parent | cd994b4c683cdba7b9464c7d4d7f0ccedb7b60c2 (diff) | |
download | gdb-c3b0a2b5d7ec819308f8210fd9a1c9dc05fd5472.tar.gz |
* gdb.opt/clobbered-registers-O2.c: New testcase source file.
* gdb.opt/clobbered-registers-O2.exp: New testcase expect file.
* gdb.opt/Makefile.in: New makefile.
* Makefile.in: Create new directory "gdb.opt".
* configure.ac: Add "gdb.opt" directory.
* configure: Regenerated.
Diffstat (limited to 'gdb/testsuite/gdb.opt')
-rw-r--r-- | gdb/testsuite/gdb.opt/Makefile.in | 24 | ||||
-rw-r--r-- | gdb/testsuite/gdb.opt/clobbered-registers-O2.c | 41 | ||||
-rw-r--r-- | gdb/testsuite/gdb.opt/clobbered-registers-O2.exp | 65 |
3 files changed, 130 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.opt/Makefile.in b/gdb/testsuite/gdb.opt/Makefile.in new file mode 100644 index 00000000000..17fc1305f85 --- /dev/null +++ b/gdb/testsuite/gdb.opt/Makefile.in @@ -0,0 +1,24 @@ +VPATH = @srcdir@ +srcdir = @srcdir@ + +EXECUTABLES = hello/hello + +MISCELLANEOUS = + +all info install-info dvi install uninstall installcheck check: + @echo "Nothing to be done for $@..." + +clean mostlyclean: + -find . -name '*.o' -print | xargs rm -f + -find . -name '*.ali' -print | xargs rm -f + -find . -name 'b~*.ad[sb]' -print | xargs rm -f + -rm -f *~ a.out xgdb *.x *.ci *.tmp + -rm -f *~ *.o a.out xgdb *.x *.ci *.tmp + -rm -f core core.coremaker coremaker.core corefile $(EXECUTABLES) + -rm -f $(MISCELLANEOUS) twice-tmp.c + +distclean maintainer-clean realclean: clean + -rm -f *~ core + -rm -f Makefile config.status config.log + -rm -f *-init.exp + -rm -fr *.log summary detail *.plog *.sum *.psum site.* diff --git a/gdb/testsuite/gdb.opt/clobbered-registers-O2.c b/gdb/testsuite/gdb.opt/clobbered-registers-O2.c new file mode 100644 index 00000000000..c361a0393aa --- /dev/null +++ b/gdb/testsuite/gdb.opt/clobbered-registers-O2.c @@ -0,0 +1,41 @@ +/* This file is part of GDB, the GNU debugger. + + Copyright 2007 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/>. */ + +#ifndef __GNUC__ +#define __attribute__(x) +#endif + +unsigned * __attribute__((noinline)) +start_sequence (unsigned * x, unsigned * y) +{ + return (unsigned *)0xdeadbeef; +}; + +unsigned __attribute__((noinline)) +gen_movsd (unsigned * operand0, unsigned * operand1) +{ + return *start_sequence(operand0, operand1); +} + +int main(void) +{ + unsigned x, y; + + x = 13; + y = 14; + return (int)gen_movsd (&x, &y); +} diff --git a/gdb/testsuite/gdb.opt/clobbered-registers-O2.exp b/gdb/testsuite/gdb.opt/clobbered-registers-O2.exp new file mode 100644 index 00000000000..b0af9d6e5c9 --- /dev/null +++ b/gdb/testsuite/gdb.opt/clobbered-registers-O2.exp @@ -0,0 +1,65 @@ +# Copyright 2007 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# This file is part of the gdb testsuite. + +if $tracelevel then { + strace $tracelevel +} + +# Test displaying call clobbered registers in optimized binaries. +# GDB should not show incorrect values. + +set testfile clobbered-registers-O2 +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +# What compiler are we using? +# +if [get_compiler_info ${binfile}] { + return -1 +} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug optimize=-O2 nowarnings]] != "" } { + untested clobbered-registers-O2.exp + return -1 +} + +# use this to debug: +#log_user 1 + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if { ![runto start_sequence] } then { + fail "run to start_sequence" + return +} + +gdb_test "frame 1" "#1.*in gen_movsd.*" "Backtracing" + +gdb_test_multiple "print operand0" "print operand0" { + -re "\\\$$decimal = <value optimized out>\r\n$gdb_prompt $" { pass "print operand0"} + -re "$hex\r\n$gdb_prompt $" { gdb_test "print *operand0" "13" "print operand0" } +} + +gdb_test_multiple "print operand1" "print operand1" { + -re "\\\$$decimal = <value optimized out>\r\n$gdb_prompt $" { pass "print operand1"} + -re "$hex\r\n$gdb_prompt $" { gdb_test "print *operand1" "14" "print operand1" } +} + |