From ccbb4f28f0454cf84b515c3122144f30f30d2f36 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Wed, 14 Mar 2012 01:39:12 +0000 Subject: [PATCH] Testcase for: "ax-gdb: Do not treat enums and bools as integers". gdb/testsuite/ChangeLog: * gdb.base/enum_cond.c, gdb.base/enum_cond.exp: New testcase. --- gdb/testsuite/ChangeLog | 4 +++ gdb/testsuite/gdb.base/enum_cond.c | 48 ++++++++++++++++++++++++++++ gdb/testsuite/gdb.base/enum_cond.exp | 44 +++++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 gdb/testsuite/gdb.base/enum_cond.c create mode 100644 gdb/testsuite/gdb.base/enum_cond.exp diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c05bcf4d9ad..f83a8ba305b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-03-13 Joel Brobecker + + * gdb.base/enum_cond.c, gdb.base/enum_cond.exp: New testcase. + 2012-03-13 Joel Brobecker * gdb.ada/bp_range_type: New testcase. diff --git a/gdb/testsuite/gdb.base/enum_cond.c b/gdb/testsuite/gdb.base/enum_cond.c new file mode 100644 index 00000000000..5c152a4b42e --- /dev/null +++ b/gdb/testsuite/gdb.base/enum_cond.c @@ -0,0 +1,48 @@ +/* This testcase is part of GDB, the GNU debugger. + Copyright 2012 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 . */ + +enum EE +{ + VALUE = 1 +}; + +struct x +{ + unsigned char before; + enum EE e; + unsigned char after; +}; + + +int +call_me (struct x param) +{ + return param.e; +} + +int +main (void) +{ + struct x val; + + val.before = 0xff; + val.e = VALUE; + val.after = 0xff; + + call_me (val); + return 0; +} + diff --git a/gdb/testsuite/gdb.base/enum_cond.exp b/gdb/testsuite/gdb.base/enum_cond.exp new file mode 100644 index 00000000000..5c041d94bc8 --- /dev/null +++ b/gdb/testsuite/gdb.base/enum_cond.exp @@ -0,0 +1,44 @@ +# Copyright 2012 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 . + +# This file is part of the gdb testsuite. It is intended to test that +# gdb can correctly print arrays with indexes for each element of the +# array. + +set testfile "enum_cond" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +set opts [list debug additional_flags=-fshort-enums] +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $opts] != "" } { + untested "Could not compile ${srcfile}" + return -1 +} + +clean_restart $testfile + +if ![runto_main] then { + perror "could not run to main" + continue +} + +gdb_test "break call_me if param.e == 1" \ + "Breakpoint $decimal at $hex: file .*$srcfile, line $decimal\\." + +# Continue. We should hit our breakpoint... +gdb_test "continue" \ + "Breakpoint $decimal, call_me \\(param=\\.\\.\\.\\) at .*" \ + "continue to conditional breakpoint in call_me" + -- 2.30.2