aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2014-01-13New "make check-headers" rule.Pedro Alves2-0/+27
Tries to compile each header in isolation, thus ensuring headers are self-contained. Defaults to checking all $HFILES_NO_SRCDIR headers. Do: make check-headers CHECK_HEADERS="header.h list.h" to check specific headers. gdb/ 2014-01-13 Pedro Alves <palves@redhat.com> * Makefile.in (CHECK_HEADERS): New variable. (check-headers:): New rule.
2014-01-13remove deprecated_set_hookTom Tromey4-9/+6
This removes deprecated_set_hook. Insight was the last user of this hook, but I recently checked in a patch to have it use the command_param_changed observer instead. 2014-01-13 Tom Tromey <tromey@redhat.com> * cli/cli-setshow.c (do_set_command): Update. * defs.h (deprecated_set_hook): Remove. * top.c (deprecated_set_hook): Remove.
2014-01-13Fix MinGW compilation errors in gdbserver/.Eli Zaretskii2-1/+7
gdb/gdbserver/Makefile.in (INCLUDE_CFLAGS): Remove trailing slash from "-I$(srcdir)/../". Fixes MinGW compilation errors with old GCC versions.
2014-01-13tfile: Don't infer the PC from the tracepoint if the PC is a pseudo-register.Pedro Alves2-1/+16
This PC guessing can't work when the PC is a pseudo-register. Pseudo-register values don't end up stored in the regcache, they're always recomputed. And, it's actually wrong to try to write a pseudo-register with regcache_raw_supply. Skip it and add a comment. gdb/ 2014-01-13 Pedro Alves <palves@redhat.com> * tracepoint.c (tfile_fetch_registers): Don't infer the PC from the tracepoint if the PC is a pseudo-register.
2014-01-13replace XCALLOC with XCNEWVEC or XCNEWTom Tromey20-33/+56
This removes XCALLOC and replaces it either with XCNEWVEC, or, if the number of elements being requested was 1, with XCNEW. 2014-01-13 Tom Tromey <tromey@redhat.com> * defs.h (XCALLOC): Remove. * bcache.c (bcache_xmalloc): Use XCNEW, not XCALLOC. (print_bcache_statistics): Use XCNEWVEC, not XCALLOC. * dwarf2loc.c (allocate_piece_closure): Likewise. * elfread.c (elf_symfile_segments): Likewise. (elf_symfile_segments): Likewise. * gdbtypes.c (copy_type_recursive): Likewise. * i386-tdep.c (i386_gdbarch_init): Use XCNEW, not XCALLOC. * jit.c (jit_frame_sniffer): Use XCNEWVEC, not XCALLOC. * minsyms.c (prim_record_minimal_symbol_full): Use XCNEW, not XCALLOC. * mt-tdep.c (mt_gdbarch_init): Likewise. * opencl-lang.c (allocate_lval_closure): Use XCNEWVEC, not XCALLOC. * psymtab.c (psymbol_compare): Use XCNEW, not XCALLOC. * regcache.c (regcache_xmalloc_1): Use XCNEWVEC, not XCALLOC. * registry.c (registry_alloc_data): Likewise. * rs6000-tdep.c (rs6000_gdbarch_init): Use XCNEW, not XCALLOC. * s390-linux-tdep.c (s390_gdbarch_init): Likewise. * serial.c (serial_fdopen_ops): Likewise. * solib-aix.c (solib_aix_get_section_offsets): Use XCNEWVEC, not XCALLOC. * spu-tdep.c (spu_gdbarch_init): Use XCNEW, not XCALLOC. * symfile.c (default_symfile_segments): Use XCNEW and XCNEWVEC, not XCALLOC.
2014-01-13replace XMALLOC with XNEWTom Tromey37-62/+108
This replaces XMALLOC with XNEW, and removes XMALLOC. The only non-mechanical bit here was remembering to edit gdbarch.sh. 2014-01-13 Tom Tromey <tromey@redhat.com> * defs.h (XMALLOC): Remove. * avr-tdep.c (avr_gdbarch_init): Use XNEW, not XMALLOC. * bfin-tdep.c (bfin_gdbarch_init): Likewise. * cli-out.c (struct ui_out *): Likewise. * cli/cli-dump.c (add_dump_command): Likewise. (add_dump_command): Likewise. * complaints.c (get_complaints): Likewise. (find_complaint): Likewise. * dwarf2-frame.c (execute_cfa_program): Likewise. * dwarf2read.c (abbrev_table_read_table): Likewise. * gdbarch.sh: Likewise. * gdbarch.c: Rebuild. * inf-ttrace.c (inf_ttrace_add_page): Likewise. * interps.c (interp_new): Likewise. * lm32-tdep.c (lm32_gdbarch_init): Likewise. * m32r-tdep.c (m32r_gdbarch_init): Likewise. * mi/mi-console.c (mi_console_file_new): Likewise. * mi/mi-interp.c (mi_interpreter_init): Likewise. * mi/mi-out.c (mi_out_new): Likewise. * mi/mi-parse.c (mi_parse): Likewise. * microblaze-tdep.c (microblaze_gdbarch_init): Likewise. * moxie-tdep.c (moxie_gdbarch_init): Likewise. * observer.c (xalloc_observer_list_node): Likewise. * regcache.c (regcache_xmalloc_1): Likewise. * reggroups.c (reggroup_new): Likewise. (_initialize_reggroup): Likewise. * registry.c (register_data_with_cleanup): Likewise. * remote.c (remote_notif_stop_alloc_reply): Likewise. * ser-base.c (serial_ttystate): Likewise. * ser-mingw.c (make_pipe_state): Likewise. * ser-pipe.c (pipe_open): Likewise. * serial.c (serial_open): Likewise. * sh64-tdep.c (sh64_gdbarch_init): Likewise. * tui/tui-data.c (tui_alloc_generic_win_info): Likewise. (tui_alloc_win_info): Likewise. (tui_add_content_elements): Likewise. * tui/tui-file.c (tui_file_new): Likewise. * tui/tui-out.c (tui_out_new): Likewise. * ui-file.c (mem_file_new): Likewise. * ui-out.c (push_level): Likewise. (make_cleanup_ui_out_end): Likewise. (append_header_to_list): Likewise. (ui_out_new): Likewise. * user-regs.c (user_reg_add_builtin): Likewise.
2014-01-13replace XZALLOC with XCNEWTom Tromey46-83/+163
This replaces XZALLOC with XCNEW and removes XZALLOC. This change is purely mechanical. 2014-01-13 Tom Tromey <tromey@redhat.com> * defs.h (XZALLOC): Remove. * ada-lang.c (get_ada_inferior_data): Use XCNEW, not XZALLOC. * ada-tasks.c (get_ada_tasks_pspace_data): Likewise. (get_ada_tasks_inferior_data): Likewise. * auto-load.c (get_auto_load_pspace_data): Likewise. * auxv.c (get_auxv_inferior_data): Likewise. * bfd-target.c (target_bfd_reopen): Likewise. * breakpoint.c (get_catch_syscall_inferior_data): Likewise. (deprecated_insert_raw_breakpoint): Likewise. * bsd-uthread.c (bsd_uthread_pid_to_str): Likewise. * corelow.c (core_open): Likewise. * darwin-nat.c (darwin_check_new_threads): Likewise. (darwin_attach_pid): Likewise. * dummy-frame.c (dummy_frame_push): Likewise. * dwarf2-frame.c (dwarf2_frame_cache): Likewise. * dwarf2loc.c (allocate_piece_closure): Likewise. * elfread.c (elf_symfile_segments): Likewise. * eval.c (ptrmath_type_p): Likewise. * exceptions.c (EXCEPTIONS_SIGJMP_BUF): Likewise. * gdbtypes.c (alloc_type_arch): Likewise. (alloc_type_instance): Likewise. * hppa-tdep.c (hppa_gdbarch_init): Likewise. * inf-child.c (inf_child_can_use_agent): Likewise. * inflow.c (get_inflow_inferior_data): Likewise. * infrun.c (save_infcall_suspend_state): Likewise. * jit.c (jit_reader_load): Likewise. (get_jit_objfile_data): Likewise. (get_jit_program_space_data): Likewise. (jit_object_open_impl): Likewise. (jit_symtab_open_impl): Likewise. (jit_block_open_impl): Likewise. (jit_frame_sniffer): Likewise. * linux-fork.c (add_fork): Likewise. * maint.c (make_command_stats_cleanup): Likewise. * objfiles.c (get_objfile_pspace_data): Likewise. * opencl-lang.c (struct lval_closure): Likewise. * osdata.c (osdata_start_osdata): Likewise. * progspace.c (new_address_space): Likewise. (add_program_space): Likewise. * remote-sim.c (get_sim_inferior_data): Likewise. * sh-tdep.c (sh_gdbarch_init): Likewise. * skip.c (Ignore): Likewise. (skip_delete_command): Likewise. * solib-aix.c (get_solib_aix_inferior_data): Likewise. (library_list_start_library): Likewise. (solib_aix_current_sos): Likewise. * solib-darwin.c (get_darwin_info): Likewise. (darwin_current_sos): Likewise. * solib-dsbt.c (get_dsbt_info): Likewise. * solib-ia64-hpux.c (new_so_list): Likewise. (ia64_hpux_get_solib_linkage_addr): Likewise. * solib-spu.c (append_ocl_sos): Likewise. (spu_current_sos): Likewise. * solib-svr4.c (get_svr4_info): Likewise. (svr4_keep_data_in_core): Likewise. (library_list_start_library): Likewise. (svr4_default_sos): Likewise. (svr4_read_so_list): Likewise. * solib-target.c (library_list_start_library): Likewise. (solib_target_current_sos): Likewise. * sparc-tdep.c (sparc32_gdbarch_init): Likewise. * symfile-debug.c (install_symfile_debug_logging): Likewise. * symfile.c (default_symfile_segments): Likewise. * target-descriptions.c (tdesc_data_init): Likewise. (tdesc_create_reg): Likewise. (struct tdesc_type *): Likewise. (tdesc_create_vector): Likewise. (tdesc_set_struct_size): Likewise. (struct tdesc_type *): Likewise. (tdesc_free_feature): Likewise. (tdesc_create_feature): Likewise. * windows-nat.c (windows_add_thread): Likewise. (windows_make_so): Likewise. * xml-support.c (gdb_xml_body_text): Likewise. (gdb_xml_create_parser_and_cleanup): Likewise. (xml_process_xincludes): Likewise. * xml-syscall.c (allocate_syscalls_info): Likewise. (syscall_create_syscall_desc): Likewise.
2014-01-12Split i386_stap_parse_special_token into smaller functionsSergio Durigan Junior2-244/+279
This patch reorganizes code on gdb/i386-tdep.c's SystemTap SDT probe support functions. Before it, the code to parse special operands on x86 lived in a single, big function. This patch creates 2 new functions that makes the code more organized and removes a few indentation levels (which is always good IMO). I haven't modified anything logical in the functions, i.e., there's still one latent bug on i386_stap_parse_special_token_triplet now. I will soon post a patch to fix this, and to also improve the readability of the two new functions. 2014-01-12 Sergio Durigan Junior <sergiodj@redhat.com> * i386-tdep.c (i386_stap_parse_special_token_triplet): New function, with code from i386_stap_parse_special_token. (i386_stap_parse_special_token_three_arg_disp): Likewise. (i386_stap_parse_special_token): Move code to the two functions above; simplify it.
2014-01-10[doc] Mention that "set environment" affects the shell too.Pedro Alves2-3/+16
gdb/doc/ 2014-01-10 Pedro Alves <palves@redhat.com> * gdb.texinfo (Your Program's Environment) <set environment>: Mention the shell, and point at 'set exec-wrapper'.
2014-01-10Since upstream gcc has recently increased the function alignment onAndreas Arnez3-5/+12
S390, the dw2-dir-file-name test case fails in the first gdb_continue_to_breakpoint. Indeed, the breakpoint is now placed into the alignment gap *before* the actual function. This happens because the test case declares the respective "*_start" symbol as a "loose" label before the function definition, and the compiler inserts the alignment between that label and the function itself. The "*_start" symbols were only necessary because FUNC made the function static. The fix makes the functions extern instead, thus making the "*_start" labels unnecessary. testsuite/ 2014-01-10 Andreas Arnez <arnez@linux.vnet.ibm.com> Pedro Alves <palves@redhat.com> * gdb.dwarf2/dw2-dir-file-name.c (FUNC): Remove "*_start" symbol. Make "name" extern. * gdb.dwarf2/dw2-dir-file-name.exp (out_cu, out_line): Replace references to ${name}_start by references to ${name}.
2014-01-10Remove path from gdb.ada/pp-rec-component.exp "source" testJoel Brobecker2-1/+6
gdb/testsuite/ChangeLog: * gdb.ada/pp-rec-component.exp: Remove path from "source" test.
2014-01-10Remove path from gdb.python/py-pp-integral.exp "source" test.Joel Brobecker2-1/+6
gdb/testsuite/ChangeLog: * gdb.python/py-pp-integral.exp: Remove path from "source" test.
2014-01-09gdb.mi/mi-info-os.exp: Fix cross-debugger testingPedro Alves2-0/+26
A live target is required for `-info-os' to work in non-native configurations. (gdb) Expecting: ^(-info-os[ ]+)?(.*\^done,OSDataTable=.*[ ]+[(]gdb[)] [ ]*) -info-os ^error,msg="Don't know how to get OS data. Try \"help target\"." (gdb) FAIL: gdb.mi/mi-info-os.exp: -info-os If GDB does have a native configuration included, but we're testing remote, it'll be worse, as if we're not connected yet, -info-os will run against the default run target, and pass, falsely giving the impression the remote bits were exercised. gdb/testsuite/ 2014-01-09 Maciej W. Rozycki <macro@codesourcery.com> Pedro Alves <palves@redhat.com> * gdb.mi/mi-info-os.exp: Connect to the target with mi_gdb_target_load.
2014-01-09Handle the case of a remote target supporting target side commands, but not ↵Pedro Alves5-30/+111
on software breakpoints. Although we can tell upfront whether a remote target supports target side commands, we can only tell whether the target supports that in combination with a given breakpoint kind (software, hardware, watchpoints, etc.) when we go and try to insert such a breakpoint kind the first time. It's not desirable to make remote_insert_breakpoint simply return -1 in this case, because if the breakpoint was set in a shared library, insert_bp_location will assume that the breakpoint insertion failed because the library wasn't mapped in. insert_bp_location already handles errors/exceptions thrown from the target_insert_xxx methods, exactly so the backend can tell the user the detailed reason the insertion of hw breakpoints failed. But, in the case of software breakpoints, it discards the detailed error message. So the patch makes insert_bp_location use the error's message for SW breakpoints too, and, introduces a NOT_SUPPORTED_ERROR error code so that insert_bp_location doesn't confuse the error for failure due to a shared library disappearing. The result is: (gdb) c Warning: Cannot insert breakpoint 2: Target doesn't support breakpoints that have target side commands. 2014-01-09 Pedro Alves <palves@redhat.com> Hui Zhu <hui@codesourcery.com> PR gdb/16101 * breakpoint.c (insert_bp_location): Rename hw_bp_err_string to bp_err_string. Don't mark the location shlib_disabled if the error thrown wasn't a generic or memory error. Catch errors thrown while inserting breakpoints in overlayed code. Output error message of software breakpoints. * remote.c (remote_insert_breakpoint): If this breakpoint has target-side commands but this stub doesn't support Z0 packets, throw NOT_SUPPORTED_ERROR error. * exceptions.h (enum errors) <NOT_SUPPORTED_ERROR>: New error. * target.h (target_insert_breakpoint): Extend comment. (target_insert_hw_breakpoint): Add comment.
2014-01-08GDBserver: Discard previous queued events when GDB disconnects.Pedro Alves2-3/+12
... not when a new GDB connection sends the status packet ('?'). Mainly just a cleanup/simplification, as GDB always sends '?' first. Tested on x86_64 Fedora 17. 2014-01-08 Pedro Alves <palves@redhat.com> * server.c (handle_status): Don't discard previous queued stop replies or thread's pending status here. (main) <disconnection>: Do it here instead.
2014-01-08[remote/gdbserver] Don't lose signals when reconnecting.Pedro Alves8-58/+429
Currently, when GDB connects in all-stop mode, GDBserver always responds to the status packet with a GDB_SIGNAL_TRAP, even if the program is actually stopped for some other signal. (gdb) tar rem ... ... (gdb) c Program received signal SIGUSR1, User defined signal 1. (gdb) disconnect (gdb) tar rem ... (gdb) c (Or a GDB crash instead of an explicit disconnect.) This results in the program losing that signal on that last continue, because gdb will tell the target to resume with no signal (to suppress the GDB_SIGNAL_TRAP, due to 'handle SISGTRAP nopass'), and that will actually suppress the real signal the program had stopped for (SIGUSR1). To fix that, I think we should make GDBserver report the real signal the thread had stopped for in response to the status packet: @item ? @cindex @samp{?} packet Indicate the reason the target halted. The reply is the same as for step and continue. But, that raises the question -- which thread are we reporting the status for? Due to how the RSP in all-stop works, we can only report one status. The status packet's response is a stop reply packet, so it includes the thread identifier, so it's not a problem packet-wise. However, GDBserver is currently always reporting the status for first thread in the thread list, even though that may well not be the thread that got the signal that caused the program to stop. So the next logical step would be to report the status for the last_ptid/last_status thread (the last event reported to gdb), if it's still around; and if not, fallback to some other thread. There's an issue on the GDB side with that, though... GDB currently always adds the thread reported in response to the status query as the first thread in its list. That means that if we start with e.g., (gdb) info threads 3 Thread 1003 ... * 2 Thread 1002 ... 1 Thread 1001 ... And reconnect: (gdb) disconnect (gdb) tar rem ... We end up with: (gdb) info threads 3 Thread 1003 ... 2 Thread 1001 ... * 1 Thread 1002 ... Not a real big issue, but it's reasonably fixable, by having GDB fetch/sync the thread list before fetching the status/'?', and then using the status to select the right thread as current on the GDB side. Holes in the thread numbers are squashed before/after reconnection (e.g., 2,3,5 becomes 1,2,3), but the order is preserved, which I think is both good, and good enough. However (yes, there's more...), the previous GDB that was connected might have had gdbserver running in non-stop mode, or could have left gdbserver doing disconnected tracing (which also forces non-stop), and if the new gdb/connection is in all-stop mode, we can end up with more than one thread with a signal to report back to gdb. As we can only report one thread/status (in the all-stop RSP variant; the non-stop variant doesn't have this issue), we get to do what we do at every other place we have this situation -- leave events we can't report right now as pending, so that the next resume picks them up. Note all this ammounts to a QoI change, within the existing framework. There's really no RSP change here. The only user visible change (other than that the signal is program is stopped at isn't lost / is passed to the program), is in "info program", that now can show the signal the program stopped for. Of course, the next resume will respect the pass/nopass setting for the signal in question. It'd be reasonable to have the initial connection tell the user the program was stopped with a signal, similar to when we load a core to debug, but I'm leaving that out for a future change. I think we'll need to either change how handle_inferior_event & co handle stop_soon, or maybe bypass them completely (like fork-child.c:startup_inferior) for that. Tested on x86_64 Fedora 17. gdb/gdbserver/ 2014-01-08 Pedro Alves <palves@redhat.com> * gdbthread.h (struct thread_info) <status_pending_p>: New field. * server.c (visit_actioned_threads, handle_pending_status): New function. (handle_v_cont): Factor out parts to ... (resume): ... this new function. If in all-stop, and a thread being resumed has a pending status, report it without actually resuming. (myresume): Adjust to use the new 'resume' function. (clear_pending_status_callback, set_pending_status_callback) (find_status_pending_thread_callback): New functions. (handle_status): Handle the case of multiple threads having interesting statuses to report. Report threads' real last signal instead of always reporting GDB_SIGNAL_TRAP. Look for a thread with an interesting thread to report the status for, instead of always reporting the status of the first thread. gdb/ 2014-01-08 Pedro Alves <palves@redhat.com> * remote.c (remote_add_thread): Add threads silently if starting up. (remote_notice_new_inferior): If in all-stop, and starting up, don't call notice_new_inferior. (get_current_thread): New function, factored out from ... (add_current_inferior_and_thread): ... this. Adjust. (remote_start_remote) <all-stop>: Fetch the thread list. If we found any thread, then select the remote's current thread as GDB's current thread too. gdb/testsuite/ 2014-01-08 Pedro Alves <palves@redhat.com> * gdb.threads/reconnect-signal.c: New file. * gdb.threads/reconnect-signal.exp: New file.
2014-01-08Update NEWS post GDB 7.7 branch creation.Joel Brobecker2-1/+9
gdb/ChangeLog: * NEWS: Create a new section for the next release branch. Rename the section of the current branch, now that it has been cut.
2014-01-08Bump version to 7.7.50.DATE-cvs.Joel Brobecker2-1/+6
Now that the GDB 7.7 branch has been created, we can bump the version number. gdb/ChangeLog: GDB 7.7 branch created (79301218fa0f074c5656db0ec8972a5ddcf91fb5): * version.in: Bump version to 7.7.50.DATE-cvs.
2014-01-08Add missing ChangeLog entries.gdb-7.7-branchpointJoel Brobecker2-0/+17
2014-01-08Fix pointer assignment with different signednessYao Qi2-3/+9
This patch fixes these errors below: ../../binutils-gdb/gdb/spu-linux-nat.c: In function ‘spu_symbol_file_add_from_memory’: ../../binutils-gdb/gdb/spu-linux-nat.c:368:3: error: pointer targets in passing argument 2 of ‘spu_proc_xfer_spu’ differ in signedness [-Werror=pointer-sign] ../../binutils-gdb/gdb/spu-linux-nat.c:232:1: note: expected ‘gdb_byte *’ but argument is of type ‘char *’ ../../binutils-gdb/gdb/spu-linux-nat.c: In function ‘spu_xfer_partial’: ../../binutils-gdb/gdb/spu-linux-nat.c:598:7: error: pointer targets in passing argument 1 of ‘strtoulst’ differ in signedness [-Werror=pointer-sign] In file included from ../../binutils-gdb/gdb/defs.h:769:0, from ../../binutils-gdb/gdb/spu-linux-nat.c:21: ../../binutils-gdb/gdb/utils.h:43:15: note: expected ‘const char *’ but argument is of type ‘gdb_byte *’ gdb: 2014-01-08 Yao Qi <yao@codesourcery.com> * spu-linux-nat.c (spu_symbol_file_add_from_memory): Change type of 'id' to gdb_byte. Cast 'id' to 'const char *'. (spu_xfer_partial): Cast 'buf' to 'const char *'.
2014-01-08Pass name to symbol_file_add_from_bfdYao Qi2-1/+7
This patch fixes the following build error: ../../binutils-gdb/gdb/spu-linux-nat.c:383:5: error: passing argument 2 of ‘symbol_file_add_from_bfd’ makes pointer from integer without a cast [-Werror] In file included from ../../binutils-gdb/gdb/spu-linux-nat.c:29:0: ../../binutils-gdb/gdb/symfile.h:444:24: note: expected ‘const char *’ but argument is of type ‘int’ ../../binutils-gdb/gdb/spu-linux-nat.c:383:5: error: passing argument 3 of ‘symbol_file_add_from_bfd’ makes integer from pointer without a cast [-Werror] In file included from ../../binutils-gdb/gdb/spu-linux-nat.c:29:0: ../../binutils-gdb/gdb/symfile.h:444:24: note: expected ‘int’ but argument is of type ‘void *’ ../../binutils-gdb/gdb/spu-linux-nat.c:383:5: error: passing argument 5 of ‘symbol_file_add_from_bfd’ makes integer from pointer without a cast [-Werror] In file included from ../../binutils-gdb/gdb/spu-linux-nat.c:29:0: ../../binutils-gdb/gdb/symfile.h:444:24: note: expected ‘int’ but argument is of type ‘void *’ ../../binutils-gdb/gdb/spu-linux-nat.c:383:5: error: too few arguments to function ‘symbol_file_add_from_bfd’ Argument 'name' was added to function symbol_file_add_from_bfd by this patch [patchv4 4/5] Keep objfile original filename https://sourceware.org/ml/gdb-patches/2013-09/msg00683.html but caller of symbol_file_add_from_bfd in spu-linux-nat.c wasn't updated. This patch fixes the build error. gdb: 2014-01-08 Yao Qi <yao@codesourcery.com> * spu-linux-nat.c (spu_symbol_file_add_from_memory): Pass return value of bfd_get_filename to symbol_file_add_from_bfd.
2014-01-08 Fix PR16201.Pierre Muller2-6/+32
* coff-pe-read.c (struct read_pe_section_data): Add index field. (add_pe_exported_sym): Use SECTION_DATA->INDEX for call to prim_record_mininal_symbol_and_info. (add_pe_forwarded_sym): Use known section number of forwarded symbol in call to prim_record_minimal_symbol_and_info. (read_pe_exported_syms): Set index field of section_data.
2014-01-07AARCH64: Change cpsr type to be 64bit.Andrew Pinski3-2/+7
2013-12-18 Andrew Pinski <apinski@cavium.com> * features/aarch64-core.xml (cpsr): Change to be 64bit. * features/aarch64.c: Regenerate.
2014-01-07Use correct default for target functions that return pointerAndreas Schwab2-4/+18
* target.c (return_null): Define. (update_current_target): Use it instead of return_zero for functions that return a pointer.
2014-01-07Fix dir command for duplicated paths and add a new testcase.Edjunior Barbosa Machado4-10/+58
gdb/ChangeLog: 2014-01-07 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com> * source.c (add_path): Fix check for duplicated paths in the previously included paths. gdb/testsuite/ChangeLog: 2014-01-07 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.base/source-dir.exp: New file.
2014-01-07Remove duplicated #include's from GDBHonggyu Kim39-50/+42
This patch simply removes duplicated #include statements in the gdb/ directory. If there are two duplicated #include statements, this patch keeps the first #include and removes the second. Those duplicates have been found by using the checkincludes.pl tool from the Linux kernel and double checked manually once again if the #include statements are affected by #ifdef macros. 2014-01-06 Honggyu Kim <hong.gyu.kim@lge.com> * ada-lang.c: Remove duplicated include statements. * alphabsd-nat.c: Ditto. * amd64-darwin-tdep.c: Ditto. * amd64fbsd-nat.c: Ditto. * auto-load.c: Ditto. * ax-gdb.c: Ditto. * breakpoint.c: Ditto. * dbxread.c: Ditto. * fork-child.c: Ditto. * gdb_usleep.c: Ditto. * i386-darwin-tdep.c: Ditto. * i386fbsd-nat.c: Ditto. * infcmd.c: Ditto. * inferior.c: Ditto. * jv-lang.c: Ditto. * linux-nat.c: Ditto. * linux-tdep.c: Ditto. * m68kbsd-nat.c: Ditto. * m68klinux-nat.c: Ditto. * microblaze-tdep.c: Ditto. * mips-linux-tdep.c: Ditto. * mn10300-tdep.c: Ditto. * nto-tdep.c: Ditto. * opencl-lang.c: Ditto. * osdata.c: Ditto. * printcmd.c: Ditto. * regcache.c: Ditto. * remote-m32r-sdi.c: Ditto. * remote.c: Ditto. * symfile.c: Ditto. * symtab.c: Ditto. * tilegx-linux-nat.c: Ditto. * tilegx-tdep.c: Ditto. * tracepoint.c: Ditto. * valops.c: Ditto. * vaxbsd-nat.c: Ditto. * windows-nat.c: Ditto. * xtensa-tdep.c: Ditto.
2014-01-07Fix missing-prototypes error for '_initialize_spu_nat'Yao Qi2-0/+6
This patch fixes this build error below: ../../binutils-gdb/gdb/spu-linux-nat.c:616:1: error: no previous prototype for ‘_initialize_spu_nat’ [-Werror=missing-prototypes] gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * spu-linux-nat.c (_initialize_spu_nat): Declare.
2014-01-07Cast to uintptr_t when calling ptrace32 on aixYao Qi1-15/+15
When I verify my changes to target.h doesn't break build on aix, I get the following build error on a clean GDB checkout. ../../binutils-gdb/gdb/aix-thread.c: In function 'pdc_read_regs': ../../binutils-gdb/gdb/aix-thread.c:366:4: error: passing argument 3 of 'ptrace32' makes integer from pointer without a cast [-Werror] if (!ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL)) ^ ../../binutils-gdb/gdb/aix-thread.c:263:1: note: expected 'long long int' but argument is of type 'uint32_t *' ptrace32 (int req, int id, addr_ptr addr, int data, int *buf) ^ ../../binutils-gdb/gdb/aix-thread.c:375:42: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] if (!ptrace32 (PTT_READ_FPRS, tid, (addr_ptr) fprs, 0, NULL)) ^ ../../binutils-gdb/gdb/aix-thread.c:392:39: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] if (!ptrace32 (PTT_READ_SPRS, tid, (addr_ptr) &sprs32, 0, NULL)) GCC uses -maix32 in default, so the 'long long' is 64 bit and address is 32 bit. Such warnings should go away if -maix64 is used. In this patch, I cast the parameter to uintptr_t first, and then cast to addr_ptr. gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> Joel Brobecker <brobecker@adacore.com> * aix-thread.c (pdc_read_regs): Cast parameter to uintptr_t. (pdc_write_regs): Likewise. (fetch_regs_kernel_thread): Likewise. (store_regs_kernel_thread): Likewise.
2014-01-07varobj/Ada: Missing children for interface-wide tagged typesJoel Brobecker5-0/+133
Consider the following code: type Element is abstract tagged null record; type GADataType is interface; type Data_Type is new Element and GADataType with record I : Integer := 42; end record; Result1 : Data_Type; GGG1 : GADataType'Class := GADataType'Class (Result1); When trying to create a varobj for variable ggg1, GDB currently returns an object which has no child: -var-create ggg1 * ggg1 ^done,name="ggg1",numchild="0",[...] This is incorrect, it should return an object which has one child (field "i"). This is because tagged-type objects are dynamic, and we need to apply a small transformation in order to get their actual type. This is already done on the GDB/CLI side in ada-valprint, and it needs to be done on the ada-varobj side as well. gdb/ChangeLog: * ada-varobj.c (ada_varobj_adjust_for_child_access): Convert tagged type objects to their actual type. gdb/testsuite/ChangeLog: * gdb.ada/mi_interface: New testcase.
2014-01-07Ada: Fix missing call to pretty-printer for fields of records.Joel Brobecker8-13/+171
Consider the following types: type Time_T is record Secs : Integer; end record; Before : Time_T := (Secs => 1384395743); In this example, we assume that type Time_T is the number of seconds since Epoch, and so added a Python pretty-printer, to print this type in a more human-friendly way. For instance: (gdb) print before $1 = Thu Nov 14 02:22:23 2013 (1384395743) However, we've noticed that things stop working when this type is embedded inside another record, and we try to print that record. For instance, with the following declarations: type Composite is record Id : Integer; T : Time_T; end record; Afternoon : Composite := (Id => 1, T => (Secs => 1384395865)); (gdb) print afternoon $2 = (id => 1, t => (secs => 1384395865)) We expected instead: (gdb) print afternoon $2 = (id => 1, t => Thu Nov 14 02:24:25 2013 (1384395865)) This patch fixes the problem by making sure that we try to print each field via a call to val_print, rather than calling ada_val_print directly. We need to go through val_print, as the val_print handles all language-independent features such as calling the pretty-printer, knowing that ada_val_print will get called eventually if actual Ada-specific printing is required (which should be the most common scenario). And because val_print takes the language as parameter, we enhanced the print_field_values and print_variant_part to also take a language. As a bonus, this allows us to remove a couple of references to current_language. gdb/ChangeLog: * ada-valprint.c (print_field_values): Add "language" parameter. Update calls to print_field_values and print_variant_part. Pass new parameter "language" in call to val_print instead of "current_language". Replace call to ada_val_print by call to val_print. (print_variant_part): Add "language" parameter. (ada_val_print_struct_union): Update call to print_field_values. gdb/testsuite/ChangeLog: * gdb.ada/pp-rec-component.exp, gdb.ada/pp-rec-component.py, gdb.ada/pp-rec-component/foo.adb, gdb.ada/pp-rec-component/pck.adb, gdb.ada/pp-rec-component/pck.ads: New files.
2014-01-07ada_print_floating: Remove use of statically sized buffer.Joel Brobecker2-16/+16
ada_print_floating declares a char buffer with a size that we're hoping to always be large enough to hold any string representation of a float value. But that's not really necessary, and also forces us to create a small wrapper (ui_memcpy) to perform the extraction from a temporary stream into this buffer. This patches fixes both issues by relying on ui_file_xstrdup. This forces us to make a few adjustments that are minor in nature, as we now need to defer the cleanup to the end of the function. gdb/ChangeLog: * ada-valprint.c (ui_memcpy): Delete. (ada_print_floating): Update documentation. Add empty line between between function documentation and implementation. Delete variable "buffer". Use ui_file_xstrdup in place of ui_file_put. Minor adjustments following this change.
2014-01-07Extract string-printing out of ada_val_print_arrayJoel Brobecker2-49/+72
This patch creates a new function called "ada_val_print_string" whose code is directly extracted out of ada_val_print_array. The extracted code is then replaced by a call to this new function, followed by a "return". The return avoids the need for an "else" branch, with the associated block nesting. The latter is not really terrible in this case, but it seems more readable this way. gdb/ChangeLog: * ada-valprint.c (ada_val_print_string): New function, extracted from ada_val_print_array. (ada_val_print_array): Replace extracted code by call to ada_val_print_string followed by a return. Move "else" branch to the function's top block.
2014-01-07move ada_val_print_array down within other ada_val_print* functionsJoel Brobecker2-66/+73
This patch moves ada_val_print_array to group it with the other ada_val_print_* function which are being called by ada_val_print_1. Since this function is in the same situation, it is more logical to move it within that group. It also rationalizes the function's prototype to match the prototype of the other ada_val_print_* routines. gdb/ChangeLog: * ada-valprint.c (ada_val_print_array): Move implementation down. Rename parameter "offset" and "val" into "offset_aligned" and "original_value" respectively. Add parameter "offset".
2014-01-07rewrite ada_val_print_ref to reduce if/else block nesting depthJoel Brobecker2-33/+39
The logic as currently implemented in this function was a little difficult to follow, due to the nested of if/else conditions, but most of the time, the "else" block was very simple. So this patch re-organizes the code to use fewer levels of nesting by using return statements, and writing the code as a sequence of "if something simple, then handle it and return" blocks. While touching this code, this patch changes the cryptic "???" printed when trying to print a reference pointing to an undefined type. This should only ever happen if the debugging information was corrupted or improperly read. But in case that happens, we now print "<ref to undefined type>" instead. This is more in line with how we print other conditions such as optimized out pieces, or synthetic pointers. gdb/ChangeLog: * ada-valprint.c (ada_val_print_ref): Rewrite by mostly re-organizing the code. Change the "???" message printed when target type is a TYPE_CODE_UNDEF into "<ref to undefined type>".
2014-01-07ada-valprint.c: Inline print_record inside ada_val_print_struct_unionJoel Brobecker2-24/+18
The function print_record is a fairly small and straightforward function which is only called from one location. So this patch inlines the code at the point of call. One small advantage is that the context of use of this patch has now become such that we can assume that TYPE is not a typedef, nor an enum. So thhe call to ada_check_typedef is unnecessary, and this patch removes it. gdb/ChangeLog: * ada-valprint.c (print_record): Delete, implementation inlined... (ada_val_print_struct_union): ... here. Remove call to ada_check_typedef in inlined implementation.
2014-01-07Split ada_val_print_1 into smaller functionsJoel Brobecker2-218/+332
The idea of this patch is that it's hard to have a global view of ada_val_print_1 because its body spans over too many lines. Also, each individual "case" block within the giant "switch" can be hard to isolate if spanning over multiple pages as well. gdb/ChangeLog: * ada-valprint.c (ada_val_print_gnat_array): New function, extracted from ada_val_print_1; (ada_val_print_ptr, ada_val_print_num, ada_val_print_enum) (ada_val_print_flt, ada_val_print_struct_union) (ada_val_print_ref): Likewise. (ada_val_print_1): Delete variables i and elttype. Replace extracted-out code by call to corresponding new functions.
2014-01-07Remove call to gdb_flush at end of ada_val_print_1Joel Brobecker2-1/+4
I am not sure why this function was called in the first place, but it disrupts the printing flow when in GDB/MI mode, ending the current console stream output, and starting a new one. It's not clear whether, with the code as currently written, the problem is actually visible or only latent. But, it becomes visible when we replace one of the "return" statements in the "switch" block just above by a "break" statement (this is something I'd like to do, and what made me realize the problem). With the gdb_flush call (after having replaced the "return" statement as explained above), we get: % gdb -q -i=mi ada_prg (gdb) print 1 &"print 1\n" !! -> ~"$1 = 1" !! -> ~"\n" ^done With the gdb_flush call removed, we now get the entire output into a single stream. (gdb) print 1 &"print 1\n" ~"$1 = 1" ~"\n" ^done gdb/ChangeLog: * ada-valprint.c (ada_val_print_1): Remove call to gdb_flush.
2014-01-07ada_val_print_1: Go through val_print instead of recursive call to self.Joel Brobecker2-14/+14
This is to standardize a little bit how printing is done, and in particular make sure that everyone goes through val_print when printing sub-objects. This helps making sure that standard features handled by val_print get activated when expected. gdb/ChangeLog: * ada-valprint.c (ada_val_print_1): Replace calls to ada_val_print_1 by calls to val_print.
2014-01-07ada_val_print_1: Add language parameterJoel Brobecker2-11/+20
This is to help calling val_print. We would like to be more systematic in calling val_print when printing, because it allows us to make sure we take advantage of the standard features such as pretty-printing which are handled by val_print. gdb/ChangeLog: * ada-valprint.c (ada_val_print_1): Add parameter "language". Update calls to self accordingly. Replace calls to c_val_print by calls to val_print.
2014-01-07ada-valprint.c: Reorder functions to reduce advance declarations.Joel Brobecker2-199/+194
Advance function declarations add to the maintenance cost, since any update to the function prototype needs to be made twice. For static functions, this is not necessary, and this patch reorders the function so as to reduce the use of such advanche declarations. gdb/ChangeLog: * ada-valprint.c (print_record): Delete declaration. (adjust_type_signedness, ada_val_print_1): Likewise. (ada_val_print): Move function implementation down. (print_variant_part, print_field_values, print_record): Move function implementation up.
2014-01-07[python] Add gdb.Type.name attribute.Joel Brobecker9-0/+142
Consider the following declarations: typedef long our_time_t; our_time_t current_time = 1384395743; The purpose of this patch is to allow the use of a pretty-printer for variables of type our_time_t. Normally, pretty-printing sniffers use the tag name in order to determine which, if any, pretty-printer should be used. But in the case above, the tag name is not set, since it does not apply to integral types. This patch extends the gdb.Type list of attributes to also include the name of the type, thus allowing the sniffer to match against that name. With that change, I was able to write a pretty-printer which displays our variable as follow: (gdb) print current_time $1 = Thu Nov 14 02:22:23 2013 (1384395743) gdb/ChangeLog: * python/py-type.c (typy_get_name): New function. (type_object_getset): Add entry for attribute "name". * NEWS: Add entry mentioning this new attribute. gdb/doc/ChangeLog: * gdb.texinfo (Types In Python): Document new attribute Types.name. gdb/testsuite: * gdb.python/py-pp-integral.c: New file. * gdb.python/py-pp-integral.py: New file. * gdb.python/py-pp-integral.exp: New file. Tested on x86_64-linux.
2014-01-07Remove an empty-body 'if' statementYao Qi2-3/+7
This patch removes the if statement and the comments together. gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * gnu-nat.c (set_exceptions_cmd): Remove an empty body 'if' statement.
2014-01-07Add qualifier 'const' to argument argsYao Qi2-1/+6
This patch fixes the following error. ../../../git/gdb/gnu-nat.c: In function 'info_port_rights': ../../../git/gdb/gnu-nat.c:3083:11: error: passing argument 1 of 'parse_to_comma_and_eval' from incompatible pointer type [-Werror] In file included from ../../../git/gdb/breakpoint.h:23:0, from ../../../git/gdb/inferior.h:37, from ../../../git/gdb/gnu-nat.c:55: ../../../git/gdb/value.h:763:22: note: expected 'const char **' but argument is of type 'char **' gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * gnu-nat.c (info_port_rights): Add qualifier const to argument args.
2014-01-07Use void for empty argument list in trace_meYao Qi2-1/+5
This patch fixes the following error: ../../../git/gdb/gnu-nat.c: In function 'trace_me': ../../../git/gdb/gnu-nat.c:2106:8: error: old-style function definition [-Werror=old-style-definition] gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * gnu-nat.c (trace_me): Use 'void' for empty argument list.
2014-01-07Make functions static.Yao Qi2-5/+12
gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * gnu-nat.c (make_inf) Update declaration. (make_inf): Make it static. (inf_set_traced): Likewise. (inf_port_to_thread, inf_task_died_status): Likewise.
2014-01-07Remove declaration of inf_tid_to_procYao Qi2-1/+4
inf_tid_to_proc is not defined at all. This patch is to remove its declaration. gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * gnu-nat.c (inf_tid_to_proc): Remove declaration.
2014-01-07Fix no previous prototype for '_initialize_gnu_nat' [-Werror=missing-prototypes]Yao Qi2-0/+8
This patch fixes this error below by declaring _initialize_gnu_nat. ../../../git/gdb/gnu-nat.c:3447:1: error: no previous prototype for '_initialize_gnu_nat' [-Werror=missing-prototypes] gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * gnu-nat.c (_initialize_gnu_nat): Declare.
2014-01-07Use enum bfd_endian in gdbarch.shYao Qi4-12/+21
This patch changes the return type of gdbarch_byte_order and gdbarch_byte_order_for_code, from 'int' to 'enum bfd_endian'. gdb: 2014-01-07 Yao Qi <yao@codesourcery.com> * gdbarch.sh (byte_order, byte_order_for_code): Change type to 'enum bfd_endian'. (struct gdbarch_info) <byte_order>: Change type to 'enum bfd_endian'. <byte_order_for_code>: Likewise. * gdbarch.c, gdbarch.h: Regenerated.
2014-01-06fix JIT reader path creationTom Tromey2-1/+5
2014-01-06 Sasha Smundak <asmundak@google.com> * jit.c: (jit_reader_load_command): Fix JIT reader path creation.
2014-01-06convert CONST to constTom Tromey3-2/+8
This removes the last uses of the obsolete CONST macro from the tree. I'm checking this in. Tested by rebuilding. 2014-01-06 Tom Tromey <tromey@redhat.com> * doublest.c (convert_doublest_to_floatformat): Use const, not CONST. * somread.c (som_symtab_read): Likewise.