[gdb/f19] Fix needless expansion of non-gdbindex symtabs (Doug Evans).
Jan Kratochvil
jankratochvil at fedoraproject.org
Thu May 9 13:08:50 UTC 2013
commit 5c14ffc194bcf6dc514a24cdee4aa71487827ba1
Author: Jan Kratochvil <jan.kratochvil at redhat.com>
Date: Thu May 9 15:08:44 2013 +0200
Fix needless expansion of non-gdbindex symtabs (Doug Evans).
gdb-psymtab-expand.patch | 62 ++++++++++++++++++++++++++++++++++++++++++++++
gdb.spec | 9 ++++++-
2 files changed, 70 insertions(+), 1 deletions(-)
---
diff --git a/gdb-psymtab-expand.patch b/gdb-psymtab-expand.patch
new file mode 100644
index 0000000..9792e48
--- /dev/null
+++ b/gdb-psymtab-expand.patch
@@ -0,0 +1,62 @@
+http://sourceware.org/ml/gdb-patches/2013-05/msg00300.html
+Subject: [RFA] Fix file name matching in expand_symtabs_matching_via_partial
+
+[blech, apologies for the resend, typo in address]
+
+Hi.
+I noticed this while playing with my new "mt expand-symtabs" command
+and watching "mt set per on" output.
+
+The test here is wrong.
+ref: http://sourceware.org/ml/gdb-patches/2013-02/msg00063.html
+
+The test
+ (basenames_may_differ
+ || (*file_matcher) (lbasename (ps->filename), data, 1))
+fails and the code falls through assuming the file name matched.
+
+Regression tested on amd64-linux.
+
+Ok to check in?
+Ok for 7.6 branch too?
+
+2013-05-08 Doug Evans <dje at google.com>
+
+ * psymtab.c (expand_symtabs_matching_via_partial): Fix file name
+ matching test.
+
+Index: psymtab.c
+===================================================================
+RCS file: /cvs/src/src/gdb/psymtab.c,v
+retrieving revision 1.74
+diff -u -p -r1.74 psymtab.c
+--- ./gdb/psymtab.c 6 May 2013 19:15:17 -0000 1.74
++++ ./gdb/psymtab.c 8 May 2013 19:18:51 -0000
+@@ -1400,15 +1405,21 @@ expand_symtabs_matching_via_partial
+
+ if (file_matcher)
+ {
++ int match;
++
+ if (ps->anonymous)
+ continue;
+
+- /* Before we invoke realpath, which can get expensive when many
+- files are involved, do a quick comparison of the basenames. */
+- if (!(*file_matcher) (ps->filename, data, 0)
+- && (basenames_may_differ
++ match = (*file_matcher) (ps->filename, data, 0);
++ if (! match)
++ {
++ /* Before we invoke realpath, which can get expensive when many
++ files are involved, do a quick comparison of the basenames. */
++ if (basenames_may_differ
+ || (*file_matcher) (lbasename (ps->filename), data, 1))
+- && !(*file_matcher) (psymtab_to_fullname (ps), data, 0))
++ match = (*file_matcher) (psymtab_to_fullname (ps), data, 0);
++ }
++ if (! match)
+ continue;
+ }
+
+
diff --git a/gdb.spec b/gdb.spec
index 5a57ff6..89c2d83 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -36,7 +36,7 @@ Version: 7.6
# The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 27%{?dist}
+Release: 28%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
Group: Development/Debuggers
@@ -569,6 +569,9 @@ Patch832: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch
# Fix gcore for vDSO (on ppc64).
Patch834: gdb-vdso-gcore.patch
+# Fix needless expansion of non-gdbindex symtabs (Doug Evans).
+Patch835: gdb-psymtab-expand.patch
+
%if 0%{!?rhel:1} || 0%{?rhel} > 6
# RL_STATE_FEDORA_GDB would not be found for:
# Patch642: gdb-readline62-ask-more-rh.patch
@@ -891,6 +894,7 @@ find -name "*.info*"|xargs rm -f
%patch818 -p1
%patch832 -p1
%patch834 -p1
+%patch835 -p1
%patch393 -p1
%if 0%{!?el5:1} || 0%{?scl:1}
@@ -1394,6 +1398,9 @@ fi
%endif # 0%{!?el5:1} || "%{_target_cpu}" == "noarch"
%changelog
+* Thu May 9 2013 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.6-28.fc19
+- Fix needless expansion of non-gdbindex symtabs (Doug Evans).
+
* Mon May 6 2013 Jan Kratochvil <jan.kratochvil at redhat.com> - 7.6-27.fc19
- [testsuite] [RHEL-5] Fix gdb-orphanripper.c runtime error.
More information about the scm-commits
mailing list