aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-11-14infrun.c:handle_signal_stop: Move initial connection/attachment handling ↵Pedro Alves2-51/+62
code earlier. Before all this stop_soon handling, we have code that can end in keep_going. Particularly, the thread_hop_needed code looked suspicious considering breakpoint always-inserted mode, though on closer inspection, it'd take connecting to multiple remote targets that shared the same address space to trigger that. Still, I think it's clearer if all this remote connection setup / attach code is placed early, before any keep_going path could be reached. gdb/ 2013-11-14 Pedro Alves <palves@redhat.com> * infrun.c (handle_signal_stop): Move STOP_QUIETLY, STOP_QUIETLY_REMOTE and 'stop_after_trap' handling earlier.
2013-11-14infrun.c: Split handle_inferior_event further.Pedro Alves2-21/+50
After the previous patches, we only ever reach the code after the initial 'switch (ecs->ws.kind)' switch for TARGET_WAITKIND_STOPPED. We can now factor out all that to its own function. Unfortunately, stepped_after_stopped_by_watchpoint needed to move to the ecs. I think that indicates a state machine bug -- no event other than TARGET_WAITKIND_STOPPED indicates a single-step actually finished. TARGET_WAITKIND_SYSCALL_XXX, TARGET_WAITKIND_FORK, etc. are all events that are triggered from the kernel, _within_ a syscall, IOW, from userspace's perspective, halfway through an instruction being executed. This might actually matter for the syscall events, as syscalls can change memory (and thus trigger watchpoints). gdb/ 2013-11-14 Pedro Alves <palves@redhat.com> * infrun.c (struct execution_control_state) <stepped_after_stopped_by_watchpoint>: New field. (get_inferior_stop_soon): New function. (handle_inferior_event): 'stepped_after_stopped_by_watchpoint' was moved to struct execution_control_state -- adjust. Use get_inferior_stop_soon. Split TARGET_WAITKIND_STOPPED handling to new function. (handle_signal_stop): New function, factored out from handle_inferior_event.
2013-11-14Eliminate enum bpstat_signal_value, simplify random signal checks further.Pedro Alves5-58/+40
After the previous patch, there's actually no breakpoint type that returns BPSTAT_SIGNAL_HIDE, so we can go back to having bpstat_explains_signal return a boolean. The signal hiding actually disappears. gdb/ 2013-11-14 Pedro Alves <palves@redhat.com> * break-catch-sig.c (signal_catchpoint_explains_signal): Adjust to return a boolean. * breakpoint.c (bpstat_explains_signal): Adjust to return a boolean. (explains_signal_watchpoint, base_breakpoint_explains_signal): Adjust to return a boolean. * breakpoint.h (enum bpstat_signal_value): Delete. (struct breakpoint_ops) <explains_signal>: New returns a boolean. (bpstat_explains_signal): Likewise. * infrun.c (handle_inferior_event) <random signal checks>: bpstat_explains_signal now returns a boolean - adjust. No longer consider hiding signals.
2013-11-14infrun.c:handle_inferior_event: Rework random signal checks.Pedro Alves3-23/+28
Looking at the current random signal checks: if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP) random_signal = !((bpstat_explains_signal (ecs->event_thread->control.stop_bpstat, GDB_SIGNAL_TRAP) != BPSTAT_SIGNAL_NO) || stopped_by_watchpoint || ecs->event_thread->control.trap_expected || (ecs->event_thread->control.step_range_end && (ecs->event_thread->control.step_resume_breakpoint == NULL))); else { enum bpstat_signal_value sval; sval = bpstat_explains_signal (ecs->event_thread->control.stop_bpstat, ecs->event_thread->suspend.stop_signal); random_signal = (sval == BPSTAT_SIGNAL_NO); if (sval == BPSTAT_SIGNAL_HIDE) ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0; } We can observe: - the stepping checks bit: ... || ecs->event_thread->control.trap_expected || (ecs->event_thread->control.step_range_end && (ecs->event_thread->control.step_resume_breakpoint == NULL))); ... is just like currently_stepping: static int currently_stepping (struct thread_info *tp) { return ((tp->control.step_range_end && tp->control.step_resume_breakpoint == NULL) || tp->control.trap_expected || bpstat_should_step ()); } except it misses the bpstat_should_step check (***). It's not really necessary to check bpstat_should_step in the random signal tests, because software watchpoints always end up in the bpstat list anyway, which means bpstat_explains_signal with GDB_SIGNAL_TRAP always returns at least BPSSTAT_SIGNAL_HIDE, but I think the code is clearer if we reuse currently_stepping. *** - bpstat_should_step checks to see if there's any software watchpoint in the breakpoint list, because we need to force the target to single-step all the way, to evaluate the watchpoint's value at each step. - we never hide GDB_SIGNAL_TRAP, even if the bpstat returns BPSTAT_SIGNAL_HIDE, which is actually the default for all breakpoints. If we make the default be BPSTAT_SIGNAL_PASS, then we can merge the two bpstat_explains_signal paths. gdb/ 2013-11-14 Pedro Alves <palves@redhat.com> * breakpoint.c (bpstat_explains_signal) <Moribund locations>: Return BPSTAT_SIGNAL_PASS instead of BPSTAT_SIGNAL_HIDE. (explains_signal_watchpoint): Return BPSTAT_SIGNAL_PASS instead of BPSTAT_SIGNAL_HIDE. (base_breakpoint_explains_signal): Return BPSTAT_SIGNAL_PASS instead of BPSTAT_SIGNAL_HIDE. * infrun.c (handle_inferior_event): Rework random signal checks.
2013-11-14infrun.c: Don't set ecs->random_signal for "catchpoint" events (eliminate ↵Pedro Alves2-32/+26
ecs->random_signal). This goes a step forward in making only TARGET_WAITKIND_STOPPED talk about signals. There's no reason for the "catchpoint" TARGET_WAITKIND_XXXs to consult bpstat about signals -- unlike breakpoints, all these events are continuable, so we don't need to do a remove-break/step/reinsert-break -like dance. That means we don't actually need to run them through process_event_stop_test (for the bpstat_what checks), and can just use bpstat_causes_stop instead. Note we were already using it in the TARGET_WAITKIND_(V)FORKED cases. Then, these "catchpoint" waitkinds don't need to set ecs->random_signal for anything, because they check it immediately afterwards (and the value they set is never used again). gdb/ 2013-11-14 Pedro Alves <palves@redhat.com> * infrun.c (struct execution_control_state): Remove 'random_signal' field. (handle_syscall_event): Use bpstat_causes_stop instead of bpstat_explains_signal. Don't set ecs->random_signal. (handle_inferior_event): New 'random_signal' local. <TARGET_WAITKIND_FORKED, TARGET_WAITKIND_VFORKED, TARGET_WAITKIND_EXECD>: Use bpstat_causes_stop instead of bpstat_explains_signal. Don't set ecs->random_signal. <TARGET_WAITKIND_STOPPED>: Adjust to use local instead of ecs->random_signal.
2013-11-14infrun.c:handle_inferior_event: Move comment.Pedro Alves2-11/+17
This comment applies to the whole handle_inferior_event flow, top to bottom. Best move it to the function's intro. gdb/ 2013-11-14 Pedro Alves <palves@redhat.com> * infrun.c (handle_inferior_event): Move comment from the function's body to the function's description, adjusted.
2013-11-14infrun.c:handle_inferior_event: Don't fall through in TARGET_WAITKIND_LOADED ↵Pedro Alves2-8/+23
handling. Of all the TARGET_WAITKIND_XXXs event kinds other than TARGET_WAITKIND_STOPPED, TARGET_WAITKIND_LOADED is the only kind that doesn't end in a return, instead falling through to all the signal/breakpoint/stepping handling code. But it only falls through in the STOP_QUIETLY_NO_SIGSTOP and STOP_QUIETLY_REMOTE cases, which means the /* This is originated from start_remote(), start_inferior() and shared libraries hook functions. */ if (stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_REMOTE) { if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n"); stop_stepping (ecs); return; } bit is eventually reached. All tests before that is reached will always fail. It's simpler to inline the stop_soon checks close to the TARGET_WAITKIND_LOADED code, which allows removing the fall through. Tested on x86_64 Fedora 17, but that doesn't exercise this TARGET_WAITKIND_LOADED. Also ran gdb.base/solib-disc.exp on Cygwin/gdbserver, which exercises reconnection while the inferior is stopped at an solib event, but then again, gdbserver always replies a regular trap on initial connection, instead of the last event the program had seen: Sending packet: $?#3f...Packet received: T0505:4ca72800;04:f8a62800;08:62fcc877;thread:d28; Sending packet: $Hc-1#09...Packet received: E01 Sending packet: $qAttached#8f...Packet received: 0 Packet qAttached (query-attached) is supported infrun: clear_proceed_status_thread (Thread 3368) Sending packet: $qOffsets#4b...Packet received: infrun: wait_for_inferior () infrun: target_wait (-1, status) = infrun: 42000 [Thread 3368], infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP infrun: infwait_normal_state infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc = 0x77c8fc62 infrun: quietly stopped infrun: stop_stepping So the only way to exercise this would be to hack gdbserver. I didn't go that far though. I'm reasonably confident this is correct. gdb/ 2013-11-14 Pedro Alves <palves@redhat.com> * infrun.c (handle_inferior_event) <TARGET_WAITKIND_LOADED>: Handle STOP_QUIETLY_NO_SIGSTOP and STOP_QUIETLY_REMOTE here. Assert we never fall through out of the TARGET_WAITKIND_LOADED case.
2013-11-14Add --verify-only option to DWP.Cary Coutant3-9/+211
gold/ * dwp.cc (Dwo_file_entry): New type. (File_list): Use Dwo_file_entry. (Dwo_file::verify): New function. (Dwo_file::verify_dwo_list): New function. (Dwo_file::sized_verify_dwo_list): New function. (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file list. (Dwp_options): New enum type. (dwp_options): Add --verify-only. (usage): Likewise. (main): Likewise. * dwp.h (gold_info): Add declaration.
2013-11-14Fix race condition while building EH frame header.Cary Coutant3-2/+20
gold/ PR gold/14860 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_. (Ehframe_hdr::set_final_data_size): Allocate a Lock. * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while updating fde_offsets_. (Eh_frame_hdr::lock_): New data member.
2013-11-14off-by-one fix for py-linetable.cTom Tromey2-2/+7
While digging into a different memory corruption error, I happened to notice one coming from the linetable code. In a couple of spots, the wrong termination condition was used in a loop, leading gdb to read one element past the end of the linetable. Built and regtested on x86-64 Fedora 18. Also verified using valgrind. I'm checking this in. 2013-11-14 Tom Tromey <tromey@redhat.com> * python/py-linetable.c (ltpy_has_line) (ltpy_get_all_source_lines): Fix loop termination condition.
2013-11-14 PR ld/16017Nick Clifton2-7/+34
* elf32-arm.c (elf32_arm_populate_plt_entry): Return a boolean value, TRUE for success, FALSE for failure. Fail if attempting to create a PLT entry for a thumb only target. (elf32_arm_final_link_relocate): Check result of calling elf32_arm_populate_plt_entry. (elf32_arm_finish_dynamic_symbol): Likewise.
2013-11-14testsuite/gdb.dwarf2: dw2-case-insensitive.exp: p fuNC_lang fails on armOmair Javaid3-4/+23
dw2-case-insensitive.exp: p fuNC_lang fails on arm. The problem occurs when thumb mode code is generated. On ARM last bit of function pointer value indicates whether the target function is an ARM (if 0) or Thumb (if 1) routine. The PC address should refer to actual address in either case. This patch adds new compile unit and function labels to code which act as address ranges of compile unit and functions in debug information. Therefore address ranges will have correct addresses and not the ones with an incremented least significant bit. This patch has been tested on x86_64 and arm machines. gdb/testsuite/ChangeLog: 2013-11-14 Omair Javaid <Omair.Javaid@linaro.org> * gdb.dwarf2/dw2-case-insensitive-debug.S: Updated compile unit and function label names. * gdb.dwarf2/dw2-case-insensitive.c: Created function and compile unit labels.
2013-11-14 PR ld/16082Nick Clifton2-0/+10
* elf32-hppa.c (elf32_hppa_hide_symbol): Remove old version information when forcing a symbol to be local.
2013-11-14GDB/MI: Add new "--language LANG" command option.Joel Brobecker9-1/+142
Frontend sometimes need to evaluate expressions that are language-specific. For instance, Eclipse uses the following expression to determine the size of an address on the target: -data-evaluate-expression "sizeof (void*)" Unfortunately, if the main of the program being debugged is not C, this may not work. For instance, if the main is in Ada, you get... -data-evaluate-expression "sizeof (void*)" ^error,msg="No definition of \"sizeof\" in current context." ... and apparently decides to stop the debugging session as a result. The recommendation sent was to specifically set the language to C before trying to evaluate the expression. Something such as: 1. save current language 2. set language c 3. -data-evaluate-expression "sizeof (void*)" 4. Restore language This has the same disadvantages as the ones outlined in the "Context Management" section of the GDB/MI documentation regarding setting the current thread or the current frame, thus recommending the use of general command-line switches such as --frame, or --thread instead. This patch follows the same steps for the language, adding a similar new command option: --language LANG. Example of use: -data-evaluate-expression --language c "sizeof (void*)" ^done,value="4" gdb/ChangeLog: * mi/mi-parse.h (struct mi_parse) <language>: New field. * mi/mi-main.c (mi_cmd_execute): Temporarily set language to PARSE->LANGUAGE during command execution, if set. * mi/mi-parse.c: Add "language.h" #include. (mi_parse): Add parsing of "--language" command option. * NEWS: Add entry mentioning the new "--language" command option. gdb/testsuite/ChangeLog: * gdb.mi/mi-language.exp: New file. gdb/doc/ChangeLog: * gdb.texinfo (Show): Add xref anchor for "show language" command. (Context management): Place current subsection text into its own subsubsection. Add new subsubsection describing the "--language" command option.
2013-11-14New function cli-utils.c:extract_arg_constJoel Brobecker3-8/+31
This function provides the exact same functionality as extract_arg, except that it takes a "const char**" instead of a "char **". It allows us also to re-implement extract_arg almost as a simple wrapper around the new function. gdb/ChangeLog: Pedro Alves <palves@redhat.com> Joel Brobecker <brobecker@adacore.com> * cli/cli-utils.h (extract_arg_const): Add declaration. * cli/cli-utils.c (extract_arg_const): New function. (extract_arg): Reimplement using extract_arg_const.
2013-11-14language.h: Add "symtab.h" #includeJoel Brobecker2-0/+6
In addition to the fact that language.h depends on a number of struct types declared in symtab.h, language.h also depends on an enumerated type (domain_enum). So language.h should #include "symtab.h". gdb/ChangeLog: * language.h: Add "symtab.h" #include.
2013-11-14ld/ARM: Fix script-type testsuite failure.Will Newton2-1/+4
Commit 34a79995c4cc34f6f41e2a4b2df477db31b31f0c changed how STT_FILE symbols were emitted but this testcase got missed in the cleanup. ld/testsuite/ChangeLog: 2013-11-14 Will Newton <will.newton@linaro.org> * ld-arm/script-type.sym: Remove redundant STT_FILE symbol.
2013-11-13* breakpoint.c (bpstat_check_breakpoint_conditions): For threadDoug Evans2-4/+14
specific breakpoints, don't evaluate breakpoint condition if different thread.
2013-11-14daily updateAlan Modra1-1/+1
2013-11-13Fix PR # dyslexia in ChangeLog for previous commit. It should haveKeith Seitz1-1/+1
been for c++/7935 (not 7539).
2013-11-13PR c++/7539Keith Seitz7-7/+460
PR c++/10541 This patch fixes some namespace alias bugs reported in the above bugs. Links to all mailing list discussion: https://sourceware.org/ml/gdb-patches/2013-07/msg00649.html https://sourceware.org/ml/gdb-patches/2013-09/msg00557.html https://sourceware.org/ml/gdb-patches/2013-11/msg00156.html
2013-11-13Fix regressions caused by const-ify linespec patch:Keith Seitz2-44/+35
https://sourceware.org/ml/gdb-patches/2013-10/msg00478.html
2013-11-13fix multi-arch-exec for parallel modeTom Tromey3-3/+11
I noticed today that multi-arch-exec.exp was failing in parallel mode. The bug is that multi-arch-exec.c assumes the non-parallel directory layout. This patch fixes the problem using the same "BASEDIR" approach used in other tests. Tested both ways on x86-64 Fedora 18. I'm checking this in. 2013-11-13 Tom Tromey <tromey@redhat.com> * gdb.multi/multi-arch-exec.exp: Define BASEDIR when compiling. * gdb.multi/multi-arch-exec.c (main): Use BASEDIR.
2013-11-13bfd/Yufeng Zhang4-0/+33
* elfnn-aarch64.c (elfNN_aarch64_howto_table): Use R_AARCH64_TLS_DTPMOD64 instead of R_AARCH64_TLS_DTPMOD; likewise for R_AARCH64_TLS_DTPREL and R_AARCH64_TLS_TPREL. include/elf/ * aarch64.h: Define R_AARCH64_TLS_DTPMOD64, R_AARCH64_TLS_DTPREL64 and R_AARCH64_TLS_TPREL64; guard R_AARCH64_TLS_DTPMOD, R_AARCH64_TLS_DTPREL and R_AARCH64_TLS_TPREL with RELOC_MACROS_GEN_FUNC.
2013-11-13 * rescoff.c (write_coff_file): Use 64-bit alignment for resourceNick Clifton2-13/+18
data. (coff_res_to_bin): Likewise.
2013-11-12* breakpoint.c (breakpoint_cond_eval): Fix and enhance comment.Doug Evans2-3/+9
2013-11-12fix email address in earlier commitDoug Evans1-1/+1
2013-11-13Replace "info-ada-exceptions" by "ada-exceptions" in -list-featuresJoel Brobecker4-3/+18
Rather than having -list-features report support for the GDB/MI commands providing access to Ada exception catchpoints with one entry, and the GDB/MI command providing the list of Ada exceptions with a second entry, this patch merges it all within one single entry. This is OK, because all these commands were added within a short amount of time, and within the same release cycle; and it reduces a bit the size of the output. gdb/ChangeLog: * mi/mi-main.c (mi_cmd_list_features): Replace "info-ada-exceptions" entry with "ada-exceptions". gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Miscellaneous Commands): Delete the documentation of "info-ada-exceptions" in the output of the "-list-features" command. Add the documentation of the "ada-exception" entry instead.
2013-11-13crash while re-reading symbols from objfile on ppc-aix.Joel Brobecker2-2/+11
This patch aims at fixing the following problem, where the user: . debugs its program . makes a modification and rebuilds it *without exiting the debugger* . returns to its debugging session and restarts the inferior In that situation, the debugger notices that the underlying executable has changed and that re-reading its symbols is needed. Shortly after displaying a message informing the user of the situation, GDB crashes: (gdb) run [...] `/[...]/dest' has changed; re-reading symbols. zsh: 13434922 segmentation fault (core dumped) The crash occurs while trying to allocate some memory on the bfd_bfd obstack. But, at some point in time, the whole obstack data gets corrupted, nullified. So the memory allocation fails trying to call a function at a NULL address. (side note: when debugging GDB in GDB, top-gdb reports a SIGILL, while the shell makes it look like it was a SIGSEGV - the discrepancy is not critical to the investigation and therefore was not explored) The corruption occurred because the region where the per_bfd data got free'ed nearly after it got allocated! This is what happens, in chronological order (see reread_symbols): 1. GDB notices that the executable has changed, decides to re-read its symbols. 2. Opens a new bfd, unrefs the old one 3. Calls set_objfile_per_bfd (objfile); 4. Re-initializes the objfile's obstack: obstack_init (&objfile->objfile_obstack); I think that the normal behavior for set_objfile_per_bfd would be to search for already-allocated shared per_bfd data, and allocate new one if not found. The critical difference between a platform such as x86_64-linuxe where it works, and ppc-aix, where it doesn't lies in the fact that bfd-data sharing is not activated on ppc-aix, and as a result, the per-bfd data gets allocated on the objfile's obstack instead of in the bfd objalloc: /* If the object requires gdb to do relocations, we simply fall back to not sharing data across users. These cases are rare enough that this seems reasonable. */ if (abfd != NULL && !gdb_bfd_requires_relocations (abfd)) { storage = bfd_zalloc (abfd, sizeof (struct objfile_per_bfd_storage)); set_bfd_data (abfd, objfiles_bfd_data, storage); } else storage = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct objfile_per_bfd_storage); Allocating that per_bfd storage is of course nearly useless since we end up free-ing right after in step (4) above. Eventually, the memory region ends up being re-used, hence the corruption leading to the crash. This fix was simply to move the call to set_objfile_per_bfd after the objfile's obstack re-initialization. gdb/ChangeLog: * symfile.c (reread_symbols): Move call to set_objfile_per_bfd after re-initialization of OBJFILE's obstack.
2013-11-12* breakpoint.c (bpstat_check_breakpoint_conditions): AssertDoug Evans2-93/+100
bs->stop != 0 on entry. Update function comment. Simplify early exit for frame mismatch. Reindent rest of function.
2013-11-13daily updateAlan Modra1-1/+1
2013-11-12 * gdb.base/fileio.exp: Make $dir2 writable after the test is doneDoug Evans2-0/+10
so that "rm -rf $builddir" Just Works.
2013-11-12Fix GDB crash with upstream GCC due to qsort(NULL, ...)Andreas Arnez2-0/+10
Upstream GCC's new pass '-fisolate-erroneous-paths' may introduce traps at places where GCC has determined undefined behavior, e.g. when passing a NULL pointer to a function that defines this argument as __attribute__(__nonnull__(...)). In particular this applies to uniquify_strings(), because it invokes qsort() with NULL when the 'strings' vector is empty. I hit this problem on s390x when trying to execute "break main" on a C program. gdb/ 2013-11-12 Andreas Arnez <arnez@linux.vnet.ibm.com> * objc-lang.c (uniquify_strings): Prevent invoking qsort with NULL.
2013-11-12Work around gold/15646.Doug Evans2-7/+45
* dwarf2read.c (read_index_from_section): Update comment. (struct dw2_symtab_iterator): New member global_seen. (dw2_symtab_iter_init): Initialize it. (dw2_symtab_iter_next): Skip duplicate global symbols. (dw2_expand_symtabs_matching): Ditto.
2013-11-12Small fix (first word of sentence to start with capital letter)Joel Brobecker2-2/+7
gdb/doc/ChangeLog: * gdb.texinfo (GDB/MI Miscellaneous Commands): Fix the first word of a couple of sentences to start with a capital letter.
2013-11-12Add missing ChangeLog entry for a7e332c24b77168bc61d4ee776bf29c831fbbc88Joel Brobecker1-0/+9
(Implement GDB/MI equivalent of "info exceptions" CLI command)
2013-11-12Document "info exceptions" and "-info-ada-exception" new commands.Joel Brobecker3-1/+115
gdb/doc/ChangeLog: * gdb.texinfo (Ada): Add entry in menu for new "Ada Exceptions" node. (Ada Exceptions): New node. (GDB/MI): Add entry in menu for new "GDB/MI Ada Exceptions Commands" node. (GDB/MI Ada Exceptions Commands): New node. (GDB/MI Miscellaneous Commands): Document new "info-ada-exceptions" field in the output of the "-list-features" command. * NEWS: Add entry for the new "info exceptions" CLI command, and for the new "-info-ada-exceptions" GDB/MI command.
2013-11-12Implement GDB/MI equivalent of "info exceptions" CLI command.Joel Brobecker8-0/+147
This patch implements a new GDB/MI command implementing the equivalent of the "info exceptions" CLI command. The command syntax is: -info-ada-exceptions [REGEXP] Here is an example of usage (slightly formatted by hand to make it easier to read): -info-ada-exceptions ions\.a_ ^done,ada-exceptions= {nr_rows="2",nr_cols="2", hdr=[{width="1",alignment="-1",col_name="name",colhdr="Name"}, {width="1",alignment="-1",col_name="address",colhdr="Address"}], body=[{name="global_exceptions.a_global_exception", address="0x0000000000613a80"}, {name="global_exceptions.a_private_exception", address="0x0000000000613ac0"}]} Also, in order to allow graphical frontends to easily determine whether this command is available or not, the output of the "-list-features" command has been augmented to contain "info-ada-exceptions". gdb/Changelog: * mi/mi-cmds.h (mi_cmd_info_ada_exceptions): Add declaration. * mi/mi-cmds.c (mi_cmds): Add entry for -info-ada-exceptions command. * mi/mi-cmd-info.c: #include "ada-lang.c" and "arch-utils.c". (mi_cmd_info_ada_exceptions): New function. * mi/mi-main.c (mi_cmd_list_features): Add "info-ada-exceptions". gdb/testsuite/ChangeLog: * gdb.ada/mi_exc_info: New testcase.
2013-11-12Add command to list Ada exceptionsJoel Brobecker7-0/+488
This patch adds a new command "info exceptions" whose purpose is to provide the list of exceptions currently defined in the inferior. The usage is: (gdb) info exceptions [REGEXP] Without argument, the command lists all exceptions. Otherwise, only those whose name match REGEXP are listed. For instance: (gdb) info exceptions All defined Ada exceptions: constraint_error: 0x613dc0 program_error: 0x613d40 storage_error: 0x613d00 tasking_error: 0x613cc0 global_exceptions.a_global_exception: 0x613a80 global_exceptions.a_private_exception: 0x613ac0 The name of the command, as well as its output is part of a legacy I inherited long ago. It's output being parsed by frontends such as GPS, I cannot easily change it. Same for the command name. The implementation is mostly self-contained, and is written in a way that should make it easy to implement the GDB/MI equivalent. The careful reviewer will notice that the code added in ada-lang.h could normally be made private inside ada-lang.c. But these will be used by the GDB/MI implementation. Rather than making those private now, only to move them later, I've made them public right away. gdb/ChangeLog: * ada-lang.h: #include "vec.h". (struct ada_exc_info): New. (ada_exc_info): New typedef. (DEF_VEC_O(ada_exc_info)): New vector. (ada_exceptions_list): Add declaration. * ada-lang.c (ada_is_exception_sym) (ada_is_non_standard_exception_sym, compare_ada_exception_info) (sort_remove_dups_ada_exceptions_list) (ada_exc_search_name_matches, ada_add_standard_exceptions) (ada_add_exceptions_from_frame, ada_add_global_exceptions) (ada_exceptions_list_1, ada_exceptions_list) (info_exceptions_command): New function. (_initialize_ada_language): Add "info exception" command. gdb/testsuite/ChangeLog: * gdb.ada/info_exc: New testcase.
2013-11-11 * gdb.arch/arm-bl-branch-dest.exp: Use gdb_test_file_name insteadDoug Evans2-1/+6
of testfile.
2013-11-11Fix ChangeLog entries from earlier commit.Catherine Moore4-22/+23
2013-11-12daily updateAlan Modra1-1/+1
2013-11-112013-11-11 Phil Muldoon <pmuldoon@redhat.com>Phil Muldoon13-1/+1241
PR python/15629 * NEWS: Add linetable feature. * Makefile.in (SUBDIR_PYTHON_OBS): Add py-linetable entries. * python/py-linetable.c: New file. * python/py-symtab.c (stpy_get_linetable): New function. * python/python-internal.h (symtab_to_linetable_object): Declare. (gdbpy_initialize_linetable): Ditto. * python/python.c (_initialize_python): Call gdbpy_initialize_linetable. 2013-11-11 Phil Muldoon <pmuldoon@redhat.com> * gdb.python/py-linetable.S: New file. * gdb.python/py-linetable.c: New file. * gdb.python/py-linetable.exp: New file. 2013-11-11 Phil Muldoon <pmuldoon@redhat.com> * gdb.texinfo (Symbol Tables In Python): Add linetable method entry. (Line Tables In Python): New node.
2013-11-112013-11-11 Catherine Moore <clm@codesourcery.com>Catherine Moore5-96/+118
gas/ * config/mips/tc-mips.c (convert_reg_type): Use INSN_LOAD_MEMORY instead of INSN_LOAD_MEMORY_DELAY. (reg_needs_delay): Likewise. (insns_between): Likewise. include/ * opcode/mips.h (INSN_LOAD_MEMORY_DELAY): Rename to... (INSN_LOAD_MEMORY): ...this. opcodes/ * mips-dis.c (print_insn_mips): Use INSN_LOAD_MEMORY instead of INSN_LOAD_MEMORY_DELAY. (print_insn_micromips): Likewise. * mips-opc.c (LDD): Remove. (CLD): Include INSN_LOAD_MEMORY. (LM): New. (mips_builtin_opcodes): Use LM instead of LDD. Add LM to load instructions.
2013-11-11Dandling memory pointers in Ada catchpoints with GDB/MI.Joel Brobecker7-5/+174
When using the GDB/MI commands to insert a catchpoint on a specific Ada exception, any re-evaluation of that catchpoint (for instance a re-evaluation performed after a shared library got mapped by the inferior) fails. For instance, with any Ada program: (gdb) -catch-exception -e program_error ^done,bkptno="1",bkpt={[...]} (gdb) -exec-run =thread-group-started,id="i1",pid="28315" =thread-created,id="1",group-id="i1" ^running *running,thread-id="all" (gdb) =library-loaded,[...] &"warning: failed to reevaluate internal exception condition for catchpoint 1: No definition of \"exec\" in current context.\n" &"warning: failed to reevaluate internal exception condition for catchpoint 1: No definition of \"exec\" in current context.\n" [...] The same is true if using an Ada exception catchpoint. The problem comes from the fact that that we deallocate the strings given as arguments to create_ada_exception_catchpoint, while the latter just makes shallow copies of those strings, thus creating dandling pointers. This patch fixes the issue by passing freshly allocated strings to create_ada_exception_catchpoint, while at the same time updating create_ada_exception_catchpoint's documentation to make it clear that deallocating the strings is no longer the responsibility of the caller. gdb/ChangeLog: * ada-lang.c (create_ada_exception_catchpoint): Enhance the documentation of fields "except_string" and "condition". * mi/mi-cmd-catch.c (mi_cmd_catch_assert): Reallocate CONDITION on the heap before passing it to create_ada_exception_catchpoint. (mi_cmd_catch_exception): Likewise for EXCEPTION_NAME and CONDITION. gdb/testsuite/ChangeLog: * gdb.ada/mi_ex_cond: New testcase. Tested on x86_64-linux. The "-break-list" test FAILs without this patch.
2013-11-11fix "tkill" checkTom Tromey3-3/+15
An earlier patch removed the check for "syscall" since the results were not used in the C code. However, the result was used, via the cache variable, elsewhere in configure. This patch fixes the problem by checking for "syscall" at the point at which HAVE_TKILL_SYSCALL is defined. 2013-11-11 Tom Tromey <tromey@redhat.com> * config.in, configure: Rebuild. * configure.ac (HAVE_TKILL_SYSCALL): Check for "syscall".
2013-11-11Minor reformatting in remote-sim.c (gdbsim_detach declaration).Joel Brobecker2-1/+7
gdb/ChangeLog: * remote-sim.c (gdbsim_detach): Break declaration into shorter lines. No code change.
2013-11-11Fix argument type on gdbsim_detach prototype.Edjunior Barbosa Machado2-1/+5
2013-11-11 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com> * remote-sim.c (gdbsim_detach): Fix prototype.
2013-11-11 * elfxx-aarch64.c (_bfd_aarch64_elf_grok_prstatus): Fix hard-codedYufeng Zhang2-1/+6
size of struct elf_prstatus.
2013-11-112013-11-08 Jan-Benedict Glaw <jbglaw@lug-owl.deJan-Benedict Glaw2-1/+5
* config/tc-ppc.c (ppc_elf_localentry): Add cast. [BR]: https://sourceware.org/ml/binutils/2013-11/msg00064.html