aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-10-06Move aarch64-insn.o to arch/aarch64-insn.o and Remove a rule for arch/*.cYao Qi3-6/+9
This patch moves aarch64-insn.o to arch/aarch64-insn.o. Then, all arch/*.c are built to arch/*.o, so we don't need a Makefile rule to build *.o from arch/*.c. This patch removes it too. gdb: 2017-10-06 Yao Qi <yao.qi@linaro.org> * Makefile.in (ALL_64_TARGET_OBS): Replace aarch64-insn.o with arch/aarch64-insn.o. Remove one rule. * configure.tgt: Replace aarch64-insn.o with arch/aarch64-insn.o.
2017-10-06Move arm.o arm-get-next-pcs.o arm-linux.o to arch/Yao Qi3-7/+14
It is tested by building GDB for some targets, arm-elf, arm-netbsd, arm-linux, and aarch64-linux. gdb: 2017-10-06 Yao Qi <yao.qi@linaro.org> * Makefile.in (ALL_TARGET_OBS): Replace arm.o, arm-get-next-pcs.o, and arm-linux.o with arch/arm.o, arch/arm-get-next-pcs.o and arch/arm-linux.o respectively. * configure.tgt: Likewise.
2017-10-06Move i386.o to arch/i386.oYao Qi3-2/+7
This patch changes the build that arch/i386.c is built to arch/i386.o, instead of i386.o. gdb: 2017-10-06 Yao Qi <yao.qi@linaro.org> * Makefile.in (ALL_TARGET_OBS): Rename i386.o to arch/i386.o. * configure.tgt (i386_tobjs): Replace i386.o with arch/i386.o.
2017-10-06Add "do/while(0);" to COPY_INPUT_RELOC_P/VERIFY_COPY_RELOCH.J. Lu2-15/+28
Add "do/while(0);" to COPY_INPUT_RELOC_P/VERIFY_COPY_RELOC to avoid potential dangling else problems. * elfxx-x86.h (COPY_INPUT_RELOC_P): Add "do/while(0);". (VERIFY_COPY_RELOC): Likewise.
2017-10-06Fix more GDB build breakage on mingw32Pedro Alves2-0/+5
With F23's mingw gcc 5.3.0, I'm seeing: i686-w64-mingw32-g++ -x c++ -std=gnu++11 -g3 -O0 -I. -I../../src/gdb -I../../src/gdb/common -I../../src/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../../src/gdb/../zlib -I../bfd -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber -I../../src/gdb/../libdecnumber -I../../src/gdb/gnulib/import -Ibuild-gnulib/import -I/home/pedro/src/expat/install-win32//include -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized -Wno-format -Werror -c -o windows-nat.o -MT windows-nat.o -MMD -MP -MF ./.deps/windows-nat.o.Tpo ../../src/gdb/windows-nat.c ../../src/gdb/windows-nat.c: In function 'void windows_create_inferior(target_ops*, const char*, const string&, char**, int)': ../../src/gdb/windows-nat.c:2476:7: error: 'replace' is not a member of 'std' std::replace (expanded_infcwd.begin (), expanded_infcwd.end (), ^ gdb/Changelog: 2017-10-06 Pedro Alves <palves@redhat.com> * windows-nat.c: Include <algorithm>.
2017-10-06Fix GDB build under msys+mingw gcc 32bitYuanhui Zhang2-0/+5
I see a build error when building GDB under msys+mingw gcc 32bit: g++ -x c++ -std=gnu++11 -g -O2 -I. -I../../../binutils-gdb/gdb/gdbserver -I../../../binutils-gdb/gdb/gdbserver/../common -I../../../binutils-gdb/gdb/gdbserver/../regformats -I../../../binutils-gdb/gdb/gdbserver/.. -I../../../binutils-gdb/gdb/gdbserver/../../include -I../../../binutils-gdb/gdb/gdbserver/../gnulib/import -Ibuild-gnulib-gdbserver/import -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized -Wno-format -Werror -DGDBSERVER -c -o win32-low.o -MT win32-low.o -MMD -MP -MF .deps/win32-low.Tpo ../../../binutils-gdb/gdb/gdbserver/win32-low.c ../../../binutils-gdb/gdb/gdbserver/win32-low.c: In function 'BOOL create_process(const char*, char*, DWORD, PROCESS_INFORMATION*)': ../../../binutils-gdb/gdb/gdbserver/win32-low.c:566:48: error: 'get_inferior_cwd' was not declared in this scope const char *inferior_cwd = get_inferior_cwd (); ^ make[4]: *** [win32-low.o] Error 1 It can be fixed by simply including the right header file. gdb/gdbserver/ChangeLog: 2017-10-06 Yuanhui Zhang <asmwarrior@gmail.com> * win32-low.c: Include "common-inferior.h".
2017-10-06Share code updating gdb_target_obsYao Qi2-109/+135
Nowadays, there are much duplications in configure.tgt to update gdb_target_obs, some cpu specific object files are added to gdb_target_obs to some different target triplets of the same cpu. The same problem exists for os specific object files too. It is fragile to update them, and build with all targets enabled doesn't find the problem. This patch splits the gdb_target_obs update to three steps, cpu steps, os steps, and the rest. I tested this patch by build gdb for each different target triplets respectively, aarch64-elf aarch64-rtems aarch64-freebsd aarch64-linux alpha-elf alpha-linux alpha-netbsd alpha-openbsd arm-elf arm-wince-pe arm-linux arm-netbsd arm-symbianelf avr cris-elf frv-elf h8300-elf i386-elf i386-darwin i386-dicos i386-freebsd i386-netbsdelf i386-openbsd i386-nto i386-solaris i386-linux i386-gnu i386-cygwin i386-mingw32 i386-go32 ia64-linux-gnu ia64-vms lm32-elf m32c-elf m32r-elf m32r-linux m68hc11-elf m68k-elf m68k-linux m68k-netbsd m68k-openbsd m88k-openbsd mep-elf microblaze-xilinx-elf microblaze-linux-gnu mips-elf moxie-elf ms1-elf nios2-elf nios2-linux-gnu hppa-elf hppa-linux hppa-netbsd hppa-openbsd powerpc-eabi powerpc-freebsd powerpc-netbsd powerpc-openbsd powerpc-linux powerpc-lynx178 rl78-elf rx-elf s390-linux-gnu score-elf sh-elf sh-linux sh-openbsd sh64-elf sh64-linux sh64-openbsd sparc64-linux sparc-linux sparc-freebsd sparc64-freebsd sparc-netbsd sparc64-netbsd sparc-openbsd sparc64-openbsd spu-elf tic6x-elf tic6x-uclinux v850-elf vax-netbsd vax-openbsd x86_64-linux-gnu x86_64-darwin x86_64-dicos x86_64-elf x86_64-freebsd x86_64-mingw32 x86_64-netbsd x86_64-openbsd x86_64-rtems xstormy16-elf xtensa-elf xtensa-linux gdb: 2017-10-06 Yao Qi <yao.qi@linaro.org> * configure.tgt (i386_tobjs): New variable. (amd64_tobjs): New variable. Set $cpu_obs and $os_obs.
2017-10-06[RFC] Replicate src dir in build dirYao Qi5-16/+60
Nowadays, GDB build tree is almost flat, but source tree isn't. We have arch/ nat/ target/ common/ cli/ mi/ tui/ python/ guile/ directories. We need to some rules in Makefile for source files in different source directories, like, # Rules for compiling .c files in the various source subdirectories. %.o: ${srcdir}/arch/%.c $(COMPILE) $< $(POSTCOMPILE) %.o: ${srcdir}/nat/%.c $(COMPILE) $< $(POSTCOMPILE) so we should take care of some special case that files' base name is the same, like, # Specify an explicit rule for gdb/common/agent.c, to avoid a clash with the # object file generate by gdb/agent.c. common-agent.o: $(srcdir)/common/agent.c $(COMPILE) $(srcdir)/common/agent.c $(POSTCOMPILE) As we add more and more files in different directories, it becomes tricky to name files, because we need take this into account. This patch takes the first step toward "Replicate src dir in build dir", that is, we create arch/ directory in buildtree, and put amd64.o there as an example. Dependency tracking is updated for files with directory name. Currently, when we build amd64.o, "-c -o amd64.o -MT amd64.o -MMD -MP -MF .deps/amd64.Tpo" with this patch applied, it becomes, "-c -o arch/amd64.o -MT arch/amd64.o -MMD -MP -MF arch/.deps/amd64.o.Tpo" "make clean" removes the object files, and "make distclean" removes .deps additionally. configure file create .deps directory in each of CONFIG_SRC_SUBDIR, and pass it to Makefile.in, so that "make clean" and "make distclean" can remove stuffs there. If people agree with this change, I'll add more directories to CONFIG_SRC_SUBDIR. gdb: 2017-10-06 Yao Qi <yao.qi@linaro.org> * Makefile.in (CONFIG_SRC_SUBDIR): New. (ALL_64_TARGET_OBS): Replace amd64.o with arch/amd64.o. (clean): Remove object files and dependency files. (distclean): Remove the directory. * configure.ac: Invoke AC_CONFIG_COMMANDS. * configure: Re-generated. * configure.tgt: Replace amd64.o with arch/amd64.o.
2017-10-06gdb: Fix decoding of ARM neon memory hint insns.Jose E. Marchesi2-2/+8
gdb/ChangeLog: 2017-10-05 Jose E. Marchesi <jose.marchesi@oracle.com> PR build/22188 * arm-tdep.c (arm_decode_misc_memhint_neon): Fix decoding of CPS and SETEND.
2017-10-06x86: Add VERIFY_COPY_RELOCH.J. Lu4-14/+17
Add VERIFY_COPY_RELOC to verify that symbol supports copy relocation. * elfxx-x86.h (VERIFY_COPY_RELOC): New. * elf32-i386.c (elf_i386_finish_dynamic_symbol): Use it. * elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
2017-10-06x86: Add VERIFY_PLT_ENTRYH.J. Lu4-23/+20
Add VERIFY_PLT_ENTRY to verify that symbol has an entry in the procedure linkage table. * elfxx-x86.h (VERIFY_PLT_ENTRY): New. * elf32-i386.c (elf_i386_finish_dynamic_symbol): Use it. * elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
2017-10-06x86: Add COPY_INPUT_RELOC_PH.J. Lu4-14/+17
Add COPY_INPUT_RELOC_P which returns TRUE if input relocation should be copied to output. * elfxx-x86.h (COPY_INPUT_RELOC_P): New. * elf32-i386.c (elf_i386_relocate_section): Use it. * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06x86: Add GENERATE_DYNAMIC_RELOCATION_PH.J. Lu4-57/+59
Add GENERATE_DYNAMIC_RELOCATION_P which returns TRUE if dynamic relocation should be generated. * elf32-i386.c (X86_SIZE_TYPE_P): New. (elf_i386_relocate_section): Use GENERATE_DYNAMIC_RELOCATION_P. * elf64-x86-64.c (X86_SIZE_TYPE_P): New. (elf_x86_64_relocate_section): Use GENERATE_DYNAMIC_RELOCATION_P. * elfxx-x86.h (GENERATE_DYNAMIC_RELOCATION_P): New.
2017-10-06x86: Add POINTER_LOCAL_IFUNC_P/PLT_LOCAL_IFUNC_PH.J. Lu4-16/+25
Add POINTER_LOCAL_IFUNC_P which returns TRUE for pointer reference to local IFUNC symbol. Add PLT_LOCAL_IFUNC_P which returns TRUE for PLT reference to local IFUNC symbol. * elfxx-x86.h (POINTER_LOCAL_IFUNC_P): New. (PLT_LOCAL_IFUNC_P): Likewise. * elf32-i386.c (elf_i386_relocate_section): Use them. * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06x86: Add GENERATE_RELATIVE_RELOC_PH.J. Lu4-8/+20
Add GENERATE_RELATIVE_RELOC_P which returns TRUE if dynamic relative relocation should be generated. * elfxx-x86.h (GENERATE_RELATIVE_RELOC_P): New. * elf32-i386.c (elf_i386_relocate_section): Use it. * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06x86: Add RESOLVED_LOCALLY_PH.J. Lu1-0/+6
Add RESOLVED_LOCALLY_P which returns TRUE if symbol is resolved to local definition at link-time. * elfxx-x86.h (RESOLVED_LOCALLY_P): New. * elf32-i386.c (elf_i386_relocate_section): Use it. * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2017-10-06Add RESOLVED_LOCALLY_PH.J. Lu3-34/+21
2017-10-06x86: Add NEED_DYNAMIC_RELOCATION_PH.J. Lu4-85/+62
Add NEED_DYNAMIC_RELOCATION_P which returns TRUE if dynamic relocation is needed. * elf32-i386.c (X86_PCREL_TYPE_P): New. (elf_i386_check_relocs): Use NEED_DYNAMIC_RELOCATION_P. * elf64-x86-64.c (IS_X86_64_PCREL_TYPE): Renamed to ... (X86_PCREL_TYPE_P): This. (elf_x86_64_check_relocs): Use NEED_DYNAMIC_RELOCATION_P. Replace IS_X86_64_PCREL_TYPE with X86_PCREL_TYPE_P. (elf_x86_64_relocate_section): Replace IS_X86_64_PCREL_TYPE with X86_PCREL_TYPE_P. * elfxx-x86.h (NEED_DYNAMIC_RELOCATION_P): New.
2017-10-06x86: Add TLS_TRANSITION_IE_TO_LE_PH.J. Lu4-8/+15
Add TLS_TRANSITION_IE_TO_LE_P which returns TRUE if TLS IE->LE transition is OK. * elfxx-x86.h (TLS_TRANSITION_IE_TO_LE_P): New. * elf32-i386.c (elf_i386_tls_transition): Use it. * elf64-x86-64.c (elf_x86_64_tls_transition): Likewise.
2017-10-06DWARF header checksAlan Modra2-86/+95
This patch tidies DWARF header checks, consolidating the "negative" checks (which are really overflow checks) with the section size check. In a number of cases this also ensures that small negative lengths are caught. For instance hdrptr = start + arange.ar_length + initial_length_size; if (hdrptr < start || hdrptr > end) does not detect ar_length in the range [-initial_length_size,-1]. * dwarf.c (process_debug_info): Consolidate header length checks. (display_debug_pubnames_worker): Use "start" to read header. Properly check header length and report errors earlier. Simplify loop printing pubnames. (get_line_filename_and_dirname): Catch small negative "length" values. (display_debug_aranges): Likewise. Report header errors earlier using standardized message. (display_debug_names): Likewise.
2017-10-05powerpc: Dump dynamic relocation info to the map fileH.J. Lu2-8/+32
Dump dynamic relocation info to the map file when generating dynamic relocation in read-only section relocations if -Map is used. * elf32-ppc.c (readonly_dynrelocs): Add a link_info argument. Dump dynamic relocation in read-only section with minfo if needed. (ppc_elf_adjust_dynamic_symbol): Pass NULL to readonly_dynrelocs. (maybe_set_textrel): Likewise. (ppc_elf_size_dynamic_sections): Dump dynamic relocation in read-only section with minfo.
2017-10-06Automatic date update in version.inGDB Administrator1-1/+1
2017-10-05Fix fork-related regressions on GNU/LinuxPedro Alves2-1/+10
Commit 5cd63fda035d ("Fix "Remote 'g' packet reply is too long" problems with multiple inferiors") caused a number of regressions on native GNU/Linux, all related to follow-fork support. E.g.: src/gdb/target.c:3141: internal-error: gdbarch* default_thread_architecture(target_ops*, ptid_t): Assertion `inf != NULL' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) Resyncing due to internal error. FAIL: gdb.base/catch-signal-fork.exp: got SIGHUP after fork (GDB internal error) This commit fixes it. gdb/ChangeLog: 2017-10-05 Pedro Alves <palves@redhat.com> * linux-nat.c (linux_child_follow_fork): When following the parent and detaching the child, consult the parent thread's architecture instead of the child's.
2017-10-05Remove unused "union agent_val" from ax.hUlrich Weigand2-12/+5
The ax.h header file contains a use of DOUBLEST in the type "union agent_val". However, that type is never used anywhere, so it can be simply removed. gdb/ChangeLog: 2017-10-05 Ulrich Weigand <uweigand@de.ibm.com> * ax.h: Do not include "doublest.h". (union agent_val): Remove.
2017-10-05Clean up some DFP interfacesUlrich Weigand12-80/+133
This cleans up a number of interfaces in dfp.c / dfp.h. Specifically: - The decimal_from_string / decimal_to_string routines are C++-ified to operate on std::string instead of character buffers. In the decimal_from_string, the boolean return value now actually is bool instead of an int. - The decimal_from_integral and decimal_from_doublest routines take an struct value as input. This is not really appropriate at the low level the DFP routines sit, so this replaced them with new routines decimal_from_longest / decimal_from_ulongest / decimal_from_doublest that operate on contents instead. - To mirror the decimal_from_[u]longest, a new decimal_to_longest routine is added as well, which can be used in unpack_long to avoid an unnecessary conversion via DOUBLEST. Note that the decimal_from_longest / decimal_from_ulongest routines are actually more powerful than decimal_from_integral: the old routine would only accept integer *types* of at most four bytes size, while the new routines accept all integer *values* that fit in an [u]int32_t, no matter which type they came from. The DFP tests are updated to allow for this larger range of integers that can be converted. gdb/ChangeLog: 2017-10-05 Ulrich Weigand <uweigand@de.ibm.com> * dfp.h (MAX_DECIMAL_STRING): Move to dfp.c. (decimal_to_string): Return std::string object. (decimal_from_string): Accept std::string object. Return bool. (decimal_from_integral, decimal_from_doublest): Remove. (decimal_from_longest): Add prototype. (decimal_from_ulongest): Likewise. (decimal_to_longest): Likewise. (decimal_from_doublest): Likewise. * dfp.c: Do not include "gdbtypes.h" or "value.h". (MAX_DECIMAL_STRING): Move here. (decimal_to_string): Return std::string object. (decimal_from_string): Accept std::string object. Return bool. (decimal_from_integral): Remove, replace by ... (decimal_from_longest, decimal_from_ulongest): ... these new functions. (decimal_to_longest): New function. (decimal_from_floating): Remove, replace by ... (decimal_from_doublest): ... this new function. (decimal_to_doublest): Update to new decimal_to_string interface. * value.c (unpack_long): Use decimal_to_longest. * valops.c (value_cast): Use decimal_from_doublest instead of decimal_from_floating. Use decimal_from_[u]longest isntead of decimal_from_integral. * valarith.c (value_args_as_decimal): Likewise. * valprint.c (print_decimal_floating): Update to new decimal_to_string interface. * printcmd.c (printf_decfloat): Likewise. * c-exp.y (parse_number): Update to new decimal_from_string interface. gdb/testsuite/ChangeLog: 2017-10-05 Ulrich Weigand <uweigand@de.ibm.com> * gdb.base/dfp-exprs.exp: Update tests to larger range of supported integer-to-dfp conversion. * gdb.base/dfp-test.exp: Likewise.
2017-10-05Clean up includes of doublest.h and floatformat.hUlrich Weigand27-38/+38
As a first small step to getting rid of doublest.h, this patch removes the include of "floatformat.h" in "doublest.h". This is actually not needed for the file itself. A few source files now need to include "floatformat.h" directly, since they got it indirectly via "doublest.h" and still need it. In reviewing which files need it, I found a number of files that include "floatformat.h" directly without actually needing it at all. Similarly, a number of files include "doublest.h" without needing it. I've also removed those unnecessary include statements. gdb/ChangeLog: 2017-10-05 Ulrich Weigand <uweigand@de.ibm.com> * doublest.h: Do not include "floatformat.h". Remove stale comments. * gdbtypes.c: Include "floatformat.h". * value.c: Likewise. * m68k-tdep.c: Likewise. * findvar.c: Do not include "floatformat.h". * amd64-darwin-tdep.c: Likewise. * arm-linux-tdep.c: Likewise. * i386-darwin-tdep.c: Likewise. * i387-tdep.c: Likewise. * m68k-linux-tdep.c: Likewise. * mep-tdep.c: Likewise. * mips-tdep.c: Likewise. * nios2-tdep.c: Likewise. * s390-linux-tdep.c: Likewise. * sparc-obsd-tdep.c: Likewise. * sparc-tdep.c: Likewise. * sparc64-tdep.c: Likewise. * spu-tdep.c: Likewise. * tic6x-tdep.c: Likewise. * tilegx-tdep.c: Likewise. * vax-tdep.c: Likewise. * xstormy16-tdep.c: Likewise. * xtensa-tdep.c: Likewise. * top.c: Do not include "doublest.h". * aarch64-tdep.c: Likewise. * alpha-tdep.c: Likewise. * arm-linux-tdep.c: Likewise. * m68k-linux-tdep.c: Likewise. * tilegx-tdep.c: Likewise. * xstormy16-tdep.c: Likewise.
2017-10-05Add a signal frame unwinder for FreeBSD/mipsn32.John Baldwin2-0/+25
The N32 signal frame uses an identical layout to N64, so reuse the N64 handler. The N32 signal trampoline does use one different instruction relative to N64, so a separate tramp_frame is required. gdb/ChangeLog: * mips-fbsd-tdep.c (MIPS_INST_ADDIU_A0_SP_N32): Define. (mipsn32_fbsd_sigframe): Define. (mips_fbsd_init_abi): Install mipsn32_fbsd_sigframe unwinder for FreeBSD/mipsn32.
2017-10-05Handle the NT_ARM_VFP core dump note on FreeBSD.John Baldwin2-0/+7
bfd/ChangeLog: * elf.c (elfcore_grok_freebsd_note): Handle NT_ARM_VFP.
2017-10-05Handle FreeBSD-specific AT_EHDRFLAGS and AT_HWCAP auxiliary vector types.John Baldwin4-0/+13
FreeBSD recently added two additional ELF auxiliary vectors. FreeBSD's AT_HWCAP uses a different number compared to AT_HWCAP on Linux as the numerical value was already in use for a different vector on FreeBSD. include/ChangeLog: * elf/common.h (AT_FREEBSD_EHDRFLAGS, AT_FREEBSD_HWCAP): Define. gdb/ChangeLog: * fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_EHDRFLAGS and AT_HWCAP.
2017-10-05Fix the MSP430 assembler so that it detects and reports extraneous text at ↵Nick Clifton6-27/+114
the end of operands. PR 22133 * config/tc-msp430.c (parse_exp): Skip an 'h' suffix to constant expressions. (msp430_srcoperand): Check that the entire text was parsed by parse_exp. (msp430_operands): Likewise. * testsuite/gas/msp430/pr22133.s: New test file. * testsuite/gas/msp430/pr22133.d: New test driver. * testsuite/gas/msp430/pr22133.s: Expected error output. * testsuite/gas/msp430/msp430.exp: Run the new test.
2017-10-05Avoid spurious readelf error status from decode_arm_unwind.Joseph Myers2-1/+5
readelf.c:decode_arm_unwind has a variable res that is used as a return value, with FALSE meaning unsuccessful and TRUE meaning successful. This is initialized to FALSE (and then various code in the function sets it to FALSE again on error), meaning that when the function is successful, if it reaches returning res is still returns FALSE, resulting eventually in exit status 1 from readelf without any error message to indicate an error. This patch fixes the initialization to use TRUE, so avoiding those spurious errors. I don't have a self-contained test for this issue; it was observed as many prelink tests failing without the patch and passing with it. * readelf.c (decode_arm_unwind): Initialize res to TRUE.
2017-10-05Update the Hungarian translation in the gprof directory.Nick Clifton2-91/+100
* po/hu.po: Updated Hungarian translation.
2017-10-05Updated Turkish translation for the ld sub-directory.Nick Clifton2-663/+1504
* po/tr.po: Updated Turkish translation.
2017-10-05tile: Dump dynamic relocation info to the map fileH.J. Lu3-2/+26
Dump dynamic relocation info to the map file when generating dynamic relocation in read-only section relocations if -Map is used. * elf32-tilepro.c (readonly_dynrelocs): Dump dynamic relocation in read-only section with minfo. (tilepro_elf_size_dynamic_sections): Likewise. * elfxx-tilegx.c (readonly_dynrelocs): Likewise. (tilegx_elf_size_dynamic_sections): Likewise.
2017-10-05Fix strip so that is accepts -M as an abbreviation for --merge-notes.Nick Clifton2-1/+7
PR 22260 * objcopy.c (strip_main): Add 'M' character to short options list when calling getopt_long.
2017-10-05Change readelf so that when --wide is active a relocation's full name is ↵Nick Clifton4-2/+14
displayed. PR 22262 binutils* readelf.c (dump_relocations): Do not truncate reloc names when displaying output in wide mode. ld * testsuite/ld-powerpc/relocsort.d: Update expected output (for longer reloc names).
2017-10-05Update README-how-to-make-a-release with the correct sequence for creating ↵Nick Clifton2-39/+34
the source tarball. * README-how-to-make-a-release: Merge steps 3, 4 and 5, and insert the git tag operation at the correct location.
2017-10-05PR22239 - invalid memory read in display_debug_framesAlan Modra2-11/+12
Pointer comparisons have traps for the unwary. After adding a large unknown value to "start", the test "start < end" depends on where "start" is originally in memory. PR 22239 * dwarf.c (read_cie): Don't compare "start" and "end" pointers after adding a possibly wild length to "start", compare the length to the difference of the pointers instead. Remove now redundant "negative" length test.
2017-10-05Update my email address.Tristan Gingold4-5/+14
Also refer to global maintainers for branch release approval.
2017-10-05bfd_set_input_errorPedro Alves5-21/+48
A downside to the 2017-10-04 PR22245 fix is that bfd_set_error can now silently accept invalid errors if/when someone passes the a value of the wrong enumeration type, which previously would be caught by the -Wenum-conversion warning. PR 22245 * bfd.c (bfd_set_error): Revert 2017-10-04 change. Remove ellipsis parameter. Split out bfd_error_on_input code to.. (bfd_set_input_error): .. New function. * archive.c (_bfd_write_archive_contents): Use bfd_set_input_error. * vms-lib.c (_bfd_vms_lib_write_archive_contents): Likewise. * bfd-in2.h: Regenerate.
2017-10-04Add an assembler test for PR gas/21167H.J. Lu4-0/+22
PR gas/21167 * testsuite/gas/elf/elf.exp: Run group3. * testsuite/gas/elf/group3.d: New file. * testsuite/gas/elf/group3.s: Likewise.
2017-10-05bfd_error_on_input is for archivesAlan Modra2-1/+6
* elflink.c (elf_link_input_bfd): Correct ctor/dtor in init_array/ fini_array error value.
2017-10-05Automatic date update in version.inGDB Administrator1-1/+1
2017-10-05PR21167, relocation sections not included in groupsAlan Modra12-53/+111
This fixes a wart I've known about for years, but haven't done anything about because BFD treats relocation sections as an adjunct to the section they relocate. SHF_GROUP on the section thus implicitly applies to its relocation section(s), but it is an error that the reloc sections aren't part of the group. Like many patches to gas, this wasn't as straightforward as it could be due to a number of backends, i386, cr16 and others, removing relocs in tc_get_reloc rather than marking them as "done" earlier in md_apply_reloc. So it isn't possible for the group support to reliably detect the presence of relocs by looking at fixups earlier than write_relocs. However the group support needs to create signature symbols, and that must be done before the symbol table is frozen, before write_relocs. So split off the group sizing from elf_adjust_symtab and put it in elf_frob_file_after_relocs. bfd/ PR 21167 * elf.c (_bfd_elf_setup_sections): Don't trim reloc sections from groups. (_bfd_elf_init_reloc_shdr): Pass sec_hdr, use it to copy SHF_GROUP flag from section. (elf_fake_sections): Adjust calls. Exit immediately on failure. (bfd_elf_set_group_contents): Add associated reloc section indices to group contents gas/ PR 21167 * config/obj-elf.c (struct group_list): Delete elt_count. (groups): New static. (build_group_lists): Don't count elements. (elf_adjust_symtab): Use groups rather than auto list. Set up pointer from group member to SHT_GROUP section. Don't size SHT_GROUP section or clean up here.. (elf_frob_file_after_relocs): ..do so here instead. * testsuite/gas/arc/jli-1.d, * testsuite/gas/elf/groupautob.d, * testsuite/gas/mips/compact-eh-eb-2.d, * testsuite/gas/mips/compact-eh-eb-5.d, * testsuite/gas/mips/compact-eh-el-2.d, * testsuite/gas/mips/compact-eh-el-5.d: Adjust. ld/ PR 21167 * testsuite/ld-elf/group9b.d: Adjust for relocs included in group.
2017-10-04Fix "Remote 'g' packet reply is too long" problems with multiple inferiorsPedro Alves8-30/+169
When debugging two inferiors (or more) against gdbserver, and the inferiors have different architectures, such as e.g., on x86_64 GNU/Linux and one inferior is 64-bit while the other is 32-bit, then GDB can get confused with the different architectures in a couple spots. In both cases I ran into, GDB incorrectly ended up using the architecture of whatever happens to be the selected inferior instead of the architecture of some other given inferior: #1 - When parsing the expedited registers in stop replies. #2 - In the default implementation of the target_thread_architecture target method. These resulted in instances of the infamous "Remote 'g' packet reply is too long" error. For example, with the test added in this commit, we get: ~~~ Continuing. Remote 'g' packet reply is too long (expected 440 bytes, got 816 bytes): ad064000000000000[snip] (gdb) FAIL: gdb.multi/multi-arch.exp: inf1 event with inf2 selected: continue to hello_loop c Continuing. Truncated register 50 in remote 'g' packet (gdb) PASS: gdb.multi/multi-arch.exp: inf2 event with inf1 selected: c ~~~ This commit fixes that. gdb/ChangeLog: 2017-10-04 Pedro Alves <palves@redhat.com> * remote.c (get_remote_arch_state): New 'gdbarch' parameter. Use it instead of target_gdbarch. (get_remote_state, get_remote_packet_size): Adjust get_remote_arch_state calls, passing down target_gdbarch explicitly. (packet_reg_from_regnum, packet_reg_from_pnum): New parameter 'gdbarch' and use it instead of target_gdbarch. (get_memory_packet_size): Adjust get_remote_arch_state calls, passing down target_gdbarch explicitly. (struct stop_reply) <arch>: New field. (remote_parse_stop_reply): Use the stopped thread's architecture, not the current inferior's. Save the architecture in the stop_reply. (process_stop_reply): Use the stop reply's architecture. (process_g_packet, remote_fetch_registers) (remote_prepare_to_store, store_registers_using_G) (remote_store_registers): Adjust get_remote_arch_state calls, using the regcache's architecture. (remote_get_trace_status): Adjust get_remote_arch_state calls, passing down target_gdbarch explicitly. * spu-multiarch.c (spu_thread_architecture): Defer to the target beneath instead of calling target_gdbarch. * target.c (default_thread_architecture): Use the specified inferior's architecture, instead of the current inferior's architecture (via target_gdbarch). gdb/testsuite/ChangeLog: 2017-10-04 Pedro Alves <palves@redhat.com> * gdb.multi/hangout.c: Include <unistd.h>. (hangout_loop): New function. (main): Call alarm. Call hangout_loop in a loop. * gdb.multi/hello.c: Include <unistd.h>. (hello_loop): New function. (main): Call alarm. Call hangout_loop in a loop. * gdb.multi/multi-arch.exp: Test running to a breakpoint one inferior with the other selected.
2017-10-04Reimplement support for "maint print registers" with no running inferior yetPedro Alves2-15/+24
A following patch will change the default target_thread_architecture method, like this: struct gdbarch * default_thread_architecture (struct target_ops *ops, ptid_t ptid) { - return target_gdbarch (); + inferior *inf = find_inferior_ptid (ptid); + gdb_assert (inf != NULL); + return inf->gdbarch; } This is because target_gdbarch is really just current_inferior()->gdbarch, and it's wrong to return that architecture when the inferior of the passed in PTID is NOT the current inferior -- the inferior for PTID may be running a different architecture. E.g., a mix of 64-bit and 32-bit inferiors in the same debug session. Doing that change above however exposes a problem in "maint print registers", caught be the testsuite: -PASS: gdb.base/maint.exp: maint print registers +FAIL: gdb.base/maint.exp: maint print registers (GDB internal error) ... gdb/inferior.c:309: internal-error: inferior* find_inferior_pid(int): Assertion `pid != 0' failed. A problem internal to GDB has been detected, The call stack looks like this: #0 0x000000000068b707 in internal_error(char const*, int, char const*, ...) (file=0xa9b958 "gdb/inferior.c", line=309, fmt=0xa9b8e0 "%s: Assertion `%s' failed.") at gdb/common/errors.c:54 #1 0x00000000006e1c40 in find_inferior_pid(int) (pid=0) at gdb/inferior.c:309 #2 0x00000000006e1c8d in find_inferior_ptid(ptid_t) (ptid=...) at gdb/inferior.c:323 #3 0x00000000007c18dc in default_thread_architecture(target_ops*, ptid_t) (ops=0xf86d60 <dummy_target>, ptid=...) at gdb/target.c:3134 #4 0x00000000007b5414 in delegate_thread_architecture(target_ops*, ptid_t) (self=0xf86d60 <dummy_target>, arg1=...) at gdb/target-delegates.c:2527 #5 0x00000000007647b3 in get_thread_regcache(ptid_t) (ptid=...) at gdb/regcache.c:466 #6 0x00000000007647ff in get_current_regcache() () at gdb/regcache.c:475 #7 0x0000000000767495 in regcache_print(char const*, regcache_dump_what) (args=0x0, what_to_dump=regcache_dump_none) at gdb/regcache.c:1599 #8 0x0000000000767550 in maintenance_print_registers(char const*, int) (args=0x0, from_tty=1) at gdb/regcache.c:1613 I.e., the test does "maint print registers" while the inferior is not running yet. This is expected to work, and there's already a hack in get_thread_arch_regcache to make it work. Instead of pilling on hacks in the internal of regcache and target_ops, this commit moves the null_ptid special casing to where it belongs -- higher up in the call chain in the implementation of "maint print registers" & co directly. gdb/ChangeLog: 2017-10-04 Pedro Alves <palves@redhat.com> * regcache.c (get_thread_arch_regcache): Remove null_ptid special case. (regcache_print): Handle !target_has_registers here instead.
2017-10-04Redesign mock environment for gdbarch selftestsPedro Alves7-63/+119
A following patch will remove this hack from within regcache's implementation: struct regcache * get_thread_arch_regcache (ptid_t ptid, struct gdbarch *gdbarch) { struct address_space *aspace; /* For the benefit of "maint print registers" & co when debugging an executable, allow dumping the regcache even when there is no thread selected (target_thread_address_space internal-errors if no address space is found). Note that normal user commands will fail higher up on the call stack due to no target_has_registers. */ aspace = (ptid_equal (null_ptid, ptid) ? NULL : target_thread_address_space (ptid)); i.e., it'll no longer be possible to try to build a regcache for null_ptid. That change alone would regress the gdbarch self tests though, causing this: (gdb) maintenance selftest [...] Running selftest register_to_value. src/gdb/inferior.c:309: internal-error: inferior* find_inferior_pid(int): Assertion `pid != 0' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) FAIL: gdb.gdb/unittest.exp: maintenance selftest (GDB internal error) The problem is that the way the mocking environment for those unit tests is written is a bit fragile: it creates a special purpose regcache (and sentinel's frame), using whatever is the current inferior_ptid (usually null_ptid), and assumes get_current_regcache will find that in the regcache::current_regcache list. This commit changes the way the mock environment is created. It eliminates the special regcache and frame and instead creates a fuller mock environment, with a custom mock target_ops, and then a mock inferior and thread "running" on that target. If there's already a running target when you type "maint selftest", then we error out, instead of pushing a new target on top of the existing one (and thus killing the debug session). This results in: (gdb) maint selftest (...) Self test failed: arch i386: target already pushed Self test failed: arch i386:x86-64: target already pushed Self test failed: arch i386:x64-32: target already pushed Self test failed: arch i8086: target already pushed Self test failed: arch i386:intel: target already pushed Self test failed: arch i386:x86-64:intel: target already pushed Self test failed: arch i386:x64-32:intel: target already pushed Self test failed: arch i386:nacl: target already pushed Self test failed: arch i386:x86-64:nacl: target already pushed Self test failed: arch i386:x64-32:nacl: target already pushed Self test failed: self-test failed at /home/pedro/gdb/mygit/src/gdb/selftest-arch.c:86 (...) Ran 19 unit tests, 1 failed I think that's OK, because self tests are really meant to be run from a clean state right after GDB is started. I'm adding that erroring out just as safe measure just in case someone types "maint selftest" on the command line while already debugging something (as I've done it). (In my multi-target branch, where this patch originated from, we don't actually need to error out, because there each inferior has its own target stack). Also, note that the current code was doing: current_inferior()->gdbarch = gdbarch; without taking care to restore the previous gdbarch. This means that GDB's state was being left inconsistent after running the self tests, further supporting the point that there's probably not much expectation that mixing "maint selftests" and regular debugging in the same GDB invocation really works. This patch fixes that, regardless. gdb/ChangeLog: 2017-10-04 Pedro Alves <palves@redhat.com> * frame.c (create_test_frame): Delete. * frame.h (create_test_frame): Delete. * gdbarch-selftests.c: Include gdbthread.h and target.h. (class regcache_test): Delete. (test_target_has_registers, test_target_has_stack) (test_target_has_memory, test_target_prepare_to_store) (test_target_store_registers): New functions. (test_target_ops): New class. (register_to_value_test): Error out if there's already a process_stratum (or higher) target pushed. Create a fuller mock environment, with mock target_ops, inferior, address space, thread and inferior_ptid. * progspace.c (struct address_space): Move to ... * progspace.h (struct address_space): ... here. * regcache.h (regcache::~regcache, regcache::raw_write) [GDB_SELF_TEST]: No longer virtual.
2017-10-04Fix -list-thread-groups --available logic and add testSimon Marchi5-1/+111
New in v3: - Replace use_gdb_stub with can_spawn_for_attach. - Call kill_wait_spawned_process on spawn_ids. Commit Use std::set in mi-main.c 52f9abe4c739f42cc5f80b2629276493ac6306f9 changed the logic of the "-list-thread-groups --available" by mistake when a pid is passed. It prints all the processes except the one specified by the given pid. The correct behavior is to only print the process corresponding to that pid. this patch fixes that and adds a test. gdb/ChangeLog: * mi/mi-main.c (list_available_thread_groups): Reverse filter logic. gdb/testsuite/ChangeLog: * gdb.mi/list-thread-groups-available.exp: New file. * gdb.mi/list-thread-groups-available.c: New file.
2017-10-04Move code out of 'between TRY and CATCH'Pedro Alves2-1/+7
I tried building GDB with TRY/CATCH mapped to raw C++ try/catch (by defining GDB_XCPT to GDB_XCPT_RAW_TRY in gdb/common/common-exceptions.h), and that caught a case of code written between try and catch. This commit fixes it. gdb/ChangeLog: 2017-10-04 Pedro Alves <palves@redhat.com> * guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Move code out of 'between TRY and CATCH'.
2017-10-04Add missing-END_CATCH detection/protection (to gdb's TRY/CATCH/END_CATCH)Pedro Alves1-0/+9
(Adding missing ChangeLog entry) While we still have cleanups (i.e., make_cleanup & co), we must be sure to add END_CATCH at the end of a TRY/CATCH/END_CATCH construct. However, it's currently too easy to miss adding the END_CATCH, because the code compiles anyway without it. I realized this when I noticed that another patch I was working on missed several adding END_CATCH in several new TRY/CATCH uses. This commit fixes that by making TRY open a new scope that is only closed by END_CATCH. This way, if you forget to add the END_CATCH, then compilation fails due to the unbalanced curly braces. This caught a couple places where we were missing END_CATCH in current master, also fixed by the patch. gdb/ChangeLog: 2017-10-04 Pedro Alves <palves@redhat.com> * cli/cli-cmds.c (complete_command): Add missing END_CATCH. * common/common-exceptions.h (TRY): Open an outermost scope. Expand intro comment. (CATCH): Reindent. (END_CATCH): Close the outermost scope. * completer.c (complete_line_internal): Add missing END_CATCH.