OBS User unknown 2007-07-26 23:27:31 +00:00 committed by Git OBS Bridge
parent 7df59f4d85
commit 065cc200bc
6 changed files with 12 additions and 121 deletions

View File

@ -1,36 +0,0 @@
Index: gdb/elfread.c
===================================================================
RCS file: /cvs/src/src/gdb/elfread.c,v
retrieving revision 1.61
diff -u -a -p -u -p -a -r1.61 gdb/elfread.c
--- gdb/elfread.c 18 Jun 2007 15:46:38 -0000 1.61
+++ gdb/elfread.c 21 Jun 2007 15:23:57 -0000
@@ -240,7 +240,11 @@ elf_symtab_read (struct objfile *objfile
offset = ANOFFSET (objfile->section_offsets, sym->section->index);
if (dynamic
- && sym->section == &bfd_und_section
+ && (sym->section == &bfd_und_section
+ /* On PowerPC64 we also want to add the function descriptor
+ symbols. */
+ || (strcmp (sym->section->name, ".opd") == 0
+ && sym->flags & (BSF_GLOBAL | BSF_WEAK)))
&& (sym->flags & BSF_FUNCTION))
{
struct minimal_symbol *msym;
@@ -365,7 +369,14 @@ elf_symtab_read (struct objfile *objfile
}
else if (sym->section->flags & SEC_ALLOC)
{
- if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
+ if (sym->flags & BSF_FUNCTION)
+ {
+ if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
+ ms_type = mst_solib_trampoline;
+ else
+ continue;
+ }
+ else if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
{
if (sym->section->flags & SEC_LOAD)
{

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cae27a0c770ac049366224820e584aea015961e421a2aa3c2175e5a021fc649f
size 14344912

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ad29d5a95c3a1c28388c16d1b85f815d9970994725d1acb70419017d667783ee
size 14359046

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Thu Jul 26 12:41:05 CEST 2007 - schwab@suse.de
- Update to head of trunk.
-------------------------------------------------------------------
Fri Jul 13 11:46:27 CEST 2007 - schwab@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package gdb (Version 6.6.50.20070713)
# spec file for package gdb (Version 6.6.50.20070726)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@ -23,7 +23,7 @@ License: GPL v2 or later
Group: Development/Tools/Debuggers
Autoreqprov: on
PreReq: %{install_info_prereq}
Version: 6.6.50.20070713
Version: 6.6.50.20070726
Release: 1
Summary: The GNU Debugger
Source: gdb-%{version}-cvs.tar.bz2
@ -36,7 +36,6 @@ Patch6: sect-index-text.diff
Patch7: pie-relocate.diff
Patch8: mst-solib-trampoline.diff
Patch10: ppc-long-double.diff
Patch11: elf-symtab-read.diff
Patch12: find-pc-sect-line.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -75,7 +74,6 @@ Authors:
%patch7
%patch8
%patch10
%patch11
%patch12
%build
@ -132,6 +130,8 @@ rm -rf $RPM_BUILD_ROOT
%endif
%changelog
* Thu Jul 26 2007 - schwab@suse.de
- Update to head of trunk.
* Fri Jul 13 2007 - schwab@suse.de
- Update to head of trunk.
* Sun Jun 24 2007 - schwab@suse.de

View File

@ -579,81 +579,3 @@
/* If the mtime has changed between the time we set new_modtime
and now, we *want* this to be out of date, so don't call stat
again now. */
@@ -2724,6 +2731,7 @@ clear_symtab_users (void)
set_default_breakpoint (0, 0, 0, 0);
clear_pc_function_cache ();
observer_notify_new_objfile (NULL);
+ varobj_refresh ();
/* Clear globals which might have pointed into a removed objfile.
FIXME: It's not clear which of these are supposed to persist
--- gdb/varobj.c
+++ gdb/varobj.c
@@ -1077,6 +1077,58 @@ install_new_value (struct varobj *var, s
return changed;
}
+void
+varobj_refresh (void)
+{
+ struct varobj *var;
+ struct varobj_root *croot;
+ int mycount = rootcount;
+ char * name;
+
+ croot = rootlist;
+ while (croot != NULL && mycount > 0)
+ {
+ var = croot->rootvar;
+
+ /* Get rid of the memory for the old expression. This also leaves
+ var->root->exp == NULL, which is ok for the parsing below. */
+ free_current_contents (&var->root->exp);
+
+ value_free (var->value);
+ var->type = NULL;
+
+ name = xstrdup (var->name);
+
+ /* Reparse the expression. Wrap the call to parse expression, so we
+ can return a sensible error. */
+ if (!gdb_parse_exp_1 (&name, var->root->valid_block, 0, &var->root->exp))
+ return;
+
+ /* We definitively need to catch errors here. If
+ evaluate_expression succeeds we got the value we wanted. But if
+ it fails, we still go on with a call to evaluate_type. */
+ if (gdb_evaluate_expression (var->root->exp, &var->value))
+ {
+ /* no error */
+ release_value (var->value);
+ if (value_lazy (var->value))
+ gdb_value_fetch_lazy (var->value);
+ }
+ else
+ var->value = evaluate_type (var->root->exp);
+
+ var->type = value_type (var->value);
+
+ mycount--;
+ croot = croot->next;
+ }
+
+ if (mycount || croot != NULL)
+ warning
+ ("varobj_refresh: assertion failed - wrong tally of root vars (%d:%d)",
+ rootcount, mycount);
+}
+
/* Update the values for a variable and its children. This is a
two-pronged attack. First, re-parse the value for the root's
expression to see if it's changed. Then go all the way
--- gdb/varobj.h
+++ gdb/varobj.h
@@ -114,4 +114,6 @@ extern int varobj_update (struct varobj
extern void varobj_invalidate (void);
+extern void varobj_refresh (void);
+
#endif /* VAROBJ_H */