aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-04-15Regenerate Makefile.in/aclocal.m4 automake 1.11.6H.J. Lu25-988/+1650
bfd/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * doc/Makefile.in: Likewise. binutils/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * doc/Makefile.in: Likewise. gas/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * doc/Makefile.in: Likewise. gold/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * testsuite/Makefile.in: Likewise. gprof/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. ld/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. opcodes/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise.
2016-04-15MIPS/Linux: Also recognize TRAP_BRKPT and TRAP_HWBKPTPedro Alves2-4/+13
This makes the MIPS Linux backends recognize TRAP_BRKPT and TRAP_HWBKPT in siginfo.si_code in addition to SI_KERNEL, since Linux 4.6 now reports the finer-grained si_code values too. Refs: https://sourceware.org/ml/gdb-patches/2016-02/msg00756.html https://sourceware.org/ml/gdb-patches/2016-04/msg00090.html On kernels that report SI_KERNEL (<= 4.5), we'll enter the "ambiguous" path of save_stop_reason: if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code) && GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) { /* The si_code is ambiguous on this arch -- check debug registers. */ if (!check_stopped_by_watchpoint (lp)) lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT; } while on kernels that report the finer-grained si_code values (>= 4.6), we'll enter the corresponding branches: else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)) { } else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) { ... gdb/ChangeLog: 2016-04-15 Pedro Alves <palves@redhat.com> * nat/linux-ptrace.h [__mips__] (GDB_ARCH_IS_TRAP_BRKPT): Also accept TRAP_BRKPT. [__mips__] (GDB_ARCH_IS_TRAP_HWBKPT): Also accept TRAP_HWBKPT.
2016-04-15[ARM] minor opt in thumb_stack_frame_destroyed_pYao Qi2-0/+13
thumb_stack_frame_destroyed_p scans the instructions from PC to the end of the function, but if PC is far from the end of pc, we don't have to scan, because PC should be in epilogue if it is still far from the end of the function. The criterion I use here is 16 bytes, which is more than 4 instructions. Regression tested on aarch64-linux with mutli-arch debug. gdb: 2016-04-15 Yao Qi <yao.qi@linaro.org> * arm-tdep.c (thumb_stack_frame_destroyed_p): Return zero if PC is far from the end of function.
2016-04-15Fix non-ELF powerpc build breakageAlan Modra2-0/+6
* config/tc-ppc.c (toc_reloc_types): Wrap in #ifdef OBJ_ELF
2016-04-15Add missing ChangeLog entry for PR gas/19909 fixH.J. Lu1-0/+10
2016-04-15Automatic date update in version.inGDB Administrator1-1/+1
2016-04-14make a few variables staticTrevor Saunders4-3/+9
They are only used in one file, so we might as well restrict there scope to that file, and theoretically this might slightly improve compilers ability to optimize usage of these variables. gas/ChangeLog: 2016-04-14 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * config/tc-nios2.c (nios2_as_options): Make file static. * config/tc-ppc.c (toc_reloc_ypes): Likewise. * config/tc-sparc.c (native_op_table): Likewise.
2016-04-14remove some unused globalsTrevor Saunders3-2/+7
gas/ChangeLog: 2016-04-14 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * config/tc-m32c.c (M32C_Macros): Remove. * config/tc-msp430.c (option_numbers): Likewise.
2016-04-14arc/nps400 : New cmem instructions and associated relocationAndrew Burgess20-19/+300
Add support for arc/nps400 cmem instructions, these load and store instructions are hard-wired to access "0x57f00000 + 16-bit-offset". Supporting this relocation required some additions to the arc relocation handling in the bfd library, as well as the standard changes required to add a new relocation type. There's a test of the new instructions in the assembler, and a test of the relocation in the linker. bfd/ChangeLog: * reloc.c: Add BFD_RELOC_ARC_NPS_CMEM16 entry. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * elf32-arc.c: Add 'opcode/arc.h' include. (struct arc_relocation_data): Add symbol_name. (arc_special_overflow_checks): New function. (arc_do_relocation): Use arc_special_overflow_checks, reindent as required, add an extra comment. (elf_arc_relocate_section): Setup symbol_name in reloc_data. gas/ChangeLog: * testsuite/gas/arc/nps400-3.d: New file. * testsuite/gas/arc/nps400-3.s: New file. include/ChangeLog: * elf/arc-reloc.def: Add ARC_NPS_CMEM16 reloc. * opcode/arc.h (NPS_CMEM_HIGH_VALUE): Define. ld/ChangeLog: * testsuite/ld-arc/arc.exp: New file. * testsuite/ld-arc/nps-1.s: New file. * testsuite/ld-arc/nps-1a.d: New file. * testsuite/ld-arc/nps-1b.d: New file. * testsuite/ld-arc/nps-1b.err: New file. opcodes/ChangeLog: * arc-nps400-tbl.h: Add xldb, xldw, xld, xstb, xstw, and xst instructions. * arc-opc.c (insert_nps_cmem_uimm16): New function. (extract_nps_cmem_uimm16): New function. (arc_operands): Add NPS_XLDST_UIMM16 operand.
2016-04-14bfd/arc: Rename enum entries to avoid conflictsAndrew Burgess2-17/+25
In bfd/elf32-arc.c an enum is created that contains entries with generic names like 'NONE' and 'OFF'. This has been fine for now, but I had a need to include opcode/arc.h into bfd/elf32-arc.c. Unfortunately opcode/arc.h includes a different enum with identical generic names. Given that changing the enum in the header file could mean wide-ranging changes, while changing the enum in the .c file is limited to only changing the one file, I've added a prefix to the enum in the .c file. This commit does not add the new include, that will come later. There should be no functional change with this commit. bfd/ChangeLog: * elf32-arc.c (tls_got_entries): Add 'TLS_GOT_' prefix to all entries. (elf_arc_relocate_section): Update enum uses. (elf_arc_check_relocs): Likewise. (elf_arc_finish_dynamic_symbol): Likewise.
2016-04-14opcodes/arc: Move instruction length logic to new functionAndrew Burgess2-13/+50
Move the logic that calculates the instruction length out to a new function. Restructure the code to make it simpler. opcodes/ChangeLog: * arc-dis.c (arc_insn_length): New function. (print_insn_arc): Use arc_insn_length, change insnLen to unsigned. (find_format): Change insnLen parameter to unsigned.
2016-04-14Replace "link" with "sh_link"H.J. Lu2-10/+17
On Linux/x86, GCC 4.2 issues a warning: bfd/elf.c: In function ‘_bfd_elf_copy_private_bfd_data’: bfd/elf.c:1334: warning: declaration of ‘link’ shadows a global declaration /usr/include/unistd.h:757: warning: shadowed declaration is here make[6]: *** [elf.lo] Error 1 Replace "link" with "sh_link" fixes it. * elf.c (_bfd_elf_copy_private_bfd_data): Replace "link" with "sh_link".
2016-04-14gas/arc: Unify tests run on big/little endian arc assemblerAndrew Burgess4-3/+8
We were running a slightly different set of assembler tests on big and little endian arc targets. This commit unifies the set of tests run. gas/ChangeLog: * testsuite/gas/arc/add_s-err.s: Update target pattern. * testsuite/gas/arc/warn.s: Likewise. * testsuite/gas/elf/elf.exp: Run test for arc.
2016-04-14Avoid "format not a string literal" warningsPedro Alves3-25/+37
On: $ uname -a NetBSD gcc70.fsffrance.org 5.1 NetBSD 5.1 (GENERIC) #0: Sat Nov 6 13:19:33 UTC 2010 builds@b6.netbsd.org:/home/builds/ab/netbsd-5-1-RELEASE/amd64/201011061943Z-obj/home/builds/ab/netbsd-5-1-RELEASE/src/sys/arch/amd64/compile/GENERIC amd64 With: $ g++ -v Using built-in specs. Target: x86_64--netbsd Configured with: /usr/src/tools/gcc/../../gnu/dist/gcc4/configure --enable-long-long --disable-multilib --enable-threads --disable-symvers --build=x86_64-unknown-netbsd4.99.72 --host=x86_64--netbsd --target=x86_64--netbsd --enable-__cxa_atexit Thread model: posix gcc version 4.1.3 20080704 prerelease (NetBSD nb2 20081120) I saw: cc1plus: warnings being treated as errors ../../src/gdb/ctf.c: In function 'void ctf_save_metadata_header(trace_write_handler*)': ../../src/gdb/ctf.c:267: warning: format not a string literal, argument types not checked cc1plus: warnings being treated as errors ../../src/gdb/cli/cli-cmds.c: In function 'void alias_command(char*, int)': ../../src/gdb/cli/cli-cmds.c:1428: warning: format not a string literal and no format arguments ../../src/gdb/cli/cli-cmds.c:1457: warning: format not a string literal and no format arguments gdb/ChangeLog: 2016-04-14 Pedro Alves <palves@redhat.com> * cli/cli-cmds.c (alias_usage_error): New function. (alias_command): Use it. * ctf.c (ctf_save_metadata_header): Inline metadata_fmt local in ctf_save_write_metadata call.
2016-04-14Avoid implicit float <-> integer conversion warningsPedro Alves3-3/+9
On: $ uname -a NetBSD gcc70.fsffrance.org 5.1 NetBSD 5.1 (GENERIC) #0: Sat Nov 6 13:19:33 UTC 2010 builds@b6.netbsd.org:/home/builds/ab/netbsd-5-1-RELEASE/amd64/201011061943Z-obj/home/builds/ab/netbsd-5-1-RELEASE/src/sys/arch/amd64/compile/GENERIC amd64 With: $ g++ -v Using built-in specs. Target: x86_64--netbsd Configured with: /usr/src/tools/gcc/../../gnu/dist/gcc4/configure --enable-long-long --disable-multilib --enable-threads --disable-symvers --build=x86_64-unknown-netbsd4.99.72 --host=x86_64--netbsd --target=x86_64--netbsd --enable-__cxa_atexit Thread model: posix gcc version 4.1.3 20080704 prerelease (NetBSD nb2 20081120) I saw: ../../src/gdb/ada-typeprint.c: In function 'void print_fixed_point_type(type*, ui_file*)': ../../src/gdb/ada-typeprint.c:366: warning: passing 'float' for argument 2 to 'DOUBLEST ada_fixed_to_float(type*, LONGEST)' ../../src/gdb/value.c: In function 'LONGEST unpack_long(type*, const gdb_byte*)': ../../src/gdb/value.c:2833: warning: converting to 'LONGEST' from 'DOUBLEST' ../../src/gdb/value.c:2838: warning: converting to 'LONGEST' from 'DOUBLEST' gdb/ChangeLog: 2016-04-14 Pedro Alves <palves@redhat.com> * ada-typeprint.c (print_fixed_point_type): Don't pass float as argument to function expecting LONGEST. * value.c (unpack_long): Add casts to LONGEST.
2016-04-14Fix copying Solaris binaries with objcopy.Nick Clifton19-88/+396
PR target/19938 bfd * elf-bbfd.h (struct elf_backend_data): New field: elf_strtab_flags. New field: elf_backend_set_special_section_info_and_link * elfxx-target.h (elf_backend_strtab_flags): Define if not already defined. (elf_backend_set_special_section_info_and_link): Define if not already defined. (elfNN_bed): Use elf_backend_set_special_section_info_and_link and elf_backend_strtab_flags macros to initialise fields in structure. * elf.c (_bfd_elf_make_section_from_shdr): Check for SHF_STRINGS being set even if SHF_MERGE is not set. (elf_fake_sections): Likewise. (section_match): New function. Matches two ELF sections based upon fixed characteristics. (find_link): New function. Locates a section in a BFD that matches a section in a different BFD. (_bfd_elf_copy_private_bfd_data): Copy the sh_info and sh_link fields of reserved sections. (bfd_elf_compute_section_file_positions): Set the flags for the .shstrtab section based upon the elf_strtab_flags field in the elf_backend_data structure. (swap_out_syms): Likewise for the .strtab section. * elflink.c (bfd_elf_final_link): Set the flags for the .strtab section based upon the elf_strtab_flags field in the elf_backend_data structure. * elf32-i386.c (elf32_i386_set_special_info_link): New function. (elf_backend_strtab_flags): Set to SHF_STRINGS for Solaris targets. (elf_backend_set_special_section_info_and_link): Define for Solaris targets. * elf32-sparc.c: Likewise. * elf64-x86-64.c: Likewise. binutils* testsuite/binutils-all/i386/compressed-1b.d: Allow for the string sections possibly having the SHF_STRINGS flag bit set. * testsuite/binutils-all/i386/compressed-1c.d: Likewise. * testsuite/binutils-all/readelf.s: Likewise. * testsuite/binutils-all/readelf.s-64: Likewise. * testsuite/binutils-all/x86-64/compressed-1b.d: Likewise. * testsuite/binutils-all/x86-64/compressed-1c.d: Likewise. gas * testsuite/gas/i386/ilp32/x86-64-unwind.d: Allow for the string sections possibly having the SHF_STRINGS flag bit set. * testsuite/gas/i386/x86-64-unwind.d: Likewise.
2016-04-14Extend PE matching regexp in PR 19457 test to match cygwin and mingw targets.Nick Clifton2-0/+15
PR 19457 * testsuite/ld-scripts/script.exp (extract_symbol_test): Add exceptions for Mingw and Cygwin.
2016-04-14Automatic date update in version.inGDB Administrator1-1/+1
2016-04-13Test GDB connection to GDBserver with no symbol filesLuis Machado3-0/+124
This test exercises the scenarios where we attempt to connect GDB to GDBserver in standard remote mode, query the symbol file path, attempt to open said symbol file on GDB's end and fail, causing the connection to drop abruptly. Regression-tested on x86-64/Ubuntu. With an unpatched GDB we should see this: FAIL: gdb.server/connect-with-no-symbol-file.exp: sysroot=: action=permission: connection to GDBserver succeeded (the program is no longer running) FAIL: gdb.server/connect-with-no-symbol-file.exp: sysroot=: action=delete: connection to GDBserver succeeded (the program is no longer running) FAIL: gdb.server/connect-with-no-symbol-file.exp: sysroot=target:: action=permission: connection to GDBserver succeeded (the program is no longer running) FAIL: gdb.server/connect-with-no-symbol-file.exp: sysroot=target:: action=delete: connection to GDBserver succeeded (the program is no longer running) A patched GDB should have full passes. gdb/testsuite/ChangeLog: 2016-04-13 Luis Machado <lgustavo@codesourcery.com> * gdb.server/connect-with-no-symbol-file.c: New file. * gdb.server/connect-with-no-symbol-file.exp: New file.
2016-04-13Debugging without a binary (regression)Luis Machado2-2/+64
When we attempt to debug a process using GDBserver in standard remote mode without a symbol file on GDB's end, we may run into an issue where GDB cuts the connection attempt short due to an error. The error is caused by not being able to open a symbol file, like so: -- (gdb) set sysroot (gdb) tar rem :2345 Remote debugging using :2345 /proc/23769/exe: Permission denied. (gdb) i r The program has no registers now. (gdb) It should've been like this: (gdb) set sysroot (gdb) tar rem :2345 Remote debugging using :2345 warning: /tmp/symbol-file: Permission denied. 0xf7ddb2d0 in ?? () (gdb) i r eax 0x0 0 ecx 0x0 0 edx 0x0 0 ebx 0x0 0 esp 0xffffdfa0 0xffffdfa0 ebp 0x0 0x0 esi 0x0 0 edi 0x0 0 eip 0xf7ddb2d0 0xf7ddb2d0 eflags 0x200 [ IF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 (gdb) This is caused by a couple of function calls within exec_file_locate_attach that can potentially throw errors. The following patch guards both exec_file_attach and symbol_file_add_main to prevent the errors from disrupting the connection process. There was also a case where native GDB tripped on this problem, but it was mostly fixed by bf74e428bca61022bd5cdf6bf28789a184748b4d. Regression-tested on x86-64/Ubuntu. gdb/ChangeLog: 2016-04-13 Luis Machado <lgustavo@codesourcery.com> * exec.c (exec_file_locate_attach): Guard a couple functions that can throw errors. (exception_print_same): New helper function.
2016-04-13Fix zero_ext documentationAntoine Tremblay2-2/+5
This patch fixes the documentation for the zero_ext bytecode description. It removes parts that seemed like a copy/paste from ext, since zero_ext zeros the bits to the left. gdb/doc/ChangeLog: * agentexpr.texi (zero_ext): Fix zero_ext description.
2016-04-13[ARC] Fix setting private elf flags when parsing .cpu.Claudiu Zissulescu2-3/+13
gas/ 2016-04-12 Claudiu Zissulescu <claziss@synopsys.com> * config/tc-arc.c (mach_type_specified_p): Change type to bfd_boolean. (arc_option): Set private flags when parsing cpu pseudo-op. (md_parse_option): Set mach_type_specified_p to TRUE.
2016-04-13Fix and improve comment in gdb_remote_downloadSimon Marchi2-2/+11
This patch fixes the current comment in gdb_remote_download, which is false (the "except if that's already where it is" part). It also improves it, by explaining why pass TOFILE through standard_output_file, even it is an absolute path. gdb/testsuite/ChangeLog: * lib/gdb.exp (gdb_remote_download): Fix and extend comment.
2016-04-13Add support to readelf for detecting and reporting Solaris specific section ↵Nick Clifton2-17/+134
types and symbol visibility. PR target/19983 * readelf.c (get_solaris_section_type): New function: Returns the name of Solaris specific section types. (get_solaris_dynamic_type): New function: Return the name of Solaris specific dynamic types. (get_dynamic_type): Use get_solaris_dynamic_type. (get_section_type_name): Use get_solaris_section_type. (get_solaris_symbol_visibility): New function: Returns Solaris specific symbol visibilities. (print_dynamic_symbol): Use get_solaris_symbol_visibility. (process_symbol_table): Likewise.
2016-04-13ld/testsuite: Initialise a variable to prevent tcl errorsAndrew Burgess2-0/+6
In some cases a variable could be left uninitialised and then an attempt made to read this variable, resulting in a tcl error. This commit initialises the variable in all cases. ld/ChangeLog: * testsuite/lib/ld-lib.exp (run_dump_test): Initialise check_ld(terminal).
2016-04-13gdbserver-base.exp: Copy file to standard output directory in ${board}_downloadSimon Marchi2-1/+13
gdbserver-base.exp is used as the base for both native-gdbserver.exp and native-extended-gdbserver.exp. (Despite its name, it should really be considered as a "local-gdbserver-base", as it's not really appropriate to implement a remote gdbserver board.) Currently, the _download procedure is implemented as a no-op (it returns the source file path). Because of the SONAME change, The fast tracepoint tests now require the executable and the IPA (libinproctrace.so) to be located in the same directory (see [1]). When using the native-gdbserver board, because _download returns the original file path, the executable does not end up in the same directory as the library, and it fails to execute. In more general terms, with the recent changes, the testsuite now assumes that when it does ${board}_download <source path 1> <destination path 1> ${board}_download <source path 2> <destination path 2> where the destination paths are relative (generally just the file name), both files will end up in the same base directory. That assumption does not hold for the current implementation in gdbserver-base.exp. The proper fix would be to make native-gdbserver non-remote, so that gdb_remote_download would not call DejaGnu's remote_download (see [2]). We could then get rid of ${board}_download in gdbserver-base.exp. However, that will likely take some time to complete. In the mean time, in order to make the fast tracepoint tests pass, we can simply copy the file to the standard output directory. Basically, it just mimics what gdb_remote_download would do if the board wasn't flagged as remote. Note that I missed these failures originally because I had a libinproctrace.so in /usr/local/lib. So, even though libinproctrace.so wasn't copied to the test output directory, it did find the one in /usr/local/lib. It would be nice to find a way to protect against this, as it could easily happen again... Regtested with unix, native-gdbserver and native-extended-gdbserver, and didn't see anything notable, except the ftrace tests now passing for native-gdbserver. [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=6e774b13c3b81ac2599812adf058796948ce7e95 [2] https://sourceware.org/ml/gdb-patches/2016-04/msg00112.html gdb/testsuite/ChangeLog: * boards/gdbserver-base.exp (${board}_download): Copy source file to standard output directory.
2016-04-13oops - omitted from previous delta.Nick Clifton1-0/+7
2016-04-13Fix disassembly of the V850's LD.BU instruction.Nick Clifton5-2/+41
PR target/19937 opcode * v850-opc.c (v850_opcodes): Correct masks for long versions of the LD.B and LD.BU instructions. gas * testsuite/gas/v850/pr19937.s: New test. * testsuite/gas/v850/pr19937.d: New test control file. * testsuite/gas/v850/basic.exp: Run the new test.
2016-04-13Fix aarch64 ftrace JIT condition testcaseAntoine Tremblay4-3/+12
This patch fixes the following failure: FAIL: gdb.trace/trace-condition.exp: ftrace: -(21 << 1) == -42: check 10 frames were collected. This was due to aarch64_emit_sub using the wrong order in its operands, so the operation would end up being 42 - 0 rather than 0 - 42. This patch also fixes the order of aarch64_emit_add for clarity. The test case for emit_sub is fixed so that the proper order of the operands is needed for the test to pass. Tested on aarch64-native-extended-gdbserver. Note: trace-condition.exp was broken a bit so I had to modify it to run the test. A fix is coming for that in another patch. gdb/gdbserver/ChangeLog: * linux-aarch64-low.c (aarch64_emit_add): Switch x1 and x0. (aarch64_emit_sub): Likewise. gdb/testsuite/ChangeLog: * gdb.trace/trace-condition.exp (foreach): Fix emit_sub testcase.
2016-04-13Fix PR remote/19840: gdb crashes on reverse-stepiPedro Alves2-0/+32
Reverse debugging against a remote target that does reverse debugging itself (with the bs/bc packets) always trips on: (gdb) target remote localhost:... (gdb) reverse-stepi ../../gdb/target.c:602: internal-error: default_execution_direction: to_execution_direction must be implemented for reverse async I missed adding a to_execution_direction method to remote.c in commit 3223143295b5 (Adds target_execution_direction to make record targets support async mode), GDB 7.4 time. Later, GDB 7.8 switched to target-async on by default, making the regression user-visible by default too. Fix is simply to add the missing to_execution_direction implementation to target remote. Tested by Andi Kleen against Simics. gdb/ChangeLog: 2016-04-13 Pedro Alves <palves@redhat.com> PR remote/19840 * remote.c (struct remote_state) <last_resume_exec_dir>: New field. (new_remote_state): Default last_resume_exec_dir to EXEC_FORWARD. (remote_open_1): Reset last_resume_exec_dir to EXEC_FORWARD. (remote_resume): Store the last execution direction. (remote_execution_direction): New function. (init_remote_ops): Install it as to_execution_direction target_ops method.
2016-04-13btrace: fix test build error in gdb.btrace/instruction_history.cMarkus Metzger2-0/+6
On systems with a newer version of GCC the gdb.btrace/instruction_history.exp test fails to build like this: Running .../gdb.btrace/instruction_history.exp ... gdb compile failed, .../gdb.btrace/instruction_history.c: In function 'main': .../gdb.btrace/instruction_history.c:24:3: warning: implicit declaration of function 'loop' [-Wimplicit-function-declaration] loop (); ^ Declare loop to fix it. testsuite/ * gdb.btrace/instruction_history.c (loop): Add declaration.
2016-04-13Update x86-64 tests for --as-neededH.J. Lu2-12/+34
Since compiler may pass --as-needed to ld by default, link .o file before .so file in x86-64 tests. PR ld/19774 * testsuite/ld-x86-64/x86-64.exp: Link tmpdir/pr17689b.o before tmpdir/pr17689.so, fix gotpcrel1 test and add more --as-needed tests.
2016-04-13MIPS/GAS: Correct branch relaxation for weak symbolsMaciej W. Rozycki10-0/+122
Weak symbols can be preempted at link time so always choose the longer sequence in branch relaxation, according to the relaxation level chosen, so that any symbol finally used as the branch target is reachable. 2016-04-13 Maciej W. Rozycki <macro@imgtec.com> Andrew Bennett <andrew.bennett@imgtec.com> gas/ * config/tc-mips.c (relaxed_branch_length): Use the long sequence where the target is a weak symbol. (relaxed_micromips_32bit_branch_length): Likewise. (relaxed_micromips_16bit_branch_length): Likewise. * testsuite/gas/mips/branch-weak-1.d: New test. * testsuite/gas/mips/branch-weak-2.d: New test. * testsuite/gas/mips/branch-weak-3.d: New test. * testsuite/gas/mips/branch-weak-4.d: New test. * testsuite/gas/mips/branch-weak-5.d: New test. * testsuite/gas/mips/branch-weak.l: New stderr output. * testsuite/gas/mips/branch-weak.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests.
2016-04-13MIPS/GAS: Relax branches to symbols resolved at link timeMaciej W. Rozycki15-10/+193
Where branch relaxation is enabled emit the long sequence for branches whose distance cannot be determined, i.e. to symbols that are undefined or in a different segment. These symbols are only resolved at link time and therefore the longer sequence ensures the branch target is in range, which cannot be guaranteed with a direct branch. This is the opposite to the current implementation, originally proposed here: <https://sourceware.org/ml/binutils/2002-09/msg00218.html>. The proposal was then extensively discussed before the final version was posted here: <https://sourceware.org/ml/binutils/2002-10/msg00191.html> and eventually committed: commit 4a6a3df43dbb37853a7b88b10ae97d9ec5daf987 Author: Alexandre Oliva <aoliva@redhat.com> Date: Sat Oct 12 05:23:33 2002 +0000 The case considered here was not commented in the review however and the original version remains. With branch relaxation enabled it makes more sense to do it consistently, so that all code impure with respect to branch distances can be linked. Direct branches are still produced for the cases concerned where branch relaxation is disabled, which is the default. gas/ * config/tc-mips.c (relaxed_branch_length): Use the long sequence where the distance cannot be determined. (relaxed_micromips_32bit_branch_length): Likewise. * testsuite/gas/mips/branch-extern-1.d: New test. * testsuite/gas/mips/branch-extern-2.d: New test. * testsuite/gas/mips/branch-extern-3.d: New test. * testsuite/gas/mips/branch-extern-4.d: New test. * testsuite/gas/mips/branch-extern.l: New stderr output. * testsuite/gas/mips/branch-extern.s: New test source. * testsuite/gas/mips/branch-section-1.d: New test. * testsuite/gas/mips/branch-section-2.d: New test. * testsuite/gas/mips/branch-section-3.d: New test. * testsuite/gas/mips/branch-section-4.d: New test. * testsuite/gas/mips/branch-section.l: New stderr output. * testsuite/gas/mips/branch-section.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests.
2016-04-13Add init_dwarf_regnames_s390Andreas Arnez4-0/+41
Define and use DWARF register names for s390. binutils/ChangeLog: * dwarf.h (init_dwarf_regnames_s390): Declare. * dwarf.c (dwarf_regnames_s390): New. (init_dwarf_regnames_s390): New. (init_dwarf_regnames): Call it. * objdump.c (dump_dwarf): Likewise.
2016-04-13Automatic date update in version.inGDB Administrator1-1/+1
2016-04-12Fix typo in ftrace.exp condition testingAntoine Tremblay2-1/+5
This obvious patch replaces "ond" wiht "cond" as the test prefix for conditional tests. gdb/testsuite/ChangeLog: * gdb.trace/ftrace.exp (proc): Change test prefix from "ond" to "cond".
2016-04-12[C++] Switch TRY/CATCH to real C++ try/catch by default againPedro Alves2-5/+11
Now that we don't ever throw GDB exceptions from signal handlers [1], we can switch back to having TRY/CATCH implemented in terms of C++ try/catch instead of sigjmp/longjmp. [1] - https://sourceware.org/ml/gdb-patches/2016-03/msg00351.html Tested on x86_64 Fedora 23, native and gdbserver. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * common/common-exceptions.h (GDB_XCPT_TRY): Update comment. [__cplusplus] (GDB_XCPT): Define as GDB_XCPT_TRY.
2016-04-12Use setjmp/longjmp for TRY/CATCH instead of sigsetjmp/siglongjmpPedro Alves4-8/+21
Now that we don't ever throw GDB exceptions from signal handlers [1], we can switch to have TRY/CATCH implemented in terms of plain setjmp/longjmp instead of sigsetjmp/siglongjmp. In https://sourceware.org/ml/gdb-patches/2015-02/msg00114.html, Yichun Zhang mentions a 11%/14%+ speedup in his GDB python scripts with a patch that did something similar to only a specific set of TRY/CATCH calls. [1] - https://sourceware.org/ml/gdb-patches/2016-03/msg00351.html Tested on x86_64 Fedora 23, native and gdbserver. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * common/common-exceptions.c (struct catcher) <buf>: Now a 'jmp_buf' instead of SIGJMP_BUF. (exceptions_state_mc_init): Change return type to 'jmp_buf'. (throw_exception): Use longjmp instead of SIGLONGJMP. * common/common-exceptions.h: Include <setjmp.h> instead of "gdb_setjmp.h". (exceptions_state_mc_init): Change return type to 'jmp_buf'. [GDB_XCPT == GDB_XCPT_SJMP] (TRY): Use setjmp instead of SIGSETJMP. * cp-support.c: Include "gdb_setjmp.h".
2016-04-12Eliminate prepare_to_throw_exceptionPedro Alves6-22/+12
No longer necessary. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * common/common-exceptions.c (exception_rethrow): Remove prepare_to_throw_exception call. * common/common-exceptions.h (prepare_to_throw_exception): Delete declaration. * exceptions.c (prepare_to_throw_exception): Delete. gdb/gdbserver/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * utils.c (prepare_to_throw_exception): Delete.
2016-04-12Eliminate target_check_pending_interruptPedro Alves4-44/+8
This is no longer called anywhere. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * target.c (target_check_pending_interrupt): Delete. * target.h (struct target_ops) <to_check_pending_interrupt>: Remove method. (target_check_pending_interrupt): Remove declaration. * target-delegates.c: Regenerate.
2016-04-12Eliminate immediate_quitPedro Alves9-131/+32
This finally gets rid of immediate_quit (and surrounding infrustruture), as nothing sets it anymore. gdb_call_async_signal_handler was only necessary in order to handle immediate_quit. We can just call mark_async_signal_handler directly on all hosts now. In turn, we can clean up mingw-hdep.c's gdb_select a bit, as sigint_event / sigint_handler is no longer needed. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * defs.h: Update comments on SIGINT handling. (immediate_quit): Delete declaration. * event-loop.c (call_async_signal_handler): Delete. * event-loop.h (call_async_signal_handler): Delete declaration. (mark_async_signal_handler): Update comments. (gdb_call_async_signal_handler): Delete declaration. * event-top.c (handle_sigint): Call mark_async_signal_handler instead of gdb_call_async_signal_handler. * exceptions.c (prepare_to_throw_exception): Remove reference to immediate_quit. (exception_fprintf): Remove comments about immediate_quit. * mingw-hdep.c (sigint_event, sigint_handler): Delete. (gdb_select): Don't wait on sigint_event. (gdb_call_async_signal_handler): Delete. (_initialize_mingw_hdep): Delete. * posix-hdep.c (gdb_call_async_signal_handler): Delete. * utils.c (immediate_quit): Delete.
2016-04-12target remote: Don't rely on immediate_quit (introduce quit handlers)Pedro Alves8-252/+283
remote.c is the last user of immediate_quit. It's relied on to immediately break the initial remote connection sync up, if the user does Ctrl-C, assuming that was because the target isn't responding. At that stage, since the connection isn't synced yet, disconnecting is the only safe thing to do. This commit reworks that, to not rely on throwing from the SIGINT signal handler. So, this commit: - Introduces the concept of a "quit handler". This is used to override what does the QUIT macro do when the quit flag is set. - Makes the "struct serial" reachar / write code call QUIT in the partial read/write loops, so the current quit handler is invoked whenever a serial->read_prim / serial->write_prim returns EINTR. - Makes the "struct serial" reachar / write code call interruptible_select instead of gdb_select, so that QUITs are detected in a race-free manner. - Stops remote.c from setting immediate_quit during the initial connection. - Instead, we install a custom quit handler whenever we're calling into the serial code. This custom quit handler knows to immediately throw a quit when we're in the initial connection setup, and otherwise defer handling the quit/Ctrl-C request to later, when we're safely out of a packet command/response sequence. This also is what is now responsible for handling "double Ctrl-C because target connection is stuck/wedged." - remote.c no longer installs a specialized SIGINT handlers, and instead re-uses the quit flag. Since we want to rely on the QUIT macro, the SIGINT handler must also set the quit. And the easiest is just to not install custom SIGINT handler in remote.c. Let the standard SIGINT handler do its job of setting the quit flag. Centralizing SIGINT handlers seems like a good thing to me, anyway. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * defs.h (quit_handler_ftype, quit_handler) (make_cleanup_override_quit_handler, default_quit_handler): New. (QUIT): Adjust comments. * event-top.c (default_quit_handler): New function. (quit_handler): New global. (struct quit_handler_cleanup_data): New. (restore_quit_handler, restore_quit_handler_dtor) (make_cleanup_override_quit_handler): New. (async_request_quit): Call QUIT. * remote.c (struct remote_state) <got_ctrlc_during_io>: New field. (async_sigint_remote_twice_token, async_sigint_remote_token): Delete. (remote_close): Update comments. (remote_start_remote): Don't set immediate_quit. Set starting_up earlier. (remote_serial_quit_handler, remote_unpush_and_throw): New functions. (remote_open_1): Clear got_ctrlc_during_io. Set remote_async_terminal_ours_p unconditionally. (async_initialize_sigint_signal_handler) (async_handle_remote_sigint, async_handle_remote_sigint_twice) (remote_check_pending_interrupt, async_remote_interrupt) (async_remote_interrupt_twice) (async_cleanup_sigint_signal_handler, ofunc) (sync_remote_interrupt, sync_remote_interrupt_twice): Delete. (remote_terminal_inferior, remote_terminal_ours): Remove async checks. (remote_wait_as): Don't install a SIGINT handler in sync mode. (readchar, remote_serial_write): Override the quit handler with remote_serial_quit_handler. (getpkt_or_notif_sane_1): Don't call QUIT. (initialize_remote_ops): Don't install remote_check_pending_interrupt. (_initialize_remote): Don't create async_sigint_remote_token and async_sigint_remote_twice_token. * ser-base.c (ser_base_wait_for): Call QUIT and use interruptible_select. (ser_base_write): Call QUIT. * ser-go32.c (dos_readchar, dos_write): Call QUIT. * ser-unix.c (wait_for): Don't use VTIME. Always take the gdb_select path, but call QUIT and interruptible_select. * utils.c (maybe_quit): Call the current quit handler. Don't call target_check_pending_interrupt. (defaulted_query, prompt_for_continue): Override the quit handler with the default quit handler.
2016-04-12TUI: GC tui_target_has_runPedro Alves2-24/+8
Nothing actually uses this global. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * tui/tui-hooks.c (tui_target_has_run): Delete. (tui_about_to_proceed): Delete. (tui_about_to_proceed_observer): Delete. (tui_install_hooks, tui_remove_hooks): Don't install/remove an about_to_proceed observer.
2016-04-12Use target_terminal_ours_for_output in MIPedro Alves3-21/+129
The MI code only does output, so leave raw/cooked mode alone, as well as the SIGINT handler. Restore terminal settings after output, while at it. Also, a couple events missed calling target_terminal_ours before output, even. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * mi/mi-interp.c (mi_new_thread): Put target_terminal_ours_for_output in effect while outputting. (mi_thread_exit): Use target_terminal_ours_for_output instead of target_terminal_ours. (mi_record_changed, mi_inferior_added, mi_inferior_appeared) (mi_inferior_exit, mi_inferior_removed, mi_traceframe_changed) (mi_tsv_created, mi_tsv_deleted, mi_tsv_modified) (mi_breakpoint_created, mi_breakpoint_deleted) (mi_breakpoint_modified, mi_solib_loaded, mi_solib_unloaded) (mi_command_param_changed, mi_memory_changed) (report_initial_inferior): Use target_terminal_ours_for_output instead of target_terminal_ours. Restore terminal settings. * mi/mi-main.c (mi_execute_command): Use target_terminal_ours_for_output instead of target_terminal_ours. Restore terminal settings.
2016-04-12Do target_terminal_ours in query & friends instead of in all callersPedro Alves8-114/+75
Any time a caller calls query & friends / prompt_for_continue without ensuring that gdb owns the terminal for input is a bug. So do that in defaulted_query / prompt_for_continue directly instead. An example of a case where we currently miss calling target_terminal_ours is internal_error. Ever since defaulted_query was made to use gdb_readline_callback, there's no way to answer the internal error query if the internal error happens while the target is has the terminal: (gdb) c Continuing. .../src/gdb/linux-nat.c:1676: internal-error: linux_nat_resume: Assertion `dummy_counter < 10' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) _ Entering 'y' or 'n' does not work, GDB does not respond. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> PR gdb/19828 * gnu-nat.c (inf_validate_task_sc): Don't call target_terminal_ours / target_terminal_inferior around query. * i386-tdep.c (i386_record_lea_modrm, i386_process_record): Don't call target_terminal_ours / target_terminal_inferior around yquery. * linux-record.c (record_linux_system_call): Don't call target_terminal_ours / target_terminal_inferior around yquery. * nto-procfs.c (interrupt_query): Don't call target_terminal_ours / target_terminal_inferior around query. * record-full.c (record_full_check_insn_num): Remove 'set_terminal' parameter. Don't call target_terminal_ours / target_terminal_inferior around query. (record_full_message, record_full_registers_change) (record_full_xfer_partial): Adjust. * remote.c (interrupt_query): Don't call target_terminal_ours / target_terminal_inferior around query. * utils.c (defaulted_query): Install cleanup to restore target terminal. Put target_terminal_ours_for_output in effect while defaulted producing, and target_terminal_ours in in effect while handling input. (prompt_for_continue): Install cleanup to restore target terminal. Put target_terminal_ours in in effect while handling input.
2016-04-12Add missing cleanups to defaulted_query and prompt_for_continuePedro Alves2-4/+16
Some of the error paths in these functions leak. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * utils.c (defaulted_query, prompt_for_continue): Free temporary strings with cleanups, instead of xfree.
2016-04-12Use target_terminal_ours_for_output in warning/internal_errorPedro Alves2-2/+18
We're only doing output here, so leave raw/cooked mode alone, as well as the SIGINT handler. And restore terminal settings, while at it. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * utils.c (vwarning, internal_vproblem): Use make_cleanup_restore_target_terminal and target_terminal_ours_for_output.
2016-04-12Use target_terminal_ours_for_output in infcmd.cPedro Alves2-2/+7
We're only doing output here, so leave raw/cooked mode alone, as well as the SIGINT handler. No need to restore terminal settings, we'll set inferior modes on the following resume. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * infcmd.c (post_create_inferior, prepare_one_step): Use target_terminal_ours_for_output instead of target_terminal_ours.
2016-04-12Use target_terminal_ours_for_output in exceptions.cPedro Alves2-1/+13
We're only doing output here, so leave raw/cooked mode alone, as well as the SIGINT handler. Restore terminal settings after output, while at it. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * exceptions.c (print_flush): Use target_terminal_ours_for_output instead of target_terminal_ours, and restore target terminal with a cleanup.