aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-12-04New python method gdb.Objfile.add_separate_debug_file.Doug Evans7-0/+86
gdb/ChangeLog: * NEWS: Mention gdb.Objfile.add_separate_debug_file. * python/py-objfile.c (objfpy_add_separate_debug_file): New function. (objfile_getset): Add "add_separate_debug_file". gdb/doc/ChangeLog: * python.texi (Objfiles In Python): Document Objfile.add_separate_debug_file. gdb/testsuite/ChangeLog: * gdb.python/py-objfile.exp: Add tests for objfile.add_separate_debug_file.
2014-12-04New python attribute gdb.Objfile.build_id.Doug Evans12-8/+138
gdb/ChangeLog: * NEWS: Mention gdb.Objfile.build_id. * build-id.c (build_id_bfd_get): Make non-static. * build-id.h (build_id_bfd_get): Add declaration. * python/py-objfile.c: #include "build-id.h", "elf-bfd.h". (OBJFPY_REQUIRE_VALID): New macro. (objfpy_get_build_id): New function. (objfile_getset): Add "build_id". * utils.c (make_hex_string): New function. * utils.h (make_hex_string): Add declaration. gdb/doc/ChangeLog: * python.texi (Objfiles In Python): Document Objfile.build_id. gdb/testsuite/ChangeLog: * lib/gdb.exp (get_build_id): New function. (build_id_debug_filename_get): Rewrite to use it. * gdb.python/py-objfile.exp: Add test for objfile.build_id.
2014-12-04ChangeLog typo fixAlan Modra1-1/+1
2014-12-04PowerPC gold, fix 32-bit branch address arithmeticAlan Modra2-5/+14
Mixing 64-bit and 32-bit types led to the wrong promotions. Keep calculation in same type. Also fix a case where PLTREL25 reloc addend should be ignored. * Powerpc.cc (Target_powerpc::Branch_info::make_stub): Ignore addend of PLTREL24 reloc when not generating a plt stub. Make max_branch_offset an "Address". (Stub_table::can_read_stub): Make max_branch_offset an "Address". (Target_powerpc::Relocate::relocate): Likewise.
2014-12-04Accelerate lookup_symbol_aux_objfile 85xJan Kratochvil4-1/+43
During debugging I get 10-30 seconds for a response to simple commands like: (gdb) print vectorvar.size() With this patch the performance gets to 1-2 seconds which is somehow acceptable. The problem is that dwarf2_gdb_index_functions.lookup_symbol (quick_symbol_functions::lookup_symbol) may return (and returns) NULL even for symbols which are present in .gdb_index but which can be found in already expanded symtab. But searching in the already expanded symtabs is just too slow when there are 400000+ expanded symtabs. There would be needed some single global hash table for each objfile so that one does not have to iterate all symtabs. Which .gdb_index could perfectly serve for, just its lookup_symbol() would need to return authoritative yes/no answers. Even after such fix these two simple patches are useful for example for non-.gdb_index files. One can reproduce the slugging interactive GDB performance with: #include <string> using namespace std; string var; class C { public: void m() {} }; int main() { C c; c.m(); return 0; } g++ -o slow slow.C -Wall -g $(pkg-config --libs gtkmm-3.0) gdb ./slow -ex 'b C::m' -ex 'maintenance set per-command space' -ex 'maintenance set per-command symtab' -ex 'maintenance set per-command time' -ex r [...] (gdb) p <tab><tab> Display all 183904 possibilities? (y or n) n (gdb) p/r var $1 = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x3a4db073d8 <std::string::_Rep::_S_empty_rep_storage+24> ""}} Command execution time: 20.023000 (cpu), 20.118665 (wall) ^^^^^^^^^ Space used: 927997952 (+0 for this command) Without DWZ there are X global blocks for X primary symtabs for X CUs of objfile. With DWZ there are X+Y global blocks for X+Y primary symtabs for X+Y CUs where Y are 'DW_TAG_partial_unit's. For 'DW_TAG_partial_unit's (Ys) their blockvector is usually empty. But not always, I have found there typedef symbols, there can IMO be optimized-out static variables etc. Neither of the patches should cause any visible behavior change. gdb/ChangeLog 2014-12-04 Jan Kratochvil <jan.kratochvil@redhat.com> * block.c (block_lookup_symbol_primary): New function. * block.h (block_lookup_symbol_primary): New declaration. * symtab.c (lookup_symbol_in_objfile_symtabs): Assert BLOCK_INDEX. Call block_lookup_symbol_primary.
2014-12-04Sort relocs output by ld -rAlan Modra7-8/+182
bfd/ PR 17666 * elflink.c: Include bfd_stdint.h. (cmp_ext32l_r_offset, cmp_ext32b_r_offset, cmp_ext64l_r_offset, cmp_ext64b_r_offset): New functions. (elf_link_adjust_relocs): Sort relocs. Free reloc hashes after sorting invalidates. ld/testsuite/ * ld-powerpc/vxworks-relax.rd: Update for reloc sorting. * ld-powerpc/vxworks-relax-2.rd: Likewise. * ld-sh/sh64/reldl32.rd: Likewise. * ld-sh/sh64/reldl64.rd: Likewise.
2014-12-04Correct invalid assumptions made by (mostly) DWARF-2 testsMaciej W. Rozycki8-15/+39
Address issues triggered by the MIPS ISA bit handling change, usually in tests that make artificial DWARF-2 records: * gdb.cp/expand-psymtabs-cxx.exp -- this test is debugging an object file and assuming addresses will be 0; with the ISA bit set code addresses are 1 instead: (gdb) PASS: gdb.cp/expand-psymtabs-cxx.exp: set language c++ p 'method(long)' $1 = {void (long)} 0x1 <method(long)> (gdb) FAIL: gdb.cp/expand-psymtabs-cxx.exp: before expand p method $2 = {void (long)} 0x1 <method(long)> (gdb) FAIL: gdb.cp/expand-psymtabs-cxx.exp: force expand p 'method(long)' $3 = {void (long)} 0x1 <method(long)> (gdb) FAIL: gdb.cp/expand-psymtabs-cxx.exp: after expand Fix by matching any hex number, there's no value AFAICT for the test in matching 0 exactly, and I suppose the method's offset within section can be non-zero for some other reasons on other targets too. * gdb.cp/nsalias.exp -- this assumes instructions can be aligned arbitrarily and places code labels at odd addreses, setting the ISA bit and wreaking havoc: (gdb) PASS: gdb.cp/nsalias.exp: print outer::inner::innermost::x list outer::inner::innermost::foo Function "outer::inner::innermost::foo" not defined. (gdb) FAIL: gdb.cp/nsalias.exp: list outer::inner::innermost::foo break *outer::inner::innermost::foo No symbol "foo" in namespace "outer::inner::innermost". (gdb) FAIL: gdb.cp/nsalias.exp: setting breakpoint at *outer::inner::innermost::foo delete $bpnum No breakpoint number 6. (gdb) FAIL: gdb.cp/nsalias.exp: (outer::inner::innermost): delete $bpnum -- etc., etc... Fix by aligning labels to 4; required by many processors. * gdb.dwarf2/dw2-canonicalize-type.exp, gdb.dwarf2/dw2-empty-pc-range.exp, gdb.dwarf2/pr11465.exp -- these assume an instruction and consequently a function can take as little as 1 byte, which makes it impossible to look up a code symbol by an address with the ISA bit set as the address is already beyond the end of the function: (gdb) ptype f No symbol "f" in current context. (gdb) FAIL: gdb.dwarf2/dw2-canonicalize-type.exp: ptype f (gdb) PASS: gdb.dwarf2/dw2-empty-pc-range.exp: empty range before CU load ptype realrange No symbol "realrange" in current context. (gdb) FAIL: gdb.dwarf2/dw2-empty-pc-range.exp: valid range after CU load (gdb) p N::c.C Cannot take address of method C. (gdb) FAIL: gdb.dwarf2/pr11465.exp: p N::c.C -- fix by increasing the size of the function to 4 (perhaps code in gdb/mips-tdep.c could look up code symbols up to twice, with and failing that without the ISA bit set, but it seems wrong to me to implement specific handling for invalid code just to satisfy test cases that assume too much about the target). * gdb.dwarf2/dw2-case-insensitive.exp -- an artificial code label is created, but does not work because data (a `.align' pseudo-op in this case) follows and as a result the label has no MIPS16 or microMIPS annotation in the symbol table: (gdb) PASS: gdb.dwarf2/dw2-case-insensitive.exp: set case-sensitive off info functions fUnC_lang All functions matching regular expression "fUnC_lang": File file1.txt: foo FUNC_lang(void); Non-debugging symbols: 0x004006e0 FUNC_lang_start (gdb) FAIL: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off -- fix by adding a `.insn' pseudo-op on MIPS targets; the pseudo-op marks data as instructions. * gdb.dwarf2/dw2-stack-boundary.exp -- the test case enables complaints and assumes none will be issued beyond ones explicitly arranged by the test case, however overlapping sections are noticed while minimal symbols are looked up by `mips_adjust_dwarf2_addr' in DWARF-2 record processing: (gdb) set complaints 100 (gdb) PASS: gdb.dwarf2/dw2-stack-boundary.exp: set complaints 100 file ./dw2-stack-boundary Reading symbols from ./dw2-stack-boundary...location description stack underflow...location description stack overflow...unexpected overlap between: (A) section `.reginfo' from `.../gdb.dwarf2/dw2-stack-boundary' [0x0, 0x18) (B) section `*COM*' from `.../gdb.dwarf2/dw2-stack-boundary' [0x0, 0x0). Will ignore section B...unexpected overlap between: (A) section `.reginfo' from `.../gdb.dwarf2/dw2-stack-boundary' [0x0, 0x18) (B) section `*UND*' from `.../gdb.dwarf2/dw2-stack-boundary' [0x0, 0x0). Will ignore section B...unexpected overlap between: (A) section `.reginfo' from `.../gdb.dwarf2/dw2-stack-boundary' [0x0, 0x18) (B) section `*ABS*' from `.../gdb.dwarf2/dw2-stack-boundary' [0x0, 0x0). Will ignore section B...done. (gdb) FAIL: gdb.dwarf2/dw2-stack-boundary.exp: check partial symtab errors -- fix by ignoring any extra noise as long as what we look for is found. * gdb.cp/expand-psymtabs-cxx.exp: Accept any address of `method(long)', not just 0x0. * gdb.cp/nsalias.exp: Align code labels to 4. * gdb.dwarf2/dw2-canonicalize-type.S (main): Expand to 4-bytes. * gdb.dwarf2/dw2-empty-pc-range.S (main): Likewise. * gdb.dwarf2/pr11465.S (_ZN1N1cE): Likewise. * gdb.dwarf2/dw2-case-insensitive.c (START_INSNS): New macro. (cu_text_start, FUNC_lang_start): Use `START_INSNS'. * gdb.dwarf2/dw2-stack-boundary.exp: Accept noise in complaints.
2014-12-04Automatic date update in version.inGDB Administrator1-1/+1
2014-12-04powerpc gold, work around pr17670Alan Modra3-24/+44
pr17670 is about an assert triggering on a branch to an undefined weak symbol, the symbol being undefined due to dropping its comdat group section. (Well sort of. The symbol is actually defined in an .opd section which isn't part of the group, but the code section the opd entry points at is dropped.) So don't assert. Also, don't make long branch stubs to such symbols, and arrange to have target-reloc.h code warn when applying relocs that use the sym. PR 17670 * symtab.cc (Symbol::set_undefined): Remove assertion. * powerpc.cc (Target_powerpc::symval_for_branch): Don't assert on symbols defined in discarded sections, instead return false. Rearrange params, update all callers. (Target_powerpc::Branch_info::make_stub): Don't make stubs for branches to syms in discarded sections. (Global_symbol_visitor_opd::operator()): Set discarded opd syms undefined and flag as discarded. (Target_powerpc::Relocate::relocate): Localize variable.
2014-12-03MIPS: Add support for microMIPS Linux signal trampolinesMaciej W. Rozycki4-6/+139
The necessity for this change has been revealed in the course of investigation related to proposed changes in the treatment of the ISA bit encoded in function symbols on the MIPS target. This change adds support for Linux signal trampolines encoded with the microMIPS instruction set. Such trampolines are used by the Linux kernel if compiled as a microMIPS binary (even if the binary run/debugged itself contains no microMIPS code at all). To see if we need to check whether the execution mode selected matches the given trampoline I have checked what the bit patterns of all the trampoline sequences decode to in the opposite instruction set. This produced useless or at least unusual code in most cases, for example: microMIPS/EB, o32 sigreturn, decoded as MIPS code: 30401017 andi zero,v0,0x1017 00008b7c dsll32 s1,zero,0xd MIPS/EL, o32 sigreturn, decoded as microMIPS code: 1017 2402 addi zero,s7,9218 000c 0000 sll zero,t0,0x0 However in some corner cases reasonable code can mimic a trampoline, for example: MIPS/EB, n32 rt_sigreturn, decoded as microMIPS code: 2402 sll s0,s0,1 1843 0000 sb v0,0(v1) 000c 0f3c jr t0 -- here the first instruction is a 16-bit one, making things nastier even as there are some other microMIPS instructions whose first 16-bit halfword is 0x000c and therefore matches this whole trampoline pattern. To overcome this problem I have decided the signal trampoline unwinder has to ask the platform backend whether it can apply a given trampoline pattern to the code location being concerned or not. Anticipating the acceptance of the ISA bit proposal I decided the handler not to merely be a predicate, but also to be able to provide an adjusted PC if required. I decided that returning zero will mean that the trampoline pattern is not applicable and any other value is the adjusted PC to use; a handler may return the value requested if the trampoline pattern and the PC requested as-is are both accepted. This changes the semantics of the trampoline unwinder a bit in that the zero PC now has a special value. I think this should be safe as a NULL pointer is generally supposed to be invalid. * tramp-frame.h (tramp_frame): Add `validate' member. * tramp-frame.c (tramp_frame_start): Validate trampoline before scanning. * mips-linux-tdep.c (MICROMIPS_INST_LI_V0): New macro. (MICROMIPS_INST_POOL32A, MICROMIPS_INST_SYSCALL): Likewise. (mips_linux_o32_sigframe): Initialize `validate' member. (mips_linux_o32_rt_sigframe): Likewise. (mips_linux_n32_rt_sigframe): Likewise. (mips_linux_n64_rt_sigframe): Likewise. (micromips_linux_o32_sigframe): New variable. (micromips_linux_o32_rt_sigframe): Likewise. (micromips_linux_n32_rt_sigframe): Likewise. (micromips_linux_n64_rt_sigframe): Likewise. (mips_linux_o32_sigframe_init): Handle microMIPS trampolines. (mips_linux_n32n64_sigframe_init): Likewise. (mips_linux_sigframe_validate): New function. (micromips_linux_sigframe_validate): Likewise. (mips_linux_init_abi): Install microMIPS trampoline unwinders.
2014-12-03Fix memory access problems exposed by fuzzed binaries.Nick Clifton6-104/+61
PR binutils/17512 * objdump.c (free_debug_section): Reset the compress_status as well. * compress.c (bfd_get_full_section_contents): Fail if there are no section contents available when the compress_status is COMPRESS_SECTION_DONE. * libbfd.c (bfd_malloc): Refuse to allocate a negative size. (bfd_malloc2): Use bfd_malloc. (bfd_realloc): Refuse to reallocate a negative size. (bfd_realloc2): Use bfd_realloc. (bfd_realloc_or_free): Use bfd_realloc. (bfd_zmalloc): Use bfd_malloc. (bfd_zmalloc): Use bfd_malloc2. * opncls.c (bfd_alloc): Refuse to allocate a negative size.
2014-12-03Compile pie_copyrelocs_test.cc with -fno-exceptions ↵H.J. Lu3-5/+26
-fno-asynchronous-unwind-tables PR gold/17675 * testsuite/Makefile.am (pie_copyrelocs_test_CXXFLAGS): New. * testsuite/Makefile.in: Regenerated.
2014-12-03Replace copyreloc-main.c with copyreloc-main.SH.J. Lu4-10/+25
* ld-x86-64/copyreloc-main.c: Removed. * ld-x86-64/copyreloc-main.S: New. * ld-x86-64/x86-64.exp: Replace copyreloc-main.c with copyreloc-main.S.
2014-12-03Replace calls to abort (in readelf) with informative error messages.Nick Clifton2-14/+60
PR binutils/17531 * readelf.c (get_machine_flags): Replace call to abort with a warning message and a return value. (get_elf_section_flags): Likewise. (get_symbol_visibility): Likewise. (get_ia64_symbol_other): Likewise. (get_ia64_symbol_other): Likewise. (is_32bit_abs_reloc): Likewise. (apply_relocations): Likewise. (display_arm_attribute): Likewise.
2014-12-03Reformat elf_x86_64_create_dynamic_sectionsH.J. Lu2-2/+5
* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Reformat.
2014-12-04powerpc gold, fix pr17566Alan Modra2-3/+23
Code stolen from arm.cc. PR 17566 * powerpc.cc (Target_powerpc::Scan::local): Use add_local_section when adding dynamic relocations against section symbols.
2014-12-03Use core regset iterators on Sparc SolarisUlrich Weigand4-1/+127
Remove native-only core file handling on Sparc Solaris. Instead, enable the sparc target generic core regset logic on Solaris by providing appropriate register offset maps. Thanks to Joel Brobecker for testing! gdb/ * config/sparc/sol2.mh (NATDEPFILES): Remove core-regset.o. * sparc-sol2-tdep.c: Include "regset.h". (sparc32_sol2_supply_core_gregset): New function. (sparc32_sol2_collect_core_gregset): Likewise. (sparc32_sol2_supply_core_fpregset): Likewise. (sparc32_sol2_collect_core_fpregset): Likewise. (sparc32_sol2_gregset, sparc32_sol2_fpregset): New variables. (sparc32_sol2_init_abi): Set tdep->gregset/sizeof_gregset and tdep->fpregset/sizeof_fpregset. * sparc64-sol2-tdep.c: Include "regset.h". (sparc64_sol2_supply_core_gregset): New function. (sparc64_sol2_collect_core_gregset): Likewise. (sparc64_sol2_supply_core_fpregset): Likewise. (sparc64_sol2_collect_core_fpregset): Likewise. (sparc64_sol2_gregset, sparc64_sol2_fpregset): New variables. (sparc64_sol2_init_abi): Set tdep->gregset/sizeof_gregset and tdep->fpregset/sizeof_fpregset.
2014-12-03Fix make_cleanup_dtor signature to match declarationSimon Marchi2-1/+6
The definition does not use the typedef for the dtor function pointer type that the declaration uses. It's a cosmetic-only change. ChangeLog: * common/cleanups.c (make_cleanup_dtor): Use typedef for dtor type.
2014-12-03callback.h:struct host_callback_struct compilation error on Windows hosts.Joel Brobecker9-11/+38
On Windows, a recent gnulib update imported the lstat module, and this caused a remote-sim.c build failure in struct host_callback_struct: In file included from /[...]/gdb/remote-sim.c:34:0: /[...]/gdb/../include/gdb/callback.h:93:9: error: duplicate member '_stati64' int (*lstat) (host_callback *, const char *, struct stat *); ^ What happens it that gnulib's stat.h makes the following defines: /* Large File Support on native Windows. */ #if 1 # define stat _stati64 #endif and then: #if 1 # if ! 0 /* mingw does not support symlinks, therefore it does not have lstat. But without links, stat does just fine. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lstat stat # endif So, the following fields in struct host_callback_struct... int (*stat) (host_callback *, const char *, struct stat *); int (*fstat) (host_callback *, int, struct stat *); int (*lstat) (host_callback *, const char *, struct stat *); ... get translated to... int (*_stati64) (host_callback *, const char *, struct _stati64 *); int (*_fstati64) (host_callback *, int, struct _stati64 *); int (*_stati64) (host_callback *, const char *, struct _stati64 *); ... which causes two fields to have the same name. This patch fixes the issue by renaming the stat-related fields by adding a "to_" prefix, similar to what is done in GDB's target_ops vector. include/gdb/ChangeLog: * callback.h (struct host_callback_struct) <to_stat>: Renamed from "stat". <to_fstat>: Renamed from "fstat". <to_lstat>: Renamed from "lstat". sim/common/ChangeLog: * sim-io.c (sim_io_stat, sim_io_fstat): Adjust calls to "stat" and "fstat" callbacks by calls to "to_stat" and "to_fstat" (resp) callbacks following renaming in callback.h. * syscall.c (cb_syscall): Likewise. Adjust calls to "lstat" callback by call to "to_lstat" callback sim/cris/ChangeLog: * traps.c (cris_break_13_handler): Adjust call to "fstat" callback by call to "to_fstat" following renaming in callback.h. sim/h8300/ChangeLog: * compile.c (sim_resume): Adjust calls to "stat" and "fstat" callbacks by calls to "to_stat" and "to_fstat" (resp) callbacks following renaming in callback.h.
2014-12-02Check info->executable for symbols which need copy relocsH.J. Lu2-2/+8
* elf64-x86-64.c (elf_x86_64_relocate_section): Check info->executable for symbols which need copy relocs.
2014-12-02Remove cplus_specific from general_symbol_info.Doug Evans3-48/+15
This patch reverts the addition of cplus_specific added here: 2010-07-16 Sami Wagiaalla <swagiaal@redhat.com> * symtab.h (symbol_set_demangled_name): Now takes an optional objfile* argument. (cplus_specific): New struct. * symtab.c (symbol_set_demangled_name): Updated. Use cplus_specific for cplus symbols. (symbol_get_demangled_name): Retrive the name from the cplus_specific struct for cplus symbols. (symbol_init_language_specific): Set cplus_specific for cplus symbols. (symbol_set_names): Pass objfile to symbol_set_demangled_name. * symtab.c (symbol_init_cplus_specific): New function. It was added in anticipation of improved template support: https://sourceware.org/ml/gdb-patches/2010-05/msg00594.html https://sourceware.org/ml/gdb-patches/2010-07/msg00284.html However, minsyms pay the price for this space too. For my standard benchmark this patch gets back 44MB of memory when gdb starts. [There's still ~440MB of memory used by the demangled ELF symbols of this benchmark, but that's another topic.] When the improved templated support is added, I wonder if this can be moved to struct symbol. Hmmm, we already have a special version of struct symbol for templates (struct template_symbol). gdb/ChangeLog: * symtab.c (symbol_init_cplus_specific): Delete. (symbol_set_demangled_name): Remove special c++ support. (symbol_get_demangled_name, symbol_set_language): Ditto. * symtab.h (struct cplus_specific): Delete. (struct general_symbol_info) <language_specific>: Remove cplus_specific.
2014-12-02Discard space for relocs against symbols with copy relocsH.J. Lu2-15/+30
This patch reverts the change in elf_x86_64_check_relocs and the partial change in elf_x86_64_adjust_dynamic_symbol. Instead, we discard space in PIE for relocs against symbols which turn out to need copy relocs. * elf64-x86-64.c (elf_x86_64_check_relocs): Revert the last change. (elf_x86_64_adjust_dynamic_symbol): Don't check !info->shared with ELIMINATE_COPY_RELOCS. (elf_x86_64_allocate_dynrelocs): For PIE, discard space for relocs against symbols which turn out to need copy relocs.
2014-12-02PR symtab/17602Doug Evans6-70/+113
gdb/ChangeLog: PR symtab/17602 * linespec.c (iterate_name_matcher): Fix arguments to symbol_name_cmp. gdb/testsuite/ChangeLog: PR symtab/17602 * gdb.cp/anon-ns.cc: Move guts of this file to ... * gdb.cp/anon-ns-2.cc: ... here. New file. * gdb.cp/anon-ns.exp: Update.
2014-12-02PR symtab/17591Doug Evans2-13/+13
gdb/ChangeLog: PR symtab/17591 * dwarf2read.c (find_slot_in_mapped_hash): Use cp_remove_params to strip parameters.
2014-12-02dwarf2read.c (peek_die_abbrev): Improve error message text.Doug Evans2-2/+8
gdb/ChangeLog: * dwarf2read.c (peek_die_abbrev): Improve error message text.
2014-12-02Remove remnant of Chill support.Doug Evans2-3/+6
gdb/ChangeLog: * valops.c (do_search_struct_field): Remove remnant of Chill support. Ref: commit 4c2260aa5c261f7bfb26dcf3aa7c67876720b17e
2014-12-03Automatic date update in version.inGDB Administrator1-1/+1
2014-12-02X86-64: Allow copy relocs for building PIEH.J. Lu9-11/+103
This patch allows copy relocs for non-GOT pc-relative relocation in PIE. bfd/ * elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Always allow copy relocs for building executables. (elf_x86_64_check_relocs): Allow copy relocs for non-GOT pc-relative relocation in shared object. (elf_x86_64_adjust_dynamic_symbol): Allocate copy relocs for PIE. (elf_x86_64_relocate_section): Don't copy a pc-relative relocation into the output file if the symbol needs copy reloc. ld/testsuite/ * ld-x86-64/copyreloc-lib.c: New file. * ld-x86-64/copyreloc-main.c: Likewise. * ld-x86-64/copyreloc-main.out: Likewise. * ld-x86-64/copyreloc-main1.rd: Likewise. * ld-x86-64/copyreloc-main2.rd: Likewise. * ld-x86-64/x86-64.exp: Run copyreloc tests.
2014-12-02Fix comment typoSimon Marchi2-1/+5
ChangeLog: * common/cleanups.c (make_cleanup_dtor): Fix comment typo.
2014-12-02New python events: inferior call, register/memory changed.Nick Bull19-14/+682
gdb/ChangeLog: * NEWS: Mention new Python events. * Makefile.in (SUBDIR_PYTHON_OBS): Add py-infevents.o. (SUBDIR_PYTHON_SRCS): Add py-infevents.c. (py-infevents.o): New rule. * doc/observer.texi (inferior_call_pre, inferior_call_post) (memory_changed, register_changed): New observers. * infcall.c (call_function_by_hand): Notify observer before and after inferior call. * python/py-event.h (inferior_call_kind): New enum. (emit_inferior_call_event): New prototype. (emit_register_changed_event): New prototype. (emit_memory_changed_event): New prototype. * python/py-events.h (events_object): New registries inferior_call, memory_changed and register_changed. * python/py-evts.c (gdbpy_initialize_py_events): Add the inferior_call, memory_changed and register_changed registries. * python/py-infevents.c: New. * python/py-inferior.c (python_on_inferior_call_pre) (python_on_inferior_call_post, python_on_register_change) (python_on_memory_change): New functions. (gdbpy_initialize_inferior): Attach python handler to new observers. * python/py-infthread.c(gdbpy_create_ptid_object): New. (thpy_get_ptid) Use gdbpy_create_ptid_object. * python/python-internal.h: (gdbpy_create_ptid_object) (gdbpy_initialize_inferior_call_pre_event) (gdbpy_initialize_inferior_call_post_event) (gdbpy_initialize_register_changed_event) (gdbpy_initialize_memory_changed_event): New prototypes. * python/python.c (_initialize_python): Initialize new events. * valops.c (value_assign): Notify register_changed observer. gdb/doc/ChangeLog: * python.texi (Events In Python): Document new events InferiorCallPreEvent, InferiorCallPostEvent, MemoryChangedEvent and RegisterChangedEvent. gdb/testsuite/ChangeLog: * gdb.python/py-events.py (inferior_call_handler): New. (register_changed_handler, memory_changed_handler): New. (test_events.invoke): Register new handlers. * gdb.python/py-events.exp: Add tests for inferior call, memory_changed and register_changed events.
2014-12-02revert previous patch so that I can re-commit with correct authorDoug Evans19-682/+14
2014-12-02New python events: infcall, register/memory changed.Doug Evans19-14/+682
gdb/ChangeLog: * NEWS: Mention new Python events. * Makefile.in (SUBDIR_PYTHON_OBS): Add py-infevents.o. (SUBDIR_PYTHON_SRCS): Add py-infevents.c. (py-infevents.o): New rule. * doc/observer.texi (inferior_call_pre, inferior_call_post) (memory_changed, register_changed): New observers. * infcall.c (call_function_by_hand): Notify observer before and after inferior call. * python/py-event.h (inferior_call_kind): New enum. (emit_inferior_call_event): New prototype. (emit_register_changed_event): New prototype. (emit_memory_changed_event): New prototype. * python/py-events.h (events_object): New registries inferior_call, memory_changed and register_changed. * python/py-evts.c (gdbpy_initialize_py_events): Add the inferior_call, memory_changed and register_changed registries. * python/py-infevents.c: New. * python/py-inferior.c (python_on_inferior_call_pre) (python_on_inferior_call_post, python_on_register_change) (python_on_memory_change): New functions. (gdbpy_initialize_inferior): Attach python handler to new observers. * python/py-infthread.c(gdbpy_create_ptid_object): New. (thpy_get_ptid) Use gdbpy_create_ptid_object. * python/python-internal.h: (gdbpy_create_ptid_object) (gdbpy_initialize_inferior_call_pre_event) (gdbpy_initialize_inferior_call_post_event) (gdbpy_initialize_register_changed_event) (gdbpy_initialize_memory_changed_event): New prototypes. * python/python.c (_initialize_python): Initialize new events. * valops.c (value_assign): Notify register_changed observer. gdb/doc/ChangeLog: * python.texi (Events In Python): Document new events InferiorCallPreEvent, InferiorCallPostEvent, MemoryChangedEvent and RegisterChangedEvent. gdb/testsuite/ChangeLog: * gdb.python/py-events.py (inferior_call_handler): New. (register_changed_handler, memory_changed_handler): New. (test_events.invoke): Register new handlers. * gdb.python/py-events.exp: Add tests for inferior call, memory_changed and register_changed events.
2014-12-02python/py-infthread.c: Whitespace fixes.Doug Evans2-8/+10
gdb/ChangeLog: * python/py-infthread.c: Whitespace fixes.
2014-12-02 * MAINTAINERS: Fix my email address.Denis Chertykov2-1/+5
2014-12-02execl-update-breakpoints.exp: Move whole segment instead of .text sectionAndreas Arnez2-8/+28
The test case builds two copies of the program, one with the compile option "ldflags=-Wl,-Ttext=0x1000000" and the other with the address changed to 0x2000000. However, when linking with ld.bfd, the resulting executables crash early in ld.so on S390 and i386. Analysis of the crash: The default linker script establishes a certain order of loadable sections, and the option "-Ttext" effectively splits these into an "unaffected" lot (everything before .text) and an "affected" lot. The affected lot is placed at the given address, whereas the unaffected lot stays at its default address. The unaffected lot starts at an aligned address plus Elf header sizes, which is good if it is the first LOAD segment (like on AMD64). But if the affected lot comes first instead (like on S390 and i386), the PHDR doesn't fit there and is placed *outside* any LOAD segments. Then the PHDR is not mapped when the loader gets control, and the loader runs into a segmentation fault while trying to access it. Since we are lucky about the order of segments on AMD64, the test succeeds there, but the resulting binaries are unusually large -- 2.1M each, with lots of padding within. When replacing '-Ttext' by '-Ttext-segment', the linker moves all segments consistently, the binaries have normal sizes, and the test case succeeds on all mentioned platforms. Since old versions of the gold linker don't support '-Ttext-segment', the patch also adds logic for falling back to '-Ttext'. gdb/testsuite/ChangeLog: * gdb.base/execl-update-breakpoints.exp: Specify the link address with '-Ttext-segment' instead of '-Ttext'. Fall back to '-Ttext' if the linker doesn't understand this.
2014-12-02[MIPS] When calculating a relocation using an undefined weak symbol don't ↵Andrew Bennett8-11/+137
check for overflow. In MIPS the relocation calculation only ignores the overflow checks for undefined weak symbols on relocations associated with j/jal. This patch extends this to the relocations used by the: b* instructions; pc/gp relative symbol offsets; and the lwpc/ldpc MIPS r6 instructions. bfd/ * elfxx-mips.c (mips_elf_calculate_relocation): Only check for overflow on non-weak undefined symbols. ld/testsuite/ * ld-mips-elf/mips-elf.exp: Add in undefined weak overflow tests for o32, n32 and n64. * ld-mips-elf/undefweak-overflow.s: New test. * ld-mips-elf/undefweak-overflow.d: New test. * ld-mips-elf/undefweak-overflow-n32.d: New test. * ld-mips-elf/undefweak-overflow-n64.d: New test.
2014-12-02ppc64_elf_edit_opd revampAlan Modra2-128/+163
This patch sorts .opd relocs (see pr17666) and allows .opd sections with a mix of 16 and 24 byte entries to be edited. * elf64-ppc.c (OPD_NDX): Define. Use throughout for sizing/indexing _opd_sec_data array, halving required memory. (sort_r_offset): New function. (ppc64_elf_edit_opd): Sort incoming relocs. Accept .opd sections with a mix of 16 and 24 byte OPD entries. Don't attempt to honour --non-overlapping-opd for .opd sections with unexpected relocs. Simplify opd entry size calculations by first finding the reloc for the next entry. Make edit loop handle one opd entry per iteration, with an inner loop handling relocs per entry.
2014-12-02S390: Fix 'expedite' for s390-te-linux64Andreas Arnez3-2/+8
Fix a typo in the expedited registers for s390-te-linux64. gdb/ChangeLog: * features/Makefile (s390-te-linux64-expedite): Replace non-existant r14 and r15 by r14l and r15l, respectively. * regformats/s390-te-linux64.dat: Regenerate.
2014-12-02Automatic date update in version.inGDB Administrator1-1/+1
2014-12-01Add support for -z global.Dmitriy Ivanov3-0/+11
gold/ * layout.cc (Layout::finish_dynamic_section): When '-z global' is specified set DF_1_GLOBAL in DT_FLAGS_1 flags. * options.h (General_options): New -z option (global).
2014-12-01Fix extraneous warning about executable stack.Cary Coutant2-3/+17
PR gold/17578 notes that gold will print a warning about an executable stack when the -z execstack option is given, even when there is no --warn_execstack option. The warning is completely useless and unexpected, since the user explicitly requested an executable stack, and did not even ask for warnings. This patch fixes that, and adds an extra warning when --warn_execstack and -z noexecstack are both given and an input file requires an executable stack. gold/ PR gold/17578 * layout.cc (Layout::layout_gnu_stack): Don't warn when -z execstack is given. (Layout::create_executable_stack_info): Warn when -z noexecstack is given but some inputs require executable stack.
2014-12-01Properly check for an out of range row indexH.J. Lu2-1/+6
* dwarf.c (process_cu_tu_index): Properly check for an out of range row index.
2014-12-01More fixes for memory access violations exposed by fuzzed binaries.Nick Clifton13-63/+207
PR binutils/17512 * dwarf.h (struct dwarf_section): Add user_data field. * dwarf.c (frame_need_space): Check for an over large register number. (display_debug_frames): Check the return value from frame_need_space. Check for a CFA expression that is so long the start address wraps around. (debug_displays): Initialise the user_data field. * objdump.c (load_specific_debug_section): Save the BFD section pointer in the user_data field of the dwarf_section structure. (free_debug_section): Update BFD section data when freeing section contents. * readelf.c (load_specific_debug_section): Initialise the user_data field. * archive.c (do_slurp_coff_armap): Add range checks to prevent running off the end of the string table. * compress.c (bfd_get_full_section_contents): Return a NULL pointer for zero sized sections. Do not attempt to copy a buffer onto itself. * elf-attrs.c (_bfd_elf_parse_attributes): Check for an empty header. Add range checks to avoid running off the end of the section. * elf.c (bfd_elf_get_str_section): Seek before allocating so that if the seek fails, no memory is allocated. (bfd_elf_string_from_elf_section): Do not allocate a string from a non string section. It only leads to trouble later on. (_bfd_elf_print_private_bfd_data): Check for there being too little external dynamic data. (bfd_section_from_shdr): Replace assertion with a failure mode. (bfd_section_from_shdr): When walking a loaded group section use the internal structure size, not the external size. Check for the group section being empty. * elf32-i386.c (elf_i386_rtype_to_howto): Replace assertion with a failure mode. * elfcode.h (elf_slurp_reloc_table): Likewise. * reloc.c (bfd_perform_relocation): Avoid seg-fault if the howto parameter is NULL.
2014-12-01Remove duplicate commentSimon Marchi2-4/+4
gdb/ChangeLog: * objfiles.c (allocate_objfile): Remove duplicate comment.
2014-12-01Add tests for PR ld/16452 and PR ld/16457H.J. Lu7-0/+42
PR ld/16452 PR ld/16457 * ld-elf/pr16452.map: New file. * ld-elf/pr16452.od: Likewise. * ld-elf/pr16452a.c: Likewise. * ld-elf/pr16452b.c: Likewise. * ld-elf/pr16457.od: Likewise. * ld-elf/shared.exp (build_tests): Add tests for PR ld/16452 and PR ld/16457.
2014-12-01Fix Python help() test for Python 3Simon Marchi2-1/+5
The message displayed when using help() changed a bit with time, so this adjusts the test accordingly. gdb/testsuite/ChangeLog: * gdb.python/python.exp: Change expected reply to help().
2014-12-01Use core regset iterators on GNU HurdUlrich Weigand4-38/+36
Remove native-only core file handling on GNU Hurd. Instead, enable the x86 target generic core regset logic on the Hurd by providing an appropriate register offset map. Thanks to Samuel Thibault for testing! gdb/ * config/i386/i386gnu.mh (NATDEPFILES): Remove core-regset.o. * i386gnu-nat.c: Do not include <sys/procfs.h> or "gregset.h". (CREG_OFFSET, creg_offset, CREG_ADDR): Remove. (supply_gregset, supply_fpregset): Remove. * i386gnu-tdep.c (i386gnu_gregset_reg_offset): New variable. (i386gnu_init_abi): Set tdep->gregset_reg_offset, gregset_num_regs, and sizeof_gregset.
2014-12-01Add checks for memory access violations exposed by fuzzed archives.Nick Clifton5-11/+79
PR binutils/17531 * dwarf.c (process_cu_tu_index): Check for an out of range row index. * elfcomm.c (adjust_relative_path): Change name_len parameter to an unsigned long. Check for path length overflow. (process_archive_index_and_symbols): Check for invalid header size. (setup_archive): Add checks for invalid archives. (get_archive_member_name): Add range checks. * elfcomm.h (adjust_relative_path): Update prototyoe. * readelf.c (process_archive): Add range checks.
2014-12-01Don't enable gdbtk in testsuiteYao Qi3-195/+7
When I skim configure.ac and Makefile.in in gdb/testsuite, I happen to see that directory gdb.gdbtk is added to subdirs, however it doesn't exist. gdb/testsuite/gdb.gdbtk was removed by the patch below, [rfa] git repo fixup: delete gdb/testsuite/gdb.gdbtk http://thread.gmane.org/gmane.comp.gdb.patches/61489 and we should cleanup configure.ac accordingly. gdb/testsuite: 2014-12-01 Yao Qi <yao@codesourcery.com> * configure.ac: Remove AC_ARG_ENABLE for gdbtk. Don't invoke AC_CONFIG_SUBDIRS(gdb.gdbtk). * configure: Re-generated.
2014-12-01Automatic date update in version.inGDB Administrator1-1/+1