- Jul 15, 2016
-
-
Maciej W. Rozycki authored
Don't convert PC-relative REL relocations against absolute symbols to section-relative references and retain the original symbol reference instead. Offsets into the absolute section may overflow the limited range of their in-place addend field, causing an assembly error, e.g.: $ cat test.s .text .globl foo .ent foo foo: b bar .end foo .set bar, 0x12345678 $ as -EB -32 -o test.o test.s test.s: Assembler messages: test.s:3: Error: relocation overflow $ With the original reference retained the source can now be assembled and linked successfully: $ as -EB -32 -o test.o test.s $ objdump -dr test.o test.o: file format elf32-tradbigmips Disassembly of section .text: 00000000 <foo>: 0: 1000ffff b 0 <foo> 0: R_MIPS_PC16 bar 4: 00000000 nop ... $ ld -melf32btsmip -Ttext 0x12340000 -e foo -o test test.o $ objdump -dr test test: file format elf32-tradbigmips Disassembly of section .text: 12340000 <foo>: 12340000: 1000159d b 12345678 <bar> 12340004: 00000000 nop ... $ For simplicity always retain the original symbol reference, even if it would indeed fit. Making TC_FORCE_RELOCATION_ABS separate from TC_FORCE_RELOCATION causes R_MICROMIPS_PC7_S1, R_MICROMIPS_PC10_S1 and R_MICROMIPS_PC16_S1 branch relocations against absolute symbols to be converted on RELA targets to section-relative references. This is an intended effect of this change. Absolute symbols carry no ISA annotation in their `st_other' field and their value is not going to change with linker relaxation, so it is safe to discard the original reference and keep the calculated final symbol value only in the relocation's addend. Similarly R6 R_MIPS_PCHI16 and R_MIPS_PCLO16 relocations referring absolute symbols can be safely converted even on REL targets, as there the in-place addend of these relocations covers the entire 32-bit address space so it can hold the calculated final symbol value, and likewise the value referred won't be affected by any linker relaxation. Add a set of suitable test cases and enable REL linker tests which now work and were previously used as dump patterns for RELA tests only. gas/ * config/tc-mips.h (TC_FORCE_RELOCATION_ABS): New macro. (mips_force_relocation_abs): New prototype. * config/tc-mips.c (mips_force_relocation_abs): New function. * testsuite/gas/mips/branch-absolute.d: Adjust dump patterns. * testsuite/gas/mips/mips16-branch-absolute.d: Likewise. * testsuite/gas/mips/micromips-branch-absolute-n32.d: Likewise. * testsuite/gas/mips/micromips-branch-absolute-n64.d: Likewise. * testsuite/gas/mips/micromips-branch-absolute-addend-n32.d: Likewise. * testsuite/gas/mips/micromips-branch-absolute-addend-n64.d: Likewise. * testsuite/gas/mips/branch-absolute-addend.d: New test. * testsuite/gas/mips/mips16-branch-absolute-addend.d: New test. * testsuite/gas/mips/micromips-branch-absolute-addend.d: New test. * testsuite/gas/mips/mips.exp: Run the new tests. ld/ * testsuite/ld-mips-elf/mips-elf.exp: Run `branch-absolute-addend', `mips16-branch-absolute', `mips16-branch-absolute-addend' and `micromips-branch-absolute-addend'.
-
Maciej W. Rozycki authored
Correct a problem with the ISA bit being stripped from the addend of compressed branch relocations, affecting RELA targets. It has been there since microMIPS support has been added, with: commit df58fc94 Author: Richard Sandiford <rdsandiford@googlemail.com> Date: Sun Jul 24 14:20:15 2011 +0000 <https://sourceware.org/ml/binutils/2011-07/msg00198.html>, ("MIPS: microMIPS ASE support") and R_MICROMIPS_PC7_S1, R_MICROMIPS_PC10_S1 and R_MICROMIPS_PC16_S1 relocations originally affected, and the R_MIPS16_PC16_S1 relocation recently added with commit c9775dde ("MIPS16: Add R_MIPS16_PC16_S1 branch relocation support") actually triggering a linker error, due to its heightened processing strictness level: $ cat test.s .text .set mips16 foo: b bar .set bar, 0x1235 .align 4, 0 $ as -EB -n32 -o test.o test.s $ objdump -dr test.o test.o: file format elf32-ntradbigmips Disassembly of section .text: 00000000 <foo>: 0: f000 1000 b 4 <foo+0x4> 0: R_MIPS16_PC16_S1 *ABS*+0x1230 ... $ ld -melf32btsmipn32 -Ttext 0 -e 0 -o test test.o test.o: In function `foo': (.text+0x0): Branch to a non-instruction-aligned address $ This is because the ISA bit of the branch target does not match the ISA bit of the referring branch, hardwired to 1 of course. Retain the ISA bit then, so that the linker knows this is really MIPS16 code referred: $ objdump -dr fixed.o fixed.o: file format elf32-ntradbigmips Disassembly of section .text: 00000000 <foo>: 0: f000 1000 b 4 <foo+0x4> 0: R_MIPS16_PC16_S1 *ABS*+0x1231 ... $ ld -melf32btsmipn32 -Ttext 0 -e 0 -o fixed fixed.o $ Add a set of MIPS16 tests to cover the relevant cases, excluding linker tests though which would overflow the in-place addend on REL targets and use them as dump patterns for RELA targets only. gas/ * config/tc-mips.c (md_apply_fix) <BFD_RELOC_MIPS16_16_PCREL_S1> <BFD_RELOC_MICROMIPS_7_PCREL_S1, BFD_RELOC_MICROMIPS_10_PCREL_S1> <BFD_RELOC_MICROMIPS_16_PCREL_S1>: Keep the ISA bit in the addend calculated. * testsuite/gas/mips/mips16-branch-absolute.s: Set the ISA bit in `bar', export `foo'. * testsuite/gas/mips/mips16-branch-absolute.d: Adjust accordingly. * testsuite/gas/mips/mips16-branch-absolute-n32.d: Likewise. * testsuite/gas/mips/mips16-branch-absolute-n64.d: Likewise. * testsuite/gas/mips/mips16-branch-absolute-addend-n32.d: Likewise. * testsuite/gas/mips/mips16-branch-absolute-addend-n64.d: Likewise. ld/ * testsuite/ld-mips-elf/mips16-branch-absolute.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-n32.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-n64.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-addend.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-addend-n32.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-addend-n64.d: New test. * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests, except from `mips16-branch-absolute' and `mips16-branch-absolute-addend', referred indirectly only.
-
Maciej W. Rozycki authored
Fix a generic BFD issue with relocations against absolute symbols, which are installed without using any individual relocation handler provided by the backend. This causes any absolute section's addend to be lost on REL targets such as o32 MIPS, and also relocation-specific calculation adjustments are not made. As an example assembling this program: $ cat test.s .text foo: b bar b baz .set bar, 0x1234 $ as -EB -32 -o test-o32.o test.s $ as -EB -n32 -o test-n32.o test.s produces this binary code: $ objdump -dr test-o32.o test-n32.o test-o32.o: file format elf32-tradbigmips Disassembly of section .text: 00000000 <foo>: 0: 10000000 b 4 <foo+0x4> 0: R_MIPS_PC16 *ABS* 4: 00000000 nop 8: 1000ffff b 8 <foo+0x8> 8: R_MIPS_PC16 baz c: 00000000 nop test-n32.o: file format elf32-ntradbigmips Disassembly of section .text: 00000000 <foo>: 0: 10000000 b 4 <foo+0x4> 0: R_MIPS_PC16 *ABS*+0x1230 4: 00000000 nop 8: 10000000 b c <foo+0xc> 8: R_MIPS_PC16 baz-0x4 c: 00000000 nop $ where it is clearly visible in `test-o32.o', which uses REL relocations, that the absolute section's addend equivalent to the value of `bar' -- a reference to which cannot be fully resolved at the assembly time, because the reference is PC-relative -- has been lost, as has been the relocation-specific adjustment of -4, required to take into account the PC+4-relative calculation made by hardware with branches and seen in the external symbol reference to `baz' as the `ffff' addend encoded in the instruction word. In `test-n32.o', which uses RELA relocations, the absolute section's addend has been correctly retained. Give precedence then in `bfd_perform_relocation' and `bfd_install_relocation' to any individual relocation handler the backend selected may have provided, while still resorting to the generic calculation otherwise. This retains the semantics which we've had since forever or before the beginning of our repository history, and is at the very least compatible with `bfd_elf_generic_reloc' being used as the handler. Retain the `bfd_is_und_section' check unchanged at the beginning of `bfd_perform_relocation' since this does not affect the semantics of the function. The check returns the same `bfd_reloc_undefined' code the check for a null `howto' does, so swapping the two does not matter. Also the check is is mutually exclusive with the `bfd_is_abs_section' check, since a section cannot be absolute and undefined both at once, so swapping the two does not matter either. With this change applied the program quoted above now has the in-place addend correctly calculated and installed in the field being relocated: $ objdump -dr fixed-o32.o fixed-o32.o: file format elf32-tradbigmips Disassembly of section .text: 00000000 <foo>: 0: 1000048c b 1234 <bar> 0: R_MIPS_PC16 *ABS* 4: 00000000 nop 8: 1000ffff b 8 <foo+0x8> 8: R_MIPS_PC16 baz c: 00000000 nop $ Add a set of MIPS tests to cover the relevant cases, including absolute symbols with addends, and verifying that PC-relative relocations against symbols concerned resolve to the same value in the final link regardless of whether the REL or the RELA relocation form is used. Exclude linker tests though which would overflow the in-place addend on REL targets and use them as dump patterns for RELA targets only. bfd/ * reloc.c (bfd_perform_relocation): Try the `howto' handler first with relocations against absolute symbols. (bfd_install_relocation): Likewise. gas/ * testsuite/gas/mips/mips16-branch-absolute.d: Update patterns. * testsuite/gas/mips/branch-absolute.d: New test. * testsuite/gas/mips/branch-absolute-n32.d: New test. * testsuite/gas/mips/branch-absolute-n64.d: New test. * testsuite/gas/mips/branch-absolute-addend-n32.d: New test. * testsuite/gas/mips/branch-absolute-addend-n64.d: New test. * testsuite/gas/mips/mips16-branch-absolute-n32.d: New test. * testsuite/gas/mips/mips16-branch-absolute-n64.d: New test. * testsuite/gas/mips/mips16-branch-absolute-addend-n32.d: New test. * testsuite/gas/mips/mips16-branch-absolute-addend-n64.d: New test. * testsuite/gas/mips/micromips-branch-absolute.d: New test. * testsuite/gas/mips/micromips-branch-absolute-n32.d: New test. * testsuite/gas/mips/micromips-branch-absolute-n64.d: New test. * testsuite/gas/mips/micromips-branch-absolute-addend-n32.d: New test. * testsuite/gas/mips/micromips-branch-absolute-addend-n64.d: New test. * testsuite/gas/mips/branch-absolute.s: New test source. * testsuite/gas/mips/branch-absolute-addend.s: New test source. * testsuite/gas/mips/mips16-branch-absolute-addend.s: New test source. * testsuite/gas/mips/micromips-branch-absolute.s: New test source. * testsuite/gas/mips/micromips-branch-absolute-addend.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests. ld/ * testsuite/ld-mips-elf/branch-absolute.d: New test. * testsuite/ld-mips-elf/branch-absolute-n32.d: New test. * testsuite/ld-mips-elf/branch-absolute-n64.d: New test. * testsuite/ld-mips-elf/branch-absolute-addend.d: New test. * testsuite/ld-mips-elf/branch-absolute-addend-n32.d: New test. * testsuite/ld-mips-elf/branch-absolute-addend-n64.d: New test. * testsuite/ld-mips-elf/micromips-branch-absolute.d: New test. * testsuite/ld-mips-elf/micromips-branch-absolute-n32.d: New test. * testsuite/ld-mips-elf/micromips-branch-absolute-n64.d: New test. * testsuite/ld-mips-elf/micromips-branch-absolute-addend.d: New test. * testsuite/ld-mips-elf/micromips-branch-absolute-addend-n32.d: New test. * testsuite/ld-mips-elf/micromips-branch-absolute-addend-n64.d: New test. * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests, except from `branch-absolute-addend' and `micromips-branch-absolute-addend', referred indirectly only.
-
Tom Tromey authored
In https://sourceware.org/ml/gdb-patches/2016-07/msg00152.html, Yao noted that a patch of mine was missing a newline. I thought I had fixed this but when looking today I realized it was not fixed. This patch adds it. I'm checking this in as obvious. 2016-07-14 Tom Tromey <tom@tromey.com> * python/py-breakpoint.c (gdbpy_breakpoint_deleted): Add missing newline.
-
Tom Tromey authored
This patch removes set-but-unused variables. This holds all the removals I consider to be simple and relatively uncontroversial. 2016-07-14 Tom Tromey <tom@tromey.com> * mips-tdep.c (micromips_scan_prologue): Remove "frame_addr". (mips_o32_push_dummy_call): Remove "stack_used_p". * aarch64-tdep.c (aarch64_record_data_proc_imm): Remove "insn_bit28". * rust-lang.c (rust_print_type): Remove "len". * rust-exp.y (super_name): Remove "current_len". * python/py-framefilter.c (py_print_type): Remove "type". * mdebugread.c (parse_partial_symbols): Remove "past_first_source_file". <N_SO>: Remove "valu", "first_so_symnum", "prev_textlow_not_set". * m2-valprint.c (m2_print_unbounded_array): Remove "content_type". (m2_val_print): Remove "i". * linespec.c (unexpected_linespec_error): Remove "cleanup". * f-valprint.c (f_val_print): Remove "i". * elfread.c (elf_symtab_read): Remove "offset". * dwarf2-frame.c (dwarf2_fetch_cfa_info): Remove "addr_size". * jit.c (jit_dealloc_cache): Remove "i" and "frame_arch".
-
Tom Tromey authored
This patch consolidates the (possibly-questionable) spots where we remove a declaration but continue to call some function for side effects. In a couple of cases it wasn't entirely clear to me that this mattered; and in some other cases it might be more aesthetically pleasing to use ATTRIBUTE_UNUSED. So, I broke this out into a separate patch for simpler review. 2016-07-14 Tom Tromey <tom@tromey.com> * arch-utils.c (default_skip_permanent_breakpoint): Remove "bp_insn". * disasm.c (do_assembly_only): Remove "num_displayed". * dwarf2read.c (read_abbrev_offset): Remove "length". (dwarf_decode_macro_bytes) <DW_MACINFO_vendor_ext>: Remove "constant". * m32c-tdep.c (make_regs): Remove "r2hl", "r3hl", and "intbhl". * microblaze-tdep.c (microblaze_frame_cache): Remove "func". * tracefile.c (trace_save): Remove "status".
-
Tom Tromey authored
This patch removes some unneeded initializations in overlay code in symfile.c. It also deletes some old commented-out code. 2016-07-14 Tom Tromey <tom@tromey.com> * symfile.c (simple_overlay_update_1): Remove initialization of "size", and commented-out code. (simple_overlay_update): Likewise.
-
Tom Tromey authored
As suggested by Pedro, this changes a few spots to use getcurx, rather than getyx. This avoids some unused variable warnings. 2016-07-14 Tom Tromey <tom@tromey.com> * tui/tui-winsource.c (tui_show_source_line): Use getcurx. * tui/tui-io.c (tui_puts): Use getcurx. (tui_redisplay_readline): Likewise.
-
Tom Tromey authored
One spot needed ATTRIBUTE_UNUSED to cope with the new warnings. The case in inflow.c is just a mass of ifdefs; and while the only use of "result" is guarded by "#if 0", I thought it simplest to leave it all in place. 2016-07-14 Tom Tromey <tom@tromey.com> * inflow.c (child_terminal_ours_1): Use ATTRIBUTE_UNUSED.
-
Tom Tromey authored
This seems to be a real bug found by -Wunused-but-set-variable. If "stat" fails for some reason, gdb would use the uninitialized "st". 2016-07-14 Tom Tromey <tom@tromey.com> * corefile.c (reopen_exec_file): Only examine st.st_mtime if stat succeeded.
-
- Jul 14, 2016
-
-
Andrew Burgess authored
The objcopy and strip tools make use of the bfd library to manipulate the state of the input file (to produce an output file). Within the input file (for ELF at least), relocations are held within a section, and so, if the user wanted to remove the relocations, but keep the section to which the relocations would have been applied, it is tempting to think that specifying the name of a relocation section to objcopy's --remove-section option might do what you want, for example: objcopy --remove-section=.rela.text input.elf output.elf However, this does not work. The reason is that when the input file is loaded, relocations are not managed as sections, but are, instead, loaded as data associated with the section to which the relocations would be applied. In our example above the relocations in '.rela.text' are held as data on the section '.text' once 'input.elf' is loaded. One task that objcopy and strip do is copy the relocations from the input file to the output file if the section is also being copied from the input file to the output file. This commit adds a new command line option for objcopy and strip, --remove-relocations, which can be used to remove the relocations, while keeping the section that the relocations would have been applied to, for example: objcopy --remove-relocations=.text input.elf output.elf in this case the section '.text' will appear in both 'input.elf' and 'output.elf', but any relocations in 'input.elf' that apply to '.text' will not be present in 'output.elf'. I have also added a special case to the handling of --remove-section that spots if a user tries to remove a relocation section (currently this is done by spotting the '.rela.' or '.rel.' prefix) and forwards the request to --remove-relocations. As with --remove-section and --only-section the --remove-relocations option supports the '!' prefix on the section-patterns it takes to allow for sections to be specifically not matched. There are tests for all the new functionality. binutils/ChangeLog: * doc/binutils.texi (objcopy): Document 'remove-relocations'. (strip): Likewise. * objcopy.c (SECTION_CONTEXT_REMOVE_RELOCS): Define. (enum command_line_switch): Add 'OPTION_REMOVE_RELOCS'. (struct option strip_options): Add 'remove-relocations'. (struct option copy_options): Likewise. (copy_usage): Likewise. (strip_usage): Likewise. (handle_remove_relocations_option): New function. (discard_relocations): New function. (handle_remove_section_option): New function. (copy_relocations_in_section): Use discard_relocations. (strip_main): Use handle_remove_section_option for 'remove-section', and handle 'remove-relocations' option. (copy_main): Likewise. * testsuite/binutils-all/objcopy.exp: Run new tests. * testsuite/binutils-all/remove-relocs-01.d: New file. * testsuite/binutils-all/remove-relocs-01.s: New file. * testsuite/binutils-all/remove-relocs-02.d: New file. * testsuite/binutils-all/remove-relocs-03.d: New file. * testsuite/binutils-all/remove-relocs-04.d: New file. * testsuite/binutils-all/remove-relocs-05.d: New file. * testsuite/binutils-all/remove-relocs-06.d: New file. -
Andrew Burgess authored
For symbol matching, prefixing a pattern with '!' will indicate a non-matching pattern, however, this is not the case for section patterns. As a result it is not possible to say "apply this action to all sections except ...". With this commit the objcopy and strip tools now support '!' prefix for section patterns, so we can say: objcopy --remove-section="*" --remove-section="!.text*" Which will remove all sections, except those matching the pattern '.text*'. binutils/ChangeLog: * objcopy.c (find_section_list): Handle section patterns starting with '!' being a non-matching pattern. * doc/binutils.texi (objcopy): Give example of using '!' with --remove-section and --only-section. (strip): Give example of using '!' with --remove-section. * testsuite/binutils-all/data-sections.s: New file. * testsuite/binutils-all/only-section-01.d: New file. * testsuite/binutils-all/remove-section-01.d: New file. * testsuite/binutils-all/objcopy.exp: Run new tests. * NEWS: Mention new feature.
-
Nick Clifton authored
* armemu.c (Multiply64): Only issue error messages about invalid arguments if debugging is enabled. * armos.c (ARMul_OSHandleSWI): Ignore invalid flags.
-
Claudiu Zissulescu authored
The R_ARC_SDA32 is wrongly described as a ME relocation, fix it. Offset the __SDATA_BEGIN__ to take advantage of the signed 9-bit field of the load/store instructions. include/ 2016-07-08 Claudiu Zissulescu <claziss@synopsys.com> * elf/arc-reloc.def (ARC_SDA32): Don't use ME transformation. ld/ 2016-07-08 Claudiu Zissulescu <claziss@synopsys.com> * emulparams/arcelf.sh (SDATA_START_SYMBOLS): Add offset. * testsuite/ld-arc/sda-relocs.dd: New file. * testsuite/ld-arc/sda-relocs.ld: Likewise. * testsuite/ld-arc/sda-relocs.rd: Likewise. * testsuite/ld-arc/sda-relocs.s: Likewise. * testsuite/ld-arc/arc.exp: Add SDA tests.
-
GDB Administrator authored
-
Tom Tromey authored
This patch adds some breakpoint events to Python. In particular, there is a creation event that is emitted when a breakpoint is created; a modification event that is emitted when a breakpoint changes somehow; and a deletion event that is emitted when a breakpoint is deleted. In this patch, the event's payload is the breakpoint itself. I considered making a new event type to hold the breakpoint, but I didn't see a need. Still, I thought I would mention this as a spot where some other choice is possible. Built and regtested on x86-64 Fedora 23. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/15620, PR python/18620: * python/py-evts.c (gdbpy_initialize_py_events): Call add_new_registry for new events. * python/py-events.h (events_object) <breakpoint_created, breakpoint_deleted, breakpoint_modified>: New fields. * python/py-breakpoint.c (gdbpy_breakpoint_created): Emit the breakpoint changed event. (gdbpy_breakpoint_deleted): Emit the breakpoint deleted event. (gdbpy_breakpoint_modified): New function. (gdbpy_initialize_breakpoints): Attach to the breakpoint modified observer. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/15620, PR python/18620: * python.texi (Events In Python): Document new breakpoint events. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/15620, PR python/18620: * gdb.python/py-breakpoint.exp (connect_event, check_last_event) (test_bkpt_events): New procs.
-
Tom Tromey authored
This patch adds a "pending" attribute to gdb.Breakpoint. Built and regtested on x86-64 Fedora 23. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/17698: * NEWS: Update. * python/py-breakpoint.c (bppy_get_pending): New function. (breakpoint_object_getset): Add entry for "pending". * breakpoint.h (pending_breakpoint_p): Declare. * breakpoint.c (pending_breakpoint_p): New function. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/17698: * python.texi (Breakpoints In Python): Document Breakpoint.pending. 2016-07-13 Tom Tromey <tom@tromey.com> PR python/17698: * gdb.python/py-breakpoint.exp (test_bkpt_basic): Add "pending" test. (test_watchpoints): Likewise. (test_bkpt_pending): New proc.
-
Tom Tromey authored
I noticed that bppy_get_visibility and gdbpy_breakpoint_created implemented their own visibility checks, but subtly different from user_breakpoint_p. I think the latter is more correct, and so changed the Python code to use it. I suspect there isn't a decent way to test this, so no new test. Built and regtested on x86-64 Fedora 23. 2016-07-13 Tom Tromey <tom@tromey.com> * python/py-breakpoint.c (bppy_get_visibility) (gdbpy_breakpoint_created): Use user_breakpoint_p.
-
Tom Tromey authored
I noticed that the Python breakpoint documentation was ordered a bit oddly. It documented the constructor; then the stop method; then the watchpoint constants (used for the constructor); then various other methods and attributes; then the other constants used by the constructor; and then finally some more methods and attributes. This patch rearranges the node a little to move the constants to just after the constructor and before the other methods and attributes. 2016-07-13 Tom Tromey <tom@tromey.com> * python.texi (Breakpoints In Python): Move table of types and table of watchpoint types earlier in node.
-
Tom Tromey authored
PR cli/18053 concerns a couple of minor bugs in the JIT debuginfo support. First, jit-reader-load should use filename completion and support tilde expansion. Second, the help for jit-reader-unload is incorrect. While working on this I also realized that jit-reader-unload should use the no-op completer, so I've included that as well. Built and regtested on x86-64 Fedora 23. A completer test for jit-reader-load is included, but not a tilde-expansion test, as I couldn't think of a reliable way to test that. 2016-07-13 Tom Tromey <tom@tromey.com> PR cli/18053: * jit.c (jit_reader_load_command): Use tilde_expand. (_initialize_jit): Fix help for jit-reader-unload. Set completer for new commands. 2016-07-13 Tom Tromey <tom@tromey.com> PR cli/18053: * gdb.base/jit-so.exp (one_jit_test): Add jit-reader-load completion test.
-
Maciej W. Rozycki authored
Address issues with the disassembly of the NAL assembly idiom and R6 instruction introduced with commit 7361da2c ("Add support for MIPS R6.") and then further tweaked with commit b9121b57 ("Add in a JALRC alias and fix the NAL instruction."). As from R6 this instruction has replaced the encoding of `bltzal $0, . + 4' as the solely supported form of the former BLTZAL instruction for the regular MIPS ISA. The instruction is marked as an alias only in our regular MIPS opcode table, making it fail to disassemble in R6 code if the `no-aliases' machine option has been passed to `objdump': $ cat test.s .text foo: nal $ as -mips64r6 -o test.o test.s $ objdump -dr --prefix-addresses --show-raw-insn -M no-aliases test.o nal.o: file format elf32-tradbigmips Disassembly of section .text: 00000000 <foo> 04100000 0x4100000 ... $ This is because the `bltzal' entry has been marked as pre-R6 only in the opcode table and there is no other opcode pattern to match. Additionally the changes referred made NAL replace the equivalent `bltzal $0, . + 4' instruction in disassembly, unless the `no-aliases' machine option has been used, in legacy code. Seeing NAL, especially in its updated form lacking the branch target argument, in the disassembly of such code may be confusing to people. This is because unlike with EHB only used in R2 and newer code -- the machine encoding of which we anyway always disassemble to its corresponding current architecture's mnemonic rather than its legacy meaning of `sll $0, $0, 3' -- BLTZAL has been indeed used in legacy code. Even though `bltzal $0, . + 8' and its machine code encoding (0x04100001) -- which is not equivalent to NAL and still disassembles as BLTZAL -- has been the predominant form as opposed to NAL's `bltzal $0, . + 4' (0x04100000), it makes sense to always keep the old form in disassembly, while still accepting `nal' in assembly. Remove the alias marking then from the the `nal' instruction pattern, making it always match for R6 code, even with the `no-aliases' option. And move the entry beyond the `bltzal' entry, making the latter one take precedence for legacy binary code, while letting the former still match any `nal' mnemonic in source code assembled for a legacy target. Add a suitable test case to the GAS test suite. While the change affects the disassembler more than the assembler, so placing the test case in the binutils test suite might be more appropriate, the intent is also to verify that `nal' is still accepted by GAS for legacy targets, plus we have test infrastructure available in the GAS test suite for automatic multiple ISA level testing, which we lack from the binutils framework. opcodes/ * mips-opc.c (mips_builtin_opcodes): Remove the INSN2_ALIAS annotation from the "nal" entry and reorder it beyond "bltzal". gas/ * testsuite/gas/mips/nal-1.d: New test. * testsuite/gas/mips/mipsr6@nal-1.d: New test. * testsuite/gas/mips/nal-2.d: New test. * testsuite/gas/mips/mipsr6@nal-2.d: New test. * testsuite/gas/mips/nal.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests.
-
Maciej W. Rozycki authored
Add missing ChangeLog entry for commit b8bca85b ("MIPS/GAS: Remove extraneous `install_insn' call from `append_insn'").
-
- Jul 13, 2016
-
-
Jose E. Marchesi authored
This patch adds support for the LDTXA instructions, along with the corresponding ASIs. Tests for GAS are included. opcodes/ChangeLog: 2016-07-12 Jose E. Marchesi <jose.marchesi@oracle.com> * sparc-opc.c (ldtxa): New macro. (sparc_opcodes): Use the macro defined above to add entries for the LDTXA instructions. (asi_table): Add the ASI_TWINX_* asis used in the LDTXA instruction. gas/ChangeLog: 2016-07-12 Jose E. Marchesi <jose.marchesi@oracle.com> * testsuite/gas/sparc/ldtxa.s: New file. * testsuite/gas/sparc/ldtxa.d: Likewise. * testsuite/gas/sparc/sparc.exp: Execute the ldtxa test.
-
Jan Kratochvil authored
Marin Cermak has found various testcases (or one of them) of GDB FAIL on ppc64. https://sourceware.org/bugzilla/show_bug.cgi?id=20328 .o contained only the function descriptor address. The DWARF as produced by Tcl Dwarf::assemble: <1><27>: Abbrev Number: 4 (DW_TAG_subprogram) <28> DW_AT_name : main <2d> DW_AT_external : 1 <2e> DW_AT_low_pc : 0x1001ff98 <36> DW_AT_high_pc : 0x1002ff98 <2><3e>: Abbrev Number: 5 (DW_TAG_lexical_block) Runtime info: $2 = {<text variable, no debug info>} 0x10000674 <.main> $3 = {void ()} 0x1001ff98 <main> On Tue, 12 Jul 2016 15:22:49 +0200, Ulrich Weigand wrote: Well, most of the gdb.dwarf2 test cases simply use explicitly placed labels for the DW_AT_low_pc / DW_AT_high_pc attributes. See e.g. dw2-unresolved-main.c: asm (".globl cu_text_start"); asm ("cu_text_start:"); On Wed, 13 Jul 2016 10:54:00 +0200, Jan Kratochvil wrote: Now I see I should not do that because: lib/dwarf.exp: proc function_range { func src } { So I am providing this patch. gdb/testsuite/ChangeLog 2016-07-13 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.dwarf2/atomic-type.exp: Use function_range for low_pc and high_pc. * gdb.dwarf2/atomic.c (f): Rename f_end_lbl to f_label. * gdb.dwarf2/dw2-bad-mips-linkage-name.c (f): Rename f_end_lbl to f_label. (g): Rename g_end_lbl to g_label. * gdb.dwarf2/dw2-bad-mips-linkage-name.exp: Use function_range for low_pc and high_pc. * gdb.dwarf2/dw2-lexical-block-bare.exp: Likewise.
-
GDB Administrator authored
-
H.J. Lu authored
Align x86-64 .got and .got.plt sections to their entry size. * elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Align .got/.got.plt sections to 8 bytes.
-
Tom Tromey authored
PR python/19293 notes that when a Python unwinder is disabled, the frame cache is not invalidated. This means that disabling an unwinder doesn't have any immediate effect -- but in my experience it's often the case that I want to enable or disable an unwinder in order to see what happens. This patch adds a new gdb.invalidate_cached_frames function and arranges for the relevant bits of library code to call it. I've only partially documented this function, considering a warning sufficient without going into all the reasons ordinary code should not call it. The name of the new function was taken from a comment in frame.h next to reinit_frame_cache. No new test as I think the updates to the existing test are sufficient to show that the code is working as intended. Built and regtested on x86-64 Fedora 23. 2016-07-12 Tom Tromey <tom@tromey.com> PR python/19293: * python/lib/gdb/command/unwinders.py (do_enable_unwinder): Call gdb.invalidate_cached_frames. * python/lib/gdb/unwinder.py (register_unwinder): Call gdb.invalidate_cached_frames. * python/python.c (gdbpy_invalidate_cached_frames): New function. (python_GdbMethods): Add entry for invalidate_cached_frames. 2016-07-12 Tom Tromey <tom@tromey.com> PR python/19293: * python.texi (Frames In Python): Document gdb.invalidate_cached_frames. 2016-07-12 Tom Tromey <tom@tromey.com> PR python/19293: * gdb.python/py-unwind-maint.exp: Update tests.
-
- Jul 12, 2016
-
-
Nick Clifton authored
* binary.c (binary_set_section_contents): Second grammar fix.
-
Yao Qi authored
In gdb.gdb/observer.exp, I see the following fail, (gdb) break captured_main^M Breakpoint 1 at 0x57e409: file ../../binutils-gdb/gdb/main.c, line 492.^M (gdb) PASS: gdb.gdb/observer.exp: breakpoint in captured_main run -nw -nx -data-directory /home/yao.qi/SourceCode/gnu/build/gdb/testsuite/../data-directory^M Starting program: /home/yao.qi/SourceCode/gnu/build/gdb/testsuite/outputs/gdb.gdb/observer/xgdb -nw -nx -data-directory /home/yao.qi/SourceCode/gnu/build/gdb/testsuite/../data-directory^M [Thread debugging using libthread_db enabled]^M Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".^M ^M Breakpoint 1, gdb_main (args=args@entry=0x7fffffffdca0) at ../../binutils-gdb/gdb/main.c:1157^M 1157 captured_main (args);^M (gdb) FAIL: gdb.gdb/observer.exp: run until breakpoint at captured_main looks the test sets breakpoint on captured_main, and expects program stops at captured_main. However, program stops at the place where captured_main is called, because captured_main is inlined, <1><8519e3>: Abbrev Number: 58 (DW_TAG_subprogram) <8519e4> DW_AT_name : (indirect string, offset: 0x880d3): captured_main <8519e8> DW_AT_decl_file : 1 <8519e9> DW_AT_decl_line : 444 <8519eb> DW_AT_type : <0x846e48> <8519ef> DW_AT_inline : 1 (inlined) <8519f0> DW_AT_sibling : <0x851c01> The test passes if I build GDB with '-O0 -g3', because captured_main isn't inlined. This patch is to match the output when captured_main is inlined. gdb/testsuite: 2016-07-12 Yao Qi <yao.qi@linaro.org> * lib/selftest-support.exp (selftest_setup): Match the output when captured_main is inlined. -
Chung-Lin Tang authored
gdb/gdbserver/ * linux-nios2-low.c (nios2_fill_gregset): Add type cast to buf parameter. (nios2_store_gregset): Likewise.
-
Douglas B Rupp authored
* binary.c (binary_set_section_contents): Fix grammar in warning message.
-
GDB Administrator authored
-
- Jul 11, 2016
-
-
Claudiu Zissulescu authored
ld/ 2016-07-11 Claudiu Zissulescu <claziss@synopsys.com> * testsuite/ld-arc/nps-1b.err: Update test to handle more verbosity.
-
Claudiu Zissulescu authored
gas/ChangeLog: 2016-07-05 Claudiu Zissulescu <claziss@synopsys.com> * config/tc-arc.c (arc_reloc_op_tag): Allow complex ops for dtpoff. (tc_gen_reloc): Remove passing DTPOFF base info into reloc addendum as it is no longer needed. Signed-off-by:Claudiu Zissulescu <claziss@synopsys.com>
-
Cupertino Miranda authored
bfd/ChangeLog: 2016-06-23 Cupertino Miranda <cmiranda@synopsys.com> elf32-arc.c: made PR_DEBUG always defined. Signed-off-by:Claudiu Zissulescu <claziss@synopsys.com>
-
Cupertino Miranda authored
TLS relocations did not support multiple TLS modes for the same symbol in a single object file. Refactored how GOT and TLS is implemented. Removed code duplications between local and global symbols conditioning. bfd/ChangeLog: 2016-06-14 Cupertino Miranda <cmiranda@synopsys.com> * arc-got.h: Moved got related structures from elf32-arc.c to this file. More precisely, tls_type_e, tls_got_entries, got_entry. * (arc_get_local_got_ents, got_entry_for_type, new_got_entry_to_list, tls_type_for_reloc, symbol_has_entry_of_type, get_got_entry_list_for_symbol, arc_got_entry_type_for_reloc, ADD_SYMBOL_REF_SEC_AND_RELOC, arc_fill_got_info_for_reloc, relocate_fix_got_relocs_for_got_info, create_got_dynrelocs_for_single_entry, create_got_dynrelocs_for_got_info): Added to file. * elf32-arc.c: Removed GOT & TLS related structs and functions to arc-got.h. Signed-off-by:Claudiu Zissulescu <claziss@synopsys.com>
-
GDB Administrator authored
-
- Jul 10, 2016
-
-
GDB Administrator authored
-
- Jul 09, 2016
-
-
Alan Modra authored
binutils/ PR binutils/20337 * objdump.c (compare_symbols): For ELF, sort same value/type symbols according to size. ld/ * testsuite/ld-powerpc/elfv2exe.d: Update.
-
GDB Administrator authored
-