This commit is contained in:
parent
549f54f140
commit
085e469660
@ -1,8 +1,11 @@
|
||||
Index: gdb/elfread.c
|
||||
================================================================================
|
||||
--- gdb/elfread.c
|
||||
+++ gdb/elfread.c
|
||||
@@ -182,7 +182,10 @@
|
||||
===================================================================
|
||||
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
|
||||
@ -10,18 +13,24 @@ Index: gdb/elfread.c
|
||||
+ && (sym->section == &bfd_und_section
|
||||
+ /* On PowerPC64 we also want to add the function descriptor
|
||||
+ symbols. */
|
||||
+ || strcmp (sym->section->name, ".opd") == 0)
|
||||
+ || (strcmp (sym->section->name, ".opd") == 0
|
||||
+ && sym->flags & (BSF_GLOBAL | BSF_WEAK)))
|
||||
&& (sym->flags & BSF_FUNCTION))
|
||||
{
|
||||
struct minimal_symbol *msym;
|
||||
@@ -309,7 +312,9 @@
|
||||
@@ -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->section->flags & SEC_LOAD)
|
||||
+ if (sym->flags & BSF_FUNCTION)
|
||||
- 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 if (sym->section->flags & SEC_LOAD)
|
||||
+ else
|
||||
+ continue;
|
||||
+ }
|
||||
+ else if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
|
||||
{
|
||||
if (sym->section->flags & SEC_LOAD)
|
||||
{
|
||||
ms_type = mst_data;
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6fc6022108ab443606c64552f208072dd90d59f4a031e62ec94963b99fe5a708
|
||||
size 14498976
|
3
gdb-6.6.50.20070621-cvs.tar.bz2
Normal file
3
gdb-6.6.50.20070621-cvs.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5cd4dd71f307d8a1d63bf58937a43b63c73793d25ba7cd035b4b7d55028e5bf2
|
||||
size 14517280
|
@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jun 21 12:37:56 CEST 2007 - schwab@suse.de
|
||||
|
||||
- Update to head of trunk.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 8 17:15:17 CEST 2007 - schwab@suse.de
|
||||
|
||||
|
8
gdb.spec
8
gdb.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package gdb (Version 6.6.50.20070608)
|
||||
# spec file for package gdb (Version 6.6.50.20070621)
|
||||
#
|
||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
@ -23,7 +23,7 @@ License: GNU General Public License (GPL)
|
||||
Group: Development/Tools/Debuggers
|
||||
Autoreqprov: on
|
||||
PreReq: %{install_info_prereq}
|
||||
Version: 6.6.50.20070608
|
||||
Version: 6.6.50.20070621
|
||||
Release: 1
|
||||
Summary: The GNU Debugger
|
||||
Source: gdb-%{version}-cvs.tar.bz2
|
||||
@ -39,7 +39,6 @@ Patch9: loader_break.diff
|
||||
Patch10: ppc-long-double.diff
|
||||
Patch11: elf-symtab-read.diff
|
||||
Patch12: find-pc-sect-line.diff
|
||||
Patch13: libunwind-frame.diff
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
@ -82,7 +81,6 @@ cd ..
|
||||
%patch10
|
||||
%patch11
|
||||
%patch12
|
||||
%patch13
|
||||
|
||||
%build
|
||||
CFLAGS="$RPM_OPT_FLAGS" \
|
||||
@ -138,6 +136,8 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Thu Jun 21 2007 - schwab@suse.de
|
||||
- Update to head of trunk.
|
||||
* Fri Jun 08 2007 - schwab@suse.de
|
||||
- Update to head of trunk.
|
||||
* Fri May 11 2007 - schwab@suse.de
|
||||
|
@ -1,146 +0,0 @@
|
||||
2007-06-08 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* frame-unwind.h (frame_dealloc_cache_ftype): Define.
|
||||
(struct frame_unwind): Add dealloc_cache.
|
||||
* frame.c (reinit_frame_cache): Call dealloc_cache on all caches.
|
||||
|
||||
* libunwind-frame.h (libunwind_frame_dealloc_cache): Declare.
|
||||
* libunwind-frame.c (libunwind_frame_dealloc_cache): Define.
|
||||
(libunwind_frame_unwind): Set dealloc_cache.
|
||||
* ia64-tdep.c (ia64_libunwind_frame_unwind): Set dealloc_cache.
|
||||
|
||||
Index: gdb/frame-unwind.h
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/frame-unwind.h,v
|
||||
retrieving revision 1.16
|
||||
diff -u -a -p -r1.16 gdb/frame-unwind.h
|
||||
--- gdb/frame-unwind.h 9 Jan 2007 17:58:50 -0000 1.16
|
||||
+++ gdb/frame-unwind.h 8 Jun 2007 14:25:33 -0000
|
||||
@@ -125,6 +125,10 @@ typedef void (frame_prev_register_ftype)
|
||||
typedef CORE_ADDR (frame_prev_pc_ftype) (struct frame_info *next_frame,
|
||||
void **this_prologue_cache);
|
||||
|
||||
+/* Deallocate extra memory associated with the frame cache if any. */
|
||||
+
|
||||
+typedef void (frame_dealloc_cache_ftype) (struct frame_info *self,
|
||||
+ void *this_cache);
|
||||
|
||||
struct frame_unwind
|
||||
{
|
||||
@@ -138,6 +142,7 @@ struct frame_unwind
|
||||
const struct frame_data *unwind_data;
|
||||
frame_sniffer_ftype *sniffer;
|
||||
frame_prev_pc_ftype *prev_pc;
|
||||
+ frame_dealloc_cache_ftype *dealloc_cache;
|
||||
};
|
||||
|
||||
/* Register a frame unwinder, _prepending_ it to the front of the
|
||||
Index: gdb/frame.c
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/frame.c,v
|
||||
retrieving revision 1.227
|
||||
diff -u -a -p -r1.227 gdb/frame.c
|
||||
--- gdb/frame.c 6 Jun 2007 15:26:28 -0000 1.227
|
||||
+++ gdb/frame.c 8 Jun 2007 14:25:33 -0000
|
||||
@@ -1077,6 +1077,17 @@ frame_observer_target_changed (struct ta
|
||||
void
|
||||
reinit_frame_cache (void)
|
||||
{
|
||||
+ struct frame_info *fi;
|
||||
+
|
||||
+ /* Tear down all frame caches. */
|
||||
+ for (fi = current_frame; fi != NULL; fi = fi->prev)
|
||||
+ {
|
||||
+ if (fi->prologue_cache && fi->unwind->dealloc_cache)
|
||||
+ fi->unwind->dealloc_cache (fi, fi->prologue_cache);
|
||||
+ if (fi->base_cache && fi->base->unwind->dealloc_cache)
|
||||
+ fi->base->unwind->dealloc_cache (fi, fi->base_cache);
|
||||
+ }
|
||||
+
|
||||
/* Since we can't really be sure what the first object allocated was */
|
||||
obstack_free (&frame_cache_obstack, 0);
|
||||
obstack_init (&frame_cache_obstack);
|
||||
Index: gdb/ia64-tdep.c
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/ia64-tdep.c,v
|
||||
retrieving revision 1.151
|
||||
diff -u -a -p -r1.151 gdb/ia64-tdep.c
|
||||
--- gdb/ia64-tdep.c 12 May 2007 00:07:45 -0000 1.151
|
||||
+++ gdb/ia64-tdep.c 8 Jun 2007 14:25:33 -0000
|
||||
@@ -2778,7 +2778,11 @@ static const struct frame_unwind ia64_li
|
||||
{
|
||||
NORMAL_FRAME,
|
||||
ia64_libunwind_frame_this_id,
|
||||
- ia64_libunwind_frame_prev_register
|
||||
+ ia64_libunwind_frame_prev_register,
|
||||
+ NULL,
|
||||
+ NULL,
|
||||
+ NULL,
|
||||
+ libunwind_frame_dealloc_cache
|
||||
};
|
||||
|
||||
static const struct frame_unwind *
|
||||
Index: gdb/libunwind-frame.c
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/libunwind-frame.c,v
|
||||
retrieving revision 1.15
|
||||
diff -u -a -p -r1.15 gdb/libunwind-frame.c
|
||||
--- gdb/libunwind-frame.c 6 Jun 2007 19:35:02 -0000 1.15
|
||||
+++ gdb/libunwind-frame.c 8 Jun 2007 14:25:34 -0000
|
||||
@@ -65,6 +65,7 @@ struct libunwind_frame_cache
|
||||
CORE_ADDR base;
|
||||
CORE_ADDR func_addr;
|
||||
unw_cursor_t cursor;
|
||||
+ unw_addr_space_t as;
|
||||
};
|
||||
|
||||
/* We need to qualify the function names with a platform-specific prefix to match
|
||||
@@ -187,11 +188,20 @@ libunwind_frame_cache (struct frame_info
|
||||
}
|
||||
|
||||
cache->base = (CORE_ADDR)fp;
|
||||
+ cache->as = as;
|
||||
|
||||
*this_cache = cache;
|
||||
return cache;
|
||||
}
|
||||
|
||||
+void
|
||||
+libunwind_frame_dealloc_cache (struct frame_info *self, void *this_cache)
|
||||
+{
|
||||
+ struct libunwind_frame_cache *cache = this_cache;
|
||||
+ if (cache->as)
|
||||
+ unw_destroy_addr_space_p (cache->as);
|
||||
+}
|
||||
+
|
||||
unw_word_t
|
||||
libunwind_find_dyn_list (unw_addr_space_t as, unw_dyn_info_t *di, void *arg)
|
||||
{
|
||||
@@ -202,7 +212,11 @@ static const struct frame_unwind libunwi
|
||||
{
|
||||
NORMAL_FRAME,
|
||||
libunwind_frame_this_id,
|
||||
- libunwind_frame_prev_register
|
||||
+ libunwind_frame_prev_register,
|
||||
+ NULL,
|
||||
+ NULL,
|
||||
+ NULL,
|
||||
+ libunwind_frame_dealloc_cache
|
||||
};
|
||||
|
||||
/* Verify if there is sufficient libunwind information for the frame to use
|
||||
Index: gdb/libunwind-frame.h
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/libunwind-frame.h,v
|
||||
retrieving revision 1.8
|
||||
diff -u -a -p -r1.8 gdb/libunwind-frame.h
|
||||
--- gdb/libunwind-frame.h 12 May 2007 00:07:45 -0000 1.8
|
||||
+++ gdb/libunwind-frame.h 8 Jun 2007 14:25:34 -0000
|
||||
@@ -53,6 +53,7 @@ void libunwind_frame_prev_register (stru
|
||||
int regnum, int *optimizedp,
|
||||
enum lval_type *lvalp, CORE_ADDR *addrp,
|
||||
int *realnump, gdb_byte *valuep);
|
||||
+void libunwind_frame_dealloc_cache (struct frame_info *self, void *cache);
|
||||
CORE_ADDR libunwind_frame_base_address (struct frame_info *next_frame, void **this_cache);
|
||||
|
||||
int libunwind_is_initialized (void);
|
Loading…
x
Reference in New Issue
Block a user