SHA256
1
0
forked from pool/gdb
OBS User unknown 2007-06-21 20:08:10 +00:00 committed by Git OBS Bridge
parent 549f54f140
commit 085e469660
6 changed files with 34 additions and 166 deletions

View File

@ -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;
}

View File

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

View File

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

View File

@ -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

View File

@ -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

View File

@ -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);