From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20880 invoked by alias); 18 Aug 2009 15:16:00 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 20764 invoked by uid 9561); 18 Aug 2009 15:15:58 -0000 Date: Tue, 18 Aug 2009 15:16:00 -0000 Message-ID: <20090818151557.20747.qmail@sourceware.org> From: swagiaal@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] master: *** empty log message *** X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 0ad8a5906cd65758e6050bdf59b893a0b1c20bc9 X-Git-Newrev: 19a50d12edce0600e6e784c1edb3ada364e315f6 X-SW-Source: 2009-q3/txt/msg00122.txt.bz2 List-Id: The branch, master has been updated via 19a50d12edce0600e6e784c1edb3ada364e315f6 (commit) via 7d85f8dcdcb4b149fc5c8d1264fd143389966d90 (commit) via b2bd124143030a72ceffe8164b95eca30c136a71 (commit) via 2d2cca06c04577fedc2547a9d22213bf2ce5944b (commit) via 7b89e85c0e6ec79862388fffa7f37097023ff996 (commit) via 9213c4b80953bfb0cd4f413449804cfea7083b8c (commit) via 2e49d7624aa051e6fc923ad075c8d5a8b760b03a (commit) via 668e15338216bae8b420ac7622e451fbd41f7150 (commit) via 61b721bf40f1b08c51e333356223aac25779efce (commit) from 0ad8a5906cd65758e6050bdf59b893a0b1c20bc9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 19a50d12edce0600e6e784c1edb3ada364e315f6 Author: gdbadmin Date: Tue Aug 18 00:00:32 2009 +0000 *** empty log message *** commit 7d85f8dcdcb4b149fc5c8d1264fd143389966d90 Author: Alan Modra Date: Tue Aug 18 00:00:06 2009 +0000 daily update commit b2bd124143030a72ceffe8164b95eca30c136a71 Author: Ulrich Weigand Date: Mon Aug 17 20:09:37 2009 +0000 * symfile.c (reread_symbols): Call objfiles_changed *before* calling clear_symtab_users. commit 2d2cca06c04577fedc2547a9d22213bf2ce5944b Author: Michael Snyder Date: Mon Aug 17 18:23:45 2009 +0000 2009-08-17 Michael Snyder * amd64-tdep.c: Add a frame unwinder for function epilogues. (amd64_in_function_epilogue_p): New function. (amd64_epilogue_frame_sniffer): New function. (amd64_epilogue_frame_cache): New function. (amd64_epilogue_frame_this_id): New function. (amd64_epilogue_frame_unwind): New struct frame_unwind. (amd64_init_abi): Hook the new unwinder. * amd64-linux-tdep.c (amd64_linux_init_abi): Set gdbarch to use SVR4 method for skip_trampoline_code. commit 7b89e85c0e6ec79862388fffa7f37097023ff996 Author: Pedro Alves Date: Mon Aug 17 11:16:11 2009 +0000 2009-08-17 Pedro Alves > * objfiles.c (objfile_relocate): Relocate the entry point before relocating the section offsets. Flush the section map before resetting breakpoints. commit 9213c4b80953bfb0cd4f413449804cfea7083b8c Author: Ben Elliston Date: Mon Aug 17 04:10:29 2009 +0000 * config.sub, config.guess: Update from upstream sources. commit 2e49d7624aa051e6fc923ad075c8d5a8b760b03a Author: Alan Modra Date: Mon Aug 17 00:00:08 2009 +0000 daily update commit 668e15338216bae8b420ac7622e451fbd41f7150 Author: gdbadmin Date: Mon Aug 17 00:00:03 2009 +0000 *** empty log message *** commit 61b721bf40f1b08c51e333356223aac25779efce Author: Doug Evans Date: Sun Aug 16 17:32:21 2009 +0000 * opncls.c (bfd_close): Until BFD_IN_MEMORY has an iovec, at least don't leak memory. ----------------------------------------------------------------------- Summary of changes: ChangeLog | 4 ++ bfd/ChangeLog | 5 +++ bfd/opncls.c | 16 ++++++--- bfd/version.h | 2 +- config.guess | 12 +++--- config.sub | 20 ++++++++--- gdb/ChangeLog | 24 +++++++++++++ gdb/amd64-linux-tdep.c | 3 ++ gdb/amd64-tdep.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ gdb/objfiles.c | 16 +++++---- gdb/symfile.c | 6 ++-- gdb/version.in | 2 +- 12 files changed, 171 insertions(+), 28 deletions(-) First 500 lines of diff: diff --git a/ChangeLog b/ChangeLog index 64dc5aa..4ee1147 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-08-17 Ben Elliston + + * config.sub, config.guess: Update from upstream sources. + 2009-08-06 Michael Eager * configure.ac: Add Microblaze target. diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ecca9ca..f9c4c6d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2009-08-16 Doug Evans + + * opncls.c (bfd_close): Until BFD_IN_MEMORY has an iovec, + at least don't leak memory. + 2009-08-13 DJ Delorie * elf32-m32c.c (m32c_elf_relax_delete_bytes): Adjust symbol sizes diff --git a/bfd/opncls.c b/bfd/opncls.c index 6a4f319..7992030 100644 --- a/bfd/opncls.c +++ b/bfd/opncls.c @@ -703,12 +703,18 @@ bfd_close (bfd *abfd) if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) return FALSE; - /* FIXME: cagney/2004-02-15: Need to implement a BFD_IN_MEMORY io - vector. */ - if (!(abfd->flags & BFD_IN_MEMORY)) - ret = abfd->iovec->bclose (abfd); + if ((abfd->flags & BFD_IN_MEMORY) != 0) + { + /* FIXME: cagney/2004-02-15: Need to implement a BFD_IN_MEMORY io + vector. + Until that's done, at least don't leak memory. */ + struct bfd_in_memory *bim = abfd->iostream; + free (bim->buffer); + free (bim); + ret = TRUE; + } else - ret = TRUE; + ret = abfd->iovec->bclose (abfd); if (ret) _maybe_make_executable (abfd); diff --git a/bfd/version.h b/bfd/version.h index b19ea97..e217c6e 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20090816 +#define BFD_VERSION_DATE 20090818 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/config.guess b/config.guess index 7c48073..e3a2116 100755 --- a/config.guess +++ b/config.guess @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. -timestamp='2009-06-03' +timestamp='2009-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -170,7 +170,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -656,7 +656,7 @@ EOF # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -927,7 +927,7 @@ EOF EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; @@ -1046,7 +1046,7 @@ EOF i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) @@ -1154,7 +1154,7 @@ EOF rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) diff --git a/config.sub b/config.sub index 67a635e..32d764c 100755 --- a/config.sub +++ b/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. -timestamp='2009-06-03' +timestamp='2009-08-17' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -149,10 +149,13 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -337,7 +340,7 @@ case $basic_machine in | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -467,6 +470,10 @@ case $basic_machine in basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; c90) basic_machine=c90-cray os=-unicos @@ -719,6 +726,9 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + microblaze) + basic_machine=microblaze-xilinx + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -1260,7 +1270,7 @@ case $os in # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ @@ -1613,7 +1623,7 @@ case $basic_machine in -sunos*) vendor=sun ;; - -aix*) + -cnk*|-aix*) vendor=ibm ;; -beos*) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4215476..3af22c1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,27 @@ +2009-08-17 Ulrich Weigand + + * symfile.c (reread_symbols): Call objfiles_changed *before* + calling clear_symtab_users. + +2009-08-17 Michael Snyder + + * amd64-tdep.c: Add a frame unwinder for function epilogues. + (amd64_in_function_epilogue_p): New function. + (amd64_epilogue_frame_sniffer): New function. + (amd64_epilogue_frame_cache): New function. + (amd64_epilogue_frame_this_id): New function. + (amd64_epilogue_frame_unwind): New struct frame_unwind. + (amd64_init_abi): Hook the new unwinder. + + * amd64-linux-tdep.c (amd64_linux_init_abi): Set gdbarch to use + SVR4 method for skip_trampoline_code. + +2009-08-17 Pedro Alves > + + * objfiles.c (objfile_relocate): Relocate the entry point before + relocating the section offsets. Flush the section map before + resetting breakpoints. + 2009-08-14 Doug Evans * symfile.c (find_separate_debug_file): Remove double free of diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c index e7f966b..dcfdb38 100644 --- a/gdb/amd64-linux-tdep.c +++ b/gdb/amd64-linux-tdep.c @@ -1415,6 +1415,9 @@ amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_fetch_tls_load_module_address (gdbarch, svr4_fetch_objfile_link_map); + /* GNU/Linux uses SVR4-style shared libraries. */ + set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); + /* Displaced stepping. */ set_gdbarch_displaced_step_copy_insn (gdbarch, amd64_displaced_step_copy_insn); diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 187b9ce..51560cf 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -1887,6 +1887,89 @@ static const struct frame_base amd64_frame_base = amd64_frame_base_address }; +/* Normal frames, but in a function epilogue. */ + +/* The epilogue is defined here as the 'ret' instruction, which will + follow any instruction such as 'leave' or 'pop %ebp' that destroys + the function's stack frame. */ + +static int +amd64_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR pc) +{ + gdb_byte insn; + + if (target_read_memory (pc, &insn, 1)) + return 0; /* Can't read memory at pc. */ + + if (insn != 0xc3) /* 'ret' instruction. */ + return 0; + + return 1; +} + +static int +amd64_epilogue_frame_sniffer (const struct frame_unwind *self, + struct frame_info *this_frame, + void **this_prologue_cache) +{ + if (frame_relative_level (this_frame) == 0) + return amd64_in_function_epilogue_p (get_frame_arch (this_frame), + get_frame_pc (this_frame)); + else + return 0; +} + +static struct amd64_frame_cache * +amd64_epilogue_frame_cache (struct frame_info *this_frame, void **this_cache) +{ + struct gdbarch *gdbarch = get_frame_arch (this_frame); + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + struct amd64_frame_cache *cache; + gdb_byte buf[4]; + + if (*this_cache) + return *this_cache; + + cache = amd64_alloc_frame_cache (); + *this_cache = cache; + + /* Cache base will be %esp plus cache->sp_offset (-8). */ + get_frame_register (this_frame, AMD64_RSP_REGNUM, buf); + cache->base = extract_unsigned_integer (buf, 8, + byte_order) + cache->sp_offset; + + /* Cache pc will be the frame func. */ + cache->pc = get_frame_pc (this_frame); + + /* The saved %esp will be at cache->base plus 16. */ + cache->saved_sp = cache->base + 16; + + /* The saved %eip will be at cache->base plus 8. */ + cache->saved_regs[AMD64_RIP_REGNUM] = cache->base + 8; + + return cache; +} + +static void +amd64_epilogue_frame_this_id (struct frame_info *this_frame, + void **this_cache, + struct frame_id *this_id) +{ + struct amd64_frame_cache *cache = amd64_epilogue_frame_cache (this_frame, + this_cache); + + (*this_id) = frame_id_build (cache->base + 8, cache->pc); +} + +static const struct frame_unwind amd64_epilogue_frame_unwind = +{ + NORMAL_FRAME, + amd64_epilogue_frame_this_id, + amd64_frame_prev_register, + NULL, + amd64_epilogue_frame_sniffer +}; + static struct frame_id amd64_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) { @@ -2065,6 +2148,12 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_dummy_id (gdbarch, amd64_dummy_id); + /* Hook the function epilogue frame unwinder. This unwinder is + appended to the list first, so that it supercedes the other + unwinders in function epilogues. */ + frame_unwind_prepend_unwinder (gdbarch, &amd64_epilogue_frame_unwind); + + /* Hook the prologue-based frame unwinders. */ frame_unwind_append_unwinder (gdbarch, &amd64_sigtramp_frame_unwind); frame_unwind_append_unwinder (gdbarch, &amd64_frame_unwind); frame_base_set_default (gdbarch, &amd64_frame_base); diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 586f5d0..92db65e 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -666,12 +666,6 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) to be out of order. */ msymbols_sort (objfile); - { - int i; - for (i = 0; i < objfile->num_sections; ++i) - (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i); - } - if (objfile->ei.entry_point != ~(CORE_ADDR) 0) { /* Relocate ei.entry_point with its section offset, use SECT_OFF_TEXT @@ -684,6 +678,15 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) objfile->ei.entry_point += ANOFFSET (delta, SECT_OFF_TEXT (objfile)); } + { + int i; + for (i = 0; i < objfile->num_sections; ++i) + (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i); + } + + /* Rebuild section map next time we need it. */ + objfiles_changed_p = 1; + /* Update the table in exec_ops, used to read memory. */ ALL_OBJFILE_OSECTIONS (objfile, s) { @@ -695,7 +698,6 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) /* Relocate breakpoints as necessary, after things are relocated. */ breakpoint_re_set (); - objfiles_changed_p = 1; /* Rebuild section map next time we need it. */ } /* Many places in gdb want to test just to see if we have any partial diff --git a/gdb/symfile.c b/gdb/symfile.c index e30b613..5151966 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -2467,13 +2467,13 @@ reread_symbols (void) if (reread_one) { + /* Notify objfiles that we've modified objfile sections. */ + objfiles_changed (); + clear_symtab_users (); /* At least one objfile has changed, so we can consider that the executable we're debugging has changed too. */ observer_notify_executable_changed (); - - /* Notify objfiles that we've modified objfile sections. */ - objfiles_changed (); } } diff --git a/gdb/version.in b/gdb/version.in index 16c6d91..f2db57a 100644 --- a/gdb/version.in +++ b/gdb/version.in @@ -1 +1 @@ -6.8.50.20090816-cvs +6.8.50.20090818-cvs hooks/post-receive -- Repository for Project Archer.