aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2014-10-01Exit code of exited inferiors in -list-thread-groupsSimon Marchi9-2/+149
Don't reset the exit code at inferior exit and print it in -list-thread-groups. gdb/ChangeLog: * NEWS: Announce new exit-code field in -list-thread-groups output. * inferior.c (exit_inferior_1): Don't clear exit code. (inferior_appeared): Clear exit code. * mi/mi-main.c (print_one_inferior): Add printing of the exit code. gdb/testsuite/ChangeLog: * gdb.mi/mi-exit-code.exp: New file. * gdb.mi/mi-exit-code.c: New file. gdb/doc/ChangeLog: * gdb.texinfo (Miscellaneous gdb/mi Commands): Document new exit-code field in -list-thread-groups output.
2014-10-01Add read-only markers to generated gdb/regformats/ .dat filesPedro Alves64-63/+193
We have read-only markers in most generated sources already, so that Emacs/Vi users won't edit them accidentally, but were missing them on the generated gdb/regformats/ .dat files. gdb/ 2014-10-01 Pedro Alves <palves@redhat.com> * features/Makefile ($(outdir)/%.dat): Output "THIS FILE IS GENERATED" along with emacs/vi read-only markers. * regformats/aarch64.dat: Regenerate. * regformats/arm-with-iwmmxt.dat: Regenerate. * regformats/arm-with-neon.dat: Regenerate. * regformats/arm-with-vfpv2.dat: Regenerate. * regformats/arm-with-vfpv3.dat: Regenerate. * regformats/i386/amd64-avx-linux.dat: Regenerate. * regformats/i386/amd64-avx.dat: Regenerate. * regformats/i386/amd64-avx512-linux.dat: Regenerate. * regformats/i386/amd64-avx512.dat: Regenerate. * regformats/i386/amd64-linux.dat: Regenerate. * regformats/i386/amd64-mpx-linux.dat: Regenerate. * regformats/i386/amd64-mpx.dat: Regenerate. * regformats/i386/amd64.dat: Regenerate. * regformats/i386/i386-avx-linux.dat: Regenerate. * regformats/i386/i386-avx.dat: Regenerate. * regformats/i386/i386-avx512-linux.dat: Regenerate. * regformats/i386/i386-avx512.dat: Regenerate. * regformats/i386/i386-linux.dat: Regenerate. * regformats/i386/i386-mmx-linux.dat: Regenerate. * regformats/i386/i386-mmx.dat: Regenerate. * regformats/i386/i386-mpx-linux.dat: Regenerate. * regformats/i386/i386-mpx.dat: Regenerate. * regformats/i386/i386.dat: Regenerate. * regformats/i386/x32-avx-linux.dat: Regenerate. * regformats/i386/x32-avx.dat: Regenerate. * regformats/i386/x32-avx512-linux.dat: Regenerate. * regformats/i386/x32-avx512.dat: Regenerate. * regformats/i386/x32-linux.dat: Regenerate. * regformats/i386/x32.dat: Regenerate. * regformats/microblaze-with-stack-protect.dat: Regenerate. * regformats/mips-dsp-linux.dat: Regenerate. * regformats/mips-linux.dat: Regenerate. * regformats/mips64-dsp-linux.dat: Regenerate. * regformats/mips64-linux.dat: Regenerate. * regformats/nios2-linux.dat: Regenerate. * regformats/rs6000/powerpc-32.dat: Regenerate. * regformats/rs6000/powerpc-32l.dat: Regenerate. * regformats/rs6000/powerpc-64l.dat: Regenerate. * regformats/rs6000/powerpc-altivec32l.dat: Regenerate. * regformats/rs6000/powerpc-altivec64l.dat: Regenerate. * regformats/rs6000/powerpc-cell32l.dat: Regenerate. * regformats/rs6000/powerpc-cell64l.dat: Regenerate. * regformats/rs6000/powerpc-e500l.dat: Regenerate. * regformats/rs6000/powerpc-vsx32l.dat: Regenerate. * regformats/rs6000/powerpc-vsx64l.dat: Regenerate. * regformats/s390-linux32.dat: Regenerate. * regformats/s390-linux32v1.dat: Regenerate. * regformats/s390-linux32v2.dat: Regenerate. * regformats/s390-linux64.dat: Regenerate. * regformats/s390-linux64v1.dat: Regenerate. * regformats/s390-linux64v2.dat: Regenerate. * regformats/s390-te-linux64.dat: Regenerate. * regformats/s390x-linux64.dat: Regenerate. * regformats/s390x-linux64v1.dat: Regenerate. * regformats/s390x-linux64v2.dat: Regenerate. * regformats/s390x-te-linux64.dat: Regenerate. * regformats/tic6x-c62x-linux.dat: Regenerate. * regformats/tic6x-c62x.dat: Regenerate. * regformats/tic6x-c64x-linux.dat: Regenerate. * regformats/tic6x-c64x.dat: Regenerate. * regformats/tic6x-c64xp-linux.dat: Regenerate. * regformats/tic6x-c64xp.dat: Regenerate.
2014-10-01features/Makefile: Make 'make cfiles' default to generating all C filesPedro Alves2-4/+124
This makes it easier to rebuild all GDB's generated target description C files. It also clarifies the comments a bit. One might think we need a GDB configured for the particular arquitecture (--target=foo). But a build that includes support for the target description is sufficient. (GDB rejects target descriptions that explicitly specify the architecture, with an <architecture> element, if the architecture is unknown.) Tested that "make clean-cfiles" deletes all .c files under src/gdb/features/, and that "make cfiles" generates them all without error, and that diffing the newly generated C files against master comes out an empty diff. gdb/ 2014-10-01 Pedro Alves <palves@redhat.com> * features/Makefile: Update comments. (XMLTOC): List all xml files we build C files from. (clean-cfiles): New rule.
2014-10-01Regenerate AVX512 target description C filesPedro Alves5-4/+15
I regenerated all the .c files under src/gdb/features/ and this is what I got. gdb/ 2014-10-01 Pedro Alves <palves@redhat.com> * features/i386/amd64-avx512-linux.c: Regenerate. * features/i386/amd64-avx512.c: Regenerate. * features/i386/x32-avx512-linux.c: Regenerate. * features/i386/x32-avx512.c: Regenerate.
2014-10-01gdb/regformats: Don't build .dat files that aren't used by GDBserverPedro Alves2-1/+5
The only reason .dat files exist is for GBBserver to use them in its build system. A few .dat files are listed as targets for generation that shouldn't. The target descriptions these files are built from aren't used by GDBserver. They're fallback descriptions GDB itself has baked in. Remove them from the list of .dat files to be generated, otherwise a plain "make" under src/gdb/features/ generates new .dat files that aren't even in the tree today. gdb/ 2014-10-01 Pedro Alves <palves@redhat.com> * features/Makefile (WHICH): Remove arm-with-m, arm-with-m-fpa-layout and arm-with-m-vfp-d16.
2014-10-01features/Makefile: Add a "clean" rule.Pedro Alves2-0/+7
So that we can do "make clean all" to regenerate all the renerated .dat files. gdb/ 2014-10-01 Pedro Alves <palves@redhat.com> * features/Makefile (clean): New rule.
2014-10-01Fix features/i386/64bit-avx512.xmlPedro Alves2-5/+10
This file's format is invalid, as it's missing some end quotes. I noticed this because I tried to regenerate all the .dat files in gdb/regformats/. I got: sh ../../move-if-change ../regformats/i386/x32-avx.tmp ../regformats/i386/x32-avx.dat echo "# DO NOT EDIT: generated from i386/x32-avx512.xml" > ../regformats/i386/x32-avx512.tmp echo "name:`echo x32-avx512 | sed 's/-/_/g'`" >> ../regformats/i386/x32-avx512.tmp echo "xmltarget:x32-avx512.xml" >> ../regformats/i386/x32-avx512.tmp echo "expedite:rbp,rsp,rip" \ >> ../regformats/i386/x32-avx512.tmp xsltproc --path "/home/pedro/gdb/mygit/src/gdb/features" --xinclude number-regs.xsl i386/x32-avx512.xml | \ xsltproc sort-regs.xsl - | \ xsltproc gdbserver-regs.xsl - >> ../regformats/i386/x32-avx512.tmp i386/64bit-avx512.xml:81: parser error : Unescaped '<' not allowed in attributes values <reg name="zmm11h" bitsize="256" type="v2ui128/> ^ i386/64bit-avx512.xml:81: parser error : attributes construct error <reg name="zmm11h" bitsize="256" type="v2ui128/> ^ i386/64bit-avx512.xml:81: parser error : Couldn't find end of Start Tag reg line 80 <reg name="zmm11h" bitsize="256" type="v2ui128/> ^ i386/64bit-avx512.xml:82: parser error : Unescaped '<' not allowed in attributes values <reg name="zmm12h" bitsize="256" type="v2ui128/> ^ i386/64bit-avx512.xml:82: parser error : attributes construct error <reg name="zmm12h" bitsize="256" type="v2ui128/> ^ ... i386/x32-avx512.xml:17: element include: XInclude error : could not load i386/64bit-avx512.xml, and no fallback was found -:1: parser error : Document is empty ^ -:1: parser error : Start tag expected, '<' not found ^ unable to parse - -:1: parser error : Document is empty ^ -:1: parser error : Start tag expected, '<' not found ^ unable to parse - make: *** [../regformats/i386/x32-avx512.dat] Error 6 Interestingly, gdb/expat manages to grok the broken file. gdb/ 2014-10-01 Pedro Alves <palves@redhat.com> * features/i386/64bit-avx512.xml (zmm10h, zmm11h, zmm12h, zmm13h) (zmm14h): Add missing end quotes.
2014-10-01Aarch64: Make CPSR a 32-bit register again in the target descriptionPedro Alves3-2/+7
This reverts commit a4d9ba85 - 'AARCH64: Change cpsr type to be 64bit.'. Even though Linux's ptrace exposes CPSR as 64-bit, CPSR is really 32-bit, and basing GDB's fundamentals on a particular OS's ptrace(2) implementation is a bad idea. In addition, while that commit intended to fix big endian Aarch64, it ended up breaking floating point debugging against GDBserver, for both big and little endian, because it changed the CPSR to be 64-bit in the features/aarch64-core.xml file, but missed regenerating the regformats/aarch64.dat file. If we generate it now, we see this: diff --git c/gdb/regformats/aarch64.dat w/gdb/regformats/aarch64.dat index afe1028..0d32183 100644 --- c/gdb/regformats/aarch64.dat +++ w/gdb/regformats/aarch64.dat @@ -35,7 +35,7 @@ expedite:x29,sp,pc 64:x30 64:sp 64:pc -32:cpsr +64:cpsr 128:v0 128:v1 128:v2 IOW, that commit left regformats/aarch64.dat still considering CPSR as 32-bits. regformats/aarch64.dat is used by GDBserver for its internal regcache layout, and for the g/G packet register block. See the generated aarch64.c file in GDBserver's build dir. So the target description xml file that GDBserver reports to GDB is now claiming that CPSR is 64-bit, but what GDBserver actually puts in the g/G register packets is 32-bits. Because GDB thinks CPSR is 64-bit (because that's what the XML description says), GDB will be reading the remaining 32-bit bits of CPSR out of v0 (the register immediately afterwards), and then all the registers that follow CPSR in the register packet end up wrong in GDB, because they're being read from the wrong offsets... gdb/ 2014-10-01 Pedro Alves <palves@redhat.com> * features/aarch64-core.xml (cpsr): Change back to 32-bit. * features/aarch64.c: Regenerate.
2014-09-30Refactor native follow-fork.Don Breazeal6-423/+320
This patch reorganizes the code that implements follow-fork and detach-on-fork in preparation for implementation of those features for the extended-remote target. The function linux-nat.c:linux_child_follow_fork contained target-independent code mixed in with target-dependent code. The target-independent pieces need to be accessible for the host-side implementation of follow-fork for extended-remote Linux targets. The changes are fairly mechanical. A new routine, follow_fork_inferior, is implemented in infrun.c, containing those parts of linux_child_follow_fork that manage inferiors and the inferior list. The parts of linux_child_follow_fork that deal with LWPs and target-specifics were left in-place. Although the order of some operations was changed, the resulting functionality was not. Modifications were made to the other native target follow-fork functions, inf_ttrace_follow_fork and inf_ptrace_follow_fork, that should allow them to work with follow_fork_inferior. Some other adjustments were necessary in inf-ttrace.c. The changes to inf-ttrace.c and inf-ptrace.c were not tested. gdb/ChangeLog: * inf-ptrace.c (inf_ptrace_follow_fork): Remove target-independent code so as to work with follow_fork_inferior. * inf-ttrace.c (inf_ttrace_follow_fork): Ditto. (inf_ttrace_create_inferior): Remove reference to inf_ttrace_vfork_ppid. (inf_ttrace_attach): Ditto. (inf_ttrace_detach): Ditto. (inf_ttrace_kill): Use current_inferior instead of inf_ttrace_vfork_ppid. (inf_ttrace_wait): Eliminate use of inf_ttrace_vfork_ppid, report TARGET_WAITKIND_VFORK_DONE event, delete HACK that switched the inferior away from the parent. * infrun.c (follow_fork): Call follow_fork_inferior instead of target_follow_fork. (follow_fork_inferior): New function. (follow_inferior_reset_breakpoints): Make function static. * infrun.h (follow_inferior_reset_breakpoints): Remove declaration. * linux-nat.c (linux_child_follow_fork): Move target-independent code to infrun.c:follow_fork_inferior.
2014-09-30Clean up after generated c files for MIPS DSP targetsJames Hogan2-1/+7
The gdbserver "clean" Makefile target wasn't removing the generated files mips-dsp-linux.c and mips64-dsp-linux.c. Add rm commands to delete them. gdb/gdbserver/ChangeLog: * Makefile.in (clean): Add rm -f commands for mips-dsp-linux.c and mips64-dsp-linux.c.
2014-09-30Drop 'regset_from_core_section' gdbarch methodAndreas Arnez6-66/+15
Now that all instances of the regset_from_core_section gdbarch method have been replaced by the new iterator method, delete the obsolete method from the gdbarch interface. Adjust all invocations and references to it. gdb/ChangeLog: * gdbarch.sh (regset_from_core_section): Remove gdbarch method. * gdbarch.c: Regenerate. * gdbarch.h: Likewise. * corelow.c (sniff_core_bfd): Drop presence check for deleted gdbarch method 'regset_from_core_section'. (get_core_register_section): Remove handling for the case that regset == NULL and regset_from_core_section is defined. (get_core_registers): Drop check for deleted method. * procfs.c (procfs_do_thread_registers): Adjust comment.
2014-09-30Linux targets: drop fall back to target method for 'make_corefile_notes'Andreas Arnez4-85/+28
Now that all Linux targets use the regset iterator, the fall back to the deprecated target method is dropped. gdb/ChangeLog: * linux-nat.c (linux_nat_collect_thread_registers): Remove. (linux_nat_make_corefile_notes): Remove. (linux_target_install_ops): Do not set target method 'make_corefile_notes'. * linux-tdep.c (struct linux_corefile_thread_data)<collect>: Remove field. (linux_corefile_thread_callback): Instead of args->collect, call linux_collect_thread_registers. (linux_make_corefile_notes): Remove 'collect' parameter. Return NULL unless there is a regset iterator. (linux_make_corefile_notes_1): Remove. (linux_init_abi): Replace reference to linux_make_corefile_notes_1 by linux_make_corefile_notes. * linux-tdep.h (linux_make_corefile_notes): Remove prototype.
2014-09-30Drop target method 'fbsd_make_corefile_notes'Andreas Arnez3-82/+7
Now that all users of the target method 'fbsd_make_corefile_notes' have been converted to the version in fbsd-tdep.c, the old method is removed. gdb/ChangeLog: * fbsd-nat.c (find_signalled_thread, find_stop_signal) (fbsd_collect_regset_section_cb, fbsd_make_corefile_notes): Remove. * fbsd-nat.h (fbsd_make_corefile_notes): Remove prototype.
2014-09-30XTENSA: Migrate from 'regset_from_core_section' to ↵Andreas Arnez2-16/+17
'iterate_over_regset_sections' For Xtensa targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * xtensa-tdep.c (xtensa_regset_from_core_section): Remove. (xtensa_iterate_over_regset_sections): New. (xtensa_gdbarch_init): Adjust gdbarch initialization.
2014-09-30VAX: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez2-11/+15
For VAX targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * vax-tdep.c (vax_regset_from_core_section): Remove. (vax_iterate_over_regset_sections): New. (vax_gdbarch_init): Adjust gdbarch initialization.
2014-09-30TILEGX: Migrate from 'regset_from_core_section' to ↵Andreas Arnez2-10/+19
'iterate_over_regset_sections' For TILE-Gx GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * tilegx-linux-tdep.c (TILEGX_LINUX_SIZEOF_GREGSET): New macro. (tilegx_regset_from_core_section): Remove. (tilegx_iterate_over_regset_sections): New. (tilegx_linux_init_abi): Adjust gdbarch initialization.
2014-09-30SPARC: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez5-16/+27
For SPARC targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * sparc-tdep.c (sparc_regset_from_core_section): Remove. (sparc_iterate_over_regset_sections): New. (sparc32_gdbarch_init): Adjust gdbarch initialization. * configure.tgt (gdb_target_obs): Add fbsd-tdep.o for SPARC FreeBSD targets. * sparc64fbsd-tdep.c (fbsd-tdep.h): Include. (sparc64fbsd_init_abi): Call fbsd_init_abi. * sparc64fbsd-nat.c (_initialize_sparc64fbsd_nat): Do not set target method 'make_corefile_notes'.
2014-09-30SH: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez5-10/+30
For Super-H targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * sh-linux-tdep.c (sh_linux_init_abi): Set tdep fields 'sizeof_gregset' and 'sizeof_fpregset'. * sh-tdep.c (sh_regset_from_core_section): Remove. (sh_iterate_over_regset_sections): New. (sh_gdbarch_init): Adjust gdbarch initialization. * sh-tdep.h (struct gdbarch_tdep): New fields sizeof_gregset and sizeof_fpregset. * shnbsd-tdep.c (shnbsd_init_abi): Set tdep field 'sizeof_gregset'.
2014-09-30SCORE: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez2-15/+16
For S+core targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * score-tdep.c (score7_linux_regset_from_core_section): Remove. (score7_linux_iterate_over_regset_sections): New. (score_gdbarch_init): Adjust gdbarch initialization.
2014-09-30PPC: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez7-61/+69
For PPC targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * configure.tgt (gdb_target_obs): Add fbsd-tdep.o for PowerPC FreeBSD targets. * ppcfbsd-nat.c (_initialize_ppcfbsd_nat): Do not set target method 'make_corefile_notes'. * ppcfbsd-tdep.c (fbsd-tdep.h): Include. (ppcfbsd_regset_from_core_section): Remove. (ppcfbsd_iterate_over_regset_sections): New. (ppcfbsd_init_abi): Call fbsd_init_abi. Adjust gdbarch initialization. * ppcnbsd-tdep.c (ppcnbsd_regset_from_core_section): Remove. (ppcnbsd_iterate_over_regset_sections): New. (ppcnbsd_init_abi): Adjust. * ppcobsd-tdep.c (ppcobsd_regset_from_core_section): Remove. (ppcobsd_iterate_over_regset_sections): New. (ppcobsd_init_abi): Adjust. * rs6000-aix-tdep.c (rs6000_aix_regset_from_core_section): Remove. (rs6000_aix_iterate_over_regset_sections): New. (rs6000_aix_init_osabi): Adjust.
2014-09-30NIOS2: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez2-10/+21
For Nios II GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * nios2-linux-tdep.c (NIOS2_GREGS_SIZE): New macro. (nios2_regset_from_core_section): Remove. (nios2_iterate_over_regset_sections): New. (nios2_linux_init_abi): Adjust gdbarch initialization.
2014-09-30MN10300: Migrate from 'regset_from_core_section' to ↵Andreas Arnez2-11/+18
'iterate_over_regset_sections'. For MN10300 GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * mn10300-linux-tdep.c (am33_regset_from_core_section): Remove. (am33_iterate_over_regset_sections): New. (am33_linux_init_osabi): Adjust gdbarch initialization.
2014-09-30MIPS: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez4-57/+50
For MIPS targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * mips-linux-tdep.c (mips_linux_regset_from_core_section): Remove. (mips_linux_iterate_over_regset_sections): New. (mips_linux_init_abi): Adjust gdbarch initialization. * mips64obsd-tdep.c (mips64obsd_regset_from_core_section): Remove. (mips64obsd_iterate_over_regset_sections): New. (mips64obsd_init_abi): Adjust. * mipsnbsd-tdep.c (mipsnbsd_regset_from_core_section): Remove. (mipsnbsd_iterate_over_regset_sections): New. (mipsnbsd_init_abi): Adjust.
2014-09-30M88K: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez2-11/+15
For M88K targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * m88k-tdep.c (m88k_regset_from_core_section): Remove. (m88k_iterate_over_regset_sections): New. (m88k_gdbarch_init): Adjust gdbarch initialization.
2014-09-30IA64: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez2-15/+15
For IA-64 GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * ia64-linux-tdep.c (ia64_linux_regset_from_core_section): Remove. (ia64_linux_iterate_over_regset_sections): New. (ia64_linux_init_abi): Adjust gdbarch initialization.
2014-09-30M68K: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez3-31/+29
For m68k BSD and GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * m68kbsd-tdep.c (m68kbsd_regset_from_core_section): Remove. (m68kbsd_iterate_over_regset_sections): New. (m68kbsd_init_abi): Adjust gdbarch initialization. * m68klinux-tdep.c (m68k_linux_regset_from_core_section): Remove. (m68k_linux_iterate_over_regset_sections): New. (m68k_linux_init_abi): Adjust gdbarch initialization.
2014-09-30M32R: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez2-9/+17
For m32r GNU/Linux targets, don't define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * m32r-linux-tdep.c (M32R_LINUX_GREGS_SIZE): New macro. (m32r_linux_regset_from_core_section): Remove. (m32r_linux_iterate_over_regset_sections): New. (m32r_linux_init_abi): Adjust gdbarch initialization.
2014-09-30X86: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez11-62/+75
For all I386 and AMD64 targets, replace all occurrences of regset_from_core_section by the iterator method. gdb/ChangeLog: * amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Remove. (amd64obsd_iterate_over_regset_sections): New. (amd64obsd_core_init_abi): Adjust gdbarch initialization. * i386-cygwin-tdep.c (i386_windows_regset_from_core_section): Remove. (i386_cygwin_init_abi): Clear tdep->sizeof_fpregset. Drop regset_from_core_section initialization. * i386-tdep.c (i386_regset_from_core_section): Remove. (i386_iterate_over_regset_sections): New. (i386_gdbarch_init): Adjust gdbarch initialization. * i386-tdep.h (i386_regset_from_core_section): Remove prototype. (i386_iterate_over_regset_sections): New prototype. * i386obsd-tdep.c (i386obsd_aout_regset_from_core_section): Remove. (i386obsd_aout_iterate_over_regset_sections): New. (i386obsd_aout_init_abi): Adjust gdbarch initialization. * configure.tgt (gdb_target_obs): Add fbsd-tdep.o for all x86 FreeBSD targets. * amd64fbsd-tdep.c (fbsd-tdep.h): Include. (amd64fbsd_init_abi): Call fbsd_init_abi. * i386fbsd-tdep.c (fbsd-tdep.h): Include. (i386fbsd4_init_abi): Call fbsd_init_abi. * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): No longer set target method 'make_corefile_notes'. * i386fbsd-nat.c (_initialize_i386fbsd_nat): Likewise.
2014-09-30HPPA: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez5-46/+54
For HP PA-RISC targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * hppa-hpux-tdep.c (hppa_hpux_regset_from_core_section): Remove. (hppa_hpux_iterate_over_regset_sections): New. (hppa_hpux_init_abi): Adjust gdbarch initialization. * hppa-linux-tdep.c (hppa_linux_regset_from_core_section): Remove. (hppa_linux_iterate_over_regset_sections): New. (hppa_linux_init_abi): Adjust. * hppanbsd-tdep.c (hppaobsd_regset_from_core_section): Remove. (hppanbsd_iterate_over_regset_sections): New. (hppanbsd_init_abi): Adjust. * hppaobsd-tdep.c (hppaobsd_regset_from_core_section): Remove. (hppaobsd_iterate_over_regset_sections): New. (hppaobsd_init_abi): Adjust.
2014-09-30FRV: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez2-14/+17
For FR-V GNU/Linux targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * frv-linux-tdep.c (frv_linux_regset_from_core_section): Remove. (frv_linux_iterate_over_regset_sections): New. (frv_linux_init_abi): Adjust gdbarch initialization.
2014-09-30ARM: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez4-17/+24
For ARM BSD targets, don't define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * arm-tdep.h (armbsd_regset_from_core_section): Remove prototype. (armbsd_iterate_over_regset_sections): New prototype. * armbsd-tdep.c (armbsd_regset_from_core_section): Remove. (armbsd_iterate_over_regset_sections): New. * armobsd-tdep.c (armobsd_init_abi): Adjust gdbarch initialization.
2014-09-30ALPHA: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'Andreas Arnez6-70/+69
Don't define the 'regset_from_core_section' method, but the iterator method instead. Do this for GNU/Linux- as well as Net/OpenBSD-targets. In the case of GNU/Linux this should enable non-native use of the 'generate-core-file' command. gdb/ChangeLog: * alpha-linux-tdep.c (alpha_linux_regset_from_core_section): Remove. (alpha_linux_iterate_over_regset_sections): New. (alpha_linux_init_abi): Adjust gdbarch initialization. * alphabsd-tdep.h (alphanbsd_regset_from_core_section): Remove prototype. (alphanbsd_iterate_over_regset_sections): New prototype. * alphafbsd-tdep.c (alphafbsd_init_abi): Add comment for missing fbsd_init_abi invocation. * alphanbsd-tdep.c (alphanbsd_supply_gregset): Move below alphanbsd_aout_supply_gregset. Invoke the latter for the appropriate size. (alphanbsd_aout_gregset): Remove. (alphanbsd_regset_from_core_section): Remove. (alphanbsd_iterate_over_regset_sections): New. (alphanbsd_init_abi): Adjust gdbarch initialization. * alphaobsd-tdep.c (alphaobsd_init_abi): Likewise.
2014-09-30AARCH64: Migrate from 'regset_from_core_section' to ↵Andreas Arnez2-15/+18
'iterate_over_regset_sections' Don't define the 'regset_from_core_section' method, but the iterator method instead. This slightly reduces the code and enables non-native use of the 'generate-core-file' command. Also, when all instances of 'regset_from_core_section' are replaced, it can be dropped from the gdbarch interface. gdb/ChangeLog: * aarch64-linux-tdep.c (aarch64_linux_regset_from_core_section): Remove. (aarch64_linux_iterate_over_regset_sections): New. (aarch64_linux_init_abi): Adjust gdbarch initialization.
2014-09-30Add multi-arch capable 'fbsd_make_corefile_notes' variantAndreas Arnez4-1/+173
This creates a new version of the FreeBSD core file note generation logic in the new target-dependent file "fbsd-tdep.c". The new version is mostly copied from "fbsd-nat.c", but uses the iterator instead of regset_from_core_section and defines fbsd_make_corefile_notes as a gdbarch method instead of a target method. Consecutive architecture-dependent changes exploit the new version, migrating away from the target method. When all FreeBSD targets are changed, the target method can go away. gdb/ChangeLog: * fbsd-tdep.c: New file. * fbsd-tdep.h: New file. * Makefile.in (ALL_TARGET_OBS): Add fbsd-tdep.o. (HFILES_NO_SRCDIR): Add fbsd-tdep.h. (ALLDEPFILES): Add fbsd-tdep.c.
2014-09-30Add 'regset' parameter to 'iterate_over_regset_sections_cb'Andreas Arnez14-218/+220
This adds the 'regset' parameter to the iterator callback. Consequently the 'regset_from_core_section' method is dropped for all targets that provide the iterator method. This change prepares for replacing regset_from_core_section everywhere, thereby eliminating one gdbarch interface. Since the iterator is usually no more complex than regset_from_core_section alone, targets that previously didn't define core_regset_sections will then gain multi-arch capable core file generation support without increased complexity. gdb/ChangeLog: * gdbarch.sh (iterate_over_regset_sections_cb): Add regset parameter. * gdbarch.h: Regenerate. * corelow.c (sniff_core_bfd): Don't sniff if gdbarch has a regset iterator. (get_core_register_section): Add parameter 'regset' and use it, if set. Add parameter 'min_size' and verify the bfd section size against it. (get_core_registers_cb): Add parameter 'regset' and pass it to get_core_register section. For the "standard" register sections ".reg" and ".reg2", set an appropriate default for human_name. (get_core_registers): Don't abort when the gdbarch has an iterator but no regset_from_core_section. Add NULL/0 for parameters 'regset'/'min_size' in calls to get_core_register_section. * linux-tdep.c (linux_collect_regset_section_cb): Add parameter 'regset' and use it instead of calling the regset_from_core_section gdbarch method. * i386-tdep.h (struct gdbarch_tdep): Add field 'fpregset'. * i386-tdep.c (i386_supply_xstateregset) (i386_collect_xstateregset, i386_xstateregset): Moved to i386-linux-tdep.c. (i386_regset_from_core_section): Drop handling for .reg-xfp and .reg-xstate. (i386_gdbarch_init): Set tdep field 'fpregset'. Enable generic core file support only if the regset iterator hasn't been set. * i386-linux-tdep.c (i386_linux_supply_xstateregset) (i386_linux_collect_xstateregset, i386_linux_xstateregset): New. Moved from i386-tdep.c and renamed to *_linux*. (i386_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. Allow any .reg-xstate size when reading from a core file. * amd64-tdep.c (amd64_supply_xstateregset) (amd64_collect_xstateregset, amd64_xstateregset): Moved to amd64-linux-tdep.c. (amd64_regset_from_core_section): Remove. (amd64_init_abi): Set new tdep field 'fpregset'. No longer install an amd64-specific regset_from_core_section gdbarch method. * amd64-linux-tdep.c (amd64_linux_supply_xstateregset) (amd64_linux_collect_xstateregset, amd64_linux_xstateregset): New. Moved from amd64-tdep.c and renamed to *_linux*. (amd64_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. Allow any .reg-xstate size when reading from a core file. * arm-linux-tdep.c (arm_linux_regset_from_core_section): Remove. (arm_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. (arm_linux_init_abi): No longer set the regset_from_core_section gdbarch method. * ppc-linux-tdep.c (ppc_linux_regset_from_core_section): Remove. (ppc_linux_iterate_over_regset_sections): Add regset parameter to each callback invocation. (ppc_linux_init_abi): No longer set the regset_from_core_section gdbarch method. * s390-linux-tdep.c (struct gdbarch_tdep): Remove the fields gregset, sizeof_gregset, fpregset, and sizeof_fpregset. (s390_regset_from_core_section): Remove. (s390_iterate_over_regset_sections): Add regset parameter to each callback invocation. (s390_gdbarch_init): No longer set the regset_from_core_section gdbarch method. Drop initialization of deleted tdep fields.
2014-09-30Replace 'core_regset_sections' by iterator methodAndreas Arnez12-328/+312
The core_regset_sections list in gdbarch (needed for multi-arch capable core file generation support) is replaced by an iterator method. Overall, this reduces the code a bit, and it allows for more flexibility. gdb/ChangeLog: * amd64-linux-tdep.c (amd64_linux_regset_sections): Remove. (amd64_linux_iterate_over_regset_sections): New. (amd64_linux_init_abi_common): Don't install the regset section list, but the new iterator in gdbarch. * arm-linux-tdep.c (arm_linux_fpa_regset_sections) (arm_linux_vfp_regset_sections): Remove. Move combined logic... (arm_linux_iterate_over_regset_sections): ...here. New function. (arm_linux_init_abi): Set iterator instead of section list. * corelow.c (get_core_registers_cb): New function, logic moved from... (get_core_registers): ...loop body here. Use new iterator method instead of walking through the regset section list. * gdbarch.sh: Remove 'core_regset_sections'. New method 'iterate_over_regset_sections'. New typedef 'iterate_over_regset_sections_cb'. * gdbarch.c: Regenerate. * gdbarch.h: Likewise. * i386-linux-tdep.c (i386_linux_regset_sections) (i386_linux_sse_regset_sections, i386_linux_avx_regset_sections): Remove. (i386_linux_iterate_over_regset_sections): New. (i386_linux_init_abi): Don't choose a regset section list, but install new iterator in gdbarch. * linux-tdep.c (struct linux_collect_regset_section_cb_data): New. (linux_collect_regset_section_cb): New function, logic moved from... (linux_collect_thread_registers): ...loop body here. Use iterator method instead of walking through list. (linux_make_corefile_notes_1): Check for presence of iterator method instead of regset section list. * ppc-linux-tdep.c (ppc_linux_vsx_regset_sections) (ppc_linux_vmx_regset_sections, ppc_linux_fp_regset_sections) (ppc64_linux_vsx_regset_sections, ppc64_linux_vmx_regset_sections) (ppc64_linux_fp_regset_sections): Remove. Move combined logic... (ppc_linux_iterate_over_regset_sections): ...here. New function. (ppc_linux_init_abi): Don't choose from above regset section lists, but install new iterator in gdbarch. * regset.h (struct core_regset_section): Remove. * s390-linux-tdep.c (struct gdbarch_tdep): Add new fields have_linux_v1, have_linux_v2, and have_tdb. (s390_linux32_regset_sections, s390_linux32v1_regset_sections) (s390_linux32v2_regset_sections, s390_linux64_regset_sections) (s390_linux64v1_regset_sections, s390_linux64v2_regset_sections) (s390x_linux64_regset_sections, s390x_linux64v1_regset_sections) (s390x_linux64v2_regset_sections): Remove. Move combined logic... (s390_iterate_over_regset_sections): ...here. New function. Use new tdep fields. (s390_gdbarch_init): Set new tdep fields. Don't choose from above regset section lists, but install new iterator.
2014-09-30Error in build_executable_own_libs for non-native targetYao Qi2-0/+9
gdb/testsuite: 2014-09-30 Yao Qi <yao@codesourcery.com> * lib/prelink-support.exp (build_executable_own_libs): Error if the target isn't native.
2014-09-30Skip dlopen-libpthread.exp in cross testingYao Qi2-1/+6
I see the following fails on arm-linux-gnueabi, result of ldd build-git/arm/gdb/testsuite/gdb.threads/dlopen-libpthread.so is 1 output of ldd build-git/arm/gdb/testsuite/gdb.threads/dlopen-libpthread.so is not a dynamic executable child process exited abnormally FAIL: gdb.threads/dlopen-libpthread.exp: ldd dlopen-libpthread.so FAIL: gdb.threads/dlopen-libpthread.exp: ldd dlopen-libpthread.so output contains libs the test script invokes ldd (on host) for the target libraries, which is wrong. ldd can't be cross because it invokes dynamic linker with LD_TRACE_LOADED_OBJECTS and gets the dependent libraries. My first reaction to this problem is to execute ld.so on the target (like remote_exec target). When I start to hack proc build_executable_own_libs, I find it has assumptions here and there that the native testing is performed. Then I check the callers of build_executable_own_libs, and they are all skipped if isnative is false. It is reasonable to do the same in dlopen-libpthread.exp too. gdb/testsuite: 2014-09-30 Yao Qi <yao@codesourcery.com> * gdb.threads/dlopen-libpthread.exp: Skip it if isnative is false.
2014-09-29Fix library-list.dtd -> library-list-svr4.dtdJan Kratochvil2-1/+5
commit 2268b414f486239cbcc0f756f157c3e03599efac added file "features/library-list-svr4.dtd" but the added code uses "library-list.dtd" instead. Curiously after changing for a test s/name/nXme/ in the DTD making the gdbserver output non-conforming there is no warning or regression seen (tested gdb.base/shlib-call.exp, using_xfer is still 1). I did not check more why the DTD conformance verification does not work. gdb/ChangeLog 2014-09-29 Jan Kratochvil <jan.kratochvil@redhat.com> * solib-svr4.c (svr4_parse_libraries): Use "library-list-svr4.dtd".
2014-09-26Don't prune program spaces when doing "maintenance info program-spaces"Simon Marchi2-4/+5
Remove the pruning of program spaces in print_program_space to remove unwanted side-effects. "info" commands and print routines should generally not change the state of the debugger. gdb/Changelog: * progspace.c (print_program_space): Don't prune program spaces before printing them.
2014-09-25infrun.c:user_visible_resume_ptid: Don't check singlestep_breakpoints_inserted_pPedro Alves2-2/+6
What matters for this function, is whether the user requested a "step", for "set scheduler-locking step", not whether GDB is doing an internal step for some reason. /* Return a ptid representing the set of threads that we will proceed, in the perspective of the user/frontend. */ extern ptid_t user_visible_resume_ptid (int step); Therefore, the check for singlestep_breakpoints_inserted_p is actually incorrect, and we end up applying schedlock more often on sss targets than on non-sss targets. Found by inspection while working on a patch that eliminates the singlestep_breakpoints_inserted_p global. Tested on x86_64 Fedora 20 on top of my 'software single-step on x86' series. gdb/ 2014-09-25 Pedro Alves <palves@redhat.com> * infrun.c (user_visible_resume_ptid): Don't check singlestep_breakpoints_inserted_p.
2014-09-25breakpoint.c: debug output when we skip inserting a breakpointPedro Alves2-1/+14
gdb/ 2014-09-25 Pedro Alves <palves@redhat.com> * breakpoint.c (should_be_inserted): Add debug output.
2014-09-25infrun.c: comment/typo fixesPedro Alves2-3/+10
gdb/ 2014-09-25 Pedro Alves <palves@redhat.com> * infrun.c (stepping_past_instruction_at) (clear_exit_convenience_vars): Point at infrun.h instead of inferior.h. (handle_signal_stop): Fix typo.
2014-09-24Fix typo in thumb_in_function_epilogue_pYao Qi2-1/+6
This patch fixes a typo in the bit mask I've made in my previous code refactor. If PC is in the register list, the bit 8 is one, so bit mask 0xff00 should be used. Current condition is a constant false. gdb: 2014-09-24 Yao Qi <yao@codesourcery.com> * arm-tdep.c (thumb_in_function_epilogue_p): Fix typo in the bitmask.
2014-09-23Honour SIGILL and SIGSEGV in cancel breakpoint and event lwp selectionYao Qi2-10/+26
I see the following fail on arm-none-linux-gnueabi testing, (gdb) continue^M Continuing.^M ^M Program received signal SIGILL, Illegal instruction.^M [Switching to Thread 1003]^M handler (signo=10) at /scratch/yqi/arm-none-linux-gnueabi/src/gdb-trunk/gdb/testsuite/gdb.threads/sigstep-threads.c:33^M 33 tgkill (getpid (), gettid (), SIGUSR1); /* step-2 */^M (gdb) FAIL: gdb.threads/sigstep-threads.exp: continue the cause is that GDBserver doesn't cancel the breakpoint if the stop signal is SIGILL. The kernel used here is a little old, 2.6.x, and doesn't translate SIGILL to SIGTRAP when program hits breakpoint instruction (which is an illegal instruction actually). GDB and GDBserver can translate SIGILL to SIGTRAP under certain circumstance, so it is not a problem here. See gdbserver/linux-low.c:linux_wait_1 /* If this event was not handled before, and is not a SIGTRAP, we report it. SIGILL and SIGSEGV are also treated as traps in case a breakpoint is inserted at the current PC. If this target does not support internal breakpoints at all, we also report the SIGTRAP without further processing; it's of no concern to us. */ maybe_internal_trap = (supports_breakpoints () && (WSTOPSIG (w) == SIGTRAP || ((WSTOPSIG (w) == SIGILL || WSTOPSIG (w) == SIGSEGV) && (*the_low_target.breakpoint_at) (event_child->stop_pc)))); However, SIGILL and SIGSEGV is not considered when cancelling breakpoint, which causes the fail above. That is, when GDB is doing software single step on address ADDR, both thread A and thread B hits the software single step breakpoint, and get SIGILL. GDB selects the event from thread A, removes the software single step breakpoint, and resume the program. The event (SIGILL) from thread B is reported to GDB, but GDB doesn't regard this SIGILL as SIGTRAP, because the breakpoint on address ADDR was removed, so GDB reports "Program received signal SIGILL". The patch is to allow calling cancel_breakpoint if the signal is SIGILL and SIGSEGV. This patch fixes the fail above. Likewise, event lwp selection should honour SIGILL and SIGSEGV too. gdb/gdbserver: 2014-09-23 Yao Qi <yao@codesourcery.com> * linux-low.c (lp_status_maybe_breakpoint): New function. (linux_low_filter_event): Call lp_status_maybe_breakpoint. (count_events_callback): Likewise. (select_event_lwp_callback): Likewise. (cancel_breakpoints_callback): Likewise.
2014-09-222014-09-22 Jan-Benedict Glaw <jbglaw@lug-owl.de>Jan-Benedict Glaw2-0/+5
* gdb.texinfo (Set Breaks): Add missing "@end table".
2014-09-22Update target_stop's documentationGary Benson2-2/+8
This commit updates target_stop's documentation to clarify that it is asynchronous. gdb/ChangeLog: * target.c (target_stop): Updated comment.
2014-09-22Rename target_{stop,continue}_ptidGary Benson5-13/+24
This commit renames target_stop_ptid as target_stop_and_wait and target_continue_ptid as target_continue_no_signal. Comments are updated to more fully describe the functions' behaviour. gdb/ChangeLog: * target/target.h (target_stop_ptid): Renamed as... (target_stop_and_wait): New function. Updated comment. All uses updated. (target_continue_ptid): Renamed as... (target_continue_no_signal): New function. Updated comment. All uses updated.
2014-09-22Fix "breakpoint always-inserted off"; remove "breakpoint always-inserted auto"Pedro Alves11-55/+361
By default, GDB removes all breakpoints from the target when the target stops and the prompt is given back to the user. This is useful in case GDB crashes while the user is interacting, as otherwise, there's a higher chance breakpoints would be left planted on the target. But, as long as any thread is running free, we need to make sure to keep breakpoints inserted, lest a thread misses a breakpoint. With that in mind, in preparation for non-stop mode, we added a "breakpoint always-inserted on" mode. This traded off the extra crash protection for never having threads miss breakpoints, and in addition is more efficient if there's a ton of breakpoints to remove/insert at each user command (e.g., at each "step"). When we added non-stop mode, and for a period, we required users to manually set "always-inserted on" when they enabled non-stop mode, as otherwise GDB removes all breakpoints from the target as soon as any thread stops, which means the other threads still running will miss breakpoints. The test added by this patch exercises this. That soon revealed a nuisance, and so later we added an extra "breakpoint always-inserted auto" mode, that made GDB behave like "always-inserted on" when non-stop was enabled, and "always-inserted off" when non-stop was disabled. "auto" was made the default at the same time. In hindsight, this "auto" setting was unnecessary, and not the ideal solution. Non-stop mode does depends on breakpoints always-inserted mode, but only as long as any thread is running. If no thread is running, no breakpoint can be missed. The same is true for all-stop too. E.g., if, in all-stop mode, and the user does: (gdb) c& (gdb) b foo That breakpoint at "foo" should be inserted immediately, but it currently isn't -- currently it'll end up inserted only if the target happens to trip on some event, and is re-resumed, e.g., an internal breakpoint triggers that doesn't cause a user-visible stop, and so we end up in keep_going calling insert_breakpoints. The test added by this patch also covers this. IOW, no matter whether in non-stop or all-stop, if the target fully stops, we can remove breakpoints. And no matter whether in all-stop or non-stop, if any thread is running in the target, then we need breakpoints to be immediately inserted. And then, if the target has global breakpoints, we need to keep breakpoints even when the target is stopped. So with that in mind, and aiming at reducing all-stop vs non-stop differences for all-stop-on-stop-of-non-stop, this patch fixes "breakpoint always-inserted off" to not remove breakpoints from the target until it fully stops, and then removes the "auto" setting as unnecessary. I propose removing it straight away rather than keeping it as an alias, unless someone complains they have scripts that need it and that can't adjust. Tested on x86_64 Fedora 20. gdb/ 2014-09-22 Pedro Alves <palves@redhat.com> * NEWS: Mention merge of "breakpoint always-inserted" modes "off" and "auto" merged. * breakpoint.c (enum ugll_insert_mode): New enum. (always_inserted_mode): Now a plain boolean. (show_always_inserted_mode): No longer handle AUTO_BOOLEAN_AUTO. (breakpoints_always_inserted_mode): Delete. (breakpoints_should_be_inserted_now): New function. (insert_breakpoints): Pass UGLL_INSERT to update_global_location_list instead of calling insert_breakpoint_locations manually. (create_solib_event_breakpoint_1): New, factored out from ... (create_solib_event_breakpoint): ... this. (create_and_insert_solib_event_breakpoint): Use create_solib_event_breakpoint_1 instead of calling insert_breakpoint_locations manually. (update_global_location_list): Change parameter type from boolean to enum ugll_insert_mode. All callers adjusted. Adjust to use breakpoints_should_be_inserted_now and handle UGLL_INSERT. (update_global_location_list_nothrow): Change parameter type from boolean to enum ugll_insert_mode. (_initialize_breakpoint): "breakpoint always-inserted" option is now a boolean command. Update help text. * breakpoint.h (breakpoints_always_inserted_mode): Delete declaration. (breakpoints_should_be_inserted_now): New declaration. * infrun.c (handle_inferior_event) <TARGET_WAITKIND_LOADED>: Remove breakpoints_always_inserted_mode check. (normal_stop): Adjust to use breakpoints_should_be_inserted_now. * remote.c (remote_start_remote): Likewise. gdb/doc/ 2014-09-22 Pedro Alves <palves@redhat.com> * gdb.texinfo (Set Breaks): Document that "set breakpoint always-inserted off" is the default mode now. Delete documentation of "set breakpoint always-inserted auto". gdb/testsuite/ 2014-09-22 Pedro Alves <palves@redhat.com> * gdb.threads/break-while-running.exp: New file. * gdb.threads/break-while-running.c: New file.
2014-09-22Tell update_global_location_list to insert breakpointsPedro Alves2-21/+50
This adds a new mode for update_global_location_list, that allows callers saying "please insert breakpoints, even if breakpoints_always_inserted_mode() is false". This allows removing a couple breakpoints_always_inserted_mode checks. gdb/ 2014-09-22 Pedro Alves <palves@redhat.com> * breakpoint.c (enum ugll_insert_mode): Add UGLL_INSERT. (insert_breakpoints): Don't call insert_breakpoint_locations here. Instead, pass UGLL_INSERT to update_global_location_list. (update_global_location_list): Change parameter type from boolean to enum ugll_insert_mode. All callers adjusted. Adjust to use breakpoints_should_be_inserted_now and handle UGLL_INSERT. (create_solib_event_breakpoint_1): New, factored out from ... (create_solib_event_breakpoint): ... this. (create_and_insert_solib_event_breakpoint): Use create_solib_event_breakpoint_1 instead of calling insert_breakpoint_locations manually. (update_global_location_list): Handle UGLL_INSERT.