This commit is contained in:
parent
41801ecdeb
commit
7df59f4d85
@ -1,132 +0,0 @@
|
||||
From nobody Sun Jun 24 18:21:49 2007
|
||||
From: Daniel Jacobowitz <drow@false.org>
|
||||
Subject: Re: PATCH: PR tui/2173: Arrow keys no longer works in breakpoint command list
|
||||
To: Nick Roberts <nickrob@snap.net.nz>, gdb-patches@sourceware.org
|
||||
Date: Sun, 24 Jun 2007 11:47:00 -0400
|
||||
Mail-Followup-To: Nick Roberts <nickrob@snap.net.nz>,
|
||||
gdb-patches@sourceware.org
|
||||
|
||||
On Tue, Jun 05, 2007 at 09:27:00AM -0400, Daniel Jacobowitz wrote:
|
||||
> On Wed, Jun 06, 2007 at 12:55:55AM +1200, Nick Roberts wrote:
|
||||
> > > > This change breaks the behaviour of annotations with commands that span
|
||||
> > > > multiple lines, like if, while, etc:
|
||||
> > >
|
||||
> > > Sorry, I didn't even know we had special annotations for this (and the
|
||||
> > > testsuite must not cover it)...
|
||||
> >
|
||||
> > Here's a test for gdb.base/annota3.exp. I can do the same for
|
||||
> > gdb.base/annota1.exp and gdb.cp/annota3.exp, if needed.
|
||||
>
|
||||
> Thanks. This is OK once we fix the problem. I haven't gotten back to
|
||||
> you about that yet because I want to figure out what other issues were
|
||||
> solved by the original patch - there were several. But I've been on
|
||||
> vacation and I'm in a mad rush at home now, so it may be a bit longer.
|
||||
|
||||
Nick, does this work for emacs? It fixes the testcase (which I
|
||||
updated to fail and not time out for broken GDBs).
|
||||
|
||||
--
|
||||
Daniel Jacobowitz
|
||||
CodeSourcery
|
||||
|
||||
2007-06-24 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* top.c (gdb_readline_wrapper_line): Call rl_callback_handler_remove.
|
||||
(struct gdb_readline_wrapper_cleanup): Remove prompt_orig.
|
||||
(gdb_readline_wrapper_cleanup): Do not reset the prompt.
|
||||
(gdb_readline_wrapper): Do not save the prompt. Pass our prompt
|
||||
to display_gdb_prompt.
|
||||
|
||||
2007-06-24 Nick Roberts <nickrob@snap.net.nz>
|
||||
Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* gdb.base/annota3.exp: Test for if construct.
|
||||
|
||||
Index: top.c
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/top.c,v
|
||||
retrieving revision 1.120
|
||||
diff -u -p -r1.120 top.c
|
||||
--- top.c 29 Mar 2007 18:55:01 -0000 1.120
|
||||
+++ top.c 24 Jun 2007 15:42:02 -0000
|
||||
@@ -751,12 +751,16 @@ gdb_readline_wrapper_line (char *line)
|
||||
/* Prevent operate-and-get-next from acting too early. */
|
||||
saved_after_char_processing_hook = after_char_processing_hook;
|
||||
after_char_processing_hook = NULL;
|
||||
+
|
||||
+ /* Prevent parts of the prompt from being redisplayed if annotations
|
||||
+ are enabled, and readline's state getting out of sync. */
|
||||
+ if (async_command_editing_p)
|
||||
+ rl_callback_handler_remove ();
|
||||
}
|
||||
|
||||
struct gdb_readline_wrapper_cleanup
|
||||
{
|
||||
void (*handler_orig) (char *);
|
||||
- char *prompt_orig;
|
||||
int already_prompted_orig;
|
||||
};
|
||||
|
||||
@@ -766,7 +770,6 @@ gdb_readline_wrapper_cleanup (void *arg)
|
||||
struct gdb_readline_wrapper_cleanup *cleanup = arg;
|
||||
|
||||
rl_already_prompted = cleanup->already_prompted_orig;
|
||||
- PROMPT (0) = cleanup->prompt_orig;
|
||||
|
||||
gdb_assert (input_handler == gdb_readline_wrapper_line);
|
||||
input_handler = cleanup->handler_orig;
|
||||
@@ -790,14 +793,12 @@ gdb_readline_wrapper (char *prompt)
|
||||
cleanup->handler_orig = input_handler;
|
||||
input_handler = gdb_readline_wrapper_line;
|
||||
|
||||
- cleanup->prompt_orig = get_prompt ();
|
||||
- PROMPT (0) = prompt;
|
||||
cleanup->already_prompted_orig = rl_already_prompted;
|
||||
|
||||
back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
|
||||
|
||||
/* Display our prompt and prevent double prompt display. */
|
||||
- display_gdb_prompt (NULL);
|
||||
+ display_gdb_prompt (prompt);
|
||||
rl_already_prompted = 1;
|
||||
|
||||
if (after_char_processing_hook)
|
||||
Index: testsuite/gdb.base/annota3.exp
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/annota3.exp,v
|
||||
retrieving revision 1.12
|
||||
diff -u -p -r1.12 annota3.exp
|
||||
--- testsuite/gdb.base/annota3.exp 9 Jan 2007 17:59:09 -0000 1.12
|
||||
+++ testsuite/gdb.base/annota3.exp 24 Jun 2007 15:42:02 -0000
|
||||
@@ -99,7 +99,29 @@ gdb_expect_list "annotation set at level
|
||||
"set annotate 3"
|
||||
}
|
||||
|
||||
-
|
||||
+#
|
||||
+# if construct:
|
||||
+#
|
||||
+send_gdb "if 1\n"
|
||||
+gdb_expect {
|
||||
+ -re "^if 1\r\n\r\n\032\032post-prompt\r\n\r\n\032\032pre-commands\r\n >\r\n\032\032commands\r\n$" {
|
||||
+ pass "start if construct"
|
||||
+ }
|
||||
+ -re ".*\032\032commands\r\n" {
|
||||
+ fail "start if construct"
|
||||
+ }
|
||||
+ timeout { fail "start if construct (timeout)" }
|
||||
+}
|
||||
+send_gdb "end\n"
|
||||
+gdb_expect {
|
||||
+ -re "^end\r\n\r\n\032\032post-commands\r\n$gdb_prompt$" {
|
||||
+ pass "end if construct"
|
||||
+ }
|
||||
+ -re ".*$gdb_prompt$" {
|
||||
+ fail "end if construct"
|
||||
+ }
|
||||
+ timeout { fail "end if construct (timeout)" }
|
||||
+}
|
||||
#
|
||||
# info break:
|
||||
#
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5cd4dd71f307d8a1d63bf58937a43b63c73793d25ba7cd035b4b7d55028e5bf2
|
||||
size 14517280
|
3
gdb-6.6.50.20070713-cvs.tar.bz2
Normal file
3
gdb-6.6.50.20070713-cvs.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cae27a0c770ac049366224820e584aea015961e421a2aa3c2175e5a021fc649f
|
||||
size 14344912
|
@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 13 11:46:27 CEST 2007 - schwab@suse.de
|
||||
|
||||
- Update to head of trunk.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jun 24 18:52:47 CEST 2007 - schwab@suse.de
|
||||
|
||||
|
18
gdb.spec
18
gdb.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package gdb (Version 6.6.50.20070621)
|
||||
# spec file for package gdb (Version 6.6.50.20070713)
|
||||
#
|
||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
@ -19,12 +19,12 @@ BuildRequires: libunwind-devel
|
||||
BuildRequires: gcc-ada
|
||||
%endif
|
||||
URL: http://www.gnu.org/software/gdb/
|
||||
License: GNU General Public License (GPL)
|
||||
License: GPL v2 or later
|
||||
Group: Development/Tools/Debuggers
|
||||
Autoreqprov: on
|
||||
PreReq: %{install_info_prereq}
|
||||
Version: 6.6.50.20070621
|
||||
Release: 2
|
||||
Version: 6.6.50.20070713
|
||||
Release: 1
|
||||
Summary: The GNU Debugger
|
||||
Source: gdb-%{version}-cvs.tar.bz2
|
||||
Patch1: gdb-misc.patch
|
||||
@ -35,11 +35,9 @@ Patch5: gstack.patch
|
||||
Patch6: sect-index-text.diff
|
||||
Patch7: pie-relocate.diff
|
||||
Patch8: mst-solib-trampoline.diff
|
||||
Patch9: loader_break.diff
|
||||
Patch10: ppc-long-double.diff
|
||||
Patch11: elf-symtab-read.diff
|
||||
Patch12: find-pc-sect-line.diff
|
||||
Patch13: async-command-editing.diff
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
@ -76,15 +74,9 @@ Authors:
|
||||
%patch6
|
||||
%patch7
|
||||
%patch8
|
||||
cd gdb
|
||||
%patch9
|
||||
cd ..
|
||||
%patch10
|
||||
%patch11
|
||||
%patch12
|
||||
cd gdb
|
||||
%patch13
|
||||
cd ..
|
||||
|
||||
%build
|
||||
CFLAGS="$RPM_OPT_FLAGS" \
|
||||
@ -140,6 +132,8 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Jul 13 2007 - schwab@suse.de
|
||||
- Update to head of trunk.
|
||||
* Sun Jun 24 2007 - schwab@suse.de
|
||||
- Fix annotations for commands prompt.
|
||||
* Thu Jun 21 2007 - schwab@suse.de
|
||||
|
@ -1,86 +0,0 @@
|
||||
2006-05-25 Paul Gilliam <pgilliam@us.ibm.com
|
||||
|
||||
* solib-svr4.c: Remove "._dl_debug_state" from the list of symbols at
|
||||
which to try setting a breakpoint for tracking solibs.
|
||||
(enable_break): Resolve break address when the symbol is found in
|
||||
the data section.
|
||||
|
||||
Index: solib-svr4.c
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/solib-svr4.c,v
|
||||
retrieving revision 1.58
|
||||
diff -a -u -r1.58 solib-svr4.c
|
||||
--- solib-svr4.c 18 May 2006 20:38:56 -0000 1.58
|
||||
+++ solib-svr4.c 25 May 2006 22:12:55 -0000
|
||||
@@ -85,16 +85,6 @@
|
||||
"rtld_db_dlactivity",
|
||||
"_rtld_debug_state",
|
||||
|
||||
- /* On the 64-bit PowerPC, the linker symbol with the same name as
|
||||
- the C function points to a function descriptor, not to the entry
|
||||
- point. The linker symbol whose name is the C function name
|
||||
- prefixed with a '.' points to the function's entry point. So
|
||||
- when we look through this table, we ignore symbols that point
|
||||
- into the data section (thus skipping the descriptor's symbol),
|
||||
- and eventually try this one, giving us the real entry point
|
||||
- address. */
|
||||
- "._dl_debug_state",
|
||||
-
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -1043,20 +1033,45 @@
|
||||
/* Now try to set a breakpoint in the dynamic linker. */
|
||||
for (bkpt_namep = solib_break_names; *bkpt_namep != NULL; bkpt_namep++)
|
||||
{
|
||||
- /* On ABI's that use function descriptors, there are usually
|
||||
- two linker symbols associated with each C function: one
|
||||
- pointing at the actual entry point of the machine code,
|
||||
- and one pointing at the function's descriptor. The
|
||||
- latter symbol has the same name as the C function.
|
||||
-
|
||||
- What we're looking for here is the machine code entry
|
||||
- point, so we are only interested in symbols in code
|
||||
- sections. */
|
||||
+ /* What we're looking for here is the machine code entry point,
|
||||
+ so we are only interested in symbols in code sections.
|
||||
+
|
||||
+ On ABI's that use function descriptors, the linker symbol with
|
||||
+ the same name as a C funtion points to that functions descriptor.
|
||||
+ when those function descriptors are in the code section, they
|
||||
+ contain executable code and we can set a breakpoint there. */
|
||||
sym_addr = bfd_lookup_symbol (tmp_bfd, *bkpt_namep, SEC_CODE);
|
||||
if (sym_addr != 0)
|
||||
break;
|
||||
}
|
||||
|
||||
+ if (sym_addr == 0)
|
||||
+ {
|
||||
+ CORE_ADDR sect_offset;
|
||||
+
|
||||
+ /* No symbol was found in a code section, so look in the data
|
||||
+ sections. This will only happen when the linker symbol points
|
||||
+ to a function descriptor that is in a data section. */
|
||||
+ for (bkpt_namep = solib_break_names; *bkpt_namep!=NULL; bkpt_namep++)
|
||||
+ {
|
||||
+ /* On ABI's that use function descriptors that are in the data
|
||||
+ section, */
|
||||
+ sym_addr = bfd_lookup_symbol (tmp_bfd, *bkpt_namep, SEC_DATA);
|
||||
+ if (sym_addr != 0)
|
||||
+ break;
|
||||
+ }
|
||||
+ if (sym_addr == 0)
|
||||
+ {
|
||||
+ target_close (tmp_bfd_target, 0);
|
||||
+ goto bkpt_at_symbol;
|
||||
+ }
|
||||
+
|
||||
+ /* Convert 'sym_addr' from a function pointer to an address. */
|
||||
+ sym_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch,
|
||||
+ sym_addr,
|
||||
+ tmp_bfd_target);
|
||||
+ }
|
||||
+
|
||||
/* We're done with both the temporary bfd and target. Remember,
|
||||
closing the target closes the underlying bfd. */
|
||||
target_close (tmp_bfd_target, 0);
|
@ -1,6 +1,6 @@
|
||||
--- gdb/Makefile.in
|
||||
+++ gdb/Makefile.in
|
||||
@@ -2426,7 +2426,7 @@
|
||||
@@ -2432,7 +2432,7 @@ objfiles.o: objfiles.c $(defs_h) $(bfd_h
|
||||
$(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(mdebugread_h) \
|
||||
$(gdb_assert_h) $(gdb_stat_h) $(gdb_obstack_h) $(gdb_string_h) \
|
||||
$(hashtab_h) $(breakpoint_h) $(block_h) $(dictionary_h) $(source_h) \
|
||||
@ -9,7 +9,7 @@
|
||||
observer.o: observer.c $(defs_h) $(observer_h) $(command_h) $(gdbcmd_h) \
|
||||
$(observer_inc)
|
||||
obsd-tdep.o: obsd-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(obsd_tdep_h)
|
||||
@@ -2612,9 +2612,9 @@
|
||||
@@ -2618,9 +2618,9 @@ solib-sunos.o: solib-sunos.c $(defs_h) $
|
||||
$(bcache_h) $(regcache_h)
|
||||
solib-svr4.o: solib-svr4.c $(defs_h) $(elf_external_h) $(elf_common_h) \
|
||||
$(elf_mips_h) $(symtab_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
|
||||
@ -18,12 +18,12 @@
|
||||
$(solist_h) $(solib_h) $(solib_svr4_h) $(bfd_target_h) $(elf_bfd_h) \
|
||||
- $(exec_h)
|
||||
+ $(exec_h) $(auxv_h)
|
||||
sol-thread.o: sol-thread.c $(defs_h) $(gdbthread_h) $(target_h) \
|
||||
$(inferior_h) $(gdb_stat_h) $(gdbcmd_h) $(gdbcore_h) $(regcache_h) \
|
||||
$(solib_h) $(symfile_h) $(observer_h) $(gdb_string_h) $(gregset_h)
|
||||
solib-target.o: solib-target.c $(defs_h) $(objfiles_h) $(solist_h) \
|
||||
$(symtab_h) $(symfile_h) $(target_h) $(vec_h) $(xml_support_h) \
|
||||
$(gdb_string_h)
|
||||
--- gdb/breakpoint.c
|
||||
+++ gdb/breakpoint.c
|
||||
@@ -3900,6 +3900,7 @@
|
||||
@@ -3891,6 +3891,7 @@ describe_other_breakpoints (CORE_ADDR pc
|
||||
printf_filtered ("%s%s ",
|
||||
((b->enable_state == bp_disabled ||
|
||||
b->enable_state == bp_shlib_disabled ||
|
||||
@ -31,7 +31,7 @@
|
||||
b->enable_state == bp_call_disabled)
|
||||
? " (disabled)"
|
||||
: b->enable_state == bp_permanent
|
||||
@@ -4586,6 +4587,60 @@
|
||||
@@ -4575,6 +4576,60 @@ re_enable_breakpoints_in_shlibs (void)
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
static void
|
||||
solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname,
|
||||
char *cond_string, enum bptype bp_kind)
|
||||
@@ -7023,6 +7078,7 @@
|
||||
@@ -7012,6 +7067,7 @@ delete_breakpoint (struct breakpoint *bp
|
||||
&& !b->loc->duplicate
|
||||
&& b->enable_state != bp_disabled
|
||||
&& b->enable_state != bp_shlib_disabled
|
||||
@ -100,7 +100,7 @@
|
||||
&& !b->pending
|
||||
&& b->enable_state != bp_call_disabled)
|
||||
{
|
||||
@@ -7241,7 +7297,8 @@
|
||||
@@ -7230,7 +7286,8 @@ breakpoint_re_set_one (void *bint)
|
||||
break;
|
||||
|
||||
save_enable = b->enable_state;
|
||||
@ -112,7 +112,7 @@
|
||||
/* If resetting a shlib-disabled breakpoint, we don't want to
|
||||
--- gdb/breakpoint.h
|
||||
+++ gdb/breakpoint.h
|
||||
@@ -155,6 +155,7 @@
|
||||
@@ -155,6 +155,7 @@ enum enable_state
|
||||
automatically enabled and reset when the call
|
||||
"lands" (either completes, or stops at another
|
||||
eventpoint). */
|
||||
@ -120,7 +120,7 @@
|
||||
bp_permanent /* There is a breakpoint instruction hard-wired into
|
||||
the target's code. Don't try to write another
|
||||
breakpoint instruction on top of it, or restore
|
||||
@@ -793,8 +794,12 @@
|
||||
@@ -793,8 +794,12 @@ extern void remove_thread_event_breakpoi
|
||||
|
||||
extern void disable_breakpoints_in_shlibs (int silent);
|
||||
|
||||
@ -135,7 +135,7 @@
|
||||
extern void create_solib_unload_event_breakpoint (char *, int,
|
||||
--- gdb/dwarf2read.c
|
||||
+++ gdb/dwarf2read.c
|
||||
@@ -1237,7 +1237,7 @@
|
||||
@@ -1233,7 +1233,7 @@ dwarf2_build_psymtabs (struct objfile *o
|
||||
else
|
||||
dwarf2_per_objfile->loc_buffer = NULL;
|
||||
|
||||
@ -146,7 +146,7 @@
|
||||
{
|
||||
--- gdb/elfread.c
|
||||
+++ gdb/elfread.c
|
||||
@@ -541,7 +541,7 @@
|
||||
@@ -613,7 +613,7 @@ elf_symfile_read (struct objfile *objfil
|
||||
/* If we are reinitializing, or if we have never loaded syms yet,
|
||||
set table to empty. MAINLINE is cleared so that *_read_psymtab
|
||||
functions do not all also re-initialize the psymbol table. */
|
||||
@ -157,7 +157,7 @@
|
||||
mainline = 0;
|
||||
--- gdb/infrun.c
|
||||
+++ gdb/infrun.c
|
||||
@@ -2223,6 +2223,11 @@
|
||||
@@ -2252,6 +2252,11 @@ process_event_stop_test:
|
||||
code segments in shared libraries might be mapped in now. */
|
||||
re_enable_breakpoints_in_shlibs ();
|
||||
|
||||
@ -180,7 +180,7 @@
|
||||
|
||||
/* Prototypes for local functions */
|
||||
|
||||
@@ -261,7 +263,16 @@
|
||||
@@ -261,7 +263,16 @@ init_entry_point_info (struct objfile *o
|
||||
CORE_ADDR
|
||||
entry_point_address (void)
|
||||
{
|
||||
@ -216,22 +216,28 @@
|
||||
|
||||
static struct link_map_offsets *svr4_fetch_link_map_offsets (void);
|
||||
static int svr4_have_link_map_offsets (void);
|
||||
@@ -261,8 +263,6 @@
|
||||
@@ -251,8 +253,6 @@ static char *debug_loader_name;
|
||||
|
||||
/* Local function prototypes */
|
||||
|
||||
-static int match_main (char *);
|
||||
-
|
||||
static CORE_ADDR bfd_lookup_symbol (bfd *, char *, flagword);
|
||||
static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
|
||||
|
||||
/*
|
||||
@@ -387,6 +387,16 @@
|
||||
gdb_byte *buf;
|
||||
gdb_byte *bufend;
|
||||
int arch_size;
|
||||
+ CORE_ADDR relocated_dyninfo_addr, entry_addr;
|
||||
@@ -358,6 +358,8 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
Elf32_External_Dyn *x_dynp_32;
|
||||
Elf64_External_Dyn *x_dynp_64;
|
||||
struct bfd_section *sect;
|
||||
+ CORE_ADDR relocated_dyn_addr, entry_addr;
|
||||
+ int ret;
|
||||
+
|
||||
|
||||
if (abfd == NULL)
|
||||
return 0;
|
||||
@@ -365,16 +367,26 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
if (arch_size == -1)
|
||||
return 0;
|
||||
|
||||
+ /* Find the address of the entry point of the program from the
|
||||
+ auxv vector. */
|
||||
+ ret = target_auxv_search (¤t_target, AT_ENTRY, &entry_addr);
|
||||
@ -239,25 +245,24 @@
|
||||
+ if (ret <= 0)
|
||||
+ /* No auxv info, maybe an older kernel. Fake our way through. */
|
||||
+ entry_addr = bfd_get_start_address (exec_bfd);
|
||||
|
||||
+
|
||||
/* Find the start address of the .dynamic section. */
|
||||
dyninfo_sect = bfd_get_section_by_name (exec_bfd, ".dynamic");
|
||||
@@ -404,11 +414,13 @@
|
||||
}
|
||||
|
||||
dyninfo_addr = bfd_section_vma (exec_bfd, dyninfo_sect);
|
||||
+ relocated_dyninfo_addr
|
||||
+ = dyninfo_addr + entry_addr - bfd_get_start_address (exec_bfd);
|
||||
sect = bfd_get_section_by_name (abfd, ".dynamic");
|
||||
if (sect == NULL)
|
||||
return 0;
|
||||
dyn_addr = bfd_section_vma (abfd, sect);
|
||||
+ relocated_dyn_addr
|
||||
+ = dyn_addr + entry_addr - bfd_get_start_address (exec_bfd);
|
||||
|
||||
/* Read in .dynamic section, silently ignore errors. */
|
||||
dyninfo_sect_size = bfd_section_size (exec_bfd, dyninfo_sect);
|
||||
buf = alloca (dyninfo_sect_size);
|
||||
- if (target_read_memory (dyninfo_addr, buf, dyninfo_sect_size))
|
||||
+ if (target_read_memory (relocated_dyninfo_addr, buf, dyninfo_sect_size))
|
||||
return 0;
|
||||
|
||||
/* Find the DT_DEBUG entry in the the .dynamic section.
|
||||
@@ -757,9 +769,55 @@
|
||||
sect_size = bfd_section_size (abfd, sect);
|
||||
buf = alloca (sect_size);
|
||||
- if (target_read_memory (dyn_addr, buf, sect_size))
|
||||
+ if (target_read_memory (relocated_dyn_addr, buf, sect_size))
|
||||
{
|
||||
/* If target_read_memory fails, try reading the BFD file. */
|
||||
if (!bfd_get_section_contents (abfd, sect,
|
||||
@@ -735,9 +747,55 @@ svr4_current_sos (void)
|
||||
does have a name, so we can no longer use a missing name to
|
||||
decide when to ignore it. */
|
||||
if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0)
|
||||
@ -314,7 +319,7 @@
|
||||
int errcode;
|
||||
char *buffer;
|
||||
|
||||
@@ -777,10 +835,8 @@
|
||||
@@ -755,10 +813,8 @@ svr4_current_sos (void)
|
||||
strcpy (new->so_original_name, new->so_name);
|
||||
}
|
||||
|
||||
@ -327,7 +332,7 @@
|
||||
free_so (new);
|
||||
else
|
||||
{
|
||||
@@ -876,24 +932,6 @@
|
||||
@@ -854,24 +910,6 @@ svr4_fetch_objfile_link_map (struct objf
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -352,7 +357,7 @@
|
||||
/* Return 1 if PC lies in the dynamic symbol resolution code of the
|
||||
SVR4 run time loader. */
|
||||
static CORE_ADDR interp_text_sect_low;
|
||||
@@ -1374,6 +1412,8 @@
|
||||
@@ -1351,6 +1389,8 @@ svr4_solib_create_inferior_hook (void)
|
||||
while (stop_signal != TARGET_SIGNAL_TRAP);
|
||||
stop_soon = NO_STOP_QUIETLY;
|
||||
#endif /* defined(_SCO_DS) */
|
||||
@ -363,7 +368,7 @@
|
||||
static void
|
||||
--- gdb/solib.c
|
||||
+++ gdb/solib.c
|
||||
@@ -394,15 +394,37 @@
|
||||
@@ -400,15 +400,37 @@ symbol_add_stub (void *arg)
|
||||
/* Have we already loaded this shared object? */
|
||||
ALL_OBJFILES (so->objfile)
|
||||
{
|
||||
@ -404,7 +409,7 @@
|
||||
free_section_addr_info (sap);
|
||||
|
||||
return (1);
|
||||
@@ -583,28 +605,7 @@
|
||||
@@ -589,28 +611,7 @@ update_solib_list (int from_tty, struct
|
||||
/* Fill in the rest of each of the `struct so_list' nodes. */
|
||||
for (i = inferior; i; i = i->next)
|
||||
{
|
||||
@ -434,7 +439,7 @@
|
||||
|
||||
/* Notify any observer that the shared object has been
|
||||
loaded now that we've added it to GDB's tables. */
|
||||
@@ -700,6 +701,39 @@
|
||||
@@ -706,6 +707,39 @@ solib_add (char *pattern, int from_tty,
|
||||
}
|
||||
}
|
||||
|
||||
@ -476,7 +481,7 @@
|
||||
|
||||
--- gdb/solist.h
|
||||
+++ gdb/solist.h
|
||||
@@ -61,6 +61,8 @@
|
||||
@@ -63,6 +63,8 @@ struct so_list
|
||||
bfd *abfd;
|
||||
char symbols_loaded; /* flag: symbols read in yet? */
|
||||
char from_tty; /* flag: print msgs? */
|
||||
@ -485,7 +490,7 @@
|
||||
struct objfile *objfile; /* objfile for loaded lib */
|
||||
struct section_table *sections;
|
||||
struct section_table *sections_end;
|
||||
@@ -115,6 +117,10 @@
|
||||
@@ -128,6 +130,10 @@ struct so_list *master_so_list (void);
|
||||
/* Find solib binary file and open it. */
|
||||
extern int solib_open (char *in_pathname, char **found_pathname);
|
||||
|
||||
@ -498,7 +503,7 @@
|
||||
|
||||
--- gdb/symfile-mem.c
|
||||
+++ gdb/symfile-mem.c
|
||||
@@ -110,7 +110,7 @@
|
||||
@@ -110,7 +110,7 @@ symbol_file_add_from_memory (struct bfd
|
||||
}
|
||||
|
||||
objf = symbol_file_add_from_bfd (nbfd, from_tty,
|
||||
@ -509,7 +514,7 @@
|
||||
reinit_frame_cache ();
|
||||
--- gdb/symfile.c
|
||||
+++ gdb/symfile.c
|
||||
@@ -708,7 +708,7 @@
|
||||
@@ -781,7 +781,7 @@ syms_from_objfile (struct objfile *objfi
|
||||
|
||||
/* Now either addrs or offsets is non-zero. */
|
||||
|
||||
@ -518,7 +523,7 @@
|
||||
{
|
||||
/* We will modify the main symbol table, make sure that all its users
|
||||
will be cleaned up if an error occurs during symbol reading. */
|
||||
@@ -736,7 +736,7 @@
|
||||
@@ -809,7 +809,7 @@ syms_from_objfile (struct objfile *objfi
|
||||
|
||||
We no longer warn if the lowest section is not a text segment (as
|
||||
happens for the PA64 port. */
|
||||
@ -527,7 +532,7 @@
|
||||
{
|
||||
asection *lower_sect;
|
||||
asection *sect;
|
||||
@@ -905,14 +905,14 @@
|
||||
@@ -978,14 +978,14 @@ new_symfile_objfile (struct objfile *obj
|
||||
/* If this is the main symbol file we have to clean up all users of the
|
||||
old main symbol file. Otherwise it is sufficient to fixup all the
|
||||
breakpoints that may have been redefined by this symbol file. */
|
||||
@ -544,7 +549,7 @@
|
||||
{
|
||||
breakpoint_re_set ();
|
||||
}
|
||||
@@ -958,7 +958,7 @@
|
||||
@@ -1031,7 +1031,7 @@ symbol_file_add_with_addrs_or_offsets (b
|
||||
interactively wiping out any existing symbols. */
|
||||
|
||||
if ((have_full_symbols () || have_partial_symbols ())
|
||||
@ -553,7 +558,7 @@
|
||||
&& from_tty
|
||||
&& !query ("Load new symbol table from \"%s\"? ", name))
|
||||
error (_("Not confirmed."));
|
||||
@@ -1138,6 +1138,11 @@
|
||||
@@ -1211,6 +1211,11 @@ symbol_file_clear (int from_tty)
|
||||
symfile_objfile->name)
|
||||
: !query (_("Discard symbol table? "))))
|
||||
error (_("Not confirmed."));
|
||||
@ -565,7 +570,7 @@
|
||||
free_all_objfiles ();
|
||||
|
||||
/* solib descriptors may have handles to objfiles. Since their
|
||||
@@ -2277,6 +2282,8 @@
|
||||
@@ -2358,6 +2363,8 @@ reread_symbols (void)
|
||||
/* Discard cleanups as symbol reading was successful. */
|
||||
discard_cleanups (old_cleanups);
|
||||
|
||||
@ -574,7 +579,7 @@
|
||||
/* 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. */
|
||||
@@ -2643,6 +2650,7 @@
|
||||
@@ -2724,6 +2731,7 @@ clear_symtab_users (void)
|
||||
set_default_breakpoint (0, 0, 0, 0);
|
||||
clear_pc_function_cache ();
|
||||
observer_notify_new_objfile (NULL);
|
||||
@ -584,7 +589,7 @@
|
||||
FIXME: It's not clear which of these are supposed to persist
|
||||
--- gdb/varobj.c
|
||||
+++ gdb/varobj.c
|
||||
@@ -1077,6 +1077,58 @@
|
||||
@@ -1077,6 +1077,58 @@ install_new_value (struct varobj *var, s
|
||||
return changed;
|
||||
}
|
||||
|
||||
@ -645,7 +650,7 @@
|
||||
expression to see if it's changed. Then go all the way
|
||||
--- gdb/varobj.h
|
||||
+++ gdb/varobj.h
|
||||
@@ -114,4 +114,6 @@
|
||||
@@ -114,4 +114,6 @@ extern int varobj_update (struct varobj
|
||||
|
||||
extern void varobj_invalidate (void);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user