aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-06-05Make it easy to make --disable-werror the default for both binutils and gdbJoel Brobecker38-39/+140
The goal of this patch is to provide an easy way to make --disable-werror the default when building binutils, or the parts of binutils that need to get built when building GDB. In development mode, we want to continue making -Werror the default with GCC. But, when making releases, I think we want to make it as easy as possible for regular users to successfully build from sources. GDB already has this kind of feature to turn -Werror as well as the use of the libmcheck library. As GDB Release Manager, I take advantage of it to turn those off after having cut the branch. I'd like to be able to do the same for the binutils bits. And perhaps Tristan will want to do the same for his releases too (not sure, binutils builders might be a little savvier than GDB builders). This patch introduces a new file, called development.sh, which just sets a variable called $development. In our development branches (Eg. "master"), it's set to true. But setting it to false would allow us to change the default behavior of various development-related features to be turned off; in this case, it turns off the use of -Werror by default (use --enable-werror to turn it back on). bfd/ChangeLog: * development.sh: New file. * warning.m4 (AM_BINUTILS_WARNINGS): Source bfd/development.sh. Make -Werror the default with GCC only if DEVELOPMENT is true. * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Add $(srcdir)/development.sh. * Makefile.in, configure: Regenerate. binutils/ChangeLog: * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Add dependency on bfd's development.sh. * Makefile.in, configure: Regenerate. gas/ChangeLog: * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Add dependency on bfd's development.sh. * Makefile.in, configure: Regenerate. gold/ChangeLog: * Makefile.am (CONFIG_STATUS_DEPENDENCIES): New. * Makefile.in, configure: Regenerate. gprof/ChangeLog: * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Add dependency on bfd's development.sh. * Makefile.in, configure: Regenerate. ld/ChangeLog: * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Add dependency on bfd's development.sh. * Makefile.in, configure: Regenerate. opcodes/ChangeLog: * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Add dependency on bfd's development.sh. * Makefile.in, configure: Regenerate. gdb/ChangeLog: * development.sh: Delete. * Makefile.in (config.status): Adjust dependency on development.sh. * configure.ac: Adjust development.sh source call. * configure: Regenerate. gdb/gdbserver/ChangeLog: * configure.ac: Adjust development.sh source call. * Makefile.in (config.status): Adjust dependency on development.sh. * configure: Regenerate. Tested on x86_64-linux by building two ways: One with DEVELOPMENT set to true, and one with DEVELOPMENT set to false. In the first case, I could see the use of -Werror, while it disappeared in the second case.
2014-06-04Delete scm-generics.exp.Doug Evans2-42/+4
Support for smobs as goops classes is changing in guile 2.2. We may eventually switch to using structs instead of smobs, so remove any claim we support goops or generics for now. * gdb.guile/scm-generics.exp: Delete.
2014-06-04Split create-breakpoint! into make-breakpoint, register-breakpoint!.Doug Evans7-48/+270
Rename breakpoint-delete! to delete-breakpoint!. * guile/scm-breakpoint.c (struct gdbscm_breakpoint_object): New members is_scheme_bkpt, spec. (bpscm_make_breakpoint_smob): Initialize new members. (gdbscm_create_breakpoint_x): Split into two ... (gdbscm_make_breakpoint, gdbscm_register_breakpoint_x): New functions. (bpscm_breakpoint_deleted): Reset breakpoint number and stop function. (scheme_function breakpoint_functions): Update. * guile/lib/gdb.scm: Delete create-breakpoint!. Rename breakpoint-delete! to delete-breakpoint!. Add make-breakpoint, register-breakpoint!. testsuite/ * gdb.guile/scm-breakpoint.exp: Update. Add tests for breakpoint registration. doc/ * guile.texi (Breakpoints In Guile): Update.
2014-06-05daily updateAlan Modra1-1/+1
2014-06-04gdbserver crash if the_target->supports_z_point_type is NULLJoel Brobecker2-0/+7
When debugging on LynxOS targets (and probably on SPU targets as well), inserting a breakpoint and resuming the program's execution causes GDBserver to crash. The crash occurs while handling the Z0 packet sent by GDB to insert our breakpoint, because z_type_supported calls the_target->supports_z_point_type without checking that it is not NULL This patch fixes the issue by making z_type_supported return false if the_target->supports_z_point_type is NULL. gdb/gdbserver/ChangeLog: PR server/17023 * mem-break.c (z_type_supported): Return zero if THE_TARGET->SUPPORTS_Z_POINT_TYPE is NULL. Tested on ppx-lynx5.
2014-06-04handle VLA in a struct or unionTom Tromey8-3/+218
It is valid in GNU C to have a VLA in a struct or union type, but gdb did not handle this. This patch adds support for these cases in the obvious way. Built and regtested on x86-64 Fedora 20. New tests included. 2014-06-04 Tom Tromey <tromey@redhat.com> * ada-lang.c (ada_template_to_fixed_record_type_1): Use value_from_contents_and_address_unresolved. (ada_template_to_fixed_record_type_1): Likewise. (ada_which_variant_applies): Likewise. * value.h (value_from_contents_and_address_unresolved): Declare. * value.c (value_from_contents_and_address_unresolved): New function. * gdbtypes.c (is_dynamic_type, resolve_dynamic_type) <TYPE_CODE_STRUCT, TYPE_CODE_UNION>: New cases. (resolve_dynamic_struct, resolve_dynamic_union): New functions. 2014-06-04 Tom Tromey <tromey@redhat.com> * gdb.base/vla-datatypes.exp: Add tests for VLA-in-structure and VLA-in-union. * gdb.base/vla-datatypes.c (vla_factory): Add vla_struct, inner_vla_struct, vla_union types. Initialize objects of those types and compute their sizes.
2014-06-04minor cleanups in is_dynamic_typeTom Tromey2-7/+7
I noticed that gdbtypes.c:is_dynamic_type has some unneeded "break"s. This patch cleans up the function a bit, removing those and removing the switch's default case so that the end of the function is a bit clearer. 2014-06-04 Tom Tromey <tromey@redhat.com> * gdbtypes.c (is_dynamic_type): Remove unneeded "break"s.
2014-06-04constify to_attachTom Tromey14-17/+36
This constifies the "args" argument to the target_ops to_attach method. I updated all instances of the method. I could not compile all of them but I hand-inspected them. In all cases either the argument is ignored, or it is passed to parse_pid_to_attach. (linux-nat does some extra stuff, but that one I built...) If you want to try it on your host of choice, please do so. The code in parse_pid_to_attach seems a little bogus to me. If there is a platform with a broken strtoul, we have better methods for fixing the issue now. However, I left the code as is since it is clearly ok to do so. Built and regtested on x86-64 Fedora 20. 2014-06-04 Tom Tromey <tromey@redhat.com> * procfs.c (procfs_attach): Make "args" const. * windows-nat.c (windows_attach): Make "args" const. * nto-procfs.c (procfs_attach): Make "args" const. * inf-ttrace.c (inf_ttrace_attach): Make "args" const. * go32-nat.c (go32_attach): Make "args" const. * gnu-nat.c (gnu_attach): Make "args" const. * darwin-nat.c (darwin_attach): Make "args" const. * inf-ptrace.c (inf_ptrace_attach): Make "args" const. * linux-nat.c (linux_nat_attach): Make "args" const. * remote.c (extended_remote_attach_1, extended_remote_attach): Make "args" const. * target.h (struct target_ops) <to_attach>: Make "args" const. (find_default_attach): Likewise. * utils.c (parse_pid_to_attach): Make "args" const. * utils.h (parse_pid_to_attach): Update.
2014-06-04convert to_thread_address_space to use TARGET_DEFAULT_FUNCTom Tromey4-23/+44
This converts to_thread_address_space to use TARGET_DEFAULT_FUNC. This method was one of a handful not using the normal target delegation approach. The only rationale here is consistency in the target vector. Built and regtested on x86-64 Fedora 20. 2014-06-04 Tom Tromey <tromey@redhat.com> * target-delegates.c: Rebuild. * target.c (default_thread_address_space): New function. (target_thread_address_space): Simplify. * target.h (struct target_ops) <to_thread_address_space>: Add TARGET_DEFAULT_FUNC.
2014-06-04Tweak sss-bp-on-user-bp.expYao Qi2-5/+19
sss-bp-on-user-bp.c has an assumption that write to integer can be compiled to a single instruction, which isn't true on some arch, such as arm. This test requires setting two breakpoints on two consecutive instructions, so this patch is to get the address of the next instruction via disassemble and set the 2nd breakpoint there. This approach is portable. This patch fixes the fails in sss-bp-on-user-bp.exp on arm-none-abi target. There is no change in x86 test results. I also revert the patch to PR breakpoints/17000, and verified that the patched sss-bp-on-user-bp.exp still trigger the fail on x86-with-software-single-step. gdb/testsuite: 2014-06-04 Yao Qi <yao@codesourcery.com> * gdb.base/sss-bp-on-user-bp.c (main): Remove comments. * gdb.base/sss-bp-on-user-bp.exp: Don't set breakpoint on "set bar break here". Get the next instruction address and set breakpoint there. Remove "bar break" from the regexp patterns.
2014-06-04bfd/elfnn-aarch64.c: Cleanup a couple of TLS functionsWill Newton2-3/+7
Add an assert and remove an unused line of code. bfd/ChangeLog: 2014-06-04 Will Newton <will.newton@linaro.org> * elfnn-aarch64.c (tpoff_base): Make test of tls_sec being non-NULL into an assert. (elfNN_aarch64_tls_relax): Remove unused code.
2014-06-04* guile/scm-type.c (type_smob): Remove duplicate typedef.Doug Evans2-3/+8
2014-06-04btrace: async supportMarkus Metzger2-0/+55
Add support for async command execution. This fixes the gdb.btrace tests. * record-btrace.c: Include event-loop.h and inf-loop.h. (record_btrace_resume_exec_dir) (record_btrace_async_inferior_event_handler) (record_btrace_handle_async_inferior_event): New. (record_btrace_open): Create async event handler. (record_btrace_close): Delete async event handler. (record_btrace_resume): Set record_btrace_resume_exec_dir, Mark async event handler. (record_btrace_execution_direction): New. (init_record_btrace_ops): Initialize to_execution_direction.
2014-06-04Add system test before "set remote system-call-allowed 1" to fileio.expHui Zhu3-10/+42
This patch is update version according to the discussion in https://www.sourceware.org/ml/gdb-patches/2009-11/msg00090.html. If test get the target doesn't support fileio system according to the remote log. It will set this test as "unsupported". Before I made this patch, I want add a check before all of tests in this file. But I found that the target maybe support one call but not others. For example: my target support Fwrite, Fopen and so on. But not Fgettimeofday. And it doesn't support Fsystem NULL but it support Fsystem not NULL. So I think if we want to check target support fileio, we need check them one by one. 2014-06-04 Nathan Sidwell <nathan@codesourcery.com> Hui Zhu <hui@codesourcery.com> * gdb.base/fileio.exp: Add test for shell not available as well as available. * gdb.base/fileio.c (test_system): Check for shell twice.
2014-06-04Fix a regexp pattern in gdb.base/auto-connect-native-target.expYao Qi2-1/+6
When I test gdb head (for 7.8 release) on arm-none-eabi, I find the following this failure, which are caused by the improper regexp pattern in the test. (gdb) help target native^M Undefined target command: "native". Try "help target".^M (gdb) FAIL: gdb.base/auto-connect-native-target.exp: help target native The space in front of "$gdb_prompt $" looks redundant, and this patch is to remove it from the regexp pattern. gdb/testsuite: 2014-06-04 Yao Qi <yao@codesourcery.com> * gdb.base/auto-connect-native-target.exp: Remove redundant space from the regexp pattern.
2014-06-04Fix regexp pattern in gdb.base/default.expYao Qi2-1/+6
I see this failure on arm-none-eabi gdb testing. target native^M Undefined target command: "native". Try "help target".^M (gdb) FAIL: gdb.base/default.exp: target native This patch is to update the regexp pattern to match "native" instead of "child". gdb/testsuite: 2014-06-04 Yao Qi <yao@codesourcery.com> * gdb.base/default.exp: Replace "child" with "native" in regexp pattern.
2014-06-03 * guile/scm-param.c (pascm_make_param_smob): Add ARI comment.Doug Evans2-2/+7
(gdbscm_make_parameter): Ditto.
2014-06-04daily updateAlan Modra1-1/+1
2014-06-03resize_section_table cleanupDoug Evans4-18/+34
* exec.c (exec_close_1): Call clear_section_table instead of resize_section_table. (clear_section_table): New function. (resize_section_table): Make static. Rename arg num_added to adjustment. * exec.h (clear_section_table): Declare. (resize_section_table): Delete. * progspace.c (release_program_space): Call clear_section_table instead of resize_section_table.
2014-06-03* elf32-rx.c (rx_table_map): Use BFD_VMA_FMT for portability.DJ Delorie2-6/+10
2014-06-03gdb/doc/python.texi: Fix reference to "Progspaces In Python".Joel Brobecker2-1/+6
A recent change broke the documentation build due to a think-o in a reference. Fixed thusly. gdb/doc/ChangeLog: * python.texi (Xmethod API): Fix reference to "Progspaces In Python". Tested by rebuilding all documentation formats.
2014-06-03Documentation of the xmethod support in GDB Python API.Siva Chandra4-0/+362
* NEWS (Python Scripting): Add entry about the new xmethods feature. doc/ * python.texi (Xmethods In Python, XMethod API) (Writing an Xmethod): New nodes. (Python API): New menu entries "Xmethods In Python", "Xmethod API", "Writing an Xmethod".
2014-06-03Xmethod support in Python.Siva Chandra15-2/+1821
* python/py-xmethods.c: New file. * python/py-objfile.c (objfile_object): New field 'xmethods'. (objfpy_dealloc): XDECREF on the new xmethods field. (objfpy_new, objfile_to_objfile_object): Initialize xmethods field. (objfpy_get_xmethods): New function. (objfile_getset): New entry 'xmethods'. * python/py-progspace.c (pspace_object): New field 'xmethods'. (pspy_dealloc): XDECREF on the new xmethods field. (pspy_new, pspace_to_pspace_object): Initialize xmethods field. (pspy_get_xmethods): New function. (pspace_getset): New entry 'xmethods'. * python/python-internal.h: Add declarations for new functions. * python/python.c (_initialize_python): Invoke gdbpy_initialize_xmethods. * python/lib/gdb/__init__.py (xmethods): New attribute. * python/lib/gdb/xmethod.py: New file. * python/lib/gdb/command/xmethods.py: New file. testuite/ * gdb.python/py-xmethods.cc: New testcase to test xmethods. * gdb.python/py-xmethods.exp: New tests to test xmethods. * gdb.python/py-xmethods.py: Python script supporting the new testcase and tests.
2014-06-03Missed ChangeLog entry in the previous commit.Siva Chandra1-0/+19
2014-06-03Lookup and invoke debug methods of C++ classes if they are the best match.Siva Chandra3-88/+260
* eval.c (evaluate_subexp_standard): Call the xmethod if the best match method returned by find_overload_match is an xmethod. * valarith.c (value_x_binop, value_x_unop): Call the xmethod if the best matching operator returned by find_overload_match is an xmethod. * valops.c: #include "extension.h". (find_method_list): Add "fn_list" and "xm_worker_vec" arguments. Return void. The list of matching source methods is returned in "fn_list" and a vector of matching debug method workers is returned in "xm_worker_vec". Update all callers. (value_find_oload_method_list): Likewise. (find_oload_champ): Add "xm_worker_vec" parameter. If it is non-NULL, then the index of the best matching method in this vector is returned. Update all callers. (find_overload_match): Include xmethods while performing overload resolution.
2014-06-03Add xmethod interface to the extension language API.Siva Chandra10-5/+341
* defs.h (enum lval_type): New enumerator "lval_xcallable". * extension-priv.h (struct extension_language_ops): Add the xmethod interface. * extension.c (new_xmethod_worker, clone_xmethod_worker, get_matching_xmethod_workers, get_xmethod_argtypes, invoke_xmethod, free_xmethod_worker, free_xmethod_worker_vec): New functions. * extension.h: #include "common/vec.h". New function declarations. (struct xmethod_worker): New struct. (VEC (xmethod_worker_ptr)): New vector type. (xmethod_worker_ptr): New typedef. (xmethod_worker_vec): Likewise. * gdbtypes.c (gdbtypes_post_init): Initialize "xmethod" field of builtin_type. * gdbtypes.h (enum type_code): New enumerator TYPE_CODE_XMETHOD. (struct builtin_type): New field "xmethod". * valarith.c (value_ptradd): Assert that the value argument is not lval_xcallable. * valops.c (value_must_coerce_to_target): Return 0 for lval_xcallable values. * value.c (struct value): New field XM_WORKER in the field LOCATION. (value_address, value_raw_address): Return 0 for lval_xcallable values. (set_value_address): Assert that the value is not an lval_xcallable. (value_free): Free the associated xmethod worker when freeing lval_xcallable values. (set_value_component_location): Assert that the WHOLE value is not lval_xcallable. (value_of_xmethod, call_xmethod): New functions. * value.h: Declare "struct xmethod_worker". Declare new functions value_of_xmethod, call_xmethod.
2014-06-03User breakpoint ignored if software-single-step at same locationJoel Brobecker5-20/+155
with the following code... 12 Nested; -- break #1 13 return I; -- break #2 14 end; (line 12 is a call to function Nested) ... we have noticed the following errorneous behavior on ppc-aix, where, after having inserted a breakpoint at line 12 and line 13, and continuing from the breakpoint at line 12, the program never stops at line 13, running away until the program terminates: % gdb -q func (gdb) b func.adb:12 Breakpoint 1 at 0x10000a24: file func.adb, line 12. (gdb) b func.adb:13 Breakpoint 2 at 0x10000a28: file func.adb, line 13. (gdb) run Starting program: /[...]/func Breakpoint 1, func () at func.adb:12 12 Nested; -- break #1 (gdb) c Continuing. [Inferior 1 (process 4128872) exited with code 02] When resuming from the first breakpoint, GDB first tries to step out of that first breakpoint. We rely on software single-stepping on this platform, and it just so happens that the address of the first software single-step breakpoint is the same as the user's breakpoint #2 (0x10000a28). So, with infrun and target traces turned on (but uninteresting traces snip'ed off), the "continue" operation looks like this: (gdb) c ### First, we insert the user breakpoints (the second one is an internal ### breakpoint on __pthread_init). The first user breakpoint is not ### inserted as we need to step out of it first. target_insert_breakpoint (0x0000000010000a28, xxx) = 0 target_insert_breakpoint (0x00000000d03f3800, xxx) = 0 ### Then we proceed with the step-out-of-breakpoint... infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [process 15335610] at 0x10000a24 ### That's when we insert the SSS breakpoints... target_insert_breakpoint (0x0000000010000a28, xxx) = 0 target_insert_breakpoint (0x00000000100009ac, xxx) = 0 ### ... then let the inferior resume... target_resume (15335610, continue, 0) infrun: wait_for_inferior () target_wait (-1, status, options={}) = 15335610, status->kind = stopped, signal = GDB_SIGNAL_TRAP infrun: target_wait (-1, status) = infrun: 15335610 [process 15335610], infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP infrun: infwait_normal_state infrun: TARGET_WAITKIND_STOPPED infrun: stop_pc = 0x100009ac ### At this point, we stopped at the second SSS breakpoint... target_stopped_by_watchpoint () = 0 ### We remove the SSS breakpoints... target_remove_breakpoint (0x0000000010000a28, xxx) = 0 target_remove_breakpoint (0x00000000100009ac, xxx) = 0 target_stopped_by_watchpoint () = 0 ### We find that we're not done, so we resume.... infrun: no stepping, continue ### And thus insert the user breakpoints again, except we're not ### inserting the second breakpoint?!? target_insert_breakpoint (0x0000000010000a24, xxx) = 0 infrun: resume (step=0, signal=GDB_SIGNAL_0), trap_expected=0, current thread [process 15335610] at 0x100009ac target_resume (-1, continue, 0) infrun: prepare_to_wait target_wait (-1, status, options={}) = 15335610, status->kind = exited, status = 2 What happens is that the removal of the software single-step breakpoints effectively removed the breakpoint instruction from inferior memory. But because such breakpoints are inserted directly as raw breakpoints rather than through the normal chain of breakpoints, we fail to notice that one of the user breakpoints points to the same address and that this user breakpoint is therefore effectively un-inserted. When resuming after the single-step, GDB thinks that the user breakpoint is still inserted and therefore does not need to insert it again. This patch teaches the insert and remove routines of both regular and raw breakpoints to be aware of each other. Special care needs to be applied in case the target supports evaluation of breakpoint conditions or commands. gdb/ChangeLog: PR breakpoints/17000 * breakpoint.c (find_non_raw_software_breakpoint_inserted_here): New function, extracted from software_breakpoint_inserted_here_p. (software_breakpoint_inserted_here_p): Replace factored out code by call to find_non_raw_software_breakpoint_inserted_here. (bp_target_info_copy_insertion_state): New function. (bkpt_insert_location): Handle the case of a single-step breakpoint already inserted at the same address. (bkpt_remove_location): Handle the case of a single-step breakpoint still inserted at the same address. (deprecated_insert_raw_breakpoint): Handle the case of non-raw breakpoint already inserted at the same address. (deprecated_remove_raw_breakpoint): Handle the case of a non-raw breakpoint still inserted at the same address. (find_single_step_breakpoint): New function, extracted from single_step_breakpoint_inserted_here_p. (find_single_step_breakpoint): New function, factored out from single_step_breakpoint_inserted_here_p. (single_step_breakpoint_inserted_here_p): Reimplement. gdb/testsuite/ChangeLog: PR breakpoints/17000 * gdb.base/sss-bp-on-user-bp.exp: Remove kfail. * gdb.base/sss-bp-on-user-bp-2.exp: Remove kfail. Tested on ppc-aix with AdaCore's testsuite. Tested on x86_64-linux, (native and gdbserver) with the official testsuite. Also tested on x86_64-linux through Pedro's branch enabling software single-stepping on that platform (native and gdbserver).
2014-06-03This is to fix a further problem with merging resource sections. It turnsNick Clifton2-2/+36
out that the section is supposed to be page-aligned, but the newly merged section was not being padded out to a page boundary. This meant that when the executable was stripped a badly sized .rsrc section was written out. PR ld/16807 * peXXigen.c (rsrc_process_section): Page align the new contents befgore writing out.
2014-06-03gdb/source.c: Fix matching path substitute rule listingBrad Mouring4-1/+20
The check for the source (or "from") directory snippet in listing matching path substitution rules currently will not match anything other than a direct match of the "from" field in a substitution rule, resulting in the incorrect behavior below: ... (gdb) set substitute-path /a/path /another/path (gdb) show substitute-path List of all source path substitution rules: `/a/path' -> `/another/path'. (gdb) show substitute-path /a/path/to/a/file.ext Source path substitution rule matching `/a/path/to/a/file.ext': (gdb) show substitute-path /a/path Source path substitution rule matching `/a/path': `/a/path' -> `/another/path'. ... This change effects the following behavior by (sanely) checking with the length of the "from" portion of a rule and ensuring that the next character of the path considered for substitution is a path delimiter (or NULL). With this change, the following behavior is garnered: ... (gdb) set substitute-path /a/path /another/path (gdb) show substitute-path List of all source path substitution rules: `/a/path' -> `/another/path'. (gdb) show substitute-path /a/path/to/a/file.ext Source path substitution rule matching `/a/path/to/a/file.ext': `/a/path' -> `/another/path'. (gdb) show substitute-path /a/pathological/case/that/should/fail.err Source path substitution rule matching `/a/pathological/case/that/should/fail.err': (gdb) Also included is a couple of tests added to subst.exp to verify this behavior in the test suite. gdb/ChangeLog: * source.c (show_substitute_path_command): Fix display of matching substitution rules. gdb/testsuite/ChangeLog: * gdb.ada/subst.exp: Add tests to verify partial path matching output. This was tested on x86_64 Linux.
2014-06-03Skip sss-bp-on-user-bp-2.exp on remote hardware step targets.Pedro Alves2-0/+44
gdb/testsuite/ 2014-06-03 Pedro Alves <palves@redhat.com> * gdb.base/sss-bp-on-user-bp-2.exp: Skip if testing with a remote target that doesn't use software single-stepping.
2014-06-03This patch replaces a call to cplus_demangle with a call toGary Benson2-1/+5
gdb_demangle. This change was included in an RFC from last March [1] but omitted from the eventual commit. [1] https://sourceware.org/ml/gdb-patches/2013-03/msg00235.html 2014-06-03 Gary Benson <gbenson@redhat.com> * gnu-v2-abi.c (gnuv2_value_rtti_type): Use gdb_demangle.
2014-06-03PR breakpoints/17000: user breakpoint not inserted if software-single-step ↵Pedro Alves3-0/+144
at same location - test GDB gets confused when removing a software single-step breakpoint that is at the same address as another breakpoint. Add another kfailed test. gdb/testsuite/ 2014-06-03 Pedro Alves <palves@redhat.com> PR breakpoints/17000 * gdb.base/sss-bp-on-user-bp-2.c: New file. * gdb.base/sss-bp-on-user-bp-2.exp: New file.
2014-06-03Add parameter support for Guile.Doug Evans14-4/+1663
* Makefile.in (SUBDIR_GUILE_OBS): Add scm-param.o. (SUBDIR_GUILE_SRCS): Add scm-param.c. (scm-param.o): New rule. * guile/guile-internal.h (gdbscm_gc_dup_argv): Declare. (gdbscm_misc_error): Declare. (gdbscm_canonicalize_command_name): Declare. (gdbscm_scm_to_host_string): Declare. (gdbscm_scm_from_host_string): Declare. (gdbscm_initialize_parameters): Declare. * guile/guile.c (initialize_gdb_module): Call gdbscm_initialize_parameters. * guile/lib/gdb.scm: Export parameter symbols. * guile/scm-cmd.c (gdbscm_canonicalize_command_name): Renamed from cmdscm_canonicalize_name and made public. All callers updated. * guile/scm-exception.c (gdbscm_misc_error): New function. * guile/scm-param.c: New file. * guile/scm-string.c (gdbscm_scm_to_string): Add comments. (gdbscm_scm_to_host_string): New function. (gdbscm_scm_from_host_string): New function. * scm-utils.c (gdbscm_gc_dup_argv): New function. testsuite/ * gdb.guile/scm-parameter.exp: New file. doc/ * guile.texi (Guile API): Add entry for Parameters In Guile. (GDB Scheme Data Types): Mention <gdb:parameter> object. (Parameters In Guile): New node.
2014-06-03Fix a small but in the emulation of the MSP430 hardware multiply.Nick Clifton2-3/+37
* msp430-sim.c (get_op): Handle reads of low result register when in MAC mode. (put_op): Copy MAC result into result words. Handle writes to the low result register.
2014-06-03Fix the disassembly of MSP430 extended index addressing mode.Nick Clifton2-11/+16
* msp430-dis.c (msp430_doubleoperand): Use extension_word to decide when extended addressing is being used.
2014-06-03Change -mz command line option to -my for the MSP430 port of GAS.Nick Clifton5-10/+20
* config/tc-msp430.c (OPTION_WARN_INTR_NOPS): Use y instead of z. (OPTION_NO_WARN_INTR_NOPS): Use Y instead of Z. * doc/c-msp430.texi: Update command line option description. * gas/msp430/bad.d: Use -my not -mz.
2014-06-03 If the binutils testsuite is run on an installed toolchain the tests involvingNick Clifton2-4/+17
the bfdtest1 and bfdtest2 executables will fail because they are not installed. Since the programs only exist to be used by the testsuite it does not make sense to install them, so instead I have chosen to create a patch which skips the tests when they are not present. * binutils-all/ar.exp: Skip tests involving bfdtest1 and bfdtest2 if these executables are not present.
2014-06-03Add command support for Guile.Doug Evans14-7/+1527
* Makefile.in (SUBDIR_GUILE_OBS): Add scm-cmd.o. (SUBDIR_GUILE_SRCS): Add scm-cmd.c. (scm-cmd.o): New rule. * guile/guile-internal.h (gdbscm_gc_xstrdup): Declare. (gdbscm_user_error_p): Declare. (gdbscm_parse_command_name): Declare. (gdbscm_valid_command_class_p): Declare. (gdbscm_initialize_commands): Declare. * guile/guile.c (initialize_gdb_module): Call gdbscm_initialize_commands. * guile/lib/gdb.scm: Export command symbols. * guile/lib/gdb/init.scm (%exception-keys): Add gdb:user-error. (throw-user-error): New function. * guile/scm-cmd.c: New file. * guile/scm-exception.c (user_error_symbol): New static global. (gdbscm_user_error_p): New function. (gdbscm_initialize_exceptions): Set user_error_symbol. * scm-utils.c (gdbscm_gc_xstrdup): New function. testsuite/ * gdb.guile/scm-cmd.c: New file. * gdb.guile/scm-cmd.exp: New file. doc/ * guile.texi (Guile API): Add entry for Commands In Guile. (Basic Guile) <parse-and-eval>: Add reference. (Basic Guile) <string->argv>: Move definition to Commands In Guile. (GDB Scheme Data Types): Mention <gdb:command> object. (Commands In Guile): New node.
2014-06-03Don't remove #-comments.Phil Muldoon2-13/+12
When using the multi-line feature, we don't want the gdb CLI to remove comments from the command list, as this will remove things like "#define". * top.c (command_loop): Handle comments here... (command_line_input): ... not here.
2014-06-02Add progspace support for Guile.Doug Evans15-28/+783
* Makefile.in (SUBDIR_GUILE_OBS): Add scm-progspace.o. (SUBDIR_GUILE_SRCS): Add scm-progspace.c. (scm-progspace.o): New rule. * guile/guile-internal.h (pspace_smob): New typedef. (psscm_pspace_smob_pretty_printers): Declare. (psscm_pspace_smob_from_pspace): Declare. (psscm_scm_from_pspace): Declare. * guile/guile.c (initialize_gdb_module): Call gdbscm_initialize_pspaces. * guile/lib/gdb.scm: Export progspace symbols. * guile/lib/gdb/printing.scm (prepend-pretty-printer!): Add progspace support. (append-pretty-printer!): Ditto. * guile/scm-pretty-print.c (ppscm_find_pretty_printer_from_progspace): Implement. * guile/scm-progspace.c: New file. doc/ * guile.texi (Guile API): Add entry for Progspaces In Guile. (GDB Scheme Data Types): Mention <gdb:progspace> object. (Progspaces In Guile): New node. testsuite/ * gdb.guile/scm-pretty-print.exp: Add tests for objfile and progspace pretty-printer lookup. * gdb.guile/scm-pretty-print.scm (pp_s-printer): New function. (make-pp_s-printer): Call it. (make-pretty-printer-from-dict): New function. (lookup-pretty-printer-maker-from-dict): New function. (*pretty-printer*): Simplify. (make-objfile-pp_s-printer): New function. (install-objfile-pretty-printers!): New function. (make-progspace-pp_s-printer): New function. (install-progspace-pretty-printers!): New function. * gdb.guile/scm-progspace.c: New file. * gdb.guile/scm-progspace.exp: New file.
2014-06-03Support fusion for ELFv2 stubsAlan Modra8-18/+85
Power8 fuses addis,addi and addis,ld sequences when the target of the addis is the same as the addi/ld. Thus addis r12,r2,xxx@ha addi r12,r12,xxx@l / ld r12,xxx@l(r12) is faster than addis r11,r2,xxx@ha addi r12,r11,xxx@l / ld r12,xxx@l(r11) So use the form that allows fusion in plt call and branch stubs. bfd/ * elf64-ppc.c (ADDIS_R12_R2): Define. (build_plt_stub): Support fusion on ELFv2 stub. (ppc_build_one_stub): Likewise for plt branch stubs. gold/ * powerpc.cc (addis_12_2): Define. (Stub_table::do_write): Support fusion on ELFv2 stubs. ld/testsuite/ * ld-powerpc/elfv2exe.d: Update for changed plt call stubs. gdb/ * ppc64-tdep.c (ppc64_standard_linkage8): New. (ppc64_skip_trampoline_code): Recognise ELFv2 stub supporting fusion.
2014-06-03Fix gold plugin_test failures on PowerPC64 ELFv2Alan Modra2-0/+12
readelf output for ELFv2 includes st_other bits specifying a function's local entry offset. * testsuite/plugin_test.c (parse_readelf_line): Skip non-visibility st_other output.
2014-06-02Add support for skeletonless type units.Doug Evans2-129/+300
* dwarf2read.c (struct dwarf2_per_objfile): New member n_allocated_type_units. (struct dwarf2_per_objfile) <tu_stats>: New member nr_all_type_units_reallocs. (create_signatured_type_table_from_index): Initialize n_allocated_type_units (create_all_type_units): Ditto. (add_type_unit): Move up in file. New arg slot. All callers updated. Increase space for all_type_units more efficiently. (fill_in_sig_entry_from_dwo_entry): Handle psymtabs. (lookup_dwo_signatured_type): Handle skeletonless TUs. (lookup_dwp_signatured_type): Ditto. (init_tu_and_read_dwo_dies): New arg use_existing_cu. All callers updated. (build_type_psymtabs_1): Leave type_unit_groups as NULL if no TUs present. (print_tu_stats): New function. (process_skeletonless_type_unit): New function. (process_dwo_file_for_skeletonless_type_units): New function. (process_skeletonless_type_units): New function. (dwarf2_build_psymtabs_hard): Handle skeletonless TUs. Call print tu_stats if debugging enabled.
2014-06-03daily updateAlan Modra1-1/+1
2014-06-02Installing a breakpoint on top of a dprintf makes GDB lose control.Pedro Alves5-4/+120
While the full fix for PR 15180 isn't in, it's best if we at least make sure that GDB doesn't lose control when a breakpoint is set at the same address as a dprintf. gdb/ 2014-06-02 Pedro Alves <palves@redhat.com> * breakpoint.c (build_target_command_list): Don't build a command list if we have any duplicate location that isn't a dprintf. gdb/testsuite/ 2014-06-02 Pedro Alves <palves@redhat.com> * gdb.base/dprintf-bp-same-addr.c: New file. * gdb.base/dprintf-bp-same-addr.exp: New file.
2014-06-02dprintf-style agent can't explain a trap.Pedro Alves2-0/+24
If some event happens to trigger at the same address as a dprintf-style agent dprintf is installed, GDB will complain, like: (gdb) continue Continuing. May only run agent-printf on the target (gdb) Such dprintfs are completely handled on the target side, so they can't explain a stop, but GDB is currently putting then on the bpstat chain anyway, because they currently unconditionally use bkpt_breakpoint_hit as breakpoint_hit method. gdb/ 2014-06-02 Pedro Alves <palves@redhat.com> * breakpoint.c (dprintf_breakpoint_hit): New function. (initialize_breakpoint_ops): Install it as dprintf's breakpoint_hit method.
2014-06-02gdbserver: on GDB breakpoint reinsertion, also delete the breakpoint's commands.Pedro Alves6-9/+66
If GDB decides to change the breakpoint's conditions or commands, it'll reinsert the same breakpoint again, with the new options attached, without deleting the previous breakpoint. E.g., (gdb) set breakpoint always-inserted on (gdb) b main if 0 Breakpoint 1 at 0x400594: file foo.c, line 21. Sending packet: $Z0,400594,1;X3,220027#68...Packet received: OK (gdb) b main Breakpoint 15 at 0x400594: file foo.c, line 21. Sending packet: $Z0,400594,1#49...Packet received: OK GDBserver understands this and deletes the breakpoint's previous conditions. But, it forgets to delete the previous commands. gdb/gdbserver/ 2014-06-02 Pedro Alves <palves@redhat.com> * ax.c (gdb_free_agent_expr): New function. * ax.h (gdb_free_agent_expr): New declaration. * mem-break.c (delete_gdb_breakpoint_1): Also clear the commands list. (clear_breakpoint_conditions, clear_breakpoint_commands): Make static. (clear_breakpoint_conditions_and_commands): New function. * mem-break.h (clear_breakpoint_conditions): Delete declaration. (clear_breakpoint_conditions_and_commands): New declaration.
2014-06-02gdb/testsuite/Edjunior Barbosa Machado3-0/+275
2014-06-02 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com> * gdb.arch/powerpc-power.exp: Add power8 instructions to the testcase. * gdb.arch/powerpc-power.s: Likewise.
2014-06-02Unnecessary restore of timeout global at end of gdb.base/completion.expJoel Brobecker2-4/+4
This patch removes some code in gdb.base/compilation.exp which is aimed at restoring the original timeout global value after having changed it for this testcase. Restoring the timeout global is not necessary as this is taken care of by gdb_init, which is called at the start of each testing. gdb/testsuite/ChangeLog: * gdb.base/completion.exp: Remove code aimed at restoring TIMEOUT.
2014-06-02simplify substitute_path_rule_matches using filename_ncmpJoel Brobecker2-9/+7
At the time this function was written, there was no filename_ncmp, only FILENAME_CMP. So, in order to do an n-cmp, we had to make a local copy of the first n characters of our string and use that to perform the comparison. This patch simplifies the function's implementation, now that we have filename_ncmp. gdb/ChangeLog: * source.c (substitute_path_rule_matches): Simplify using filename_ncmp instead of FILENAME_CMP. Tested on x86_64-linux.