Summary: | Infinite recursion in in_dynamic_types (e.g. when printing a variable) | ||
---|---|---|---|
Product: | gdb | Reporter: | Pete Deas <petedeas> |
Component: | exp | Assignee: | Tom Tromey <tromey> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | tromey |
Priority: | P2 | ||
Version: | 7.7 | ||
Target Milestone: | 7.8 | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
Pete Deas
2014-07-01 17:38:21 UTC
Mine. This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, gdb-7.8-branch has been updated via c086b11bd257f68392b75a2297d601a6ab741a6b (commit) from cb1a4f45173ee9c7482b3ae0f0a44cffcad4dd24 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c086b11bd257f68392b75a2297d601a6ab741a6b commit c086b11bd257f68392b75a2297d601a6ab741a6b Author: Tom Tromey <tromey@redhat.com> Date: Wed Jul 2 15:53:31 2014 -0600 fix PR 17106 This fixes PR 17106, a regression in printing. The bug is that resolve_dynamic_type follows struct members and references, but doesn't consider the possibility of infinite recursion. This patch fixes the problem by limiting reference following to the topmost layer of calls -- that is, reference-typed struct members are never considered as being VLAs. Built and regtested on x86-64 Fedora 20. New test case included. 2014-07-14 Tom Tromey <tromey@redhat.com> PR exp/17106: * gdbtypes.c (is_dynamic_type_internal): New function, from is_dynamic_type. (is_dynamic_type): Rewrite. (resolve_dynamic_union): Use resolve_dynamic_type_internal. (resolve_dynamic_struct): Likewise. (resolve_dynamic_type_internal): New function, from resolve_dynamic_type. (resolve_dynamic_type): Rewrite. 2014-07-14 Tom Tromey <tromey@redhat.com> * gdb.cp/vla-cxx.cc: New file. * gdb.cp/vla-cxx.exp: New file. ----------------------------------------------------------------------- Summary of changes: gdb/ChangeLog | 12 ++++++++ gdb/gdbtypes.c | 56 +++++++++++++++++++++++++++---------- gdb/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.cp/vla-cxx.cc | 49 +++++++++++++++++++++++++++++++++ gdb/testsuite/gdb.cp/vla-cxx.exp | 35 +++++++++++++++++++++++ 5 files changed, 142 insertions(+), 15 deletions(-) create mode 100644 gdb/testsuite/gdb.cp/vla-cxx.cc create mode 100644 gdb/testsuite/gdb.cp/vla-cxx.exp Fix checked in. This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, master has been updated via d98b7a16a982e4a17995536250b55f7ff82bd78e (commit) from 548740d6bdd115da2c9c17b194016c2c4c0a4c69 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d98b7a16a982e4a17995536250b55f7ff82bd78e commit d98b7a16a982e4a17995536250b55f7ff82bd78e Author: Tom Tromey <tromey@redhat.com> Date: Wed Jul 2 15:53:31 2014 -0600 fix PR 17106 This fixes PR 17106, a regression in printing. The bug is that resolve_dynamic_type follows struct members and references, but doesn't consider the possibility of infinite recursion. This patch fixes the problem by limiting reference following to the topmost layer of calls -- that is, reference-typed struct members are never considered as being VLAs. Built and regtested on x86-64 Fedora 20. New test case included. 2014-07-14 Tom Tromey <tromey@redhat.com> PR exp/17106: * gdbtypes.c (is_dynamic_type_internal): New function, from is_dynamic_type. (is_dynamic_type): Rewrite. (resolve_dynamic_union): Use resolve_dynamic_type_internal. (resolve_dynamic_struct): Likewise. (resolve_dynamic_type_internal): New function, from resolve_dynamic_type. (resolve_dynamic_type): Rewrite. 2014-07-14 Tom Tromey <tromey@redhat.com> * gdb.cp/vla-cxx.cc: New file. * gdb.cp/vla-cxx.exp: New file. ----------------------------------------------------------------------- Summary of changes: gdb/ChangeLog | 12 ++++++++ gdb/gdbtypes.c | 56 +++++++++++++++++++++++++++---------- gdb/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.cp/vla-cxx.cc | 49 +++++++++++++++++++++++++++++++++ gdb/testsuite/gdb.cp/vla-cxx.exp | 35 +++++++++++++++++++++++ 5 files changed, 142 insertions(+), 15 deletions(-) create mode 100644 gdb/testsuite/gdb.cp/vla-cxx.cc create mode 100644 gdb/testsuite/gdb.cp/vla-cxx.exp |