diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbtypes.c | 4 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/compare-enum-type-a.c | 28 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/compare-enum-type-b.c | 26 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/compare-enum-type.exp | 27 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/compare-enum-type.h | 22 |
7 files changed, 119 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3cae03a..b379fcf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-12-19 Hannes Domani <ssbssa@yahoo.de> + + PR exp/27070 + * gdbtypes.c (check_types_equal): Don't compare types of enum fields. + 2020-12-19 Bernd Edlinger <bernd.edlinger@hotmail.de> * configure.ac: Move the static libs vs. source-highlight diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 4305832..569e7a3 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -4175,7 +4175,9 @@ check_types_equal (struct type *type1, struct type *type2, case FIELD_LOC_KIND_ENUMVAL: if (FIELD_ENUMVAL (*field1) != FIELD_ENUMVAL (*field2)) return false; - break; + /* Don't compare types of enum fields, because they don't + have a type. */ + continue; case FIELD_LOC_KIND_PHYSADDR: if (FIELD_STATIC_PHYSADDR (*field1) != FIELD_STATIC_PHYSADDR (*field2)) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 551dd71..5b50452 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2020-12-19 Hannes Domani <ssbssa@yahoo.de> + + PR exp/27070 + * gdb.python/compare-enum-type-a.c: New test. + * gdb.python/compare-enum-type-b.c: New test. + * gdb.python/compare-enum-type.exp: New file. + * gdb.python/compare-enum-type.h: New test. + 2020-12-18 Hannes Domani <ssbssa@yahoo.de> * gdb.python/py-format-string.exp: Add tests for address keyword. diff --git a/gdb/testsuite/gdb.python/compare-enum-type-a.c b/gdb/testsuite/gdb.python/compare-enum-type-a.c new file mode 100644 index 0000000..be04d29 --- /dev/null +++ b/gdb/testsuite/gdb.python/compare-enum-type-a.c @@ -0,0 +1,28 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 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/>. */ + +#include "compare-enum-type.h" + +int func (void); + +enum e e1; + +int +main (void) +{ + return e1 + func (); +} diff --git a/gdb/testsuite/gdb.python/compare-enum-type-b.c b/gdb/testsuite/gdb.python/compare-enum-type-b.c new file mode 100644 index 0000000..622f490 --- /dev/null +++ b/gdb/testsuite/gdb.python/compare-enum-type-b.c @@ -0,0 +1,26 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 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/>. */ + +#include "compare-enum-type.h" + +enum e e2; + +int +func (void) +{ + return e2; +} diff --git a/gdb/testsuite/gdb.python/compare-enum-type.exp b/gdb/testsuite/gdb.python/compare-enum-type.exp new file mode 100644 index 0000000..f05dcfe --- /dev/null +++ b/gdb/testsuite/gdb.python/compare-enum-type.exp @@ -0,0 +1,27 @@ +# Copyright 2020 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/>. + +# Test if enum type comparison succeeds (PR exp/27070). + +standard_testfile -a.c -b.c + +if { [prepare_for_testing "failed to prepare" "compare-enum-type" \ + [list $srcfile $srcfile2]] } { + return +} + +if { [skip_python_tests] } { continue } + +gdb_test "py print(gdb.parse_and_eval('e1').type == gdb.parse_and_eval('e2').type)" "True" diff --git a/gdb/testsuite/gdb.python/compare-enum-type.h b/gdb/testsuite/gdb.python/compare-enum-type.h new file mode 100644 index 0000000..f149fc1 --- /dev/null +++ b/gdb/testsuite/gdb.python/compare-enum-type.h @@ -0,0 +1,22 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 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/>. */ + +enum e +{ + zero, + one, +}; |