2015-09-08 09:05:38 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_xfer_partial)
|
|
|
|
|
(record_btrace_store_registers, record_btrace_prepare_to_store):
|
|
|
|
|
Call record_btrace_is_replaying with inferior_ptid instead of
|
|
|
|
|
minus_one_ptid.
|
|
|
|
|
(record_btrace_store_registers): Change error message.
|
|
|
|
|
|
2015-09-08 08:26:16 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_is_replaying): Add ptid argument.
|
|
|
|
|
Update users to pass minus_one_ptid.
|
|
|
|
|
* record-full.c (record_full_is_replaying): Add ptid argument (ignored).
|
|
|
|
|
* record.c (cmd_record_delete): Pass inferior_ptid to
|
|
|
|
|
target_record_is_replaying.
|
|
|
|
|
* target-delegates.c: Regenerated.
|
|
|
|
|
* target.c (target_record_is_replaying): Add ptid argument.
|
|
|
|
|
* target.h (struct target_ops) <to_record_is_replaying>: Add ptid
|
|
|
|
|
argument.
|
|
|
|
|
(target_record_is_replaying): Add ptid argument.
|
|
|
|
|
|
2015-08-26 11:33:07 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_open): Remove non_stop check.
|
|
|
|
|
* NEWS: Announce that record btrace supports non-stop mode.
|
|
|
|
|
|
2015-09-07 10:00:46 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (handle_inferior_event_1): Switch to the eventing thread
|
|
|
|
|
in the TARKET_WAITKIND_NO_HISTORY case.
|
|
|
|
|
|
2015-08-27 16:24:38 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_maybe_mark_async_event): New.
|
|
|
|
|
(record_btrace_wait): Call record_btrace_maybe_mark_async_event.
|
|
|
|
|
|
2015-08-26 15:37:55 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (get_thread_current_frame): New.
|
|
|
|
|
(record_btrace_start_replaying): Call get_thread_current_frame.
|
|
|
|
|
|
2015-08-25 13:42:39 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_resume_thread): A move request
|
|
|
|
|
overwrites a previous move request.
|
|
|
|
|
(record_btrace_find_resume_thread): Removed.
|
|
|
|
|
(record_btrace_resume): Resume all requested threads.
|
|
|
|
|
|
2015-08-24 16:28:06 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c: Include vec.h.
|
|
|
|
|
(record_btrace_find_thread_to_move): Removed.
|
|
|
|
|
(btrace_step_no_resumed, btrace_step_again)
|
|
|
|
|
(record_btrace_stop_replaying_at_end): New.
|
|
|
|
|
(record_btrace_cancel_resume): Call record_btrace_stop_replaying_at_end.
|
|
|
|
|
(record_btrace_single_step_forward): Remove calls to
|
|
|
|
|
record_btrace_stop_replaying.
|
|
|
|
|
(record_btrace_step_thread): Do only one step for BTHR_CONT and
|
|
|
|
|
BTHR_RCONT. Keep threads at the end of their history moving.
|
|
|
|
|
(record_btrace_wait): Call record_btrace_step_thread for all threads
|
|
|
|
|
until one reports an event. Call record_btrace_stop_replaying_at_end
|
|
|
|
|
for the eventing thread.
|
|
|
|
|
|
2015-09-04 10:33:05 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_single_step_forward): Return
|
|
|
|
|
NO_HISTORY if a step brings us to the end of the execution history.
|
|
|
|
|
|
2015-08-24 15:55:02 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_step_thread): Move breakpoint check
|
|
|
|
|
to ...
|
|
|
|
|
(record_btrace_single_step_forward): ... here and
|
|
|
|
|
(record_btrace_single_step_backward): ... here.
|
|
|
|
|
|
2015-08-24 14:49:43 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (btrace_step_spurious)
|
|
|
|
|
(record_btrace_single_step_forward)
|
|
|
|
|
(record_btrace_single_step_backward): New.
|
|
|
|
|
(record_btrace_step_thread): Call record_btrace_single_step_forward
|
|
|
|
|
and record_btrace_single_step_backward.
|
|
|
|
|
|
2015-08-25 10:49:11 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_replay_at_breakpoint): New.
|
|
|
|
|
(record_btrace_step_thread): Call record_btrace_replay_at_breakpoint.
|
|
|
|
|
|
2015-08-24 13:34:57 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (btrace_thread_flag_to_str)
|
|
|
|
|
(record_btrace_cancel_resume): New.
|
|
|
|
|
(record_btrace_step_thread): Call btrace_thread_flag_to_str.
|
|
|
|
|
(record_btrace_resume): Print execution direction.
|
|
|
|
|
(record_btrace_resume_thread): Call btrace_thread_flag_to_str.
|
|
|
|
|
(record_btrace_wait): Call record_btrace_cancel_resume.
|
|
|
|
|
|
2015-08-19 13:35:52 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.h (enum btrace_thread_flag) <BTHR_STOP>: New.
|
|
|
|
|
* record-btrace (record_btrace_resume_thread): Clear BTHR_STOP.
|
|
|
|
|
(record_btrace_find_thread_to_move): Also accept threads that have
|
|
|
|
|
BTHR_STOP set.
|
|
|
|
|
(btrace_step_stopped_on_request, record_btrace_stop): New.
|
|
|
|
|
(record_btrace_step_thread): Support BTHR_STOP.
|
|
|
|
|
(record_btrace_wait): Also clear BTHR_STOP when stopping other threads.
|
|
|
|
|
(init_record_btrace_ops): Initialize to_stop.
|
|
|
|
|
|
2015-09-08 16:13:47 +02:00
|
|
|
|
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_wait): Replace non_stop check with
|
|
|
|
|
target_is_non_stop_p ().
|
|
|
|
|
|
[Ada] Enhance type printing for arrays with variable-sized elements
This change is relevant only for standard DWARF (as opposed to the GNAT
encodings extensions): at the time of writing it only makes a difference
with GCC patches that are to be integrated: see the patch series
submission at
<https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01353.html>.
Given the following Ada declarations:
subtype Small_Int is Natural range 0 .. 100;
type R_Type (L : Small_Int := 0) is record
S : String (1 .. L);
end record;
type A_Type is array (Natural range <>) of R_Type;
A : A_Type := (1 => (L => 0, S => ""),
2 => (L => 2, S => "ab"));
Before this change, we would get the following GDB session:
(gdb) ptype a
type = array (1 .. 2) of foo.r_type <packed: 838-bit elements>
This is wrong: "a" is not a packed array. This output comes from the
fact that, because R_Type has a dynamic size (with a maximum), the
compiler has to describe in the debugging information the size allocated
for each array element (i.e. the stride, in DWARF parlance: see
DW_AT_byte_stride). Ada type printing currently assumes that arrays
with a stride are packed, hence the above output.
In practice, GNAT never performs bit-packing for arrays that contain
variable-sized elements. Leveraging this fact, this patch enhances type
printing so that ptype does not pretend that arrays are packed when they
have a stride and they contain dynamic elements. After this change, we
get the following expected output:
(gdb) ptype a
type = array (1 .. 2) of foo.r_type
gdb/ChangeLog:
* ada-typeprint.c (print_array_type): Do not describe arrays as
packed when they embed dynamic elements.
gdb/testsuite/ChangeLog:
* gdb.ada/array_of_variable_length.exp: New testcase.
* gdb.ada/array_of_variable_length/foo.adb: New file.
* gdb.ada/array_of_variable_length/pck.adb: New file.
* gdb.ada/array_of_variable_length/pck.ads: New file.
Tested on x86_64-linux, no regression.
2015-09-15 11:56:03 +02:00
|
|
|
|
2015-09-15 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-typeprint.c (print_array_type): Do not describe arrays as
|
|
|
|
|
packed when they embed dynamic elements.
|
|
|
|
|
|
2015-09-15 21:02:15 +02:00
|
|
|
|
2015-09-15 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
|
|
|
|
|
|
|
|
|
* symtab.h (address_class): Document that TLS variables
|
|
|
|
|
are handled by LOC_UNRESOLVED.
|
|
|
|
|
* findvar.c (default_read_var_value): Don't relocate TLS variables.
|
|
|
|
|
* printcmd.c (address_info): Don't relocate TLS variables.
|
|
|
|
|
|
2015-09-15 19:38:57 +02:00
|
|
|
|
2015-09-15 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (decode_add_sub_imm): Use debug_printf.
|
|
|
|
|
(decode_adrp): Likewise.
|
|
|
|
|
(decode_b): Likewise.
|
|
|
|
|
(decode_bcond): Likewise.
|
|
|
|
|
(decode_br): Likewise.
|
|
|
|
|
(decode_cb): Likewise.
|
|
|
|
|
(decode_eret): Likewise.
|
|
|
|
|
(decode_movz): Likewise.
|
|
|
|
|
(decode_orr_shifted_register_x): Likewise.
|
|
|
|
|
(decode_ret): Likewise.
|
|
|
|
|
(decode_stp_offset): Likewise.
|
|
|
|
|
(decode_stp_offset_wb): Likewise.
|
|
|
|
|
(decode_stur): Likewise.
|
|
|
|
|
(decode_tb): Likewise.
|
|
|
|
|
(aarch64_analyze_prologue): Likewise.
|
|
|
|
|
(pass_in_x): Likewise.
|
|
|
|
|
(pass_in_v): Likewise.
|
|
|
|
|
(pass_on_stack): Likewise.
|
|
|
|
|
(aarch64_push_dummy_call): Likewise.
|
|
|
|
|
(aarch64_extract_return_value): Likewise.
|
|
|
|
|
(aarch64_store_return_value): Likewise.
|
|
|
|
|
(aarch64_return_value): Likewise.
|
|
|
|
|
(aarch64_record_asimd_load_store): Likewise.
|
|
|
|
|
(aarch64_record_load_store): Likewise.
|
|
|
|
|
(aarch64_record_data_proc_simd_fp): Likewise.
|
|
|
|
|
|
[ppc64le] Use skip_entrypoint for skip_trampoline_code
ppc64le loses control when stepping between two PLT-called functions inside
a shared library:
29 shlib_second (); /* first-hit */^M
(gdb) PASS: gdb.base/solib-intra-step.exp: first-hit
step^M
^M
Program received signal SIGABRT, Aborted.^M
0x00003fffb7cbe578 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56^M
56 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);^M
(gdb) FAIL: gdb.base/solib-intra-step.exp: second-hit
->
29 shlib_second (); /* first-hit */^M
(gdb) PASS: gdb.base/solib-intra-step.exp: first-hit
step^M
shlib_second () at ./gdb.base/solib-intra-step-lib.c:23^M
23 abort (); /* second-hit */^M
(gdb) PASS: gdb.base/solib-intra-step.exp: second-hit
This is because gdbarch_skip_trampoline_code() will resolve the final function
as shlib_second+0 and place there the breakpoint, but ld.so will jump after
the breakpoint - at shlib_second+8 - as it is ELFv2 local symbol optimization:
Dump of assembler code for function shlib_second:
0x0000000000000804 <+0>: addis r2,r12,2
0x0000000000000808 <+4>: addi r2,r2,30668
0x000000000000080c <+8>: mflr r0
Currently gdbarch_skip_entrypoint() has been called in skip_prologue_sal() and
fill_in_stop_func() but that is not enough. I believe
gdbarch_skip_entrypoint() should be called after every
gdbarch_skip_trampoline_code().
gdb/ChangeLog
2015-09-15 Jan Kratochvil <jan.kratochvil@redhat.com>
* linespec.c (minsym_found): Call gdbarch_skip_entrypoint.
* ppc64-tdep.c (ppc64_skip_trampoline_code): Rename to ...
(ppc64_skip_trampoline_code_1): ... here.
(ppc64_skip_trampoline_code): New wrapper function.
* symtab.c (find_function_start_sal): Call gdbarch_skip_entrypoint.
gdb/testsuite/ChangeLog
2015-09-15 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.opt/solib-intra-step-lib.c: New file.
* gdb.opt/solib-intra-step-main.c: New file.
* gdb.opt/solib-intra-step.exp: New file.
2015-09-15 19:08:04 +02:00
|
|
|
|
2015-09-15 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linespec.c (minsym_found): Call gdbarch_skip_entrypoint.
|
|
|
|
|
* ppc64-tdep.c (ppc64_skip_trampoline_code): Rename to ...
|
|
|
|
|
(ppc64_skip_trampoline_code_1): ... here.
|
|
|
|
|
(ppc64_skip_trampoline_code): New wrapper function.
|
|
|
|
|
* symtab.c (find_function_start_sal): Call gdbarch_skip_entrypoint.
|
|
|
|
|
|
Support single step by arch or target
Nowadays, GDB only knows whether architecture supports hardware single
step or software single step (through gdbarch hook software_single_step),
and for a given instruction or instruction sequence, GDB knows how to
do single step (hardware or software). However, GDB doesn't know whether
the target supports hardware single step. It is possible that the
architecture doesn't support hardware single step, such as arm, but
the target supports, such as simulator. This was discussed in this
thread https://www.sourceware.org/ml/gdb/2009-12/msg00033.html before.
I encounter this problem for aarch64 multi-arch support. When aarch64
debugs arm program, gdbarch is arm, so software single step is still
used. However, the underneath linux kernel does support hardware
single step, so IWBN to use it.
This patch is to add a new target_ops hook to_can_do_single_step, and
only use it in arm_linux_software_single_step to decide whether or not
to use hardware single step. On the native aarch64 linux target, 1 is
returned. On other targets, -1 is returned. On the remote target, if
the target supports s and S actions in the vCont? reply, then target
can do single step. However, old GDBserver will send s and S in the
reply to vCont?, which will confuse new GDB. For example, old GDBserver
on arm-linux will send s and S in the reply to vCont?, but it doesn't
support hardware single step. On the other hand, new GDBserver, on
arm-linux for example, will not send s and S in the reply to vCont?,
but old GDB thinks it doesn't support vCont packet at all. In order
to address this problem, I add a new qSupported feature vContSupported,
which indicates GDB wants to know the supported actions in the reply
to vCont?, and qSupported response contains vContSupported if the
stub is able tell supported vCont actions in the reply of vCont?.
If the patched GDB talks with patched GDBserver on x86, the RSP traffic
is like this:
-> $qSupported:...+;vContSupported+
<- ...+;vContSupported+
...
-> $vCont?
<- vCont;c;C;t;s;S;r
then, GDB knows the stub can do single step, and may stop using software
single step even the architecture doesn't support hardware single step.
If the patched GDB talks with patched GDBserver on arm, the last vCont?
reply will become:
<- vCont;c;C;t
GDB thinks the target doesn't support single step, so it will use software
single step.
If the patched GDB talks with unpatched GDBserver, the RSP traffic is like
this:
-> $qSupported:...+;vContSupported+
<- ...+
...
-> $vCont?
<- vCont;c;C;t;s;S;r
although GDBserver returns s and S, GDB still thinks GDBserver may not
support single step because it doesn't support vContSupported.
If the unpatched GDB talks with patched GDBserver on x86, the RSP traffic
is like:
-> $qSupported:...+;
<- ...+;vContSupported+
...
-> $vCont?
<- vCont;c;C;t;s;S;r
Since GDB doesn't sent vContSupported in the qSupported feature, GDBserver
sends s and S regardless of the support of hardware single step.
gdb:
2015-09-15 Yao Qi <yao.qi@linaro.org>
* aarch64-linux-nat.c (aarch64_linux_can_do_single_step): New
function.
(_initialize_aarch64_linux_nat): Install it to to_can_do_single_step.
* arm-linux-tdep.c (arm_linux_software_single_step): Return 0
if target_can_do_single_step returns 1.
* remote.c (struct vCont_action_support) <s, S>: New fields.
(PACKET_vContSupported): New enum.
(remote_protocol_features): New element for vContSupported.
(remote_query_supported): Append "vContSupported+".
(remote_vcont_probe): Remove support_s and support_S, use
rs->supports_vCont.s and rs->supports_vCont.S instead. Disable
vCont packet if c and C actions are not supported.
(remote_can_do_single_step): New function.
(init_remote_ops): Install it to to_can_do_single_step.
(_initialize_remote): Call add_packet_config_cmd.
* target.h (struct target_ops) <to_can_do_single_step>: New field.
(target_can_do_single_step): New macro.
* target-delegates.c: Re-generated.
gdb/gdbserver:
2015-09-15 Yao Qi <yao.qi@linaro.org>
* server.c (vCont_supported): New global variable.
(handle_query): Set vCont_supported to 1 if "vContSupported+"
matches. Append ";vContSupported+" to own_buf.
(handle_v_requests): Append ";s;S" to own_buf if target supports
hardware single step or vCont_supported is false.
(capture_main): Set vCont_supported to zero.
gdb/doc:
2015-09-15 Yao Qi <yao.qi@linaro.org>
* gdb.texinfo (General Query Packets): Add vContSupported to
tables of 'gdbfeatures' and 'stub features' supported in the
qSupported packet, as well as to the list containing stub
feature details.
2015-09-15 15:09:18 +02:00
|
|
|
|
2015-09-15 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_can_do_single_step): New
|
|
|
|
|
function.
|
|
|
|
|
(_initialize_aarch64_linux_nat): Install it to to_can_do_single_step.
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_software_single_step): Return 0
|
|
|
|
|
if target_can_do_single_step returns 1.
|
|
|
|
|
* remote.c (struct vCont_action_support) <s, S>: New fields.
|
|
|
|
|
(PACKET_vContSupported): New enum.
|
|
|
|
|
(remote_protocol_features): New element for vContSupported.
|
|
|
|
|
(remote_query_supported): Append "vContSupported+".
|
|
|
|
|
(remote_vcont_probe): Remove support_s and support_S, use
|
|
|
|
|
rs->supports_vCont.s and rs->supports_vCont.S instead. Disable
|
|
|
|
|
vCont packet if c and C actions are not supported.
|
|
|
|
|
(remote_can_do_single_step): New function.
|
|
|
|
|
(init_remote_ops): Install it to to_can_do_single_step.
|
|
|
|
|
(_initialize_remote): Call add_packet_config_cmd.
|
|
|
|
|
* target.h (struct target_ops) <to_can_do_single_step>: New field.
|
|
|
|
|
(target_can_do_single_step): New macro.
|
|
|
|
|
* target-delegates.c: Re-generated.
|
|
|
|
|
|
aarch64 multi-arch support (part 2): siginfo fixup
This patch is to fixup the siginfo_t when aarch64 gdb or gdbserver
read from or write to the arm inferior. It is to convert the
"struct siginfo_t" between aarch64 and arm, which is quite mechanical.
gdb/gdbserver:
2015-09-15 Yao Qi <yao.qi@linaro.org>
* linux-aarch64-low.c (aarch64_linux_siginfo_fixup): New
function.
(struct linux_target_ops the_low_target): Install
aarch64_linux_siginfo_fixup.
gdb:
2015-09-15 Yao Qi <yao.qi@linaro.org>
* aarch64-linux-nat.c (aarch64_linux_siginfo_fixup): New function.
(_initialize_aarch64_linux_nat): Call linux_nat_set_siginfo_fixup.
* nat/aarch64-linux.c (aarch64_compat_siginfo_from_siginfo):
New function.
(aarch64_siginfo_from_compat_siginfo): New function.
* nat/aarch64-linux.h: Include signal.h.
(compat_int_t, compat_uptr_t, compat_time_t): Typedef.
(compat_timer_t, compat_clock_t): Likewise.
(struct compat_timeval): New.
(union compat_sigval): New.
(struct compat_siginfo): New.
(cpt_si_pid, cpt_si_uid, cpt_si_timerid): New macros.
(cpt_si_overrun, cpt_si_status, cpt_si_utime): Likewise.
(cpt_si_stime, cpt_si_ptr, cpt_si_addr): Likewise.
(cpt_si_band, cpt_si_fd): Likewise.
2015-09-15 11:25:51 +02:00
|
|
|
|
2015-09-15 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_siginfo_fixup): New function.
|
|
|
|
|
(_initialize_aarch64_linux_nat): Call linux_nat_set_siginfo_fixup.
|
|
|
|
|
* nat/aarch64-linux.c (aarch64_compat_siginfo_from_siginfo):
|
|
|
|
|
New function.
|
|
|
|
|
(aarch64_siginfo_from_compat_siginfo): New function.
|
|
|
|
|
* nat/aarch64-linux.h: Include signal.h.
|
|
|
|
|
(compat_int_t, compat_uptr_t, compat_time_t): Typedef.
|
|
|
|
|
(compat_timer_t, compat_clock_t): Likewise.
|
|
|
|
|
(struct compat_timeval): New.
|
|
|
|
|
(union compat_sigval): New.
|
|
|
|
|
(struct compat_siginfo): New.
|
|
|
|
|
(cpt_si_pid, cpt_si_uid, cpt_si_timerid): New macros.
|
|
|
|
|
(cpt_si_overrun, cpt_si_status, cpt_si_utime): Likewise.
|
|
|
|
|
(cpt_si_stime, cpt_si_ptr, cpt_si_addr): Likewise.
|
|
|
|
|
(cpt_si_band, cpt_si_fd): Likewise.
|
|
|
|
|
|
Bail out of processing stop if hook-stop resumes target / changes context
This patch, relative to a tree with
https://sourceware.org/ml/gdb-patches/2015-08/msg00295.html, fixes
issues/crashes that trigger if something unexpected happens during a
hook-stop.
E.g., if the inferior disappears while running the hook-stop, we hit
failed assertions:
(gdb) define hook-stop
Type commands for definition of "hook-stop".
End with a line saying just "end".
>kill
>end
(gdb) si
Kill the program being debugged? (y or n) [answered Y; input not from terminal]
/home/pedro/gdb/mygit/build/../src/gdb/thread.c:88: internal-error: inferior_thread: Assertion `tp' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)
I noticed that if a hook-stop issues a synchronous execution command,
we print the same stop event twice:
(gdb) define hook-stop
Type commands for definition of "hook-stop".
End with a line saying just "end".
>si
>end
(gdb) si
0x000000000040074a 42 args[i] = 1; /* Init value. */ <<<<<<< once
0x000000000040074a 42 args[i] = 1; /* Init value. */ <<<<<<< twice
(gdb)
In MI:
*stopped,reason="end-stepping-range",frame={addr="0x000000000040074a",func="main",args=[],file="threads.c",fullname="/home/pedro/gdb/tests/threads.c",line="42"},thread-id="1",stopped-threads="all",core="0"
*stopped,reason="end-stepping-range",frame={addr="0x000000000040074a",func="main",args=[],file="threads.c",fullname="/home/pedro/gdb/tests/threads.c",line="42"},thread-id="1",stopped-threads="all",core="0"
(gdb)
The fix has GDB stop processing the event if the context changed. I
don't expect people to be doing crazy things from the hook-stop.
E.g., it gives me headaches to try to come up a proper behavior for
handling a thread change from a hook-stop... (E.g., imagine the
hook-stop does thread N; step, with scheduler-locing on). I think the
most important bit here is preventing crashes.
The patch adds a new hook-stop.exp test that covers the above and also
merges in the old hook-stop-continue.exp and hook-stop-frame.exp into
the same framework.
gdb/ChangeLog:
2015-09-14 Pedro Alves <palves@redhat.com>
* infrun.c (current_stop_id): New global.
(get_stop_id, new_stop_id): New functions.
(fetch_inferior_event): Handle normal_stop proceeding the target.
(struct stop_context): New.
(save_stop_context, release_stop_context_cleanup)
(stop_context_changed): New functions.
(normal_stop): Return true if the hook-stop changes the stop
context.
* infrun.h (get_stop_id): Declare.
(normal_stop): Now returns int. Add documentation.
gdb/testsuite/ChangeLog:
2015-09-14 Pedro Alves <palves@redhat.com>
* gdb.base/hook-stop-continue.c: Delete.
* gdb.base/hook-stop-continue.exp: Delete.
* gdb.base/hook-stop-frame.c: Delete.
* gdb.base/hook-stop-frame.exp: Delete.
* gdb.base/hook-stop.c: New file.
* gdb.base/hook-stop.exp: New file.
2015-09-14 16:45:14 +02:00
|
|
|
|
2015-09-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (current_stop_id): New global.
|
|
|
|
|
(get_stop_id, new_stop_id): New functions.
|
|
|
|
|
(fetch_inferior_event): Handle normal_stop proceeding the target.
|
|
|
|
|
(struct stop_context): New.
|
|
|
|
|
(save_stop_context, release_stop_context_cleanup)
|
|
|
|
|
(stop_context_changed): New functions.
|
|
|
|
|
(normal_stop): Return true if the hook-stop changes the stop
|
|
|
|
|
context.
|
|
|
|
|
* infrun.h (get_stop_id): Declare.
|
|
|
|
|
(normal_stop): Now returns int. Add documentation.
|
|
|
|
|
|
[Ada] Fix the evaluation of access to packed array subscript
This change is relevant only for standard DWARF (as opposed to the GNAT
encodings extensions): at the time of writing it only makes a difference
with GCC patches that are to be integrated: see in particular
<https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01364.html>.
Given the following Ada declarations:
type Small is mod 2 ** 6;
type Array_Type is array (0 .. 9) of Small
with Pack;
type Array_Access is access all Array_Type;
A : aliased Array_Type := (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
AA : constant Array_Type := A'Access;
Before this change, we would get the following GDB session:
(gdb) print aa.all(2)
$1 = 3
(gdb) print aa(2)
$2 = 16
This is wrong: both expression should yield the same value: 3. The
problem is simply that the routine which handles accesses to arrays lack
general handling for packed arrays. After this patch, we have the
expected output:
(gdb) print aa.all(2)
$1 = 3
(gdb) print aa(2)
$2 = 3
gdb/ChangeLog:
* ada-lang.c (ada_value_ptr_subscript): Update the heading
comment. Handle packed arrays.
gdb/testsuite/ChangeLog:
* gdb.ada/access_to_packed_array.exp: New testcase.
* gdb.ada/access_to_packed_array/foo.adb: New file.
* gdb.ada/access_to_packed_array/pack.adb: New file.
* gdb.ada/access_to_packed_array/pack.ads: New file.
Tested on x86_64-linux, no regression.
2015-09-04 13:09:00 +02:00
|
|
|
|
2015-09-14 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_value_ptr_subscript): Update the heading
|
|
|
|
|
comment. Handle packed arrays.
|
|
|
|
|
|
2015-09-14 15:43:53 +02:00
|
|
|
|
2015-09-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes in GDB 7.10, New commands>: Remove duplicate
|
|
|
|
|
mention of maint set/show target-non-stop.
|
|
|
|
|
|
2015-09-11 20:06:03 +02:00
|
|
|
|
2015-09-11 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Announce new remote packets for the exec-events
|
|
|
|
|
feature and the exec-events feature and associated commands.
|
|
|
|
|
|
2015-09-11 20:06:02 +02:00
|
|
|
|
2015-09-11 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_exec_event_p): New function.
|
|
|
|
|
(remote_insert_exec_catchpoint): New function.
|
|
|
|
|
(remote_remove_exec_catchpoint): New function.
|
|
|
|
|
(init_extended_remote_ops): Initialize extended_remote_ops
|
|
|
|
|
members to_insert_exec_catchpoint and
|
|
|
|
|
to_remove_exec_catchpoint.
|
|
|
|
|
|
Extended-remote follow-exec
This patch implements support for exec events on extended-remote Linux
targets. Follow-exec-mode and rerun behave as expected. Catchpoints and
test updates are implemented in subsequent patches.
This patch was derived from a patch posted last October:
https://sourceware.org/ml/gdb-patches/2014-10/msg00877.html.
It was originally based on some work done by Luis Machado in 2013.
IMPLEMENTATION
----------------
Exec events are enabled via ptrace options.
When an exec event is detected by gdbserver, the existing process
data, along with all its associated lwp and thread data, is deleted
and replaced by data for a new single-threaded process. The new
process data is initialized with the appropriate parts of the state
of the execing process. This approach takes care of several potential
pitfalls, including:
* deleting the data for an execing non-leader thread before any
wait/sigsuspend occurs
* correctly initializing the architecture of the execed process
We then report the exec event using a new RSP stop reason, "exec".
When GDB receives an "exec" event, it saves the status in the event
structure's target_waitstatus field, like what is done for remote fork
events. Because the original and execed programs may have different
architectures, we skip parsing the section of the stop reply packet
that contains register data. The register data will be retrieved
later after the inferior's architecture has been set up by
infrun.c:follow_exec.
At that point the exec event is handled by the existing event handling
in GDB. However, a few changes were necessary so that
infrun.c:follow_exec could accommodate the remote target.
* Where follow-exec-mode "new" is handled, we now call
add_inferior_with_spaces instead of add_inferior with separate calls
to set up the program and address spaces. The motivation for this
is that add_inferior_with_spaces also sets up the initial architecture
for the inferior, which is needed later by target_find_description
when it calls target_gdbarch.
* We call a new target function, target_follow_exec. This function
allows us to store the execd_pathname in the inferior, instead of
using the static string remote_exec_file from remote.c. The static
string didn't work for follow-exec-mode "new", since once you switched
to the execed program, the original remote exec-file was lost. The
execd_pathname is now stored in the inferior's program space as a
REGISTRY field. All of the requisite mechanisms for this are
defined in remote.c.
gdb/gdbserver/ChangeLog:
* linux-low.c (linux_mourn): Static declaration.
(linux_arch_setup): Move in front of
handle_extended_wait.
(linux_arch_setup_thread): New function.
(handle_extended_wait): Handle exec events. Call
linux_arch_setup_thread. Make event_lwp argument a
pointer-to-a-pointer.
(check_zombie_leaders): Do not check stopped threads.
(linux_low_ptrace_options): Add PTRACE_O_TRACEEXEC.
(linux_low_filter_event): Add lwp and thread for exec'ing
non-leader thread if leader thread has been deleted.
Refactor code into linux_arch_setup_thread and call it.
Pass child lwp pointer by reference to handle_extended_wait.
(linux_wait_for_event_filtered): Update comment.
(linux_wait_1): Prevent clobbering exec event status.
(linux_supports_exec_events): New function.
(linux_target_ops) <supports_exec_events>: Initialize new member.
* lynx-low.c (lynx_target_ops) <supports_exec_events>: Initialize
new member.
* remote-utils.c (prepare_resume_reply): New stop reason 'exec'.
* server.c (report_exec_events): New global variable.
(handle_query): Handle qSupported query for exec-events feature.
(captured_main): Initialize report_exec_events.
* server.h (report_exec_events): Declare new global variable.
* target.h (struct target_ops) <supports_exec_events>: New
member.
(target_supports_exec_events): New macro.
* win32-low.c (win32_target_ops) <supports_exec_events>:
Initialize new member.
gdb/ChangeLog:
* infrun.c (follow_exec): Use process-style ptid for
exec message. Call add_inferior_with_spaces and
target_follow_exec.
* nat/linux-ptrace.c (linux_supports_traceexec): New function.
* nat/linux-ptrace.h (linux_supports_traceexec): Declare.
* remote.c (remote_pspace_data): New static variable.
(remote_pspace_data_cleanup): New function.
(get_remote_exec_file): New function.
(set_remote_exec_file_1): New function.
(set_remote_exec_file): New function.
(show_remote_exec_file): New function.
(remote_exec_file): Delete static variable.
(anonymous enum) <PACKET_exec_event_feature> New
enumeration constant.
(remote_protocol_features): Add entry for exec-events feature.
(remote_query_supported): Add client side of qSupported query
for exec-events feature.
(remote_follow_exec): New function.
(remote_parse_stop_reply): Handle 'exec' stop reason.
(extended_remote_run, extended_remote_create_inferior): Call
get_remote_exec_file and set_remote_exec_file_1.
(init_extended_remote_ops) <to_follow_exec>: Initialize new
member.
(_initialize_remote): Call
register_program_space_data_with_cleanup. Call
add_packet_config_cmd for remote exec-events feature.
Modify call to add_setshow_string_noescape_cmd for exec-file
to use new functions set_remote_exec_file and
show_remote_exec_file.
* target-debug.h, target-delegates.c: Regenerated.
* target.c (target_follow_exec): New function.
* target.h (struct target_ops) <to_follow_exec>: New member.
(target_follow_exec): Declare new function.
2015-09-11 20:06:02 +02:00
|
|
|
|
2015-09-11 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_exec): Use process-style ptid for
|
|
|
|
|
exec message. Call add_inferior_with_spaces and
|
|
|
|
|
target_follow_exec.
|
|
|
|
|
* nat/linux-ptrace.c (linux_supports_traceexec): New function.
|
|
|
|
|
* nat/linux-ptrace.h (linux_supports_traceexec): Declare.
|
|
|
|
|
* remote.c (remote_pspace_data): New static variable.
|
|
|
|
|
(remote_pspace_data_cleanup): New function.
|
|
|
|
|
(get_remote_exec_file): New function.
|
|
|
|
|
(set_remote_exec_file_1): New function.
|
|
|
|
|
(set_remote_exec_file): New function.
|
|
|
|
|
(show_remote_exec_file): New function.
|
|
|
|
|
(remote_exec_file): Delete static variable.
|
|
|
|
|
(anonymous enum) <PACKET_exec_event_feature>: New
|
|
|
|
|
enumeration constant.
|
|
|
|
|
(remote_protocol_features): Add entry for exec-events feature.
|
|
|
|
|
(remote_query_supported): Add client side of qSupported query
|
|
|
|
|
for exec-events feature.
|
|
|
|
|
(remote_follow_exec): New function.
|
|
|
|
|
(remote_parse_stop_reply): Handle 'exec' stop reason.
|
|
|
|
|
(extended_remote_run, extended_remote_create_inferior): Call
|
|
|
|
|
get_remote_exec_file and set_remote_exec_file_1.
|
|
|
|
|
(init_extended_remote_ops) <to_follow_exec>: Initialize new
|
|
|
|
|
member.
|
|
|
|
|
(_initialize_remote): Call
|
|
|
|
|
register_program_space_data_with_cleanup. Call
|
|
|
|
|
add_packet_config_cmd for remote exec-events feature.
|
|
|
|
|
Modify call to add_setshow_string_noescape_cmd for exec-file
|
|
|
|
|
to use new functions set_remote_exec_file and
|
|
|
|
|
show_remote_exec_file.
|
|
|
|
|
* target-debug.h, target-delegates.c: Regenerated.
|
|
|
|
|
* target.c (target_follow_exec): New function.
|
|
|
|
|
* target.h (struct target_ops) <to_follow_exec>: New member.
|
|
|
|
|
(target_follow_exec): Declare new function.
|
|
|
|
|
|
2015-09-11 18:00:55 +02:00
|
|
|
|
2015-09-11 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (decode_cb): Move up comment describing the
|
|
|
|
|
encoding.
|
|
|
|
|
(decode_tb): Fix a typo in comment above the function. Move up
|
|
|
|
|
comment describing the encoding.
|
|
|
|
|
|
2015-09-11 17:47:20 +02:00
|
|
|
|
2015-09-11 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (decode_bcond): Fix incorrect mask.
|
|
|
|
|
|
2015-09-11 16:22:11 +02:00
|
|
|
|
2015-09-11 Mihail-Marian Nistor <mihail.nistor@freescale.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18947
|
|
|
|
|
* aarch64-linux-tdep.c: (aarch64_linux_init_abi): Install
|
|
|
|
|
glibc_skip_solib_resolver as gdbarch_skip_solib_resolver callback.
|
|
|
|
|
|
2015-09-10 17:48:47 +02:00
|
|
|
|
2015-09-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (scan_discrim_bound): Factor out arithmetic
|
|
|
|
|
operations.
|
|
|
|
|
|
2015-09-10 17:12:51 +02:00
|
|
|
|
2015-09-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_search_struct_field): Constify parameters
|
|
|
|
|
and/or variables..
|
|
|
|
|
(xget_renaming_scope): Likewise.
|
|
|
|
|
(ada_is_redundant_range_encoding): Likewise.
|
|
|
|
|
(scan_discrim_bound): Likewise.
|
|
|
|
|
(to_fixed_range_type): Likewise.
|
|
|
|
|
|
2015-09-10 13:31:36 +02:00
|
|
|
|
2015-09-10 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (download_tracepoint_locations): New local
|
|
|
|
|
can_download_tracepoint. Check the result of
|
|
|
|
|
target_can_download_tracepoint and save it in
|
|
|
|
|
can_download_tracepoint if there are tracepoints to download.
|
|
|
|
|
* linux-nat.h (enum tribool): Move it to ...
|
|
|
|
|
* common/common-types.h: ... here.
|
|
|
|
|
|
2015-09-09 19:23:25 +02:00
|
|
|
|
2015-09-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inf-loop.c (inferior_event_handler): Delete INF_TIMER case.
|
|
|
|
|
* target.h (enum inferior_event_type) <INF_TIMER>: Delete.
|
|
|
|
|
|
2015-09-09 19:23:25 +02:00
|
|
|
|
2015-09-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* continuations.c (add_continuation, restore_thread_cleanup)
|
|
|
|
|
(do_all_continuations_ptid, do_all_continuations_thread_callback)
|
|
|
|
|
(do_all_continuations_thread, do_all_continuations)
|
|
|
|
|
(discard_all_continuations_thread_callback)
|
|
|
|
|
(discard_all_continuations_thread, discard_all_continuations)
|
|
|
|
|
(add_intermediate_continuation)
|
|
|
|
|
(do_all_intermediate_continuations_thread_callback)
|
|
|
|
|
(do_all_intermediate_continuations_thread)
|
|
|
|
|
(do_all_intermediate_continuations)
|
|
|
|
|
(discard_all_intermediate_continuations_thread_callback)
|
|
|
|
|
(discard_all_intermediate_continuations_thread)
|
|
|
|
|
(discard_all_intermediate_continuations): Delete.
|
|
|
|
|
* continuations.h (add_continuation, do_all_continuations)
|
|
|
|
|
(do_all_continuations_thread, discard_all_continuations)
|
|
|
|
|
(discard_all_continuations_thread, add_intermediate_continuation)
|
|
|
|
|
(do_all_intermediate_continuations)
|
|
|
|
|
(do_all_intermediate_continuations_thread)
|
|
|
|
|
(discard_all_intermediate_continuations)
|
|
|
|
|
(discard_all_intermediate_continuations_thread): Delete
|
|
|
|
|
declarations.
|
|
|
|
|
* event-top.c (stdin_event_handler): Delete references to
|
|
|
|
|
continuations.
|
|
|
|
|
* gdbthread.h (struct thread_info): Delete continuations and
|
|
|
|
|
intermediate_continuations fields.
|
|
|
|
|
* inf-loop.c (inferior_event_handler): Remove references to
|
|
|
|
|
continuations.
|
|
|
|
|
* infrun.c (infrun_thread_stop_requested_callback): Remove
|
|
|
|
|
references to continuations.
|
|
|
|
|
* target.h (enum inferior_event_type) <INF_EXEC_CONTINUE>: Delete.
|
|
|
|
|
* thread.c: Don't include "continuations.h".
|
|
|
|
|
(clear_thread_inferior_resources): Remove references to
|
|
|
|
|
continuations.
|
|
|
|
|
|
2015-09-09 19:23:25 +02:00
|
|
|
|
2015-09-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infcall.c (struct dummy_frame_context_saver): Delete.
|
|
|
|
|
(dummy_frame_context_saver_free, dummy_frame_context_saver_dtor)
|
|
|
|
|
(dummy_frame_context_saver_drop)
|
|
|
|
|
(dummy_frame_context_saver_cleanup)
|
|
|
|
|
(dummy_frame_context_saver_get_regs)
|
|
|
|
|
(dummy_frame_context_saver_setup): Delete.
|
|
|
|
|
* infcall.h (dummy_frame_context_saver_drop)
|
|
|
|
|
(dummy_frame_context_saver_cleanup)
|
|
|
|
|
(dummy_frame_context_saver_get_regs, dummy_frame_context_saver):
|
|
|
|
|
Delete.
|
|
|
|
|
(get_return_value): Remove 'ctx_saver' paremeter. Adjust.
|
|
|
|
|
* inferior.h (get_return_value): Remove 'ctx_saver' paremeter.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_pre_stop_hook): Adjust.
|
|
|
|
|
|
2015-09-09 19:23:24 +02:00
|
|
|
|
2015-09-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c: Include "thread-fsm.h".
|
|
|
|
|
(struct until_break_command_continuation_args): Delete.
|
|
|
|
|
(struct until_break_fsm): New.
|
|
|
|
|
(until_break_fsm_ops): New global.
|
|
|
|
|
(new_until_break_fsm, until_break_fsm_should_stop): New functions.
|
|
|
|
|
(until_break_command_continuation): Delete.
|
|
|
|
|
(until_break_fsm_clean_up): New function.
|
|
|
|
|
(until_break_fsm_async_reply_reason): New function.
|
|
|
|
|
(until_break_command): Adjust to create an until_break_fsm instead
|
|
|
|
|
of a continuation.
|
|
|
|
|
(momentary_bkpt_print_it): No longer print MI's async-stop-reason
|
|
|
|
|
here.
|
|
|
|
|
* infcmd.c (struct until_next_fsm): New.
|
|
|
|
|
(until_next_fsm_ops): New global.
|
|
|
|
|
(new_until_next_fsm, until_next_fsm_should_stop): New function.
|
|
|
|
|
(until_next_continuation): Delete.
|
|
|
|
|
(until_next_fsm_clean_up, until_next_fsm_async_reply_reason): New
|
|
|
|
|
functions.
|
|
|
|
|
(until_next_command): Adjust to create a new until_next_fsm
|
|
|
|
|
instead of a continuation.
|
|
|
|
|
|
2015-09-09 19:23:24 +02:00
|
|
|
|
2015-09-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infcall.c: Include thread_fsm.h.
|
|
|
|
|
(struct call_return_meta_info): New.
|
|
|
|
|
(get_call_return_value): New function, factored out from
|
|
|
|
|
call_function_by_hand_dummy.
|
|
|
|
|
(struct call_thread_fsm): New.
|
|
|
|
|
(call_thread_fsm_ops): New global.
|
|
|
|
|
(new_call_thread_fsm, call_thread_fsm_should_stop)
|
|
|
|
|
(call_thread_fsm_should_notify_stop): New functions.
|
|
|
|
|
(run_inferior_call): Add 'sm' parameter. Associate the FSM with
|
|
|
|
|
the thread.
|
|
|
|
|
(call_function_by_hand_dummy): Create a new call_thread_fsm
|
|
|
|
|
instance, associate it with the thread, and wait for the FSM to
|
|
|
|
|
finish. If finished successfully, fetch the function's result
|
|
|
|
|
value out of the FSM.
|
|
|
|
|
* infrun.c (fetch_inferior_event): If the FSM says the stop
|
|
|
|
|
shouldn't be notified, don't call normal_stop.
|
|
|
|
|
(maybe_remove_breakpoints): New function, factored out from ...
|
|
|
|
|
(normal_stop): ... here. Simplify.
|
|
|
|
|
* infrun.h (maybe_remove_breakpoints): Declare.
|
|
|
|
|
* thread-fsm.c (thread_fsm_should_notify_stop): New function.
|
|
|
|
|
(thread-fsm.h) <struct thread_fsm_ops>: New field.
|
|
|
|
|
(thread_fsm_should_notify_stop): Declare.
|
|
|
|
|
|
Replace "struct continuation" mechanism by something more extensible
This adds an object oriented replacement for the "struct continuation"
mechanism, and converts the stepping commands (step, next, stepi,
nexti) and the "finish" commands to use it.
It adds a new thread "class" (struct thread_fsm) that contains the
necessary info and callbacks to manage the state machine of a thread's
execution command.
This allows getting rid of some hacks. E.g., in fetch_inferior_event
and normal_stop we no longer need to know whether a thread is doing a
multi-step (e.g., step N). This effectively makes the
intermediate_continuations unused -- they'll be garbage collected in a
separate patch. (They were never a proper abstraction, IMO. See how
fetch_inferior_event needs to check step_multi before knowing whether
to call INF_EXEC_CONTINUE or INF_EXEC_COMPLETE.)
The target async vs !async uiout hacks in mi_on_normal_stop go away
too.
print_stop_event is no longer called from normal_stop. Instead it is
now called from within each interpreter's normal_stop observer. This
clears the path to make each interpreter print a stop event the way it
sees fit. Currently we have some hacks in common code to
differenciate CLI vs TUI vs MI around this area.
The "finish" command's FSM class stores the return value plus that
value's position in the value history, so that those can be printed to
both MI and CLI's streams. This fixes the CLI "finish" command when
run from MI -- it now also includes the function's return value in the
CLI stream:
(gdb)
~"callee3 (strarg=0x400730 \"A string argument.\") at src/gdb/testsuite/gdb.mi/basics.c:35\n"
~"35\t}\n"
+~"Value returned is $1 = 0\n"
*stopped,reason="function-finished",frame=...,gdb-result-var="$1",return-value="0",thread-id="1",stopped-threads="all",core="0"
-FAIL: gdb.mi/mi-cli.exp: CLI finish: check CLI output
+PASS: gdb.mi/mi-cli.exp: CLI finish: check CLI output
gdb/ChangeLog:
2015-09-09 Pedro Alves <palves@redhat.com>
* Makefile.in (COMMON_OBS): Add thread-fsm.o.
* breakpoint.c (handle_jit_event): Print debug output.
(bpstat_what): Split event callback handling to ...
(bpstat_run_callbacks): ... this new function.
(momentary_bkpt_print_it): No longer handle bp_finish here.
* breakpoint.h (bpstat_run_callbacks): Declare.
* gdbthread.h (struct thread_info) <step_multi>: Delete field.
<thread_fsm>: New field.
(thread_cancel_execution_command): Declare.
* infcmd.c: Include thread-fsm.h.
(struct step_command_fsm): New.
(step_command_fsm_ops): New global.
(new_step_command_fsm, step_command_fsm_prepare): New functions.
(step_1): Adjust to use step_command_fsm_prepare and
prepare_one_step.
(struct step_1_continuation_args): Delete.
(step_1_continuation): Delete.
(step_command_fsm_should_stop): New function.
(step_once): Delete.
(step_command_fsm_clean_up, step_command_fsm_async_reply_reason)
(prepare_one_step): New function, based on step_once.
(until_next_command): Remove step_multi reference.
(struct return_value_info): New.
(print_return_value): Rename to ...
(print_return_value_1): ... this. New struct return_value_info
parameter. Adjust.
(print_return_value): Reimplement as wrapper around
print_return_value_1.
(struct finish_command_fsm): New.
(finish_command_continuation): Delete.
(finish_command_fsm_ops): New global.
(new_finish_command_fsm, finish_command_fsm_should_stop): New
functions.
(finish_command_fsm_clean_up, finish_command_fsm_return_value):
New.
(finish_command_continuation_free_arg): Delete.
(finish_command_fsm_async_reply_reason): New.
(finish_backward, finish_forward): Change symbol parameter to a
finish_command_fsm. Adjust.
(finish_command): Create a finish_command_fsm. Adjust.
* infrun.c: Include "thread-fsm.h".
(clear_proceed_status_thread): Delete the thread's FSM.
(infrun_thread_stop_requested_callback): Cancel the thread's
execution command.
(clean_up_just_stopped_threads_fsms): New function.
(fetch_inferior_event): Handle the event_thread's should_stop
method saying the command isn't done yet.
(process_event_stop_test): Run breakpoint callbacks here.
(print_stop_event): Rename to ...
(print_stop_location): ... this.
(restore_current_uiout_cleanup): New function.
(print_stop_event): Reimplement.
(normal_stop): No longer notify the end_stepping_range observers
here handle "step N" nor "finish" here. No longer call
print_stop_event here.
* infrun.h (struct return_value_info): Forward declare.
(print_return_value): Declare.
(print_stop_event): Change prototype.
* thread-fsm.c: New file.
* thread-fsm.h: New file.
* thread.c: Include "thread-fsm.h".
(thread_cancel_execution_command): New function.
(clear_thread_inferior_resources): Call it.
* cli/cli-interp.c (cli_on_normal_stop): New function.
(cli_interpreter_init): Install cli_on_normal_stop as normal_stop
observer.
* mi/mi-interp.c: Include "thread-fsm.h".
(restore_current_uiout_cleanup): Delete.
(mi_on_normal_stop): If the thread has an FSM associated, and it
finished, ask it for the async-reply-reason to print. Always call
print_stop_event here, regardless of the top-level interpreter.
Check bpstat_what to tell whether an asynchronous breakpoint hit
triggered.
* tui/tui-interp.c (tui_on_normal_stop): New function.
(tui_init): Install tui_on_normal_stop as normal_stop observer.
gdb/testsuite/ChangeLog:
2015-09-09 Pedro Alves <palves@redhat.com>
* gdb.mi/mi-cli.exp: Add CLI finish tests.
2015-09-09 19:23:24 +02:00
|
|
|
|
2015-09-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (COMMON_OBS): Add thread-fsm.o.
|
|
|
|
|
* breakpoint.c (handle_jit_event): Print debug output.
|
|
|
|
|
(bpstat_what): Split event callback handling to ...
|
|
|
|
|
(bpstat_run_callbacks): ... this new function.
|
|
|
|
|
(momentary_bkpt_print_it): No longer handle bp_finish here.
|
|
|
|
|
* breakpoint.h (bpstat_run_callbacks): Declare.
|
|
|
|
|
* gdbthread.h (struct thread_info) <step_multi>: Delete field.
|
|
|
|
|
<thread_fsm>: New field.
|
|
|
|
|
(thread_cancel_execution_command): Declare.
|
|
|
|
|
* infcmd.c: Include thread-fsm.h.
|
|
|
|
|
(struct step_command_fsm): New.
|
|
|
|
|
(step_command_fsm_ops): New global.
|
|
|
|
|
(new_step_command_fsm, step_command_fsm_prepare): New functions.
|
|
|
|
|
(step_1): Adjust to use step_command_fsm_prepare and
|
|
|
|
|
prepare_one_step.
|
|
|
|
|
(struct step_1_continuation_args): Delete.
|
|
|
|
|
(step_1_continuation): Delete.
|
|
|
|
|
(step_command_fsm_should_stop): New function.
|
|
|
|
|
(step_once): Delete.
|
|
|
|
|
(step_command_fsm_clean_up, step_command_fsm_async_reply_reason)
|
|
|
|
|
(prepare_one_step): New function, based on step_once.
|
|
|
|
|
(until_next_command): Remove step_multi reference.
|
|
|
|
|
(struct return_value_info): New.
|
|
|
|
|
(print_return_value): Rename to ...
|
|
|
|
|
(print_return_value_1): ... this. New struct return_value_info
|
|
|
|
|
parameter. Adjust.
|
|
|
|
|
(print_return_value): Reimplement as wrapper around
|
|
|
|
|
print_return_value_1.
|
|
|
|
|
(struct finish_command_fsm): New.
|
|
|
|
|
(finish_command_continuation): Delete.
|
|
|
|
|
(finish_command_fsm_ops): New global.
|
|
|
|
|
(new_finish_command_fsm, finish_command_fsm_should_stop): New
|
|
|
|
|
functions.
|
|
|
|
|
(finish_command_fsm_clean_up, finish_command_fsm_return_value):
|
|
|
|
|
New.
|
|
|
|
|
(finish_command_continuation_free_arg): Delete.
|
|
|
|
|
(finish_command_fsm_async_reply_reason): New.
|
|
|
|
|
(finish_backward, finish_forward): Change symbol parameter to a
|
|
|
|
|
finish_command_fsm. Adjust.
|
|
|
|
|
(finish_command): Create a finish_command_fsm. Adjust.
|
|
|
|
|
* infrun.c: Include "thread-fsm.h".
|
|
|
|
|
(clear_proceed_status_thread): Delete the thread's FSM.
|
|
|
|
|
(infrun_thread_stop_requested_callback): Cancel the thread's
|
|
|
|
|
execution command.
|
|
|
|
|
(clean_up_just_stopped_threads_fsms): New function.
|
|
|
|
|
(fetch_inferior_event): Handle the event_thread's should_stop
|
|
|
|
|
method saying the command isn't done yet.
|
|
|
|
|
(process_event_stop_test): Run breakpoint callbacks here.
|
|
|
|
|
(print_stop_event): Rename to ...
|
|
|
|
|
(print_stop_location): ... this.
|
|
|
|
|
(restore_current_uiout_cleanup): New function.
|
|
|
|
|
(print_stop_event): Reimplement.
|
|
|
|
|
(normal_stop): No longer notify the end_stepping_range observers
|
|
|
|
|
here handle "step N" nor "finish" here. No longer call
|
|
|
|
|
print_stop_event here.
|
|
|
|
|
* infrun.h (struct return_value_info): Forward declare.
|
|
|
|
|
(print_return_value): Declare.
|
|
|
|
|
(print_stop_event): Change prototype.
|
|
|
|
|
* thread-fsm.c: New file.
|
|
|
|
|
* thread-fsm.h: New file.
|
|
|
|
|
* thread.c: Include "thread-fsm.h".
|
|
|
|
|
(thread_cancel_execution_command): New function.
|
|
|
|
|
(clear_thread_inferior_resources): Call it.
|
|
|
|
|
* cli/cli-interp.c (cli_on_normal_stop): New function.
|
|
|
|
|
(cli_interpreter_init): Install cli_on_normal_stop as normal_stop
|
|
|
|
|
observer.
|
|
|
|
|
* mi/mi-interp.c: Include "thread-fsm.h".
|
|
|
|
|
(restore_current_uiout_cleanup): Delete.
|
|
|
|
|
(mi_on_normal_stop): If the thread has an FSM associated, and it
|
|
|
|
|
finished, ask it for the async-reply-reason to print. Always call
|
|
|
|
|
print_stop_event here, regardless of the top-level interpreter.
|
|
|
|
|
Check bpstat_what to tell whether an asynchronous breakpoint hit
|
|
|
|
|
triggered.
|
|
|
|
|
* tui/tui-interp.c (tui_on_normal_stop): New function.
|
|
|
|
|
(tui_init): Install tui_on_normal_stop as normal_stop observer.
|
|
|
|
|
|
Merge async and sync code paths some more
This patch makes the execution control code use largely the same
mechanisms in both sync- and async-capable targets. This means using
continuations and use the event loop to react to target events on sync
targets as well. The trick is to immediately mark infrun's event loop
source after resume instead of calling wait_for_inferior. Then
fetch_inferior_event is adjusted to do a blocking wait on sync
targets.
Tested on x86_64 Fedora 20, native and gdbserver, with and without
"maint set target-async off".
gdb/ChangeLog:
2015-09-09 Pedro Alves <palves@redhat.com>
* breakpoint.c (bpstat_do_actions_1, until_break_command): Don't
check whether the target can async.
* inf-loop.c (inferior_event_handler): Only call target_async if
the target can async.
* infcall.c: Include top.h and interps.h.
(run_inferior_call): For the interpreter to sync mode while
running the infcall. Call wait_sync_command_done instead of
wait_for_inferior plus normal_stop.
* infcmd.c (prepare_execution_command): Don't check whether the
target can async when running in the foreground.
(step_1): Delete synchronous case handling.
(step_once): Always install a continuation, even in sync mode.
(until_next_command, finish_forward): Don't check whether the
target can async.
(attach_command_post_wait, notice_new_inferior): Always install a
continuation, even in sync mode.
* infrun.c (mark_infrun_async_event_handler): New function.
(proceed): In sync mode, mark infrun's event source instead of
waiting for events here.
(fetch_inferior_event): If the target can't async, do a blocking
wait.
(prepare_to_wait): In sync mode, mark infrun's event source.
(infrun_async_inferior_event_handler): No longer bail out if the
target can't async.
* infrun.h (mark_infrun_async_event_handler): New declaration.
* linux-nat.c (linux_nat_wait_1): Remove calls to
set_sigint_trap/clear_sigint_trap.
(linux_nat_terminal_inferior): No longer check whether the target
can async.
* mi/mi-interp.c (mi_on_sync_execution_done): Update and simplify
comment.
(mi_execute_command_input_handler): No longer check whether the
target is async. Update and simplify comment.
* target.c (default_target_wait): New function.
* target.h (struct target_ops) <to_wait>: Now defaults to
default_target_wait.
(default_target_wait): Declare.
* top.c (wait_sync_command_done): New function, factored out from
...
(maybe_wait_sync_command_done): ... this.
* top.h (wait_sync_command_done): Declare.
* target-delegates.c: Regenerate.
2015-09-09 19:23:23 +02:00
|
|
|
|
2015-09-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (bpstat_do_actions_1, until_break_command): Don't
|
|
|
|
|
check whether the target can async.
|
|
|
|
|
* inf-loop.c (inferior_event_handler): Only call target_async if
|
|
|
|
|
the target can async.
|
|
|
|
|
* infcall.c: Include top.h and interps.h.
|
|
|
|
|
(run_inferior_call): For the interpreter to sync mode while
|
|
|
|
|
running the infcall. Call wait_sync_command_done instead of
|
|
|
|
|
wait_for_inferior plus normal_stop.
|
|
|
|
|
* infcmd.c (prepare_execution_command): Don't check whether the
|
|
|
|
|
target can async when running in the foreground.
|
|
|
|
|
(step_1): Delete synchronous case handling.
|
|
|
|
|
(step_once): Always install a continuation, even in sync mode.
|
|
|
|
|
(until_next_command, finish_forward): Don't check whether the
|
|
|
|
|
target can async.
|
|
|
|
|
(attach_command_post_wait, notice_new_inferior): Always install a
|
|
|
|
|
continuation, even in sync mode.
|
|
|
|
|
* infrun.c (mark_infrun_async_event_handler): New function.
|
|
|
|
|
(proceed): In sync mode, mark infrun's event source instead of
|
|
|
|
|
waiting for events here.
|
|
|
|
|
(fetch_inferior_event): If the target can't async, do a blocking
|
|
|
|
|
wait.
|
|
|
|
|
(prepare_to_wait): In sync mode, mark infrun's event source.
|
|
|
|
|
(infrun_async_inferior_event_handler): No longer bail out if the
|
|
|
|
|
target can't async.
|
|
|
|
|
* infrun.h (mark_infrun_async_event_handler): New declaration.
|
|
|
|
|
* linux-nat.c (linux_nat_wait_1): Remove calls to
|
|
|
|
|
set_sigint_trap/clear_sigint_trap.
|
|
|
|
|
(linux_nat_terminal_inferior): No longer check whether the target
|
|
|
|
|
can async.
|
|
|
|
|
* mi/mi-interp.c (mi_on_sync_execution_done): Update and simplify
|
|
|
|
|
comment.
|
|
|
|
|
(mi_execute_command_input_handler): No longer check whether the
|
|
|
|
|
target is async. Update and simplify comment.
|
|
|
|
|
* target.c (default_target_wait): New function.
|
|
|
|
|
* target.h (struct target_ops) <to_wait>: Now defaults to
|
|
|
|
|
default_target_wait.
|
|
|
|
|
(default_target_wait): Declare.
|
|
|
|
|
* top.c (wait_sync_command_done): New function, factored out from
|
|
|
|
|
...
|
|
|
|
|
(maybe_wait_sync_command_done): ... this.
|
|
|
|
|
* top.h (wait_sync_command_done): Declare.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
|
2015-08-11 11:05:58 +02:00
|
|
|
|
2015-09-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-btrace.h (struct btrace_target_info) <ptr_bits>: Remove.
|
|
|
|
|
* nat/linux-btrace.c: Include filestuff.h and inttypes.h.
|
|
|
|
|
Remove include of sys/utsname.h.
|
|
|
|
|
(linux_determine_kernel_ptr_bits): Remove.
|
|
|
|
|
(linux_determine_kernel_start): New.
|
|
|
|
|
(perf_event_is_kernel_addr): Remove tinfo argument. Update users.
|
|
|
|
|
Update check.
|
|
|
|
|
(perf_event_skip_bts_record): Remove tinfo argument. Update users.
|
|
|
|
|
(linux_enable_bts, linux_enable_pt): Remove tinfo->ptr_bits
|
|
|
|
|
initialization.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_enable_btrace): Remove ptr_bits
|
|
|
|
|
assignment.
|
|
|
|
|
|
2015-09-07 20:34:31 +02:00
|
|
|
|
2015-09-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* guile/guile-internal.h (as_a_scm_t_subr): New.
|
|
|
|
|
* guile/guile.c (misc_guile_functions): Use it.
|
|
|
|
|
* guile/scm-arch.c (arch_functions): Use it.
|
|
|
|
|
* guile/scm-block.c (block_functions, gdbscm_initialize_blocks):
|
|
|
|
|
Use it.
|
|
|
|
|
* guile/scm-breakpoint.c (breakpoint_functions): Use it.
|
|
|
|
|
* guile/scm-cmd.c (command_functions): Use it.
|
|
|
|
|
* guile/scm-disasm.c (disasm_functions): Use it.
|
|
|
|
|
* guile/scm-exception.c (exception_functions)
|
|
|
|
|
(private_exception_functions): Use it.
|
|
|
|
|
* guile/scm-frame.c (frame_functions)
|
|
|
|
|
* guile/scm-gsmob.c (gsmob_functions): Use it.
|
|
|
|
|
* guile/scm-iterator.c (iterator_functions): Use it.
|
|
|
|
|
* guile/scm-lazy-string.c (lazy_string_functions): Use it.
|
|
|
|
|
* guile/scm-math.c (math_functions): Use it.
|
|
|
|
|
* guile/scm-objfile.c (objfile_functions): Use it.
|
|
|
|
|
* guile/scm-param.c (parameter_functions): Use it.
|
|
|
|
|
* guile/scm-ports.c (port_functions, private_port_functions): Use
|
|
|
|
|
it.
|
|
|
|
|
* guile/scm-pretty-print.c (pretty_printer_functions): Use it.
|
|
|
|
|
* guile/scm-progspace.c (pspace_functions): Use it.
|
|
|
|
|
* guile/scm-string.c (string_functions): Use it.
|
|
|
|
|
* guile/scm-symbol.c (symbol_functions): Use it.
|
|
|
|
|
* guile/scm-symtab.c (symtab_functions): Use it.
|
|
|
|
|
* guile/scm-type.c (type_functions, gdbscm_initialize_types): Use
|
|
|
|
|
it.
|
|
|
|
|
* guile/scm-value.c (value_functions): Use it.
|
|
|
|
|
|
2015-08-31 22:32:11 +02:00
|
|
|
|
2015-09-04 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-data.c (win_with_focus): Remove cast of NULL pointer.
|
|
|
|
|
(tui_next_win): Likewise.
|
|
|
|
|
(tui_prev_win): Likewise.
|
|
|
|
|
(tui_partial_win_by_name): Likewise.
|
|
|
|
|
(tui_init_generic_part): Likewise.
|
|
|
|
|
(init_content_element): Likewise.
|
|
|
|
|
(tui_del_window): Likewise.
|
|
|
|
|
(tui_free_window): Likewise.
|
|
|
|
|
(tui_del_data_windows): Likewise.
|
|
|
|
|
(tui_free_data_content): Likewise.
|
|
|
|
|
* tui/tui-layout.c (make_source_or_disasm_window): Likewise.
|
|
|
|
|
* tui/tui-regs.c (tui_show_register_group): Likewise.
|
|
|
|
|
* tui/tui-win.c (tui_resize_all): Likewise.
|
|
|
|
|
(tui_set_focus): Likewise.
|
|
|
|
|
(tui_set_win_height): Likewise.
|
|
|
|
|
(make_invisible_and_set_new_height): Likewise.
|
|
|
|
|
* tui/tui-windata.c (tui_delete_data_content_windows): Likewise.
|
|
|
|
|
* tui/tui-wingeneral.c (make_visible): Likewise.
|
|
|
|
|
|
2015-08-31 22:25:37 +02:00
|
|
|
|
2015-09-04 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-decode.c (find_cmd): Remove cast of NULL pointer.
|
|
|
|
|
|
2015-08-31 22:19:49 +02:00
|
|
|
|
2015-09-04 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (print_unpacked_pointer): Remove cast of NULL
|
|
|
|
|
pointer.
|
|
|
|
|
* dbxread.c (dbx_end_psymtab): Likewise.
|
|
|
|
|
* gnu-nat.c (gnu_write_inferior): Likewise.
|
|
|
|
|
* mdebugread.c (cross_ref): Likewise.
|
|
|
|
|
* p-valprint.c (pascal_val_print): Likewise.
|
|
|
|
|
* xcoffread.c (xcoff_end_psymtab): Likewise.
|
|
|
|
|
|
2015-09-04 16:26:21 +02:00
|
|
|
|
2015-09-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention the aarch64 multi-arch debugging support.
|
|
|
|
|
|
2015-09-02 18:18:15 +02:00
|
|
|
|
2015-09-03 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_language_arch_info): Create a TYPE_CODE_CHAR
|
|
|
|
|
type instead of a TYPE_CODE_INT one for the string_char_type
|
|
|
|
|
and the ada_primitive_type_char types.
|
|
|
|
|
|
[aarch64] Check region OK for HW watchpoint in GDBserver
Nowadays, if user requests HW watchpoint to monitor a large memory area
or unaligned area, aarch64 GDB will split into multiple aligned areas,
and use multiple debugging registers to watch them. However, the
registers are not updated in a transaction way. GDBserver doesn't revert
updates in previous iterations if some debugging registers fail to update
due to some reason, like no free debugging registers available, in the
latter iteration. For example, if we have a char buf[34], and watch buf
in gdb,
(gdb) watch buf
Hardware watchpoint 2: buf
(gdb) c
Continuing.
infrun: clear_proceed_status_thread (Thread 13466)
infrun: proceed (addr=0xffffffffffffffff, signal=GDB_SIGNAL_DEFAULT)
infrun: step-over queue now empty
infrun: resuming [Thread 13466] for step-over
Sending packet: $m410838,22#35...Packet received: 00000000000000000000000000000000000000000000000000000000000000000000
infrun: skipping breakpoint: stepping past insn at: 0x400524
infrun: skipping breakpoint: stepping past insn at: 0x400524
Sending packet: $Z2,410838,22#80...Packet received: E01 <----- [1]
Packet Z2 (write-watchpoint) is supported
Sending packet: $Z0,7fb7fe0a8c,4#43...Packet received: OK
Warning:
Could not insert hardware watchpoint 2.
Could not insert hardware breakpoints:
You may have requested too many hardware breakpoints/watchpoints.
GDB receives E01 for Z2 packet [1] but GDBserver updates the debugging
register status,
insert_point (addr=0x00410838, len=34, type=hw-write-watchpoint):
BREAKPOINTs:
BP0: addr=0x0, ctrl=0x00000000, ref.count=0
BP1: addr=0x0, ctrl=0x00000000, ref.count=0
BP2: addr=0x0, ctrl=0x00000000, ref.count=0
BP3: addr=0x0, ctrl=0x00000000, ref.count=0
BP4: addr=0x0, ctrl=0x00000000, ref.count=0
BP5: addr=0x0, ctrl=0x00000000, ref.count=0
WATCHPOINTs:
WP0: addr=0x410850, ctrl=0x00001ff5, ref.count=1
WP1: addr=0x410848, ctrl=0x00001ff5, ref.count=1
WP2: addr=0x410840, ctrl=0x00001ff5, ref.count=1
WP3: addr=0x410838, ctrl=0x00001ff5, ref.count=1
four debugging registers can not monitor 34-byte long area, so the last
iteration of updating debugging register state fails but previous
iterations succeed. This makes GDB think no HW watchpoint is inserted
but some debugging registers are used.
This problem was exposed by "watch buf" gdb.base/watchpoint.exp with
aarch64 GDBserver debugging arm 32-bit program. The buf is 30-byte long
but 4-byte aligned, and four debugging registers can't cover 34-byte
(extend 4 bytes to be 8-byte aligned) area. However, this problem
does exist on non-multi-arch debugging scenario as well.
This patch moves code in aarch64_linux_region_ok_for_hw_watchpoint to
aarch64_linux_region_ok_for_watchpoint in nat/aarch64-linux-hw-point.c.
Then, checks with aarch64_linux_region_ok_for_watchpoint, like what we
are doing in GDB. If the region is OK, call aarch64_handle_watchpoint.
Regression tested on aarch64 with both 64-bit program and 32-bit
program. Some fails in gdb.base/watchpoint.exp are fixed.
gdb:
2015-09-03 Yao Qi <yao.qi@linaro.org>
* aarch64-linux-nat.c (aarch64_linux_region_ok_for_hw_watchpoint):
Move code to aarch64_linux_region_ok_for_watchpoint. Call
aarch64_linux_region_ok_for_watchpoint.
* nat/aarch64-linux-hw-point.c (aarch64_linux_region_ok_for_watchpoint):
New function.
* nat/aarch64-linux-hw-point.h (aarch64_linux_region_ok_for_watchpoint):
Declare it.
gdb/gdbserver:
2015-09-03 Yao Qi <yao.qi@linaro.org>
* linux-aarch64-low.c (aarch64_insert_point): Call
aarch64_handle_watchpoint if aarch64_linux_region_ok_for_watchpoint
returns true.
2015-09-03 15:01:49 +02:00
|
|
|
|
2015-09-03 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_region_ok_for_hw_watchpoint):
|
|
|
|
|
Move code to aarch64_linux_region_ok_for_watchpoint. Call
|
|
|
|
|
aarch64_linux_region_ok_for_watchpoint.
|
|
|
|
|
* nat/aarch64-linux-hw-point.c (aarch64_linux_region_ok_for_watchpoint):
|
|
|
|
|
New function.
|
|
|
|
|
* nat/aarch64-linux-hw-point.h (aarch64_linux_region_ok_for_watchpoint):
|
|
|
|
|
Declare it.
|
|
|
|
|
|
2015-08-30 00:07:50 +02:00
|
|
|
|
2015-09-02 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* gdb_obstack.h (obstack_strdup): Declare.
|
|
|
|
|
* gdb_obstack.c (obstack_strdup): Define.
|
|
|
|
|
* gdbarch.sh (gdbarch_obstack_strdup): Declare and define.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
* gdbtypes.c (arch_type): Use gdbarch_obstack_strdup.
|
|
|
|
|
|
2015-08-30 00:16:40 +02:00
|
|
|
|
2015-09-02 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (copy_type_recursive): Update documentation.
|
|
|
|
|
|
2015-09-02 06:46:43 +02:00
|
|
|
|
2015-09-01 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib-svr4.c (solib_event_probe_action): Initialize 'probe_argc'
|
|
|
|
|
as zero.
|
|
|
|
|
|
2015-09-02 06:34:22 +02:00
|
|
|
|
2015-09-01 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib-svr4.c (svr4_handle_solib_event): Initialize 'val' as NULL
|
|
|
|
|
|
Catching errors on probes-based dynamic linker interface
This patch is intended to make the interaction between the
probes-based dynamic linker interface and the SystemTap SDT probe code
on GDB more robust. It does that by wrapping the calls to the probe
API with TRY...CATCH'es, so that any exception thrown will be caught
and handled properly.
The idea for this patch came from
<https://bugzilla.redhat.com/show_bug.cgi?id=1196181>, which is a bug
initially filed against Fedora GDB (but now under Fedora GLIBC). This
bug happens on armhfp (although it could happen on other targets as
well), and is triggered because GCC generates a strange argument for
one of the probes used by GDB in the dynamic linker interface. As can
be seen in the bug, this argument is "-4@.L1052".
I don't want to discuss the reasons for this argument to be there
(this discussion belongs to the bug, or to another thread), but GDB
could definitely do a better error handling here. Currently, one sees
the following message when there is an error in the probes-based
dynamic linker interface:
(gdb) run
Starting program: /bin/inferior
warning: Probes-based dynamic linker interface failed.
Reverting to original interface.
Cannot parse expression `.L976 4@r4'.
(gdb)
Which means that one needs to explicitly issue a "continue" command to
make GDB continue running the inferior, even though this error is not
fatal and GDB will fallback to the old interface automatically.
This is where this patch helps: it makes GDB still print the necessary
warnings or error messages, but it *also* does not stop the inferior
unnecessarily.
I have tested this patch on the systems where this error happens, but
I could not come up with a way to create a testcase for it.
Nevertheless, it should be straightforward to see that this patch does
improve the current situation.
gdb/ChangeLog:
2015-09-01 Sergio Durigan Junior <sergiodj@redhat.com>
* solib-svr4.c (solib_event_probe_action): Call
get_probe_argument_count using TRY...CATCH.
(svr4_handle_solib_event): Likewise, for evaluate_probe_argument.
2015-08-22 00:28:07 +02:00
|
|
|
|
2015-09-01 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib-svr4.c (solib_event_probe_action): Call
|
|
|
|
|
get_probe_argument_count using TRY...CATCH.
|
|
|
|
|
(svr4_handle_solib_event): Likewise, for evaluate_probe_argument.
|
|
|
|
|
|
Improve error reporting when handling SystemTap SDT probes
This patch improves the error reporting when handling SystemTap SDT
probes. "Handling", in this case, mostly means "parsing".
On gdb/probe.h, only trivial changes on functions' comments in order
to explicitly mention that some of them can throw exceptions. This is
just to make the API a bit more clear.
On gdb/stap-probe.c, I have s/internal_error/error/ on two functions
that are responsible for parsing specific bits of the probes'
arguments: stap_get_opcode and stap_get_expected_argument_type. It is
not correct to call internal_error on such situations because it is
not really GDB's fault if the probes have malformed arguments. I also
improved the error reported on stap_get_expected_argument_type by also
including the probe name on it.
Aside from that, and perhaps most importantly, I added a check on
stap_get_arg to make sure that we don't try to extract an argument
from a probe that has no arguments. This check issues an
internal_error, because it really means that GDB is doing something it
shouldn't.
Although it can be considered almost trivial, and despite the fact
that I am the maintainer for this part of the code, I am posting this
patch for review. I will wait a few days, and if nobody has anything
to say, I will go ahead and push it.
gdb/ChangeLog:
2015-09-01 Sergio Durigan Junior <sergiodj@redhat.com>
* probe.h (struct probe_ops) <get_probe_argument_count,
evaluate_probe_argument, enable_probe, disable_probe>: Mention in
the comment that the function can throw an exception.
(get_probe_argument_count): Likewise.
(evaluate_probe_argument): Likewise.
* stap-probe.c (stap_get_opcode): Call error instead of
internal_error.
(stap_get_expected_argument_type): Likewise. Add argument
'probe'. Improve error message by mentioning the probe's name.
(stap_parse_probe_arguments): Adjust call to
stap_get_expected_argument_type.
(stap_get_arg): Add comment. Assert that 'probe->args_parsed' is
not zero. Call internal_error if GDB requests an argument but the
probe has no arguments.
2015-08-22 00:13:46 +02:00
|
|
|
|
2015-09-01 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* probe.h (struct probe_ops) <get_probe_argument_count,
|
|
|
|
|
evaluate_probe_argument, enable_probe, disable_probe>: Mention in
|
|
|
|
|
the comment that the function can throw an exception.
|
|
|
|
|
(get_probe_argument_count): Likewise.
|
|
|
|
|
(evaluate_probe_argument): Likewise.
|
|
|
|
|
* stap-probe.c (stap_get_opcode): Call error instead of
|
|
|
|
|
internal_error.
|
|
|
|
|
(stap_get_expected_argument_type): Likewise. Add argument
|
|
|
|
|
'probe'. Improve error message by mentioning the probe's name.
|
|
|
|
|
(stap_parse_probe_arguments): Adjust call to
|
|
|
|
|
stap_get_expected_argument_type.
|
|
|
|
|
(stap_get_arg): Add comment. Assert that 'probe->args_parsed' is
|
|
|
|
|
not zero. Call internal_error if GDB requests an argument but the
|
|
|
|
|
probe has no arguments.
|
|
|
|
|
|
2015-08-31 16:04:07 +02:00
|
|
|
|
2015-09-01 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_resolve_function): Do not ask the user what
|
|
|
|
|
match to use when in completion mode.
|
|
|
|
|
|
2015-08-30 12:14:58 +02:00
|
|
|
|
2015-08-31 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-data.c (tui_win_name): Make local variable const, remove
|
|
|
|
|
cast of NULL.
|
|
|
|
|
|
2015-05-30 12:00:32 +02:00
|
|
|
|
2015-08-31 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.h (XTENSA_GDBARCH_TDEP_INSTANTIATE): Initialize
|
|
|
|
|
call_abi using XSHAL_ABI macro.
|
|
|
|
|
|
2015-08-30 02:10:58 +02:00
|
|
|
|
2015-08-29 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* symtab.h (struct symbol): Tweak comment.
|
|
|
|
|
|
2015-06-29 16:39:26 +02:00
|
|
|
|
2015-08-29 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (alloc_type_arch): Allocate the type on the given
|
|
|
|
|
gdbarch obstack instead of on the heap. Update commentary
|
|
|
|
|
accordingly.
|
|
|
|
|
|
2015-08-28 23:40:54 +02:00
|
|
|
|
2015-08-28 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.10 released.
|
|
|
|
|
|
2015-08-28 21:35:47 +02:00
|
|
|
|
2015-08-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Update entry about non-8-bits addressable memory.
|
|
|
|
|
|
2015-08-28 19:04:56 +02:00
|
|
|
|
2015-08-28 Ulrich Weigand <uweigand@de.ibm.com>
|
|
|
|
|
|
|
|
|
|
Revert:
|
|
|
|
|
2014-11-06 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
* solib.c (solib_global_lookup): Fetch arch from objfile,
|
|
|
|
|
not target_gdbarch.
|
|
|
|
|
|
2015-08-28 19:04:12 +02:00
|
|
|
|
2015-08-27 Ulrich Weigand <uweigand@de.ibm.com>
|
2015-08-27 19:31:04 +02:00
|
|
|
|
|
|
|
|
|
* ppc-linux-tdep.c (ppc_linux_spe_context_lookup): Do not
|
|
|
|
|
attempt to relocate a TLS variable offset.
|
|
|
|
|
|
2015-08-28 19:04:12 +02:00
|
|
|
|
2015-08-27 Ulrich Weigand <uweigand@de.ibm.com>
|
2015-08-27 19:27:40 +02:00
|
|
|
|
|
|
|
|
|
* spu-multiarch.c (parse_spufs_run): Bail out if inferior is not
|
|
|
|
|
registered yet. Set inferior_ptid while calling target_read_memory.
|
|
|
|
|
|
2015-08-28 19:04:12 +02:00
|
|
|
|
2015-08-27 Ulrich Weigand <uweigand@de.ibm.com>
|
2015-08-27 19:20:29 +02:00
|
|
|
|
|
|
|
|
|
* nat/linux-ptrace.h (GDB_ARCH_TRAP_BRKPT): Replace by ...
|
|
|
|
|
(GDB_ARCH_IS_TRAP_BRKPT): ... this. Add __powerpc__ case.
|
|
|
|
|
* linux-nat.c (check_stopped_by_breakpoint): Use
|
|
|
|
|
GDB_ARCH_IS_TRAP_BRKPT instead of GDB_ARCH_TRAP_BRKPT.
|
|
|
|
|
|
2015-08-28 19:04:12 +02:00
|
|
|
|
2015-08-27 Ulrich Weigand <uweigand@de.ibm.com>
|
2015-08-27 19:12:49 +02:00
|
|
|
|
|
|
|
|
|
* linux-thread-db.c (thread_db_get_thread_local_address): If the
|
|
|
|
|
thread was not yet discovered, use thread_from_lwp instead of
|
|
|
|
|
calling thread_db_find_new_threads_1.
|
|
|
|
|
|
2015-08-27 15:47:14 +02:00
|
|
|
|
2015-08-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* m88k-tdep.c (m88k_analyze_prologue): Fix inverted allocation
|
|
|
|
|
statements.
|
|
|
|
|
|
2015-08-27 15:30:00 +02:00
|
|
|
|
2015-08-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Document support for non-8-bits addressable memory.
|
|
|
|
|
|
2015-08-27 14:26:23 +02:00
|
|
|
|
2015-08-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac: Remove AC_TYPE_SIGNAL call.
|
|
|
|
|
* configure, config.in: Regenerate.
|
|
|
|
|
|
2015-08-27 14:26:23 +02:00
|
|
|
|
2015-08-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-support.c (gdb_demangle): Use sighandler_t. Remove cast.
|
|
|
|
|
* extension-priv.h: Include signal.h.
|
|
|
|
|
(struct signal_handler) <handler>: Change type to sighandler_t.
|
|
|
|
|
* extension.c (install_gdb_sigint_handler): Use sighandler_t.
|
|
|
|
|
* inflow.c (sigint_ours, sigquit_ours): Change type to
|
|
|
|
|
sighandler_t.
|
|
|
|
|
(child_terminal_inferior): Remove casts.
|
|
|
|
|
(child_terminal_ours_1, new_tty): Use sighandler_t. Remove casts.
|
|
|
|
|
(osig): Change type to sighandler_t.
|
|
|
|
|
* nto-procfs.c (ofunc): Change type to sighandler_t.
|
|
|
|
|
(procfs_wait): Remove casts.
|
|
|
|
|
* remote-m32r-sdi.c (m32r_wait, m32r_load): Use sighandler_t.
|
|
|
|
|
* remote-sim.c (gdbsim_wait): Use sighandler_t.
|
|
|
|
|
* utils.c (wait_to_die_with_timeout): Use sighandler_t.
|
|
|
|
|
|
2015-08-27 14:26:22 +02:00
|
|
|
|
2015-08-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add signal-h.
|
|
|
|
|
* gnulib/aclocal.m4: Renegerate.
|
|
|
|
|
* gnulib/config.in: Renegerate.
|
|
|
|
|
* gnulib/configure: Renegerate.
|
|
|
|
|
* gnulib/import/Makefile.am: Update.
|
|
|
|
|
* gnulib/import/Makefile.in: Regenerate.
|
|
|
|
|
* gnulib/import/m4/gnulib-cache.m4: Update.
|
|
|
|
|
* gnulib/import/m4/gnulib-comp.m4: Update.
|
|
|
|
|
* gnulib/import/m4/signal_h.m4: New file.
|
|
|
|
|
* gnulib/import/signal.in.h: New file.
|
|
|
|
|
|
2015-08-27 14:03:15 +02:00
|
|
|
|
2015-08-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (DEFAULT_MAX_MEMORY_PACKET_SIZE)
|
|
|
|
|
(MIN_MEMORY_PACKET_SIZE): New.
|
|
|
|
|
(MAX_REMOTE_PACKET_SIZE, MIN_REMOTE_PACKET_SIZE): Delete.
|
|
|
|
|
(get_memory_packet_size): Adjust. No longer limit the max packet
|
|
|
|
|
size.
|
|
|
|
|
(set_memory_packet_size): Adjust, and remove dead code.
|
|
|
|
|
(remote_check_symbols): Use xmalloc and a cleanup instead of
|
|
|
|
|
alloca.
|
|
|
|
|
(remote_packet_size): No longer cap the packet size.
|
|
|
|
|
(putpkt_binary): Use xmalloc and a cleanup instead of alloca.
|
|
|
|
|
|
2015-08-27 07:00:16 +02:00
|
|
|
|
2015-08-26 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (compile_to_object): Mention language in
|
|
|
|
|
error message.
|
|
|
|
|
|
2015-07-30 02:03:43 +02:00
|
|
|
|
2015-08-26 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* target.c (target_pre_inferior): Unset attach_flag.
|
|
|
|
|
|
2015-08-26 23:31:47 +02:00
|
|
|
|
2015-08-26 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh (append_name): Fix type in XRESIZEVEC.
|
|
|
|
|
* gdbarch.c: Re-generate.
|
|
|
|
|
|
Replace some xmalloc-family functions with XNEW-family ones
This patch is part of the make-gdb-buildable-in-C++ effort. The idea is
to change some calls to the xmalloc family of functions to calls to the
equivalents in the XNEW family. This avoids adding an explicit cast, so
it keeps the code a bit more readable. Some of them also map relatively
well to a C++ equivalent (XNEW (struct foo) -> new foo), so it will be
possible to do scripted replacements if needed.
I only changed calls that were obviously allocating memory for one or
multiple "objects". Allocation of variable sizes (such as strings or
buffer handling) will be for later (and won't use XNEW).
- xmalloc (sizeof (struct foo)) -> XNEW (struct foo)
- xmalloc (num * sizeof (struct foo)) -> XNEWVEC (struct foo, num)
- xcalloc (1, sizeof (struct foo)) -> XCNEW (struct foo)
- xcalloc (num, sizeof (struct foo)) -> XCNEWVEC (struct foo, num)
- xrealloc (p, num * sizeof (struct foo) -> XRESIZEVEC (struct foo, p, num)
- obstack_alloc (ob, sizeof (struct foo)) -> XOBNEW (ob, struct foo)
- obstack_alloc (ob, num * sizeof (struct foo)) -> XOBNEWVEC (ob, struct foo, num)
- alloca (sizeof (struct foo)) -> XALLOCA (struct foo)
- alloca (num * sizeof (struct foo)) -> XALLOCAVEC (struct foo, num)
Some instances of xmalloc followed by memset to zero the buffer were
replaced by XCNEW or XCNEWVEC.
I regtested on x86-64, Ubuntu 14.04, but the patch touches many
architecture-specific files. For those I'll have to rely on the
buildbot or people complaining that I broke their gdb.
gdb/ChangeLog:
* aarch64-linux-nat.c (aarch64_add_process): Likewise.
* aarch64-tdep.c (aarch64_gdbarch_init): Likewise.
* ada-exp.y (write_ambiguous_var): Likewise.
* ada-lang.c (resolve_subexp): Likewise.
(user_select_syms): Likewise.
(assign_aggregate): Likewise.
(ada_evaluate_subexp): Likewise.
(cache_symbol): Likewise.
* addrmap.c (allocate_key): Likewise.
(addrmap_create_mutable): Likewise.
* aix-thread.c (sync_threadlists): Likewise.
* alpha-tdep.c (alpha_push_dummy_call): Likewise.
(alpha_gdbarch_init): Likewise.
* amd64-windows-tdep.c (amd64_windows_push_arguments): Likewise.
* arm-linux-nat.c (arm_linux_add_process): Likewise.
* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise.
* arm-tdep.c (push_stack_item): Likewise.
(arm_displaced_step_copy_insn): Likewise.
(arm_gdbarch_init): Likewise.
(_initialize_arm_tdep): Likewise.
* avr-tdep.c (push_stack_item): Likewise.
* ax-general.c (new_agent_expr): Likewise.
* block.c (block_initialize_namespace): Likewise.
* breakpoint.c (alloc_counted_command_line): Likewise.
(update_dprintf_command_list): Likewise.
(parse_breakpoint_sals): Likewise.
(decode_static_tracepoint_spec): Likewise.
(until_break_command): Likewise.
(clear_command): Likewise.
(update_global_location_list): Likewise.
(get_breakpoint_objfile_data) Likewise.
* btrace.c (ftrace_new_function): Likewise.
(btrace_set_insn_history): Likewise.
(btrace_set_call_history): Likewise.
* buildsym.c (add_symbol_to_list): Likewise.
(record_pending_block): Likewise.
(start_subfile): Likewise.
(start_buildsym_compunit): Likewise.
(push_subfile): Likewise.
(end_symtab_get_static_block): Likewise.
(buildsym_init): Likewise.
* cli/cli-cmds.c (source_command): Likewise.
* cli/cli-decode.c (add_cmd): Likewise.
* cli/cli-script.c (build_command_line): Likewise.
(setup_user_args): Likewise.
(realloc_body_list): Likewise.
(process_next_line): Likewise.
(copy_command_lines): Likewise.
* cli/cli-setshow.c (do_set_command): Likewise.
* coff-pe-read.c (read_pe_exported_syms): Likewise.
* coffread.c (coff_locate_sections): Likewise.
(coff_symtab_read): Likewise.
(coff_read_struct_type): Likewise.
* common/cleanups.c (make_my_cleanup2): Likewise.
* common/common-exceptions.c (throw_it): Likewise.
* common/filestuff.c (make_cleanup_close): Likewise.
* common/format.c (parse_format_string): Likewise.
* common/queue.h (DEFINE_QUEUE_P): Likewise.
* compile/compile-object-load.c (munmap_list_add): Likewise.
(compile_object_load): Likewise.
* compile/compile-object-run.c (compile_object_run): Likewise.
* compile/compile.c (append_args): Likewise.
* corefile.c (specify_exec_file_hook): Likewise.
* cp-support.c (make_symbol_overload_list): Likewise.
* cris-tdep.c (push_stack_item): Likewise.
(cris_gdbarch_init): Likewise.
* ctf.c (ctf_trace_file_writer_new): Likewise.
* dbxread.c (init_header_files): Likewise.
(add_new_header_file): Likewise.
(init_bincl_list): Likewise.
(dbx_end_psymtab): Likewise.
(start_psymtab): Likewise.
(dbx_end_psymtab): Likewise.
* dcache.c (dcache_init): Likewise.
* dictionary.c (dict_create_hashed): Likewise.
(dict_create_hashed_expandable): Likewise.
(dict_create_linear): Likewise.
(dict_create_linear_expandable): Likewise.
* dtrace-probe.c (dtrace_process_dof_probe): Likewise.
* dummy-frame.c (register_dummy_frame_dtor): Likewise.
* dwarf2-frame-tailcall.c (cache_new_ref1): Likewise.
* dwarf2-frame.c (dwarf2_build_frame_info): Likewise.
(decode_frame_entry_1): Likewise.
* dwarf2expr.c (new_dwarf_expr_context): Likewise.
* dwarf2loc.c (dwarf2_compile_expr_to_ax): Likewise.
* dwarf2read.c (dwarf2_has_info): Likewise.
(create_signatured_type_table_from_index): Likewise.
(dwarf2_read_index): Likewise.
(dw2_get_file_names_reader): Likewise.
(create_all_type_units): Likewise.
(read_cutu_die_from_dwo): Likewise.
(init_tu_and_read_dwo_dies): Likewise.
(init_cutu_and_read_dies): Likewise.
(create_all_comp_units): Likewise.
(queue_comp_unit): Likewise.
(inherit_abstract_dies): Likewise.
(read_call_site_scope): Likewise.
(dwarf2_add_field): Likewise.
(dwarf2_add_typedef): Likewise.
(dwarf2_add_member_fn): Likewise.
(attr_to_dynamic_prop): Likewise.
(abbrev_table_alloc_abbrev): Likewise.
(abbrev_table_read_table): Likewise.
(add_include_dir): Likewise.
(add_file_name): Likewise.
(dwarf_decode_line_header): Likewise.
(dwarf2_const_value_attr): Likewise.
(dwarf_alloc_block): Likewise.
(parse_macro_definition): Likewise.
(set_die_type): Likewise.
(write_psymtabs_to_index): Likewise.
(create_cus_from_index): Likewise.
(dwarf2_create_include_psymtab): Likewise.
(process_psymtab_comp_unit_reader): Likewise.
(build_type_psymtab_dependencies): Likewise.
(read_comp_units_from_section): Likewise.
(compute_compunit_symtab_includes): Likewise.
(create_dwo_unit_in_dwp_v1): Likewise.
(create_dwo_unit_in_dwp_v2): Likewise.
(read_func_scope): Likewise.
(process_structure_scope): Likewise.
(mark_common_block_symbol_computed): Likewise.
(load_partial_dies): Likewise.
(dwarf2_symbol_mark_computed): Likewise.
* elfread.c (elf_symfile_segments): Likewise.
(elf_read_minimal_symbols): Likewise.
* environ.c (make_environ): Likewise.
* eval.c (evaluate_subexp_standard): Likewise.
* event-loop.c (create_file_handler): Likewise.
(create_async_signal_handler): Likewise.
(create_async_event_handler): Likewise.
(create_timer): Likewise.
* exec.c (build_section_table): Likewise.
* fbsd-nat.c (fbsd_remember_child): Likewise.
* fork-child.c (fork_inferior): Likewise.
* frv-tdep.c (new_variant): Likewise.
* gdbarch.sh (gdbarch_alloc): Likewise.
(append_name): Likewise.
* gdbtypes.c (rank_function): Likewise.
(copy_type_recursive): Likewise.
(add_dyn_prop): Likewise.
* gnu-nat.c (make_proc): Likewise.
(make_inf): Likewise.
(gnu_write_inferior): Likewise.
* gnu-v3-abi.c (build_gdb_vtable_type): Likewise.
(build_std_type_info_type): Likewise.
* guile/scm-param.c (compute_enum_list): Likewise.
* guile/scm-utils.c (gdbscm_parse_function_args): Likewise.
* guile/scm-value.c (gdbscm_value_call): Likewise.
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
* hppa-tdep.c (hppa_init_objfile_priv_data): Likewise.
(read_unwind_info): Likewise.
* ia64-tdep.c (ia64_gdbarch_init): Likewise.
* infcall.c (dummy_frame_context_saver_setup): Likewise.
(call_function_by_hand_dummy): Likewise.
* infcmd.c (step_once): Likewise.
(finish_forward): Likewise.
(attach_command): Likewise.
(notice_new_inferior): Likewise.
* inferior.c (add_inferior_silent): Likewise.
* infrun.c (add_displaced_stepping_state): Likewise.
(save_infcall_control_state): Likewise.
(save_inferior_ptid): Likewise.
(_initialize_infrun): Likewise.
* jit.c (bfd_open_from_target_memory): Likewise.
(jit_gdbarch_data_init): Likewise.
* language.c (add_language): Likewise.
* linespec.c (decode_line_2): Likewise.
* linux-nat.c (add_to_pid_list): Likewise.
(add_initial_lwp): Likewise.
* linux-thread-db.c (add_thread_db_info): Likewise.
(record_thread): Likewise.
(info_auto_load_libthread_db): Likewise.
* m32c-tdep.c (m32c_gdbarch_init): Likewise.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
* m68k-tdep.c (m68k_gdbarch_init): Likewise.
* m88k-tdep.c (m88k_analyze_prologue): Likewise.
* macrocmd.c (macro_define_command): Likewise.
* macroexp.c (gather_arguments): Likewise.
* macroscope.c (sal_macro_scope): Likewise.
* macrotab.c (new_macro_table): Likewise.
* mdebugread.c (push_parse_stack): Likewise.
(parse_partial_symbols): Likewise.
(parse_symbol): Likewise.
(psymtab_to_symtab_1): Likewise.
(new_block): Likewise.
(new_psymtab): Likewise.
(mdebug_build_psymtabs): Likewise.
(add_pending): Likewise.
(elfmdebug_build_psymtabs): Likewise.
* mep-tdep.c (mep_gdbarch_init): Likewise.
* mi/mi-main.c (mi_execute_command): Likewise.
* mi/mi-parse.c (mi_parse_argv): Likewise.
* minidebug.c (lzma_open): Likewise.
* minsyms.c (terminate_minimal_symbol_table): Likewise.
* mips-linux-nat.c (mips_linux_insert_watchpoint): Likewise.
* mips-tdep.c (mips_gdbarch_init): Likewise.
* mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
* msp430-tdep.c (msp430_gdbarch_init): Likewise.
* mt-tdep.c (mt_registers_info): Likewise.
* nat/aarch64-linux.c (aarch64_linux_new_thread): Likewise.
* nat/linux-btrace.c (linux_enable_bts): Likewise.
(linux_enable_pt): Likewise.
* nat/linux-osdata.c (linux_xfer_osdata_processes): Likewise.
(linux_xfer_osdata_processgroups): Likewise.
* nios2-tdep.c (nios2_gdbarch_init): Likewise.
* nto-procfs.c (procfs_meminfo): Likewise.
* objc-lang.c (start_msglist): Likewise.
(selectors_info): Likewise.
(classes_info): Likewise.
(find_methods): Likewise.
* objfiles.c (allocate_objfile): Likewise.
(update_section_map): Likewise.
* osabi.c (gdbarch_register_osabi): Likewise.
(gdbarch_register_osabi_sniffer): Likewise.
* parse.c (start_arglist): Likewise.
* ppc-linux-nat.c (hwdebug_find_thread_points_by_tid): Likewise.
(hwdebug_insert_point): Likewise.
* printcmd.c (display_command): Likewise.
(ui_printf): Likewise.
* procfs.c (create_procinfo): Likewise.
(load_syscalls): Likewise.
(proc_get_LDT_entry): Likewise.
(proc_update_threads): Likewise.
* prologue-value.c (make_pv_area): Likewise.
(pv_area_store): Likewise.
* psymtab.c (extend_psymbol_list): Likewise.
(init_psymbol_list): Likewise.
(allocate_psymtab): Likewise.
* python/py-inferior.c (add_thread_object): Likewise.
* python/py-param.c (compute_enum_values): Likewise.
* python/py-value.c (valpy_call): Likewise.
* python/py-varobj.c (py_varobj_iter_next): Likewise.
* python/python.c (ensure_python_env): Likewise.
* record-btrace.c (record_btrace_start_replaying): Likewise.
* record-full.c (record_full_reg_alloc): Likewise.
(record_full_mem_alloc): Likewise.
(record_full_end_alloc): Likewise.
(record_full_core_xfer_partial): Likewise.
* regcache.c (get_thread_arch_aspace_regcache): Likewise.
* remote-fileio.c (remote_fileio_init_fd_map): Likewise.
* remote-notif.c (remote_notif_state_allocate): Likewise.
* remote.c (demand_private_info): Likewise.
(remote_notif_stop_alloc_reply): Likewise.
(remote_enable_btrace): Likewise.
* reverse.c (save_bookmark_command): Likewise.
* rl78-tdep.c (rl78_gdbarch_init): Likewise.
* rx-tdep.c (rx_gdbarch_init): Likewise.
* s390-linux-nat.c (s390_insert_watchpoint): Likewise.
* ser-go32.c (dos_get_tty_state): Likewise.
(dos_copy_tty_state): Likewise.
* ser-mingw.c (ser_windows_open): Likewise.
(ser_console_wait_handle): Likewise.
(ser_console_get_tty_state): Likewise.
(make_pipe_state): Likewise.
(net_windows_open): Likewise.
* ser-unix.c (hardwire_get_tty_state): Likewise.
(hardwire_copy_tty_state): Likewise.
* solib-aix.c (solib_aix_new_lm_info): Likewise.
* solib-dsbt.c (dsbt_current_sos): Likewise.
(dsbt_relocate_main_executable): Likewise.
* solib-frv.c (frv_current_sos): Likewise.
(frv_relocate_main_executable): Likewise.
* solib-spu.c (spu_bfd_fopen): Likewise.
* solib-svr4.c (lm_info_read): Likewise.
(svr4_copy_library_list): Likewise.
(svr4_default_sos): Likewise.
* source.c (find_source_lines): Likewise.
(line_info): Likewise.
(add_substitute_path_rule): Likewise.
* spu-linux-nat.c (spu_bfd_open): Likewise.
* spu-tdep.c (info_spu_dma_cmdlist): Likewise.
* stabsread.c (dbx_lookup_type): Likewise.
(read_type): Likewise.
(read_member_functions): Likewise.
(read_struct_fields): Likewise.
(read_baseclasses): Likewise.
(read_args): Likewise.
(_initialize_stabsread): Likewise.
* stack.c (func_command): Likewise.
* stap-probe.c (handle_stap_probe): Likewise.
* symfile.c (addrs_section_sort): Likewise.
(addr_info_make_relative): Likewise.
(load_section_callback): Likewise.
(add_symbol_file_command): Likewise.
(init_filename_language_table): Likewise.
* symtab.c (create_filename_seen_cache): Likewise.
(sort_search_symbols_remove_dups): Likewise.
(search_symbols): Likewise.
* target.c (make_cleanup_restore_target_terminal): Likewise.
* thread.c (new_thread): Likewise.
(enable_thread_stack_temporaries): Likewise.
(make_cleanup_restore_current_thread): Likewise.
(thread_apply_all_command): Likewise.
* tic6x-tdep.c (tic6x_gdbarch_init): Likewise.
* top.c (gdb_readline_wrapper): Likewise.
* tracefile-tfile.c (tfile_trace_file_writer_new): Likewise.
* tracepoint.c (trace_find_line_command): Likewise.
(all_tracepoint_actions_and_cleanup): Likewise.
(make_cleanup_restore_current_traceframe): Likewise.
(get_uploaded_tp): Likewise.
(get_uploaded_tsv): Likewise.
* tui/tui-data.c (tui_alloc_generic_win_info): Likewise.
(tui_alloc_win_info): Likewise.
(tui_alloc_content): Likewise.
(tui_add_content_elements): Likewise.
* tui/tui-disasm.c (tui_find_disassembly_address): Likewise.
(tui_set_disassem_content): Likewise.
* ui-file.c (ui_file_new): Likewise.
(stdio_file_new): Likewise.
(tee_file_new): Likewise.
* utils.c (make_cleanup_restore_integer): Likewise.
(add_internal_problem_command): Likewise.
* v850-tdep.c (v850_gdbarch_init): Likewise.
* valops.c (find_oload_champ): Likewise.
* value.c (allocate_value_lazy): Likewise.
(record_latest_value): Likewise.
(create_internalvar): Likewise.
* varobj.c (install_variable): Likewise.
(new_variable): Likewise.
(new_root_variable): Likewise.
(cppush): Likewise.
(_initialize_varobj): Likewise.
* windows-nat.c (windows_make_so): Likewise.
* x86-nat.c (x86_add_process): Likewise.
* xcoffread.c (arrange_linetable): Likewise.
(allocate_include_entry): Likewise.
(process_linenos): Likewise.
(SYMBOL_DUP): Likewise.
(xcoff_start_psymtab): Likewise.
(xcoff_end_psymtab): Likewise.
* xml-support.c (gdb_xml_parse_attr_ulongest): Likewise.
* xtensa-tdep.c (xtensa_register_type): Likewise.
* gdbarch.c: Regenerate.
* gdbarch.h: Regenerate.
gdb/gdbserver/ChangeLog:
* ax.c (gdb_parse_agent_expr): Likewise.
(compile_bytecodes): Likewise.
* dll.c (loaded_dll): Likewise.
* event-loop.c (append_callback_event): Likewise.
(create_file_handler): Likewise.
(create_file_event): Likewise.
* hostio.c (handle_open): Likewise.
* inferiors.c (add_thread): Likewise.
(add_process): Likewise.
* linux-aarch64-low.c (aarch64_linux_new_process): Likewise.
* linux-arm-low.c (arm_new_process): Likewise.
(arm_new_thread): Likewise.
* linux-low.c (add_to_pid_list): Likewise.
(linux_add_process): Likewise.
(handle_extended_wait): Likewise.
(add_lwp): Likewise.
(enqueue_one_deferred_signal): Likewise.
(enqueue_pending_signal): Likewise.
(linux_resume_one_lwp_throw): Likewise.
(linux_resume_one_thread): Likewise.
(linux_read_memory): Likewise.
(linux_write_memory): Likewise.
* linux-mips-low.c (mips_linux_new_process): Likewise.
(mips_linux_new_thread): Likewise.
(mips_add_watchpoint): Likewise.
* linux-x86-low.c (initialize_low_arch): Likewise.
* lynx-low.c (lynx_add_process): Likewise.
* mem-break.c (set_raw_breakpoint_at): Likewise.
(set_breakpoint): Likewise.
(add_condition_to_breakpoint): Likewise.
(add_commands_to_breakpoint): Likewise.
(clone_agent_expr): Likewise.
(clone_one_breakpoint): Likewise.
* regcache.c (new_register_cache): Likewise.
* remote-utils.c (look_up_one_symbol): Likewise.
* server.c (queue_stop_reply): Likewise.
(start_inferior): Likewise.
(queue_stop_reply_callback): Likewise.
(handle_target_event): Likewise.
* spu-low.c (fetch_ppc_memory): Likewise.
(store_ppc_memory): Likewise.
* target.c (set_target_ops): Likewise.
* thread-db.c (thread_db_load_search): Likewise.
(try_thread_db_load_1): Likewise.
* tracepoint.c (add_tracepoint): Likewise.
(add_tracepoint_action): Likewise.
(create_trace_state_variable): Likewise.
(cmd_qtdpsrc): Likewise.
(cmd_qtro): Likewise.
(add_while_stepping_state): Likewise.
* win32-low.c (child_add_thread): Likewise.
(get_image_name): Likewise.
2015-08-26 23:16:07 +02:00
|
|
|
|
2015-08-26 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
2015-08-27 19:47:44 +02:00
|
|
|
|
* aarch64-linux-nat.c (aarch64_add_process): Replace xmalloc-family
|
|
|
|
|
function with the XNEW-family equivalent.
|
Replace some xmalloc-family functions with XNEW-family ones
This patch is part of the make-gdb-buildable-in-C++ effort. The idea is
to change some calls to the xmalloc family of functions to calls to the
equivalents in the XNEW family. This avoids adding an explicit cast, so
it keeps the code a bit more readable. Some of them also map relatively
well to a C++ equivalent (XNEW (struct foo) -> new foo), so it will be
possible to do scripted replacements if needed.
I only changed calls that were obviously allocating memory for one or
multiple "objects". Allocation of variable sizes (such as strings or
buffer handling) will be for later (and won't use XNEW).
- xmalloc (sizeof (struct foo)) -> XNEW (struct foo)
- xmalloc (num * sizeof (struct foo)) -> XNEWVEC (struct foo, num)
- xcalloc (1, sizeof (struct foo)) -> XCNEW (struct foo)
- xcalloc (num, sizeof (struct foo)) -> XCNEWVEC (struct foo, num)
- xrealloc (p, num * sizeof (struct foo) -> XRESIZEVEC (struct foo, p, num)
- obstack_alloc (ob, sizeof (struct foo)) -> XOBNEW (ob, struct foo)
- obstack_alloc (ob, num * sizeof (struct foo)) -> XOBNEWVEC (ob, struct foo, num)
- alloca (sizeof (struct foo)) -> XALLOCA (struct foo)
- alloca (num * sizeof (struct foo)) -> XALLOCAVEC (struct foo, num)
Some instances of xmalloc followed by memset to zero the buffer were
replaced by XCNEW or XCNEWVEC.
I regtested on x86-64, Ubuntu 14.04, but the patch touches many
architecture-specific files. For those I'll have to rely on the
buildbot or people complaining that I broke their gdb.
gdb/ChangeLog:
* aarch64-linux-nat.c (aarch64_add_process): Likewise.
* aarch64-tdep.c (aarch64_gdbarch_init): Likewise.
* ada-exp.y (write_ambiguous_var): Likewise.
* ada-lang.c (resolve_subexp): Likewise.
(user_select_syms): Likewise.
(assign_aggregate): Likewise.
(ada_evaluate_subexp): Likewise.
(cache_symbol): Likewise.
* addrmap.c (allocate_key): Likewise.
(addrmap_create_mutable): Likewise.
* aix-thread.c (sync_threadlists): Likewise.
* alpha-tdep.c (alpha_push_dummy_call): Likewise.
(alpha_gdbarch_init): Likewise.
* amd64-windows-tdep.c (amd64_windows_push_arguments): Likewise.
* arm-linux-nat.c (arm_linux_add_process): Likewise.
* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise.
* arm-tdep.c (push_stack_item): Likewise.
(arm_displaced_step_copy_insn): Likewise.
(arm_gdbarch_init): Likewise.
(_initialize_arm_tdep): Likewise.
* avr-tdep.c (push_stack_item): Likewise.
* ax-general.c (new_agent_expr): Likewise.
* block.c (block_initialize_namespace): Likewise.
* breakpoint.c (alloc_counted_command_line): Likewise.
(update_dprintf_command_list): Likewise.
(parse_breakpoint_sals): Likewise.
(decode_static_tracepoint_spec): Likewise.
(until_break_command): Likewise.
(clear_command): Likewise.
(update_global_location_list): Likewise.
(get_breakpoint_objfile_data) Likewise.
* btrace.c (ftrace_new_function): Likewise.
(btrace_set_insn_history): Likewise.
(btrace_set_call_history): Likewise.
* buildsym.c (add_symbol_to_list): Likewise.
(record_pending_block): Likewise.
(start_subfile): Likewise.
(start_buildsym_compunit): Likewise.
(push_subfile): Likewise.
(end_symtab_get_static_block): Likewise.
(buildsym_init): Likewise.
* cli/cli-cmds.c (source_command): Likewise.
* cli/cli-decode.c (add_cmd): Likewise.
* cli/cli-script.c (build_command_line): Likewise.
(setup_user_args): Likewise.
(realloc_body_list): Likewise.
(process_next_line): Likewise.
(copy_command_lines): Likewise.
* cli/cli-setshow.c (do_set_command): Likewise.
* coff-pe-read.c (read_pe_exported_syms): Likewise.
* coffread.c (coff_locate_sections): Likewise.
(coff_symtab_read): Likewise.
(coff_read_struct_type): Likewise.
* common/cleanups.c (make_my_cleanup2): Likewise.
* common/common-exceptions.c (throw_it): Likewise.
* common/filestuff.c (make_cleanup_close): Likewise.
* common/format.c (parse_format_string): Likewise.
* common/queue.h (DEFINE_QUEUE_P): Likewise.
* compile/compile-object-load.c (munmap_list_add): Likewise.
(compile_object_load): Likewise.
* compile/compile-object-run.c (compile_object_run): Likewise.
* compile/compile.c (append_args): Likewise.
* corefile.c (specify_exec_file_hook): Likewise.
* cp-support.c (make_symbol_overload_list): Likewise.
* cris-tdep.c (push_stack_item): Likewise.
(cris_gdbarch_init): Likewise.
* ctf.c (ctf_trace_file_writer_new): Likewise.
* dbxread.c (init_header_files): Likewise.
(add_new_header_file): Likewise.
(init_bincl_list): Likewise.
(dbx_end_psymtab): Likewise.
(start_psymtab): Likewise.
(dbx_end_psymtab): Likewise.
* dcache.c (dcache_init): Likewise.
* dictionary.c (dict_create_hashed): Likewise.
(dict_create_hashed_expandable): Likewise.
(dict_create_linear): Likewise.
(dict_create_linear_expandable): Likewise.
* dtrace-probe.c (dtrace_process_dof_probe): Likewise.
* dummy-frame.c (register_dummy_frame_dtor): Likewise.
* dwarf2-frame-tailcall.c (cache_new_ref1): Likewise.
* dwarf2-frame.c (dwarf2_build_frame_info): Likewise.
(decode_frame_entry_1): Likewise.
* dwarf2expr.c (new_dwarf_expr_context): Likewise.
* dwarf2loc.c (dwarf2_compile_expr_to_ax): Likewise.
* dwarf2read.c (dwarf2_has_info): Likewise.
(create_signatured_type_table_from_index): Likewise.
(dwarf2_read_index): Likewise.
(dw2_get_file_names_reader): Likewise.
(create_all_type_units): Likewise.
(read_cutu_die_from_dwo): Likewise.
(init_tu_and_read_dwo_dies): Likewise.
(init_cutu_and_read_dies): Likewise.
(create_all_comp_units): Likewise.
(queue_comp_unit): Likewise.
(inherit_abstract_dies): Likewise.
(read_call_site_scope): Likewise.
(dwarf2_add_field): Likewise.
(dwarf2_add_typedef): Likewise.
(dwarf2_add_member_fn): Likewise.
(attr_to_dynamic_prop): Likewise.
(abbrev_table_alloc_abbrev): Likewise.
(abbrev_table_read_table): Likewise.
(add_include_dir): Likewise.
(add_file_name): Likewise.
(dwarf_decode_line_header): Likewise.
(dwarf2_const_value_attr): Likewise.
(dwarf_alloc_block): Likewise.
(parse_macro_definition): Likewise.
(set_die_type): Likewise.
(write_psymtabs_to_index): Likewise.
(create_cus_from_index): Likewise.
(dwarf2_create_include_psymtab): Likewise.
(process_psymtab_comp_unit_reader): Likewise.
(build_type_psymtab_dependencies): Likewise.
(read_comp_units_from_section): Likewise.
(compute_compunit_symtab_includes): Likewise.
(create_dwo_unit_in_dwp_v1): Likewise.
(create_dwo_unit_in_dwp_v2): Likewise.
(read_func_scope): Likewise.
(process_structure_scope): Likewise.
(mark_common_block_symbol_computed): Likewise.
(load_partial_dies): Likewise.
(dwarf2_symbol_mark_computed): Likewise.
* elfread.c (elf_symfile_segments): Likewise.
(elf_read_minimal_symbols): Likewise.
* environ.c (make_environ): Likewise.
* eval.c (evaluate_subexp_standard): Likewise.
* event-loop.c (create_file_handler): Likewise.
(create_async_signal_handler): Likewise.
(create_async_event_handler): Likewise.
(create_timer): Likewise.
* exec.c (build_section_table): Likewise.
* fbsd-nat.c (fbsd_remember_child): Likewise.
* fork-child.c (fork_inferior): Likewise.
* frv-tdep.c (new_variant): Likewise.
* gdbarch.sh (gdbarch_alloc): Likewise.
(append_name): Likewise.
* gdbtypes.c (rank_function): Likewise.
(copy_type_recursive): Likewise.
(add_dyn_prop): Likewise.
* gnu-nat.c (make_proc): Likewise.
(make_inf): Likewise.
(gnu_write_inferior): Likewise.
* gnu-v3-abi.c (build_gdb_vtable_type): Likewise.
(build_std_type_info_type): Likewise.
* guile/scm-param.c (compute_enum_list): Likewise.
* guile/scm-utils.c (gdbscm_parse_function_args): Likewise.
* guile/scm-value.c (gdbscm_value_call): Likewise.
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
* hppa-tdep.c (hppa_init_objfile_priv_data): Likewise.
(read_unwind_info): Likewise.
* ia64-tdep.c (ia64_gdbarch_init): Likewise.
* infcall.c (dummy_frame_context_saver_setup): Likewise.
(call_function_by_hand_dummy): Likewise.
* infcmd.c (step_once): Likewise.
(finish_forward): Likewise.
(attach_command): Likewise.
(notice_new_inferior): Likewise.
* inferior.c (add_inferior_silent): Likewise.
* infrun.c (add_displaced_stepping_state): Likewise.
(save_infcall_control_state): Likewise.
(save_inferior_ptid): Likewise.
(_initialize_infrun): Likewise.
* jit.c (bfd_open_from_target_memory): Likewise.
(jit_gdbarch_data_init): Likewise.
* language.c (add_language): Likewise.
* linespec.c (decode_line_2): Likewise.
* linux-nat.c (add_to_pid_list): Likewise.
(add_initial_lwp): Likewise.
* linux-thread-db.c (add_thread_db_info): Likewise.
(record_thread): Likewise.
(info_auto_load_libthread_db): Likewise.
* m32c-tdep.c (m32c_gdbarch_init): Likewise.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
* m68k-tdep.c (m68k_gdbarch_init): Likewise.
* m88k-tdep.c (m88k_analyze_prologue): Likewise.
* macrocmd.c (macro_define_command): Likewise.
* macroexp.c (gather_arguments): Likewise.
* macroscope.c (sal_macro_scope): Likewise.
* macrotab.c (new_macro_table): Likewise.
* mdebugread.c (push_parse_stack): Likewise.
(parse_partial_symbols): Likewise.
(parse_symbol): Likewise.
(psymtab_to_symtab_1): Likewise.
(new_block): Likewise.
(new_psymtab): Likewise.
(mdebug_build_psymtabs): Likewise.
(add_pending): Likewise.
(elfmdebug_build_psymtabs): Likewise.
* mep-tdep.c (mep_gdbarch_init): Likewise.
* mi/mi-main.c (mi_execute_command): Likewise.
* mi/mi-parse.c (mi_parse_argv): Likewise.
* minidebug.c (lzma_open): Likewise.
* minsyms.c (terminate_minimal_symbol_table): Likewise.
* mips-linux-nat.c (mips_linux_insert_watchpoint): Likewise.
* mips-tdep.c (mips_gdbarch_init): Likewise.
* mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
* msp430-tdep.c (msp430_gdbarch_init): Likewise.
* mt-tdep.c (mt_registers_info): Likewise.
* nat/aarch64-linux.c (aarch64_linux_new_thread): Likewise.
* nat/linux-btrace.c (linux_enable_bts): Likewise.
(linux_enable_pt): Likewise.
* nat/linux-osdata.c (linux_xfer_osdata_processes): Likewise.
(linux_xfer_osdata_processgroups): Likewise.
* nios2-tdep.c (nios2_gdbarch_init): Likewise.
* nto-procfs.c (procfs_meminfo): Likewise.
* objc-lang.c (start_msglist): Likewise.
(selectors_info): Likewise.
(classes_info): Likewise.
(find_methods): Likewise.
* objfiles.c (allocate_objfile): Likewise.
(update_section_map): Likewise.
* osabi.c (gdbarch_register_osabi): Likewise.
(gdbarch_register_osabi_sniffer): Likewise.
* parse.c (start_arglist): Likewise.
* ppc-linux-nat.c (hwdebug_find_thread_points_by_tid): Likewise.
(hwdebug_insert_point): Likewise.
* printcmd.c (display_command): Likewise.
(ui_printf): Likewise.
* procfs.c (create_procinfo): Likewise.
(load_syscalls): Likewise.
(proc_get_LDT_entry): Likewise.
(proc_update_threads): Likewise.
* prologue-value.c (make_pv_area): Likewise.
(pv_area_store): Likewise.
* psymtab.c (extend_psymbol_list): Likewise.
(init_psymbol_list): Likewise.
(allocate_psymtab): Likewise.
* python/py-inferior.c (add_thread_object): Likewise.
* python/py-param.c (compute_enum_values): Likewise.
* python/py-value.c (valpy_call): Likewise.
* python/py-varobj.c (py_varobj_iter_next): Likewise.
* python/python.c (ensure_python_env): Likewise.
* record-btrace.c (record_btrace_start_replaying): Likewise.
* record-full.c (record_full_reg_alloc): Likewise.
(record_full_mem_alloc): Likewise.
(record_full_end_alloc): Likewise.
(record_full_core_xfer_partial): Likewise.
* regcache.c (get_thread_arch_aspace_regcache): Likewise.
* remote-fileio.c (remote_fileio_init_fd_map): Likewise.
* remote-notif.c (remote_notif_state_allocate): Likewise.
* remote.c (demand_private_info): Likewise.
(remote_notif_stop_alloc_reply): Likewise.
(remote_enable_btrace): Likewise.
* reverse.c (save_bookmark_command): Likewise.
* rl78-tdep.c (rl78_gdbarch_init): Likewise.
* rx-tdep.c (rx_gdbarch_init): Likewise.
* s390-linux-nat.c (s390_insert_watchpoint): Likewise.
* ser-go32.c (dos_get_tty_state): Likewise.
(dos_copy_tty_state): Likewise.
* ser-mingw.c (ser_windows_open): Likewise.
(ser_console_wait_handle): Likewise.
(ser_console_get_tty_state): Likewise.
(make_pipe_state): Likewise.
(net_windows_open): Likewise.
* ser-unix.c (hardwire_get_tty_state): Likewise.
(hardwire_copy_tty_state): Likewise.
* solib-aix.c (solib_aix_new_lm_info): Likewise.
* solib-dsbt.c (dsbt_current_sos): Likewise.
(dsbt_relocate_main_executable): Likewise.
* solib-frv.c (frv_current_sos): Likewise.
(frv_relocate_main_executable): Likewise.
* solib-spu.c (spu_bfd_fopen): Likewise.
* solib-svr4.c (lm_info_read): Likewise.
(svr4_copy_library_list): Likewise.
(svr4_default_sos): Likewise.
* source.c (find_source_lines): Likewise.
(line_info): Likewise.
(add_substitute_path_rule): Likewise.
* spu-linux-nat.c (spu_bfd_open): Likewise.
* spu-tdep.c (info_spu_dma_cmdlist): Likewise.
* stabsread.c (dbx_lookup_type): Likewise.
(read_type): Likewise.
(read_member_functions): Likewise.
(read_struct_fields): Likewise.
(read_baseclasses): Likewise.
(read_args): Likewise.
(_initialize_stabsread): Likewise.
* stack.c (func_command): Likewise.
* stap-probe.c (handle_stap_probe): Likewise.
* symfile.c (addrs_section_sort): Likewise.
(addr_info_make_relative): Likewise.
(load_section_callback): Likewise.
(add_symbol_file_command): Likewise.
(init_filename_language_table): Likewise.
* symtab.c (create_filename_seen_cache): Likewise.
(sort_search_symbols_remove_dups): Likewise.
(search_symbols): Likewise.
* target.c (make_cleanup_restore_target_terminal): Likewise.
* thread.c (new_thread): Likewise.
(enable_thread_stack_temporaries): Likewise.
(make_cleanup_restore_current_thread): Likewise.
(thread_apply_all_command): Likewise.
* tic6x-tdep.c (tic6x_gdbarch_init): Likewise.
* top.c (gdb_readline_wrapper): Likewise.
* tracefile-tfile.c (tfile_trace_file_writer_new): Likewise.
* tracepoint.c (trace_find_line_command): Likewise.
(all_tracepoint_actions_and_cleanup): Likewise.
(make_cleanup_restore_current_traceframe): Likewise.
(get_uploaded_tp): Likewise.
(get_uploaded_tsv): Likewise.
* tui/tui-data.c (tui_alloc_generic_win_info): Likewise.
(tui_alloc_win_info): Likewise.
(tui_alloc_content): Likewise.
(tui_add_content_elements): Likewise.
* tui/tui-disasm.c (tui_find_disassembly_address): Likewise.
(tui_set_disassem_content): Likewise.
* ui-file.c (ui_file_new): Likewise.
(stdio_file_new): Likewise.
(tee_file_new): Likewise.
* utils.c (make_cleanup_restore_integer): Likewise.
(add_internal_problem_command): Likewise.
* v850-tdep.c (v850_gdbarch_init): Likewise.
* valops.c (find_oload_champ): Likewise.
* value.c (allocate_value_lazy): Likewise.
(record_latest_value): Likewise.
(create_internalvar): Likewise.
* varobj.c (install_variable): Likewise.
(new_variable): Likewise.
(new_root_variable): Likewise.
(cppush): Likewise.
(_initialize_varobj): Likewise.
* windows-nat.c (windows_make_so): Likewise.
* x86-nat.c (x86_add_process): Likewise.
* xcoffread.c (arrange_linetable): Likewise.
(allocate_include_entry): Likewise.
(process_linenos): Likewise.
(SYMBOL_DUP): Likewise.
(xcoff_start_psymtab): Likewise.
(xcoff_end_psymtab): Likewise.
* xml-support.c (gdb_xml_parse_attr_ulongest): Likewise.
* xtensa-tdep.c (xtensa_register_type): Likewise.
* gdbarch.c: Regenerate.
* gdbarch.h: Regenerate.
gdb/gdbserver/ChangeLog:
* ax.c (gdb_parse_agent_expr): Likewise.
(compile_bytecodes): Likewise.
* dll.c (loaded_dll): Likewise.
* event-loop.c (append_callback_event): Likewise.
(create_file_handler): Likewise.
(create_file_event): Likewise.
* hostio.c (handle_open): Likewise.
* inferiors.c (add_thread): Likewise.
(add_process): Likewise.
* linux-aarch64-low.c (aarch64_linux_new_process): Likewise.
* linux-arm-low.c (arm_new_process): Likewise.
(arm_new_thread): Likewise.
* linux-low.c (add_to_pid_list): Likewise.
(linux_add_process): Likewise.
(handle_extended_wait): Likewise.
(add_lwp): Likewise.
(enqueue_one_deferred_signal): Likewise.
(enqueue_pending_signal): Likewise.
(linux_resume_one_lwp_throw): Likewise.
(linux_resume_one_thread): Likewise.
(linux_read_memory): Likewise.
(linux_write_memory): Likewise.
* linux-mips-low.c (mips_linux_new_process): Likewise.
(mips_linux_new_thread): Likewise.
(mips_add_watchpoint): Likewise.
* linux-x86-low.c (initialize_low_arch): Likewise.
* lynx-low.c (lynx_add_process): Likewise.
* mem-break.c (set_raw_breakpoint_at): Likewise.
(set_breakpoint): Likewise.
(add_condition_to_breakpoint): Likewise.
(add_commands_to_breakpoint): Likewise.
(clone_agent_expr): Likewise.
(clone_one_breakpoint): Likewise.
* regcache.c (new_register_cache): Likewise.
* remote-utils.c (look_up_one_symbol): Likewise.
* server.c (queue_stop_reply): Likewise.
(start_inferior): Likewise.
(queue_stop_reply_callback): Likewise.
(handle_target_event): Likewise.
* spu-low.c (fetch_ppc_memory): Likewise.
(store_ppc_memory): Likewise.
* target.c (set_target_ops): Likewise.
* thread-db.c (thread_db_load_search): Likewise.
(try_thread_db_load_1): Likewise.
* tracepoint.c (add_tracepoint): Likewise.
(add_tracepoint_action): Likewise.
(create_trace_state_variable): Likewise.
(cmd_qtdpsrc): Likewise.
(cmd_qtro): Likewise.
(add_while_stepping_state): Likewise.
* win32-low.c (child_add_thread): Likewise.
(get_image_name): Likewise.
2015-08-26 23:16:07 +02:00
|
|
|
|
* aarch64-tdep.c (aarch64_gdbarch_init): Likewise.
|
|
|
|
|
* ada-exp.y (write_ambiguous_var): Likewise.
|
|
|
|
|
* ada-lang.c (resolve_subexp): Likewise.
|
|
|
|
|
(user_select_syms): Likewise.
|
|
|
|
|
(assign_aggregate): Likewise.
|
|
|
|
|
(ada_evaluate_subexp): Likewise.
|
|
|
|
|
(cache_symbol): Likewise.
|
|
|
|
|
* addrmap.c (allocate_key): Likewise.
|
|
|
|
|
(addrmap_create_mutable): Likewise.
|
|
|
|
|
* aix-thread.c (sync_threadlists): Likewise.
|
|
|
|
|
* alpha-tdep.c (alpha_push_dummy_call): Likewise.
|
|
|
|
|
(alpha_gdbarch_init): Likewise.
|
|
|
|
|
* amd64-windows-tdep.c (amd64_windows_push_arguments): Likewise.
|
|
|
|
|
* arm-linux-nat.c (arm_linux_add_process): Likewise.
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise.
|
|
|
|
|
* arm-tdep.c (push_stack_item): Likewise.
|
|
|
|
|
(arm_displaced_step_copy_insn): Likewise.
|
|
|
|
|
(arm_gdbarch_init): Likewise.
|
|
|
|
|
(_initialize_arm_tdep): Likewise.
|
|
|
|
|
* avr-tdep.c (push_stack_item): Likewise.
|
|
|
|
|
* ax-general.c (new_agent_expr): Likewise.
|
|
|
|
|
* block.c (block_initialize_namespace): Likewise.
|
|
|
|
|
* breakpoint.c (alloc_counted_command_line): Likewise.
|
|
|
|
|
(update_dprintf_command_list): Likewise.
|
|
|
|
|
(parse_breakpoint_sals): Likewise.
|
|
|
|
|
(decode_static_tracepoint_spec): Likewise.
|
|
|
|
|
(until_break_command): Likewise.
|
|
|
|
|
(clear_command): Likewise.
|
|
|
|
|
(update_global_location_list): Likewise.
|
|
|
|
|
(get_breakpoint_objfile_data) Likewise.
|
|
|
|
|
* btrace.c (ftrace_new_function): Likewise.
|
|
|
|
|
(btrace_set_insn_history): Likewise.
|
|
|
|
|
(btrace_set_call_history): Likewise.
|
|
|
|
|
* buildsym.c (add_symbol_to_list): Likewise.
|
|
|
|
|
(record_pending_block): Likewise.
|
|
|
|
|
(start_subfile): Likewise.
|
|
|
|
|
(start_buildsym_compunit): Likewise.
|
|
|
|
|
(push_subfile): Likewise.
|
|
|
|
|
(end_symtab_get_static_block): Likewise.
|
|
|
|
|
(buildsym_init): Likewise.
|
|
|
|
|
* cli/cli-cmds.c (source_command): Likewise.
|
|
|
|
|
* cli/cli-decode.c (add_cmd): Likewise.
|
|
|
|
|
* cli/cli-script.c (build_command_line): Likewise.
|
|
|
|
|
(setup_user_args): Likewise.
|
|
|
|
|
(realloc_body_list): Likewise.
|
|
|
|
|
(process_next_line): Likewise.
|
|
|
|
|
(copy_command_lines): Likewise.
|
|
|
|
|
* cli/cli-setshow.c (do_set_command): Likewise.
|
|
|
|
|
* coff-pe-read.c (read_pe_exported_syms): Likewise.
|
|
|
|
|
* coffread.c (coff_locate_sections): Likewise.
|
|
|
|
|
(coff_symtab_read): Likewise.
|
|
|
|
|
(coff_read_struct_type): Likewise.
|
|
|
|
|
* common/cleanups.c (make_my_cleanup2): Likewise.
|
|
|
|
|
* common/common-exceptions.c (throw_it): Likewise.
|
|
|
|
|
* common/filestuff.c (make_cleanup_close): Likewise.
|
|
|
|
|
* common/format.c (parse_format_string): Likewise.
|
|
|
|
|
* common/queue.h (DEFINE_QUEUE_P): Likewise.
|
|
|
|
|
* compile/compile-object-load.c (munmap_list_add): Likewise.
|
|
|
|
|
(compile_object_load): Likewise.
|
|
|
|
|
* compile/compile-object-run.c (compile_object_run): Likewise.
|
|
|
|
|
* compile/compile.c (append_args): Likewise.
|
|
|
|
|
* corefile.c (specify_exec_file_hook): Likewise.
|
|
|
|
|
* cp-support.c (make_symbol_overload_list): Likewise.
|
|
|
|
|
* cris-tdep.c (push_stack_item): Likewise.
|
|
|
|
|
(cris_gdbarch_init): Likewise.
|
|
|
|
|
* ctf.c (ctf_trace_file_writer_new): Likewise.
|
|
|
|
|
* dbxread.c (init_header_files): Likewise.
|
|
|
|
|
(add_new_header_file): Likewise.
|
|
|
|
|
(init_bincl_list): Likewise.
|
|
|
|
|
(dbx_end_psymtab): Likewise.
|
|
|
|
|
(start_psymtab): Likewise.
|
|
|
|
|
(dbx_end_psymtab): Likewise.
|
|
|
|
|
* dcache.c (dcache_init): Likewise.
|
|
|
|
|
* dictionary.c (dict_create_hashed): Likewise.
|
|
|
|
|
(dict_create_hashed_expandable): Likewise.
|
|
|
|
|
(dict_create_linear): Likewise.
|
|
|
|
|
(dict_create_linear_expandable): Likewise.
|
|
|
|
|
* dtrace-probe.c (dtrace_process_dof_probe): Likewise.
|
|
|
|
|
* dummy-frame.c (register_dummy_frame_dtor): Likewise.
|
|
|
|
|
* dwarf2-frame-tailcall.c (cache_new_ref1): Likewise.
|
|
|
|
|
* dwarf2-frame.c (dwarf2_build_frame_info): Likewise.
|
|
|
|
|
(decode_frame_entry_1): Likewise.
|
|
|
|
|
* dwarf2expr.c (new_dwarf_expr_context): Likewise.
|
|
|
|
|
* dwarf2loc.c (dwarf2_compile_expr_to_ax): Likewise.
|
|
|
|
|
* dwarf2read.c (dwarf2_has_info): Likewise.
|
|
|
|
|
(create_signatured_type_table_from_index): Likewise.
|
|
|
|
|
(dwarf2_read_index): Likewise.
|
|
|
|
|
(dw2_get_file_names_reader): Likewise.
|
|
|
|
|
(create_all_type_units): Likewise.
|
|
|
|
|
(read_cutu_die_from_dwo): Likewise.
|
|
|
|
|
(init_tu_and_read_dwo_dies): Likewise.
|
|
|
|
|
(init_cutu_and_read_dies): Likewise.
|
|
|
|
|
(create_all_comp_units): Likewise.
|
|
|
|
|
(queue_comp_unit): Likewise.
|
|
|
|
|
(inherit_abstract_dies): Likewise.
|
|
|
|
|
(read_call_site_scope): Likewise.
|
|
|
|
|
(dwarf2_add_field): Likewise.
|
|
|
|
|
(dwarf2_add_typedef): Likewise.
|
|
|
|
|
(dwarf2_add_member_fn): Likewise.
|
|
|
|
|
(attr_to_dynamic_prop): Likewise.
|
|
|
|
|
(abbrev_table_alloc_abbrev): Likewise.
|
|
|
|
|
(abbrev_table_read_table): Likewise.
|
|
|
|
|
(add_include_dir): Likewise.
|
|
|
|
|
(add_file_name): Likewise.
|
|
|
|
|
(dwarf_decode_line_header): Likewise.
|
|
|
|
|
(dwarf2_const_value_attr): Likewise.
|
|
|
|
|
(dwarf_alloc_block): Likewise.
|
|
|
|
|
(parse_macro_definition): Likewise.
|
|
|
|
|
(set_die_type): Likewise.
|
|
|
|
|
(write_psymtabs_to_index): Likewise.
|
|
|
|
|
(create_cus_from_index): Likewise.
|
|
|
|
|
(dwarf2_create_include_psymtab): Likewise.
|
|
|
|
|
(process_psymtab_comp_unit_reader): Likewise.
|
|
|
|
|
(build_type_psymtab_dependencies): Likewise.
|
|
|
|
|
(read_comp_units_from_section): Likewise.
|
|
|
|
|
(compute_compunit_symtab_includes): Likewise.
|
|
|
|
|
(create_dwo_unit_in_dwp_v1): Likewise.
|
|
|
|
|
(create_dwo_unit_in_dwp_v2): Likewise.
|
|
|
|
|
(read_func_scope): Likewise.
|
|
|
|
|
(process_structure_scope): Likewise.
|
|
|
|
|
(mark_common_block_symbol_computed): Likewise.
|
|
|
|
|
(load_partial_dies): Likewise.
|
|
|
|
|
(dwarf2_symbol_mark_computed): Likewise.
|
|
|
|
|
* elfread.c (elf_symfile_segments): Likewise.
|
|
|
|
|
(elf_read_minimal_symbols): Likewise.
|
|
|
|
|
* environ.c (make_environ): Likewise.
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Likewise.
|
|
|
|
|
* event-loop.c (create_file_handler): Likewise.
|
|
|
|
|
(create_async_signal_handler): Likewise.
|
|
|
|
|
(create_async_event_handler): Likewise.
|
|
|
|
|
(create_timer): Likewise.
|
|
|
|
|
* exec.c (build_section_table): Likewise.
|
|
|
|
|
* fbsd-nat.c (fbsd_remember_child): Likewise.
|
|
|
|
|
* fork-child.c (fork_inferior): Likewise.
|
|
|
|
|
* frv-tdep.c (new_variant): Likewise.
|
|
|
|
|
* gdbarch.sh (gdbarch_alloc): Likewise.
|
|
|
|
|
(append_name): Likewise.
|
|
|
|
|
* gdbtypes.c (rank_function): Likewise.
|
|
|
|
|
(copy_type_recursive): Likewise.
|
|
|
|
|
(add_dyn_prop): Likewise.
|
|
|
|
|
* gnu-nat.c (make_proc): Likewise.
|
|
|
|
|
(make_inf): Likewise.
|
|
|
|
|
(gnu_write_inferior): Likewise.
|
|
|
|
|
* gnu-v3-abi.c (build_gdb_vtable_type): Likewise.
|
|
|
|
|
(build_std_type_info_type): Likewise.
|
|
|
|
|
* guile/scm-param.c (compute_enum_list): Likewise.
|
|
|
|
|
* guile/scm-utils.c (gdbscm_parse_function_args): Likewise.
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_call): Likewise.
|
|
|
|
|
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
|
|
|
|
|
* hppa-tdep.c (hppa_init_objfile_priv_data): Likewise.
|
|
|
|
|
(read_unwind_info): Likewise.
|
|
|
|
|
* ia64-tdep.c (ia64_gdbarch_init): Likewise.
|
|
|
|
|
* infcall.c (dummy_frame_context_saver_setup): Likewise.
|
|
|
|
|
(call_function_by_hand_dummy): Likewise.
|
|
|
|
|
* infcmd.c (step_once): Likewise.
|
|
|
|
|
(finish_forward): Likewise.
|
|
|
|
|
(attach_command): Likewise.
|
|
|
|
|
(notice_new_inferior): Likewise.
|
|
|
|
|
* inferior.c (add_inferior_silent): Likewise.
|
|
|
|
|
* infrun.c (add_displaced_stepping_state): Likewise.
|
|
|
|
|
(save_infcall_control_state): Likewise.
|
|
|
|
|
(save_inferior_ptid): Likewise.
|
|
|
|
|
(_initialize_infrun): Likewise.
|
|
|
|
|
* jit.c (bfd_open_from_target_memory): Likewise.
|
|
|
|
|
(jit_gdbarch_data_init): Likewise.
|
|
|
|
|
* language.c (add_language): Likewise.
|
|
|
|
|
* linespec.c (decode_line_2): Likewise.
|
|
|
|
|
* linux-nat.c (add_to_pid_list): Likewise.
|
|
|
|
|
(add_initial_lwp): Likewise.
|
|
|
|
|
* linux-thread-db.c (add_thread_db_info): Likewise.
|
|
|
|
|
(record_thread): Likewise.
|
|
|
|
|
(info_auto_load_libthread_db): Likewise.
|
|
|
|
|
* m32c-tdep.c (m32c_gdbarch_init): Likewise.
|
|
|
|
|
* m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
|
|
|
|
|
* m68k-tdep.c (m68k_gdbarch_init): Likewise.
|
|
|
|
|
* m88k-tdep.c (m88k_analyze_prologue): Likewise.
|
|
|
|
|
* macrocmd.c (macro_define_command): Likewise.
|
|
|
|
|
* macroexp.c (gather_arguments): Likewise.
|
|
|
|
|
* macroscope.c (sal_macro_scope): Likewise.
|
|
|
|
|
* macrotab.c (new_macro_table): Likewise.
|
|
|
|
|
* mdebugread.c (push_parse_stack): Likewise.
|
|
|
|
|
(parse_partial_symbols): Likewise.
|
|
|
|
|
(parse_symbol): Likewise.
|
|
|
|
|
(psymtab_to_symtab_1): Likewise.
|
|
|
|
|
(new_block): Likewise.
|
|
|
|
|
(new_psymtab): Likewise.
|
|
|
|
|
(mdebug_build_psymtabs): Likewise.
|
|
|
|
|
(add_pending): Likewise.
|
|
|
|
|
(elfmdebug_build_psymtabs): Likewise.
|
|
|
|
|
* mep-tdep.c (mep_gdbarch_init): Likewise.
|
|
|
|
|
* mi/mi-main.c (mi_execute_command): Likewise.
|
|
|
|
|
* mi/mi-parse.c (mi_parse_argv): Likewise.
|
|
|
|
|
* minidebug.c (lzma_open): Likewise.
|
|
|
|
|
* minsyms.c (terminate_minimal_symbol_table): Likewise.
|
|
|
|
|
* mips-linux-nat.c (mips_linux_insert_watchpoint): Likewise.
|
|
|
|
|
* mips-tdep.c (mips_gdbarch_init): Likewise.
|
|
|
|
|
* mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
|
|
|
|
|
* msp430-tdep.c (msp430_gdbarch_init): Likewise.
|
|
|
|
|
* mt-tdep.c (mt_registers_info): Likewise.
|
|
|
|
|
* nat/aarch64-linux.c (aarch64_linux_new_thread): Likewise.
|
|
|
|
|
* nat/linux-btrace.c (linux_enable_bts): Likewise.
|
|
|
|
|
(linux_enable_pt): Likewise.
|
|
|
|
|
* nat/linux-osdata.c (linux_xfer_osdata_processes): Likewise.
|
|
|
|
|
(linux_xfer_osdata_processgroups): Likewise.
|
|
|
|
|
* nios2-tdep.c (nios2_gdbarch_init): Likewise.
|
|
|
|
|
* nto-procfs.c (procfs_meminfo): Likewise.
|
|
|
|
|
* objc-lang.c (start_msglist): Likewise.
|
|
|
|
|
(selectors_info): Likewise.
|
|
|
|
|
(classes_info): Likewise.
|
|
|
|
|
(find_methods): Likewise.
|
|
|
|
|
* objfiles.c (allocate_objfile): Likewise.
|
|
|
|
|
(update_section_map): Likewise.
|
|
|
|
|
* osabi.c (gdbarch_register_osabi): Likewise.
|
|
|
|
|
(gdbarch_register_osabi_sniffer): Likewise.
|
|
|
|
|
* parse.c (start_arglist): Likewise.
|
|
|
|
|
* ppc-linux-nat.c (hwdebug_find_thread_points_by_tid): Likewise.
|
|
|
|
|
(hwdebug_insert_point): Likewise.
|
|
|
|
|
* printcmd.c (display_command): Likewise.
|
|
|
|
|
(ui_printf): Likewise.
|
|
|
|
|
* procfs.c (create_procinfo): Likewise.
|
|
|
|
|
(load_syscalls): Likewise.
|
|
|
|
|
(proc_get_LDT_entry): Likewise.
|
|
|
|
|
(proc_update_threads): Likewise.
|
|
|
|
|
* prologue-value.c (make_pv_area): Likewise.
|
|
|
|
|
(pv_area_store): Likewise.
|
|
|
|
|
* psymtab.c (extend_psymbol_list): Likewise.
|
|
|
|
|
(init_psymbol_list): Likewise.
|
|
|
|
|
(allocate_psymtab): Likewise.
|
|
|
|
|
* python/py-inferior.c (add_thread_object): Likewise.
|
|
|
|
|
* python/py-param.c (compute_enum_values): Likewise.
|
|
|
|
|
* python/py-value.c (valpy_call): Likewise.
|
|
|
|
|
* python/py-varobj.c (py_varobj_iter_next): Likewise.
|
|
|
|
|
* python/python.c (ensure_python_env): Likewise.
|
|
|
|
|
* record-btrace.c (record_btrace_start_replaying): Likewise.
|
|
|
|
|
* record-full.c (record_full_reg_alloc): Likewise.
|
|
|
|
|
(record_full_mem_alloc): Likewise.
|
|
|
|
|
(record_full_end_alloc): Likewise.
|
|
|
|
|
(record_full_core_xfer_partial): Likewise.
|
|
|
|
|
* regcache.c (get_thread_arch_aspace_regcache): Likewise.
|
|
|
|
|
* remote-fileio.c (remote_fileio_init_fd_map): Likewise.
|
|
|
|
|
* remote-notif.c (remote_notif_state_allocate): Likewise.
|
|
|
|
|
* remote.c (demand_private_info): Likewise.
|
|
|
|
|
(remote_notif_stop_alloc_reply): Likewise.
|
|
|
|
|
(remote_enable_btrace): Likewise.
|
|
|
|
|
* reverse.c (save_bookmark_command): Likewise.
|
|
|
|
|
* rl78-tdep.c (rl78_gdbarch_init): Likewise.
|
|
|
|
|
* rx-tdep.c (rx_gdbarch_init): Likewise.
|
|
|
|
|
* s390-linux-nat.c (s390_insert_watchpoint): Likewise.
|
|
|
|
|
* ser-go32.c (dos_get_tty_state): Likewise.
|
|
|
|
|
(dos_copy_tty_state): Likewise.
|
|
|
|
|
* ser-mingw.c (ser_windows_open): Likewise.
|
|
|
|
|
(ser_console_wait_handle): Likewise.
|
|
|
|
|
(ser_console_get_tty_state): Likewise.
|
|
|
|
|
(make_pipe_state): Likewise.
|
|
|
|
|
(net_windows_open): Likewise.
|
|
|
|
|
* ser-unix.c (hardwire_get_tty_state): Likewise.
|
|
|
|
|
(hardwire_copy_tty_state): Likewise.
|
|
|
|
|
* solib-aix.c (solib_aix_new_lm_info): Likewise.
|
|
|
|
|
* solib-dsbt.c (dsbt_current_sos): Likewise.
|
|
|
|
|
(dsbt_relocate_main_executable): Likewise.
|
|
|
|
|
* solib-frv.c (frv_current_sos): Likewise.
|
|
|
|
|
(frv_relocate_main_executable): Likewise.
|
|
|
|
|
* solib-spu.c (spu_bfd_fopen): Likewise.
|
|
|
|
|
* solib-svr4.c (lm_info_read): Likewise.
|
|
|
|
|
(svr4_copy_library_list): Likewise.
|
|
|
|
|
(svr4_default_sos): Likewise.
|
|
|
|
|
* source.c (find_source_lines): Likewise.
|
|
|
|
|
(line_info): Likewise.
|
|
|
|
|
(add_substitute_path_rule): Likewise.
|
|
|
|
|
* spu-linux-nat.c (spu_bfd_open): Likewise.
|
|
|
|
|
* spu-tdep.c (info_spu_dma_cmdlist): Likewise.
|
|
|
|
|
* stabsread.c (dbx_lookup_type): Likewise.
|
|
|
|
|
(read_type): Likewise.
|
|
|
|
|
(read_member_functions): Likewise.
|
|
|
|
|
(read_struct_fields): Likewise.
|
|
|
|
|
(read_baseclasses): Likewise.
|
|
|
|
|
(read_args): Likewise.
|
|
|
|
|
(_initialize_stabsread): Likewise.
|
|
|
|
|
* stack.c (func_command): Likewise.
|
|
|
|
|
* stap-probe.c (handle_stap_probe): Likewise.
|
|
|
|
|
* symfile.c (addrs_section_sort): Likewise.
|
|
|
|
|
(addr_info_make_relative): Likewise.
|
|
|
|
|
(load_section_callback): Likewise.
|
|
|
|
|
(add_symbol_file_command): Likewise.
|
|
|
|
|
(init_filename_language_table): Likewise.
|
|
|
|
|
* symtab.c (create_filename_seen_cache): Likewise.
|
|
|
|
|
(sort_search_symbols_remove_dups): Likewise.
|
|
|
|
|
(search_symbols): Likewise.
|
|
|
|
|
* target.c (make_cleanup_restore_target_terminal): Likewise.
|
|
|
|
|
* thread.c (new_thread): Likewise.
|
|
|
|
|
(enable_thread_stack_temporaries): Likewise.
|
|
|
|
|
(make_cleanup_restore_current_thread): Likewise.
|
|
|
|
|
(thread_apply_all_command): Likewise.
|
|
|
|
|
* tic6x-tdep.c (tic6x_gdbarch_init): Likewise.
|
|
|
|
|
* top.c (gdb_readline_wrapper): Likewise.
|
|
|
|
|
* tracefile-tfile.c (tfile_trace_file_writer_new): Likewise.
|
|
|
|
|
* tracepoint.c (trace_find_line_command): Likewise.
|
|
|
|
|
(all_tracepoint_actions_and_cleanup): Likewise.
|
|
|
|
|
(make_cleanup_restore_current_traceframe): Likewise.
|
|
|
|
|
(get_uploaded_tp): Likewise.
|
|
|
|
|
(get_uploaded_tsv): Likewise.
|
|
|
|
|
* tui/tui-data.c (tui_alloc_generic_win_info): Likewise.
|
|
|
|
|
(tui_alloc_win_info): Likewise.
|
|
|
|
|
(tui_alloc_content): Likewise.
|
|
|
|
|
(tui_add_content_elements): Likewise.
|
|
|
|
|
* tui/tui-disasm.c (tui_find_disassembly_address): Likewise.
|
|
|
|
|
(tui_set_disassem_content): Likewise.
|
|
|
|
|
* ui-file.c (ui_file_new): Likewise.
|
|
|
|
|
(stdio_file_new): Likewise.
|
|
|
|
|
(tee_file_new): Likewise.
|
|
|
|
|
* utils.c (make_cleanup_restore_integer): Likewise.
|
|
|
|
|
(add_internal_problem_command): Likewise.
|
|
|
|
|
* v850-tdep.c (v850_gdbarch_init): Likewise.
|
|
|
|
|
* valops.c (find_oload_champ): Likewise.
|
|
|
|
|
* value.c (allocate_value_lazy): Likewise.
|
|
|
|
|
(record_latest_value): Likewise.
|
|
|
|
|
(create_internalvar): Likewise.
|
|
|
|
|
* varobj.c (install_variable): Likewise.
|
|
|
|
|
(new_variable): Likewise.
|
|
|
|
|
(new_root_variable): Likewise.
|
|
|
|
|
(cppush): Likewise.
|
|
|
|
|
(_initialize_varobj): Likewise.
|
|
|
|
|
* windows-nat.c (windows_make_so): Likewise.
|
|
|
|
|
* x86-nat.c (x86_add_process): Likewise.
|
|
|
|
|
* xcoffread.c (arrange_linetable): Likewise.
|
|
|
|
|
(allocate_include_entry): Likewise.
|
|
|
|
|
(process_linenos): Likewise.
|
|
|
|
|
(SYMBOL_DUP): Likewise.
|
|
|
|
|
(xcoff_start_psymtab): Likewise.
|
|
|
|
|
(xcoff_end_psymtab): Likewise.
|
|
|
|
|
* xml-support.c (gdb_xml_parse_attr_ulongest): Likewise.
|
|
|
|
|
* xtensa-tdep.c (xtensa_register_type): Likewise.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
|
Fix native follow-exec-mode "new"
This patch fixes a segmentation fault in native GDB when
handling an exec event with follow-exec-mode set to "new".
The stack trace from the segfault was this:
0 0x0000000000669594 in gdbarch_data (gdbarch=0x0, data=0x20da7a0)
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/gdbarch.c:4847
1 0x00000000004d430e in get_remote_arch_state ()
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/remote.c:603
2 0x00000000004d431e in get_remote_state ()
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/remote.c:616
3 0x00000000004dda8b in discard_pending_stop_replies (inf=0x217c710)
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/remote.c:5775
4 0x00000000006a5928 in observer_inferior_exit_notification_stub (
data=0x4dda7a <discard_pending_stop_replies>, args_data=0x7fff12c258f0)
at ./observer.inc:1137
5 0x00000000006a419a in generic_observer_notify (subject=0x21dfbe0,
args=0x7fff12c258f0)
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/observer.c:167
6 0x00000000006a59ba in observer_notify_inferior_exit (inf=0x217c710)
at ./observer.inc:1162
7 0x00000000007981d5 in exit_inferior_1 (inftoex=0x217c710, silent=1)
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/inferior.c:244
8 0x00000000007982f2 in exit_inferior_num_silent (num=1)
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/inferior.c:286
9 0x000000000062f93d in follow_exec (ptid=...,
execd_pathname=0x7fff12c259a0 "/scratch/dbreazea/sandbox/exec-nat/build/gdb/testsuite/gdb.base/execd-prog")
at /scratch/dbreazea/sandbox/exec-nat/binutils-gdb/gdb/infrun.c:1195
In follow_exec we were creating a new inferior for the execd program,
as required by the exec mode, but we were doing it before calling
exit_inferior_num_silent on the original inferior. So on entry to
exit_inferior_num_silent we had two inferiors with the same ptid.
In the calls made by exit_inferior_num_silent, the current inferior
is temporarily saved and replaced in order to make use of functions
that only operate on the current inferior (for example, in
do_all_continuations, called while deleting the threads of the original
inferior). When we restored the original inferior, we just took the
first inferior that matched the ptid of the original and got the new
(wrong) one. It hadn't been initialized yet and had no gdbarch
pointer, and GDB segfaulted.
The fix for that is to call exit_inferior_num_silent before adding the new
inferior, so that we never have two inferiors with the same ptid. Then
exit_inferior_num_silent uses the original inferior as the current inferior
throughout, and can find a valid gdbarch pointer.
Once we have finished with the exit of the old inferior and added the
new one, we need to create a new thread for the new inferior. In the
function that called follow_exec, handle_inferior_event_1,
ecs->event_thread now points to the thread that was deleted with the
exit of the original inferior. To remedy this we create the new thread,
and once we return from follow_exec we reset ecs->event_thread.
Note that we are guaranteed that we can reset ecs->event_thread
safely using inferior_thread because we have set the current
inferior in follow_exec, and inferior_ptid was set by the call
to context_switch at the beginning of exec event handling.
gdb/ChangeLog:
* infrun.c (follow_exec): Re-order operations for
handling follow-exec-mode "new".
(handle_inferior_event_1): Assign ecs->event_thread
to the current thread.
* remote.c (get_remote_arch_state): Add an assertion.
2015-08-26 22:31:59 +02:00
|
|
|
|
2015-08-25 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_exec): Re-order operations for
|
|
|
|
|
handling follow-exec-mode "new".
|
|
|
|
|
(handle_inferior_event_1): Assign ecs->event_thread
|
|
|
|
|
to the current thread.
|
|
|
|
|
* remote.c (get_remote_arch_state): Add an assertion.
|
|
|
|
|
|
2015-08-26 18:50:02 +02:00
|
|
|
|
2015-08-26 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS: Add Markus Metzger as btrace maintainer.
|
|
|
|
|
|
2015-08-27 14:09:39 +02:00
|
|
|
|
2015-08-25 Pedro Alves <palves@redhat.com>
|
remote: allow aborting long operations (e.g., file transfers)
Currently, when remote debugging, if you type Ctrl-C just while the
target stopped for an internal event, and GDB is busy doing something
that takes a while (e.g., fetching chunks of a shared library off of
the target, with vFile, to process ELF headers and debug info), the
Ctrl-C is lost.
The patch hooks up the QUIT macro to a new target method that lets the
target react to the double-Ctrl-C before the event loop is reached,
which allows reacting to a double-Ctrl-C even when GDB is busy doing
some long operation and not waiting for a stop reply. That end result
is:
(gdb) c
Continuing.
^C
^C
Interrupted while waiting for the program.
Give up waiting? (y or n) y
Quit
(gdb) info threads
Id Target Id Frame
* 1 Thread 11673 0x00007ffff7deb240 in _dl_debug_state () from target:/lib64/ld-linux-x86-64.so.2
(gdb)
If, however, GDB is waiting for a stop reply (because the target has
been resumed, with e.g., vCont;c), but the target isn't responding, we
now get:
(gdb) c
Continuing.
^C
^C
The target is not responding to interrupt requests.
Stop debugging it? (y or n) y
Disconnected from target.
(gdb) info threads
No threads.
This offers to disconnect, because when we're waiting for a stop
reply, there's nothing else we can send the target other than an
interrupt request. And if that doesn't work, there's nothing else we
can do.
The Ctrl-C is presently lost because until we get to a user-visible
stop, the SIGINT handler that is installed is the one that forwards
the interrupt to the remote side, with the \003 "packet" [1]. But,
gdbserver ignores an interrupt request if the program is stopped.
Still, even if it didn't, the server can only report back a
stop-because-of-SIGINT when the program is next resumed. And it may
take a while to actually re-resume the target.
[1] - In the old sync days, the remote target would react to a
double-Ctrl-C by asking users whether they wanted to give up waiting
and disconnect. The code is still there, but it it isn't reacheable
on most hosts, which support serial connections in async mode
(probably only DJGPP doesn't). Even then, in sync mode, remote.c's
SIGINT handler is only installed while the target is resumed, and is
removed as soon as the target sends back a stop reply. That means
that a Ctrl-C just while GDB is processing an internal event can end
up with an odd "Quit" at the prompt instead of "Program stopped by
SIGINT". In contrast, in async mode, remote.c's SIGINT handler is set
up as long as target_terminal_inferior or
target_terminal_ours_for_output are in effect (IOW, until we get a
user-visible stop and call target_terminal_ours), so the user
shouldn't get back a spurious Quit. However, it's still desirable to
be able to interrupt a long-running GDB operation, if GDB takes a
while to re-resume the target or get back to the event loop.
Tested on x86_64 Fedora 20.
gdb/ChangeLog:
2015-08-24 Pedro Alves <palves@redhat.com>
* defs.h (maybe_quit): Declare.
(QUIT): Now calls maybe_quit.
* event-loop.c (clear_async_signal_handler)
(async_signal_handler_is_marked): New functions.
* event-loop.h (async_signal_handler_is_marked)
(clear_async_signal_handler): New declarations.
* remote.c (remote_check_pending_interrupt): New function.
(interrupt_query): Use make_cleanup_restore_target_terminal. No
longer check whether the target is async. If waiting for a stop
reply, and a Ctrl-C as been sent to the target, offer to
disconnect, and throw TARGET_CLOSE_ERROR instead of a quit.
Otherwise do not disconnect and throw a quit.
(_initialize_remote): Install remote_check_pending_interrupt as
to_check_pending_interrupt.
* target.c (target_check_pending_interrupt): New function.
* target.h (struct target_ops) <to_check_pending_interrupt>: New
field.
(target_check_pending_interrupt): New declaration.
* utils.c (maybe_quit): New function.
* target-delegates.c: Regenerate.
2015-08-25 17:12:11 +02:00
|
|
|
|
|
2015-08-27 14:09:39 +02:00
|
|
|
|
PR gdb/18804
|
remote: allow aborting long operations (e.g., file transfers)
Currently, when remote debugging, if you type Ctrl-C just while the
target stopped for an internal event, and GDB is busy doing something
that takes a while (e.g., fetching chunks of a shared library off of
the target, with vFile, to process ELF headers and debug info), the
Ctrl-C is lost.
The patch hooks up the QUIT macro to a new target method that lets the
target react to the double-Ctrl-C before the event loop is reached,
which allows reacting to a double-Ctrl-C even when GDB is busy doing
some long operation and not waiting for a stop reply. That end result
is:
(gdb) c
Continuing.
^C
^C
Interrupted while waiting for the program.
Give up waiting? (y or n) y
Quit
(gdb) info threads
Id Target Id Frame
* 1 Thread 11673 0x00007ffff7deb240 in _dl_debug_state () from target:/lib64/ld-linux-x86-64.so.2
(gdb)
If, however, GDB is waiting for a stop reply (because the target has
been resumed, with e.g., vCont;c), but the target isn't responding, we
now get:
(gdb) c
Continuing.
^C
^C
The target is not responding to interrupt requests.
Stop debugging it? (y or n) y
Disconnected from target.
(gdb) info threads
No threads.
This offers to disconnect, because when we're waiting for a stop
reply, there's nothing else we can send the target other than an
interrupt request. And if that doesn't work, there's nothing else we
can do.
The Ctrl-C is presently lost because until we get to a user-visible
stop, the SIGINT handler that is installed is the one that forwards
the interrupt to the remote side, with the \003 "packet" [1]. But,
gdbserver ignores an interrupt request if the program is stopped.
Still, even if it didn't, the server can only report back a
stop-because-of-SIGINT when the program is next resumed. And it may
take a while to actually re-resume the target.
[1] - In the old sync days, the remote target would react to a
double-Ctrl-C by asking users whether they wanted to give up waiting
and disconnect. The code is still there, but it it isn't reacheable
on most hosts, which support serial connections in async mode
(probably only DJGPP doesn't). Even then, in sync mode, remote.c's
SIGINT handler is only installed while the target is resumed, and is
removed as soon as the target sends back a stop reply. That means
that a Ctrl-C just while GDB is processing an internal event can end
up with an odd "Quit" at the prompt instead of "Program stopped by
SIGINT". In contrast, in async mode, remote.c's SIGINT handler is set
up as long as target_terminal_inferior or
target_terminal_ours_for_output are in effect (IOW, until we get a
user-visible stop and call target_terminal_ours), so the user
shouldn't get back a spurious Quit. However, it's still desirable to
be able to interrupt a long-running GDB operation, if GDB takes a
while to re-resume the target or get back to the event loop.
Tested on x86_64 Fedora 20.
gdb/ChangeLog:
2015-08-24 Pedro Alves <palves@redhat.com>
* defs.h (maybe_quit): Declare.
(QUIT): Now calls maybe_quit.
* event-loop.c (clear_async_signal_handler)
(async_signal_handler_is_marked): New functions.
* event-loop.h (async_signal_handler_is_marked)
(clear_async_signal_handler): New declarations.
* remote.c (remote_check_pending_interrupt): New function.
(interrupt_query): Use make_cleanup_restore_target_terminal. No
longer check whether the target is async. If waiting for a stop
reply, and a Ctrl-C as been sent to the target, offer to
disconnect, and throw TARGET_CLOSE_ERROR instead of a quit.
Otherwise do not disconnect and throw a quit.
(_initialize_remote): Install remote_check_pending_interrupt as
to_check_pending_interrupt.
* target.c (target_check_pending_interrupt): New function.
* target.h (struct target_ops) <to_check_pending_interrupt>: New
field.
(target_check_pending_interrupt): New declaration.
* utils.c (maybe_quit): New function.
* target-delegates.c: Regenerate.
2015-08-25 17:12:11 +02:00
|
|
|
|
* defs.h (maybe_quit): Declare.
|
|
|
|
|
(QUIT): Now calls maybe_quit.
|
|
|
|
|
* event-loop.c (clear_async_signal_handler)
|
|
|
|
|
(async_signal_handler_is_marked): New functions.
|
|
|
|
|
* event-loop.h (async_signal_handler_is_marked)
|
|
|
|
|
(clear_async_signal_handler): New declarations.
|
|
|
|
|
* remote.c (remote_check_pending_interrupt): New function.
|
|
|
|
|
(interrupt_query): Use make_cleanup_restore_target_terminal. No
|
|
|
|
|
longer check whether the target is async. If waiting for a stop
|
|
|
|
|
reply, and a Ctrl-C as been sent to the target, offer to
|
|
|
|
|
disconnect, and throw TARGET_CLOSE_ERROR instead of a quit.
|
|
|
|
|
Otherwise do not disconnect and throw a quit.
|
|
|
|
|
(_initialize_remote): Install remote_check_pending_interrupt as
|
|
|
|
|
to_check_pending_interrupt.
|
|
|
|
|
* target.c (target_check_pending_interrupt): New function.
|
|
|
|
|
* target.h (struct target_ops) <to_check_pending_interrupt>: New
|
|
|
|
|
field.
|
|
|
|
|
(target_check_pending_interrupt): New declaration.
|
|
|
|
|
* utils.c (maybe_quit): New function.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
|
2015-08-25 15:08:45 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* nat/aarch64-linux-hw-point.c (debug_reg_change_callback):
|
|
|
|
|
Rename local variable pid to tid, and get lwpid of lwp. Update
|
|
|
|
|
debug output.
|
|
|
|
|
|
2015-02-05 17:00:06 +01:00
|
|
|
|
2015-08-25 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_read_var_value): Add a var_block argument
|
|
|
|
|
and pass it to default_read_var_value.
|
|
|
|
|
* block.c (block_static_link): New accessor.
|
|
|
|
|
* block.h (block_static_link): Declare it.
|
|
|
|
|
* buildsym.c (finish_block_internal): Add a static_link
|
|
|
|
|
argument. If there is a static link, associate it to the new
|
|
|
|
|
block.
|
|
|
|
|
(finish_block): Add a static link argument and pass it to
|
|
|
|
|
finish_block_internal.
|
|
|
|
|
(end_symtab_get_static_block): Update calls to finish_block and
|
|
|
|
|
to finish_block_internal.
|
|
|
|
|
(end_symtab_with_blockvector): Update call to
|
|
|
|
|
finish_block_internal.
|
|
|
|
|
* buildsym.h: Forward-declare struct dynamic_prop.
|
|
|
|
|
(struct context_stack): Add a static_link field.
|
|
|
|
|
(finish_block): Add a static link argument.
|
|
|
|
|
* c-exp.y: Remove an obsolete comment (evaluation of variables
|
|
|
|
|
already start from the selected frame, and now they climb *up*
|
|
|
|
|
the call stack) and propagate the block information to the
|
|
|
|
|
produced expression.
|
|
|
|
|
* d-exp.y: Likewise.
|
|
|
|
|
* f-exp.y: Likewise.
|
|
|
|
|
* go-exp.y: Likewise.
|
|
|
|
|
* jv-exp.y: Likewise.
|
|
|
|
|
* m2-exp.y: Likewise.
|
|
|
|
|
* p-exp.y: Likewise.
|
|
|
|
|
* coffread.c (coff_symtab_read): Update calls to finish_block.
|
|
|
|
|
* dbxread.c (process_one_symbol): Likewise.
|
|
|
|
|
* xcoffread.c (read_xcoff_symtab): Likewise.
|
|
|
|
|
* compile/compile-c-symbols.c (convert_one_symbol): Promote the
|
|
|
|
|
"sym" parameter to struct block_symbol, update its uses and pass
|
|
|
|
|
its block to calls to read_var_value.
|
|
|
|
|
(convert_symbol_sym): Update the calls to convert_one_symbol.
|
|
|
|
|
* compile/compile-loc2c.c (do_compile_dwarf_expr_to_c): Update
|
|
|
|
|
call to read_var_value.
|
|
|
|
|
* dwarf2loc.c (block_op_get_frame_base): New.
|
|
|
|
|
(dwarf2_block_frame_base_locexpr_funcs): Implement the
|
|
|
|
|
get_frame_base method.
|
|
|
|
|
(dwarf2_block_frame_base_loclist_funcs): Likewise.
|
|
|
|
|
(dwarf2locexpr_baton_eval): Add a frame argument and use it
|
|
|
|
|
instead of the selected frame in order to evaluate the
|
|
|
|
|
expression.
|
|
|
|
|
(dwarf2_evaluate_property): Add a frame argument. Update call
|
|
|
|
|
to dwarf2_locexpr_baton_eval to provide a frame in available and
|
|
|
|
|
to handle the absence of address stack.
|
|
|
|
|
* dwarf2loc.h (dwarf2_evaluate_property): Add a frame argument.
|
|
|
|
|
* dwarf2read.c (attr_to_dynamic_prop): Add a forward
|
|
|
|
|
declaration.
|
|
|
|
|
(read_func_scope): Record any available static link description.
|
|
|
|
|
Update call to finish_block.
|
|
|
|
|
(read_lexical_block_scope): Update call to finish_block.
|
|
|
|
|
* findvar.c (follow_static_link): New.
|
|
|
|
|
(get_hosting_frame): New.
|
|
|
|
|
(default_read_var_value): Add a var_block argument. Use
|
|
|
|
|
get_hosting_frame to handle non-local references.
|
|
|
|
|
(read_var_value): Add a var_block argument and pass it to the
|
|
|
|
|
LA_READ_VAR_VALUE method.
|
|
|
|
|
* gdbtypes.c (resolve_dynamic_range): Update calls to
|
|
|
|
|
dwarf2_evaluate_property.
|
|
|
|
|
(resolve_dynamic_type_internal): Likewise.
|
|
|
|
|
* guile/scm-frame.c (gdbscm_frame_read_var): Update call to
|
|
|
|
|
read_var_value, passing it the block coming from symbol lookup.
|
|
|
|
|
* guile/scm-symbol.c (gdbscm_symbol_value): Update call to
|
|
|
|
|
read_var_value (TODO).
|
|
|
|
|
* infcmd.c (finish_command_continuation): Update call to
|
|
|
|
|
read_var_value, passing it the block coming from symbol lookup.
|
|
|
|
|
* infrun.c (insert_exception_resume_breakpoint): Likewise.
|
|
|
|
|
* language.h (struct language_defn): Add a var_block argument to
|
|
|
|
|
the LA_READ_VAR_VALUE method.
|
|
|
|
|
* objfiles.c (struct static_link_htab_entry): New.
|
|
|
|
|
(static_link_htab_entry_hash): New.
|
|
|
|
|
(static_link_htab_entry_eq): New.
|
|
|
|
|
(objfile_register_static_link): New.
|
|
|
|
|
(objfile_lookup_static_link): New.
|
|
|
|
|
(free_objfile): Free the STATIC_LINKS hashed map if needed.
|
|
|
|
|
* objfiles.h: Include hashtab.h.
|
|
|
|
|
(struct objfile): Add a static_links field.
|
|
|
|
|
(objfile_register_static_link): New.
|
|
|
|
|
(objfile_lookup_static_link): New.
|
|
|
|
|
* printcmd.c (print_variable_and_value): Update call to
|
|
|
|
|
read_var_value.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
|
|
|
|
|
* python/py-frame.c (frapy_read_var): Update call to
|
|
|
|
|
read_var_value, passing it the block coming from symbol lookup.
|
|
|
|
|
* python/py-framefilter.c (extract_sym): Add a sym_block
|
|
|
|
|
parameter and set the pointed value to NULL (TODO).
|
|
|
|
|
(enumerate_args): Update call to extract_sym.
|
|
|
|
|
(enumerate_locals): Update calls to extract_sym and to
|
|
|
|
|
read_var_value.
|
|
|
|
|
* python/py-symbol.c (sympy_value): Update call to
|
|
|
|
|
read_var_value (TODO).
|
|
|
|
|
* stack.c (read_frame_local): Update call to read_var_value.
|
|
|
|
|
(read_frame_arg): Likewise.
|
|
|
|
|
(return_command): Likewise.
|
|
|
|
|
* symtab.h (struct symbol_block_ops): Add a get_frame_base
|
|
|
|
|
method.
|
|
|
|
|
(struct symbol): Add a block field.
|
|
|
|
|
(SYMBOL_BLOCK): New accessor.
|
|
|
|
|
* valops.c (value_of_variable): Remove frame/block handling and
|
|
|
|
|
pass the block argument to read_var_value, which does this job
|
|
|
|
|
now.
|
|
|
|
|
(value_struct_elt_for_reference): Update calls to
|
|
|
|
|
read_var_value.
|
|
|
|
|
(value_of_this): Pass the block found to read_var_value.
|
|
|
|
|
* value.h (read_var_value): Add a var_block argument.
|
|
|
|
|
(default_read_var_value): Likewise.
|
|
|
|
|
|
2015-08-25 12:38:29 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_new_thread): Move it to ...
|
|
|
|
|
* nat/aarch64-linux.c (aarch64_linux_new_thread): ... here.
|
|
|
|
|
* nat/aarch64-linux.h (aarch64_linux_new_thread): Declare.
|
|
|
|
|
|
2015-08-25 12:38:29 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (aarch64-liunx.o): New rule.
|
|
|
|
|
(HFILES_NO_SRCDIR): Add aarch64-linux.h.
|
|
|
|
|
* config/aarch64/linux.mh (NAT_FILE): Add aarch64-linux.o.
|
|
|
|
|
* aarch64-linux-nat.c: Include nat/aarch64-linux.h.
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_get_debug_reg_state): Make it
|
|
|
|
|
extern.
|
|
|
|
|
(aarch64_linux_prepare_to_resume): Move it nat/aarch64-linux.c.
|
|
|
|
|
* nat/aarch64-linux-hw-point.h (aarch64_debug_reg_state): Declare
|
|
|
|
|
* nat/aarch64-linux.c: New file.
|
|
|
|
|
* nat/aarch64-linux.h: New file.
|
|
|
|
|
|
2015-08-25 12:38:29 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_prepare_to_resume): Use
|
|
|
|
|
lwp_arch_private_info and ptid_of_lwp.
|
|
|
|
|
|
2015-08-25 12:38:29 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (struct arch64_dr_update_callback_param):
|
|
|
|
|
Move it to nat/aarch64-linux-hw-point.c.
|
|
|
|
|
(debug_reg_change_callback): Likewise.
|
|
|
|
|
(aarch64_notify_debug_reg_change): :Likewise.
|
|
|
|
|
* nat/aarch64-linux-hw-point.c: Include nat/linux-nat.h.
|
|
|
|
|
(aarch64_dr_update_callback_param): New.
|
|
|
|
|
(debug_reg_change_callback): New function.
|
|
|
|
|
(aarch64_notify_debug_reg_change): Likewise.
|
|
|
|
|
* nat/aarch64-linux-hw-point.h (aarch64_notify_debug_reg_change):
|
|
|
|
|
Remove the declaration.
|
|
|
|
|
|
2015-08-25 12:38:29 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_notify_debug_reg_change):
|
|
|
|
|
Call current_lwp_ptid.
|
|
|
|
|
|
2015-08-25 12:38:29 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (debug_reg_change_callback): Use
|
|
|
|
|
debug_printf.
|
|
|
|
|
|
2015-08-25 12:38:28 +02:00
|
|
|
|
2015-08-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (debug_reg_change_callback): Call
|
|
|
|
|
ptid_get_pid rather than ptid_get_lwp.
|
|
|
|
|
|
2015-08-24 20:58:31 +02:00
|
|
|
|
2015-08-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (New commands): Mention set/show remote
|
|
|
|
|
multiprocess-extensions-packet.
|
|
|
|
|
* remote.c (remote_query_supported): Only tell the server to use
|
|
|
|
|
the multiprocess extensions if the user hasn't force-disabled them
|
|
|
|
|
with "set remote multiprocess-extensions-packet off".
|
|
|
|
|
|
2015-08-24 19:50:00 +02:00
|
|
|
|
2015-08-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gnulib/update-gnulib.sh (GNULIB_COMMIT_SHA1): Set to
|
|
|
|
|
1029a8112290f6eee9d7878a391c49db42c999bd.
|
|
|
|
|
* gnulib/configure, gnulib/config.in, gnulib/aclocal.m4:
|
|
|
|
|
Regenerate.
|
|
|
|
|
* gnulib/import/Makefile.am: Update.
|
|
|
|
|
* gnulib/import/Makefile.in: Update.
|
|
|
|
|
* gnulib/import/alloca.in.h: Update.
|
|
|
|
|
* gnulib/import/basename-lgpl.c: Update.
|
|
|
|
|
* gnulib/import/canonicalize-lgpl.c: Update.
|
|
|
|
|
* gnulib/import/config.charset: Update.
|
|
|
|
|
* gnulib/import/dirent.in.h: Update.
|
|
|
|
|
* gnulib/import/dirfd.c: Update.
|
|
|
|
|
* gnulib/import/dirname-lgpl.c: Update.
|
|
|
|
|
* gnulib/import/dirname.h: Update.
|
|
|
|
|
* gnulib/import/dosname.h: Update.
|
|
|
|
|
* gnulib/import/errno.in.h: Update.
|
|
|
|
|
* gnulib/import/extra/snippet/arg-nonnull.h: Update.
|
|
|
|
|
* gnulib/import/extra/snippet/c++defs.h: Update.
|
|
|
|
|
* gnulib/import/extra/snippet/warn-on-use.h: Update.
|
|
|
|
|
* gnulib/import/extra/update-copyright: Update.
|
|
|
|
|
* gnulib/import/float+.h: Update.
|
|
|
|
|
* gnulib/import/float.c: Update.
|
|
|
|
|
* gnulib/import/float.in.h: Update.
|
|
|
|
|
* gnulib/import/fnmatch.c: Update.
|
|
|
|
|
* gnulib/import/fnmatch.in.h: Update.
|
|
|
|
|
* gnulib/import/fnmatch_loop.c: Update.
|
|
|
|
|
* gnulib/import/fpucw.h: Update.
|
|
|
|
|
* gnulib/import/frexp.c: Update.
|
|
|
|
|
* gnulib/import/frexpl.c: Update.
|
|
|
|
|
* gnulib/import/gettimeofday.c: Update.
|
|
|
|
|
* gnulib/import/inttypes.in.h: Update.
|
|
|
|
|
* gnulib/import/isnan.c: Update.
|
|
|
|
|
* gnulib/import/isnand-nolibm.h: Update.
|
|
|
|
|
* gnulib/import/isnand.c: Update.
|
|
|
|
|
* gnulib/import/isnanl-nolibm.h: Update.
|
|
|
|
|
* gnulib/import/isnanl.c: Update.
|
|
|
|
|
* gnulib/import/itold.c: Update.
|
|
|
|
|
* gnulib/import/localcharset.c: Update.
|
|
|
|
|
* gnulib/import/localcharset.h: Update.
|
|
|
|
|
* gnulib/import/lstat.c: Update.
|
|
|
|
|
* gnulib/import/m4/00gnulib.m4: Update.
|
|
|
|
|
* gnulib/import/m4/absolute-header.m4: Update.
|
|
|
|
|
* gnulib/import/m4/alloca.m4: Update.
|
|
|
|
|
* gnulib/import/m4/canonicalize.m4: Update.
|
|
|
|
|
* gnulib/import/m4/codeset.m4: Update.
|
|
|
|
|
* gnulib/import/m4/configmake.m4: Update.
|
|
|
|
|
* gnulib/import/m4/dirent_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/dirfd.m4: Update.
|
|
|
|
|
* gnulib/import/m4/dirname.m4: Update.
|
|
|
|
|
* gnulib/import/m4/double-slash-root.m4: Update.
|
|
|
|
|
* gnulib/import/m4/eealloc.m4: Update.
|
|
|
|
|
* gnulib/import/m4/errno_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/exponentd.m4: Update.
|
|
|
|
|
* gnulib/import/m4/exponentl.m4: Update.
|
|
|
|
|
* gnulib/import/m4/extensions.m4: Update.
|
|
|
|
|
* gnulib/import/m4/extern-inline.m4: Update.
|
|
|
|
|
* gnulib/import/m4/fcntl-o.m4: Update.
|
|
|
|
|
* gnulib/import/m4/float_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/fnmatch.m4: Update.
|
|
|
|
|
* gnulib/import/m4/fpieee.m4: Update.
|
|
|
|
|
* gnulib/import/m4/frexp.m4: Update.
|
|
|
|
|
* gnulib/import/m4/frexpl.m4: Update.
|
|
|
|
|
* gnulib/import/m4/gettimeofday.m4: Update.
|
|
|
|
|
* gnulib/import/m4/glibc21.m4: Update.
|
|
|
|
|
* gnulib/import/m4/gnulib-cache.m4: Update.
|
|
|
|
|
* gnulib/import/m4/gnulib-common.m4: Update.
|
|
|
|
|
* gnulib/import/m4/gnulib-comp.m4: Update.
|
|
|
|
|
* gnulib/import/m4/gnulib-tool.m4: Update.
|
|
|
|
|
* gnulib/import/m4/include_next.m4: Update.
|
|
|
|
|
* gnulib/import/m4/inttypes-pri.m4: Update.
|
|
|
|
|
* gnulib/import/m4/inttypes.m4: Update.
|
|
|
|
|
* gnulib/import/m4/isnand.m4: Update.
|
|
|
|
|
* gnulib/import/m4/isnanl.m4: Update.
|
|
|
|
|
* gnulib/import/m4/largefile.m4: Update.
|
|
|
|
|
* gnulib/import/m4/localcharset.m4: Update.
|
|
|
|
|
* gnulib/import/m4/locale-fr.m4: Update.
|
|
|
|
|
* gnulib/import/m4/locale-ja.m4: Update.
|
|
|
|
|
* gnulib/import/m4/locale-zh.m4: Update.
|
|
|
|
|
* gnulib/import/m4/longlong.m4: Update.
|
|
|
|
|
* gnulib/import/m4/lstat.m4: Update.
|
|
|
|
|
* gnulib/import/m4/malloc.m4: Update.
|
|
|
|
|
* gnulib/import/m4/malloca.m4: Update.
|
|
|
|
|
* gnulib/import/m4/math_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/mbrtowc.m4: Update.
|
|
|
|
|
* gnulib/import/m4/mbsinit.m4: Update.
|
|
|
|
|
* gnulib/import/m4/mbsrtowcs.m4: Update.
|
|
|
|
|
* gnulib/import/m4/mbstate_t.m4: Update.
|
|
|
|
|
* gnulib/import/m4/memchr.m4: Update.
|
|
|
|
|
* gnulib/import/m4/memmem.m4: Update.
|
|
|
|
|
* gnulib/import/m4/mmap-anon.m4: Update.
|
|
|
|
|
* gnulib/import/m4/multiarch.m4: Update.
|
|
|
|
|
* gnulib/import/m4/nocrash.m4: Update.
|
|
|
|
|
* gnulib/import/m4/off_t.m4: Update.
|
|
|
|
|
* gnulib/import/m4/pathmax.m4: Update.
|
|
|
|
|
* gnulib/import/m4/readlink.m4: Update.
|
|
|
|
|
* gnulib/import/m4/rename.m4: Update.
|
|
|
|
|
* gnulib/import/m4/rmdir.m4: Update.
|
|
|
|
|
* gnulib/import/m4/ssize_t.m4: Update.
|
|
|
|
|
* gnulib/import/m4/stat.m4: Update.
|
|
|
|
|
* gnulib/import/m4/stdbool.m4: Update.
|
|
|
|
|
* gnulib/import/m4/stddef_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/stdint.m4: Update.
|
|
|
|
|
* gnulib/import/m4/stdio_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/stdlib_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/string_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/strstr.m4: Update.
|
|
|
|
|
* gnulib/import/m4/strtok_r.m4: Update.
|
|
|
|
|
* gnulib/import/m4/sys_socket_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/sys_stat_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/sys_time_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/sys_types_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/time_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/unistd_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/warn-on-use.m4: Update.
|
|
|
|
|
* gnulib/import/m4/wchar_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/wchar_t.m4: Update.
|
|
|
|
|
* gnulib/import/m4/wctype_h.m4: Update.
|
|
|
|
|
* gnulib/import/m4/wint_t.m4: Update.
|
|
|
|
|
* gnulib/import/malloc.c: Update.
|
|
|
|
|
* gnulib/import/malloca.c: Update.
|
|
|
|
|
* gnulib/import/malloca.h: Update.
|
|
|
|
|
* gnulib/import/math.in.h: Update.
|
|
|
|
|
* gnulib/import/mbrtowc.c: Update.
|
|
|
|
|
* gnulib/import/mbsinit.c: Update.
|
|
|
|
|
* gnulib/import/mbsrtowcs-impl.h: Update.
|
|
|
|
|
* gnulib/import/mbsrtowcs-state.c: Update.
|
|
|
|
|
* gnulib/import/mbsrtowcs.c: Update.
|
|
|
|
|
* gnulib/import/memchr.c: Update.
|
|
|
|
|
* gnulib/import/memmem.c: Update.
|
|
|
|
|
* gnulib/import/pathmax.h: Update.
|
|
|
|
|
* gnulib/import/readlink.c: Update.
|
|
|
|
|
* gnulib/import/ref-add.sin: Update.
|
|
|
|
|
* gnulib/import/ref-del.sin: Update.
|
|
|
|
|
* gnulib/import/rename.c: Update.
|
|
|
|
|
* gnulib/import/rmdir.c: Update.
|
|
|
|
|
* gnulib/import/same-inode.h: Update.
|
|
|
|
|
* gnulib/import/stat.c: Update.
|
|
|
|
|
* gnulib/import/stdbool.in.h: Update.
|
|
|
|
|
* gnulib/import/stddef.in.h: Update.
|
|
|
|
|
* gnulib/import/stdint.in.h: Update.
|
|
|
|
|
* gnulib/import/stdio.c: Update.
|
|
|
|
|
* gnulib/import/stdio.in.h: Update.
|
|
|
|
|
* gnulib/import/stdlib.in.h: Update.
|
|
|
|
|
* gnulib/import/str-two-way.h: Update.
|
|
|
|
|
* gnulib/import/streq.h: Update.
|
|
|
|
|
* gnulib/import/string.in.h: Update.
|
|
|
|
|
* gnulib/import/stripslash.c: Update.
|
|
|
|
|
* gnulib/import/strnlen1.c: Update.
|
|
|
|
|
* gnulib/import/strnlen1.h: Update.
|
|
|
|
|
* gnulib/import/strstr.c: Update.
|
|
|
|
|
* gnulib/import/strtok_r.c: Update.
|
|
|
|
|
* gnulib/import/sys_stat.in.h: Update.
|
|
|
|
|
* gnulib/import/sys_time.in.h: Update.
|
|
|
|
|
* gnulib/import/sys_types.in.h: Update.
|
|
|
|
|
* gnulib/import/time.in.h: Update.
|
|
|
|
|
* gnulib/import/unistd.in.h: Update.
|
|
|
|
|
* gnulib/import/verify.h: Update.
|
|
|
|
|
* gnulib/import/wchar.in.h: Update.
|
|
|
|
|
* gnulib/import/wctype.in.h: Update.
|
|
|
|
|
* gnulib/import/gettimeofday.c: New file.
|
|
|
|
|
* gnulib/import/m4/absolute-header.m4: New file.
|
|
|
|
|
* gnulib/import/m4/gettimeofday.m4: New file.
|
|
|
|
|
* gnulib/import/m4/sys_socket_h.m4: New file.
|
|
|
|
|
* gnulib/import/m4/sys_time_h.m4: New file.
|
|
|
|
|
* gnulib/import/stdio.c: Delete file.
|
|
|
|
|
* gnulib/import/sys_time.in.h: New file.
|
|
|
|
|
|
2015-08-24 19:50:55 +02:00
|
|
|
|
2015-08-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add common/gdb_sys_time.h.
|
|
|
|
|
* common/gdb_sys_time.h: New file.
|
|
|
|
|
* event-loop.c: Include gdb_sys_time.h instead of sys/time.h.
|
|
|
|
|
* gdb_select.h: Likewise.
|
|
|
|
|
* gdb_usleep.c: Likewise.
|
|
|
|
|
* maint.c: Likewise.
|
|
|
|
|
* mi/mi-main.c: Likewise.
|
|
|
|
|
* mi/mi-parse.h: Likewise.
|
|
|
|
|
* remote-fileio.c: Likewise.
|
|
|
|
|
* remote-m32r-sdi.c: Likewise.
|
|
|
|
|
* remote.c: Likewise.
|
|
|
|
|
* ser-base.c: Likewise.
|
|
|
|
|
* ser-pipe.c: Likewise.
|
|
|
|
|
* ser-tcp.c: Likewise.
|
|
|
|
|
* ser-unix.c: Likewise.
|
|
|
|
|
* symfile.c: Likewise.
|
|
|
|
|
* symfile.c: Likewise. Rename OSIZE to SIZE throughout.
|
|
|
|
|
* target-memory.c: Include gdb_sys_time.h instead of sys/time.h.
|
|
|
|
|
* utils.c: Likewise.
|
|
|
|
|
|
Delete the remaining ROM monitor targets
Ref: https://sourceware.org/ml/gdb/2015-07/msg00011.html
All of these targets use gdb/monitor.c, which has bit rotted
years ago (I'd guess around ~6), and nobody seems to
have noticed:
| target | source |
|----------------+----------------------|
| target dbug | gdb/dbug-rom.c |
| target picobug | gdb/microblaze-rom.c |
| target dink32 | gdb/dink32-rom.c |
| target m32r | gdb/m32r-rom.c |
| target mon2000 | gdb/m32r-rom.c |
| target ppcbug | gdb/ppcbug-rom.c |
This deletes them, along with finally removing monitor.c.
A manual update will be done separately.
gdb/ChangeLog:
2015-08-24 Pedro Alves <palves@redhat.com>
* NEWS: Mention removed support for the various ROM monitors.
* Makefile.in (ALL_TARGET_OBS): Remove dbug-rom.o, dink32-rom.o,
ppcbug-rom.o, m32r-rom.o, dsrec.o and monitor.o from gdb_target_obs.
* configure.tgt (h8300-*-*): Remove monitor.o and m32r-rom.o from
gdb_target_obs.
(m68*-*-*): Remove monitor.o dbug-rom.o and dsrec.o from
gdb_target_obs.
(microblaze*-linux-*): Remove microblaze-rom.o, monitor.o and
dsrec.o from gdb_target_obs.
(microblaze*-*-*): Remove microblaze-rom.o, monitor.o and dsrec.o
from gdb_target_obs.
(powerpc-*-lynx*178): Remove monitor.o and dsrec.o from
gdb_target_obs.
(powerpc*-*-*): Remove monitor.o, dsrec.o, ppcbug-rom.o and
dink32-rom.o from gdb_target_obs.
(sh*-*-linux*): Remove monitor.o and dsrec.o from gdb_target_obs.
(sh*): Remove monitor.o and dsrec.o from gdb_target_obs.
* dbug-rom.c, dink32-rom.c, dsrec.c, m32r-rom.c, microblaze-rom.c,
monitor.c, monitor.h, ppcbug-rom.c, srec.h: Delete files.
2015-08-24 16:40:26 +02:00
|
|
|
|
2015-08-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention removed support for the various ROM monitors.
|
|
|
|
|
* Makefile.in (ALL_TARGET_OBS): Remove dbug-rom.o, dink32-rom.o,
|
|
|
|
|
ppcbug-rom.o, m32r-rom.o, dsrec.o and monitor.o from gdb_target_obs.
|
|
|
|
|
* configure.tgt (h8300-*-*): Remove monitor.o and m32r-rom.o from
|
|
|
|
|
gdb_target_obs.
|
|
|
|
|
(m68*-*-*): Remove monitor.o dbug-rom.o and dsrec.o from
|
|
|
|
|
gdb_target_obs.
|
|
|
|
|
(microblaze*-linux-*): Remove microblaze-rom.o, monitor.o and
|
|
|
|
|
dsrec.o from gdb_target_obs.
|
|
|
|
|
(microblaze*-*-*): Remove microblaze-rom.o, monitor.o and dsrec.o
|
|
|
|
|
from gdb_target_obs.
|
|
|
|
|
(powerpc-*-lynx*178): Remove monitor.o and dsrec.o from
|
|
|
|
|
gdb_target_obs.
|
|
|
|
|
(powerpc*-*-*): Remove monitor.o, dsrec.o, ppcbug-rom.o and
|
|
|
|
|
dink32-rom.o from gdb_target_obs.
|
|
|
|
|
(sh*-*-linux*): Remove monitor.o and dsrec.o from gdb_target_obs.
|
|
|
|
|
(sh*): Remove monitor.o and dsrec.o from gdb_target_obs.
|
|
|
|
|
* dbug-rom.c, dink32-rom.c, dsrec.c, m32r-rom.c, microblaze-rom.c,
|
|
|
|
|
monitor.c, monitor.h, ppcbug-rom.c, srec.h: Delete files.
|
|
|
|
|
|
2015-08-22 00:49:37 +02:00
|
|
|
|
2015-08-21 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* frame.c (null_frame_id): Explicitly zero-initialize.
|
|
|
|
|
|
2015-08-22 00:45:50 +02:00
|
|
|
|
2015-08-21 Tom Tromey <tromey@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct dwarf2_section_info): Rename field
|
|
|
|
|
'asection' to 'section'.
|
|
|
|
|
(dwarf2_has_info, get_section_bfd_owner, get_section_bfd_section)
|
|
|
|
|
(dwarf2_locate_sections, dwarf2_locate_sections)
|
|
|
|
|
(locate_dwz_sections, locate_v1_virtual_dwo_sections)
|
|
|
|
|
(dwarf2_locate_dwo_sections, dwarf2_locate_dwo_sections)
|
|
|
|
|
(dwarf2_locate_v2_dwp_sections): Adjust.
|
|
|
|
|
|
2015-08-21 18:28:19 +02:00
|
|
|
|
2015-08-21 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* top.h (gdb_in_secondary_prompt_p): Declare.
|
|
|
|
|
* top.c (gdb_secondary_prompt_depth): Define.
|
|
|
|
|
(gdb_in_secondary_prompt_p): Define.
|
|
|
|
|
(gdb_readline_wrapper_cleanup): Decrement
|
|
|
|
|
gdb_secondary_prompt_depth.
|
|
|
|
|
(gdb_readline_wrapper): Increment gdb_secondary_prompt_depth.
|
|
|
|
|
* tui/tui-io.c (tui_getc): Don't clear the prompt line if we
|
|
|
|
|
are in a secondary prompt.
|
|
|
|
|
|
2015-08-21 18:04:25 +02:00
|
|
|
|
2015-08-21 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_getc): Use tui_putc instead of waddch to
|
|
|
|
|
emit the newline.
|
|
|
|
|
|
2015-08-21 18:10:24 +02:00
|
|
|
|
2015-08-21 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdb_bfd.c (gdb_bfd_iovec_fileio_pread): Add QUIT call.
|
|
|
|
|
|
2015-08-21 18:09:20 +02:00
|
|
|
|
2015-08-21 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (struct target_ops) <to_fileio_open>: New argument
|
|
|
|
|
warn_if_slow. Update comment. All implementations updated.
|
|
|
|
|
(target_fileio_open_warn_if_slow): New declaration.
|
|
|
|
|
* target.c (target_fileio_open): Renamed as...
|
|
|
|
|
(target_fileio_open_1): ...this. New argument warn_if_slow.
|
|
|
|
|
Pass warn_if_slow to implementation. Update debug printing.
|
|
|
|
|
(target_fileio_open): New function.
|
|
|
|
|
(target_fileio_open_warn_if_slow): Likewise.
|
|
|
|
|
* gdb_bfd.c (gdb_bfd_iovec_fileio_open): Use new function
|
|
|
|
|
target_fileio_open_warn_if_slow.
|
|
|
|
|
|
2015-08-21 17:55:53 +02:00
|
|
|
|
2015-08-21 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-namespaces.c (linux_mntns_access_fs):
|
|
|
|
|
Do not overwrite old_chain.
|
|
|
|
|
|
2015-07-02 14:10:58 +02:00
|
|
|
|
2015-08-20 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* arch/xtensa.h: New file.
|
|
|
|
|
* xtensa-linux-nat.c (gdb_proc_service.h): New #include.
|
|
|
|
|
(ps_get_thread_area): New function.
|
|
|
|
|
* xtensa-linux-tdep.c (xtensa_linux_init_abi): Add call to
|
|
|
|
|
set_gdbarch_fetch_tls_load_module_address to enable TLS support.
|
|
|
|
|
* xtensa-tdep.c (osabi.h): New #include.
|
|
|
|
|
(xtensa_gdbarch_init): Call gdbarch_init_osabi to register
|
|
|
|
|
xtensa-specific hooks.
|
|
|
|
|
* xtensa-tdep.h (struct xtensa_elf_gregset_t): Add threadptr
|
|
|
|
|
member and move the structure to arch/xtensa.h.
|
|
|
|
|
|
2015-08-21 11:13:27 +02:00
|
|
|
|
2015-08-21 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (struct readahead_cache): New.
|
|
|
|
|
(struct remote_state) <readahead_cache>: New field.
|
|
|
|
|
(remote_open_1): Invalidate the cache.
|
|
|
|
|
(readahead_cache_invalidate, readahead_cache_invalidate_fd): New
|
|
|
|
|
functions.
|
|
|
|
|
(remote_hostio_pwrite): Invalidate the readahead cache.
|
|
|
|
|
(remote_hostio_pread): Rename to ...
|
|
|
|
|
(remote_hostio_pread_vFile): ... this.
|
|
|
|
|
(remote_hostio_pread_from_cache): New function.
|
|
|
|
|
(remote_hostio_pread): Reimplement.
|
|
|
|
|
(remote_hostio_close): Invalidate the readahead cache.
|
|
|
|
|
|
2015-08-19 18:51:31 +02:00
|
|
|
|
2015-08-21 Marcin Cieślak <saper@saper.info> (tiny patch)
|
|
|
|
|
|
|
|
|
|
PR build/18843
|
|
|
|
|
* procfs.c: Include "filestuff.h".
|
|
|
|
|
|
Remove fields curch and cur_line from TUI_CMD_WIN
These fields are currently used to track the location of the cursor
inside the command window. But their usefulness is questionable because
ncurses already internally keeps track of the location of the cursor,
whose coordinates we can query using the functions getyx(), getcurx() or
getcury(). It is an unnecessary pain to keep these fields in sync with
ncurses, and their meaning is not well-defined anyway. For instance, it
is not clear whether the coordinates held in these fields are
authoritative, or whether the coordinates reported by ncurses are.
So to keep things simple, this patch removes these fields and replaces
existing reads of these fields with calls to the appropriate ncurses
querying functions, and replaces writes to these fields with calls to
wmove() (when necessary and applicable).
In the function tui_cont_sig(), I removed the call to wmove() entirely
because moving to (start_line, curch) makes no sense. The move should
have been to (cur_line, curch) -- which would now be a no-op.
Tested on x86_64 Fedora 22, no obvious regressions.
gdb/ChangeLog:
* tui/tui-data.h (tui_command_info): Remove fields cur_line and
curch.
* tui/tui-data.c (tui_clear_win_detail) [CMD_WIN]: Don't set
cur_line or curch, instead call wmove().
(init_win_info) [CMD_WIN]: Likewise.
* tui/tui-io.c (tui_puts): Likewise. Don't read cur_line,
instead call getcury().
(tui_redisplay_readline): Don't set cur_line or curch.
(tui_mld_erase_entire_line): Don't read cur_line, instead call
getcury().
(tui_cont_sig): Remove call to wmove.
(tui_getc): Don't read cur_line or curch, instead call getcury()
or getyx(). Don't set curch.
* tui/tui-win.c (make_visible_with_new_height) [CMD_WIN]: Don't
set cur_line or curch. Always move cursor to (0,0).
2015-08-19 03:08:57 +02:00
|
|
|
|
2015-08-21 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-data.h (tui_command_info): Remove fields cur_line and
|
|
|
|
|
curch.
|
|
|
|
|
* tui/tui-data.c (tui_clear_win_detail) [CMD_WIN]: Don't set
|
|
|
|
|
cur_line or curch, instead call wmove().
|
|
|
|
|
(init_win_info) [CMD_WIN]: Likewise.
|
|
|
|
|
* tui/tui-io.c (tui_puts): Likewise. Don't read cur_line,
|
|
|
|
|
instead call getcury().
|
|
|
|
|
(tui_redisplay_readline): Don't set cur_line or curch.
|
|
|
|
|
(tui_mld_erase_entire_line): Don't read cur_line, instead call
|
|
|
|
|
getcury().
|
|
|
|
|
(tui_cont_sig): Remove call to wmove.
|
|
|
|
|
(tui_getc): Don't read cur_line or curch, instead call getcury()
|
|
|
|
|
or getyx(). Don't set curch.
|
|
|
|
|
* tui/tui-win.c (make_visible_with_new_height) [CMD_WIN]: Don't
|
|
|
|
|
set cur_line or curch. Always move cursor to (0,0).
|
|
|
|
|
|
remote non-stop: Process initially stopped threads before other commands
The main motivation for this is making non-stop / all-stop behave
similarly on initial connection, in order to move in the direction of
reimplementing all-stop mode with the remote target always running in
non-stop mode.
When we connect to a remote target in non-stop mode, we may find
threads either running or already stopped. The act of connecting
itself does not force threads to stop. To handle that, the remote
non-stop connection is currently roughly like this:
#1 - Fetch list of remote threads (qXfer:threads:read, qfThreadInfo,
etc). All threads are assumed to be running until the target
reports an asynchronous stop reply for them.
#2 - Fetch the initial set of threads that were already stopped, with
the '?' packet. (In non-stop, this is coupled with the vStopped
mechanism to be able to retrieve the status of more than one
thread.)
The stop replies fetched in #2 are placed in the pending stop reply
queue, and left for the regular event loop to process. That is,
"target remote" finishes and returns _before_ those stops are
processed.
That means that it's possible to have GDB process further commands
before the initial set of stopped threads is reported to the user.
E.g., before the patch, note how the prompt is printed before the
frame:
Remote debugging using :9999
(gdb)
[Thread 15296] #1 stopped.
0x0000003615a011f0 in ?? ()
Even though thread #1 was not running, for a moment, the user can see
it as such:
$ gdb a.out -ex "set non-stop 1" -ex "tar rem :9999" -ex "info threads" -ex "info registers"
Remote debugging using :9999
Id Target Id Frame
* 1 Thread 4772 (running)
Target is executing. <<<<<<< info registers
(gdb)
[Thread 4772] #1 stopped.
0x0000003615a011f0 in ?? ()
To fix that, this commit makes gdb process all threads found already
stopped at connection time, before giving the prompt to the user.
The fix takes a cue from fork-child.c:startup_inferior [1], and
processes the events locally in remote.c, avoiding the whole
wait_for_inferior/handle_inferior_event path. I decided to try this
approach after noticing that:
- several cases in handle_inferior_event miss checking stop_soon.
- we don't want to fetch the thread list in normal_stop.
and trying to fix them was resulting in sprinkling stop_soon checks in
many places, and uglifying normal_stop even more.
While with this patch, I'm avoiding changing GDB's output other than
when the prompt is printed, I think this approach is more flexible if
we do want to change it. And also, it's likely easier to get rid of
the MI *running event that is still sent for threads that are
initially found stopped, if we want to.
This happens to fix the testsuite too. All non-stop tests are racy
against "target remote" / gdbserver testing currently. That is,
sometimes the tests run, but other times they're just skipped without
any indication of PASS/FAIL. When that happens, the logs show:
target remote localhost:2346
Remote debugging using localhost:2346
(gdb)
[Thread 25418] #1 stopped.
0x0000003615a011f0 in ?? ()
^CQuit
(gdb) Remote debugging from host 127.0.0.1
Killing process(es): 25418
monitor exit
(gdb) Remote connection closed
(gdb) testcase /home/pedro/gdb/mygit/build/../src/gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp completed in 61 seconds
The trouble here is that there's output after the prompt, and the
regex in question doesn't expect that:
-re "Remote debugging using .*$serialport_re.*$gdb_prompt $" {
verbose "Set target to $targetname"
return 0
}
[1] - before startup_inferior was added, we'd go through
wait_for_inferior/handle_inferior_event while going through the shell,
and that turned out problematic.
Tested on x86_64 Fedora 20, gdbserver.
gdb/ChangeLog:
2015-08-20 Pedro Alves <palves@redhat.com>
* infrun.c (print_target_wait_results): Make extern.
* infrun.h (print_target_wait_results): Declare.
* remote.c (set_stop_requested_callback): Delete.
(process_initial_stop_replies): New function.
(remote_start_remote): Use it.
(stop_reply_queue_length): New function.
gdb/testsuite/ChangeLog:
2015-08-20 Pedro Alves <palves@redhat.com>
* gdb.server/connect-stopped-target.c: New file.
* gdb.server/connect-stopped-target.exp: New file.
2015-08-20 19:27:55 +02:00
|
|
|
|
2015-08-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (print_target_wait_results): Make extern.
|
|
|
|
|
* infrun.h (print_target_wait_results): Declare.
|
|
|
|
|
* remote.c (set_stop_requested_callback): Delete.
|
|
|
|
|
(process_initial_stop_replies): New function.
|
|
|
|
|
(remote_start_remote): Use it.
|
|
|
|
|
(stop_reply_queue_length): New function.
|
|
|
|
|
|
2015-08-20 13:30:08 +02:00
|
|
|
|
2015-08-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (process_full_comp_unit): To tell whether
|
|
|
|
|
start_subfile managed to deduce a language, test for
|
|
|
|
|
language_unknown instead of language_c.
|
|
|
|
|
|
2015-08-19 17:12:48 +02:00
|
|
|
|
2015-08-20 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lex.l: Reset the start condition to INITIAL in the rule that
|
|
|
|
|
matches attributes.
|
|
|
|
|
|
dwarf2read.c: Check type of string valued attributes prior to decoding.
This change introduces a new function, dwarf2_string_attr(), which is
a wrapper for dwarf2_attr(). dwarf2read.c has been updated to
call dwarf2_string_attr in most instances where a string-valued
attribute is decoded to produce a string value. In most cases, it
simplifies the code; in some instances, the complexity of the code
remains unchanged.
I performed this change by looking for instances where the
result of DW_STRING was used in an assignment. Many of these
had a pattern which (roughly) looks something like this:
struct attribute *attr = NULL;
attr = dwarf2_attr (die, name, cu);
if (attr != NULL && DW_STRING (attr))
{
const char *str;
...
str = DW_STRING (attr);
... /* Use str in some fashion. */
}
Code of this form is transformed to look like this instead:
const char *str;
str = dwarf2_string_attr (die, name, cu)
if (str != NULL)
{
...
/* Use str in some fashion. */
...
}
In addition to invoking dwarf2_attr() and DW_STRING(),
dwarf2_string_attr() checks to make sure that the attribute's
`form' field matches one of DW_FORM_strp, DW_FORM_string, or
DW_FORM_GNU_strp_alt. If it does not match one of these forms,
it will return a NULL value in addition to calling complaint().
An earlier version of this patch did this type checking for one
particular instance where a string attribute was being decoded.
The situation that I was attempting to handle in that earlier patch is
this:
The Texas Instruments compiler uses the encoding for
DW_AT_MIPS_linkage_name for other purposes. TI uses the encoding,
0x2007, for TI_AT_TI_end_line which, unlike DW_AT_MIPS_linkage_name,
does not have a string-typed value. In this instance, GDB was attempting
to use an integer value as a string pointer, with predictable results.
(GDB would die with a segmentation fault.)
I've added a test which reproduces the problem that I was orignally
wanting to fix. It uses DW_AT_MIPS_linkage name with an associate
value which is a string, and again, where the value is a small
integer.
My test case causes GDB to segfault in an unpatched GDB. There
will be two PASSes in a patched GDB.
Unpatched GDB:
(gdb) ptype f
ERROR: Process no longer exists
UNRESOLVED: gdb.dwarf2/dw2-bad-mips-linkage-name.exp: ptype f
ERROR: Couldn't send ptype g to GDB.
UNRESOLVED: gdb.dwarf2/dw2-bad-mips-linkage-name.exp: ptype g
Patched GDB:
(gdb) ptype f
type = bool ()
(gdb) PASS: gdb.dwarf2/dw2-bad-mips-linkage-name.exp: ptype f
ptype g
type = bool ()
(gdb) PASS: gdb.dwarf2/dw2-bad-mips-linkage-name.exp: ptype g
I see no regressions on an x86_64 native target.
gdb/ChangeLog:
* dwarf2read.c (dwarf2_string_attr): New function.
(lookup_dwo_unit, process_psymtab_comp_unit_reader)
(dwarf2_compute_name, dwarf2_physname, find_file_and_directory)
(read_call_site_scope, namespace_name, guess_full_die_structure_name)
(anonymous_struct_prefix, prepare_one_comp_unit): Use
dwarf2_string_attr in place of dwarf2_attr and DW_STRING.
gdb/testsuite/ChangeLog:
* gdb.dwarf2/dw2-bad-mips-linkage-name.c: New file.
* gdb.dwarf2/dw2-bad-mips-linkage-name.exp: New file.
2015-08-03 23:17:17 +02:00
|
|
|
|
2015-08-19 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_string_attr): New function.
|
|
|
|
|
(lookup_dwo_unit, process_psymtab_comp_unit_reader)
|
|
|
|
|
(dwarf2_compute_name, dwarf2_physname, find_file_and_directory)
|
|
|
|
|
(read_call_site_scope, namespace_name, guess_full_die_structure_name)
|
|
|
|
|
(anonymous_struct_prefix, prepare_one_comp_unit): Use
|
|
|
|
|
dwarf2_string_attr in place of dwarf2_attr and DW_STRING.
|
|
|
|
|
|
2015-08-18 23:02:03 +02:00
|
|
|
|
2015-08-18 Doug Evans <dje@google.com>
|
|
|
|
|
Adrian Sendroiu <adrian.sendroiu@freescale.com>
|
|
|
|
|
|
|
|
|
|
PR mi/18833
|
|
|
|
|
* cli/cli-logging.c (pop_output_files): Don't restore redirection
|
|
|
|
|
if MI-like.
|
|
|
|
|
* mi/mi-out.c: #include "vec.h".
|
|
|
|
|
(ui_filep): New type.
|
|
|
|
|
(DEV_VEC_P (ui_filep)): New type.
|
|
|
|
|
(struct ui_out_data) <buffer, original_buffer>: Delete.
|
|
|
|
|
(struct ui_out_data) <streams>: New member.
|
|
|
|
|
(mi_ui_out_impl): Add data_destroy field.
|
|
|
|
|
(mi_field_string, mi_field_fmt): Update.
|
|
|
|
|
(mi_flush, mi_redirect, field_separator): Update.
|
|
|
|
|
(mi_open, mi_close): Update.
|
|
|
|
|
(mi_out_buffered, mi_out_rewind, mi_out_put): Update.
|
|
|
|
|
(mi_out_data_ctor, mi_out_data_dtor): New functions.
|
|
|
|
|
(mi_out_new): Call mi_out_data_ctor.
|
|
|
|
|
|
2015-08-18 19:29:54 +02:00
|
|
|
|
2015-08-18 Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (strprefix): New.
|
|
|
|
|
(remote_parse_stop_reply): Use strprefix instead of strncmp
|
|
|
|
|
to ensure exact match of keyword.
|
|
|
|
|
|
2015-04-13 17:56:23 +02:00
|
|
|
|
2015-08-18 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* gdb_bfd.c (debug_bfd_cache): New variable.
|
|
|
|
|
(show_bfd_cache_debug): New function.
|
|
|
|
|
(gdb_bfd_open): Add debug logging.
|
|
|
|
|
(gdb_bfd_ref): Likewise.
|
|
|
|
|
(gdb_bfd_unref): Likewise.
|
|
|
|
|
(_initialize_gdb_bfd): Add new set/show command.
|
|
|
|
|
* NEWS: Mention new command.
|
|
|
|
|
|
2015-04-13 17:31:21 +02:00
|
|
|
|
2015-08-18 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* gdb_bfd.c (bfd_sharing): New variable.
|
|
|
|
|
(show_bfd_sharing): New function.
|
|
|
|
|
(gdb_bfd_open): Check bfd_sharing variable.
|
|
|
|
|
(_initialize_gdb_bfd): Add new set/show command.
|
|
|
|
|
* NEWS: Mention new command.
|
|
|
|
|
|
gdb: Improve cache matching criteria for the bfd cache.
Within gdb open bfd objects are reused where possible if an attempt is
made to reopen a file that is already being debugged. To spot if the on
disc file has changed gdb currently examines the mtime of the file and
compares it to the mtime of the open bfd in the cache.
A problem exists when the on disc file is being rapidly regenerated, as
happens, for example, with automated testing. In some cases the file is
generated so quickly that the mtime appears not to change, while the on
disc file has changed.
This patch extends the bfd cache to also hold the file size of the file,
the inode of the file, and the device id of the file; gdb can then
compare filename, file size, mtime, inode, and device id to determine if
an existing bfd object can be reused.
gdb/ChangeLog:
* gdb_bfd.c (struct gdb_bfd_data): Add size, inode, and device id
field.
(struct gdb_bfd_cache_search): Likewise.
(eq_bfd): Compare the size, inode, and device id fields.
(gdb_bfd_open): Initialise the size, inode, and device id fields.
(gdb_bfd_ref): Likewise.
(gdb_bfd_unref): Likewise.
2015-04-13 15:53:48 +02:00
|
|
|
|
2015-08-18 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* gdb_bfd.c (struct gdb_bfd_data): Add size, inode, and device id
|
|
|
|
|
field.
|
|
|
|
|
(struct gdb_bfd_cache_search): Likewise.
|
|
|
|
|
(eq_bfd): Compare the size, inode, and device id fields.
|
|
|
|
|
(gdb_bfd_open): Initialise the size, inode, and device id fields.
|
|
|
|
|
(gdb_bfd_ref): Likewise.
|
|
|
|
|
(gdb_bfd_unref): Likewise.
|
|
|
|
|
|
2015-08-18 12:04:30 +02:00
|
|
|
|
2015-08-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_always_non_stop_p): If the linux_ops
|
|
|
|
|
target implements to_always_non_stop_p, call it.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_always_non_stop_p): New function.
|
|
|
|
|
(x86_linux_create_target): Install it as to_always_non_stop_p
|
|
|
|
|
method.
|
|
|
|
|
|
2015-08-17 22:07:11 +02:00
|
|
|
|
2015-08-17 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* ui-out.c (default_ui_out_impl): Add comment.
|
|
|
|
|
|
2015-08-17 21:45:42 +02:00
|
|
|
|
2015-08-17 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (type_aggregate_p): New function.
|
|
|
|
|
(PrimaryExpression : TypeExp '.' IdentifierExp): Use it.
|
|
|
|
|
(classify_inner_name): Likewise.
|
|
|
|
|
* d-namespace.c (d_lookup_nested_symbol): Handle TYPE_CODE_ENUM.
|
|
|
|
|
|
2015-08-16 07:08:47 +02:00
|
|
|
|
2015-08-15 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* psymtab.c (add_psymbol_to_bcache): Remove "val" arg. All callers
|
|
|
|
|
updated.
|
|
|
|
|
(add_psymbol_to_list): Ditto.
|
|
|
|
|
|
2015-08-16 01:46:20 +02:00
|
|
|
|
2015-08-15 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* dbxread.c (dbx_end_psymtab): Renamed from end_psymtab. All callers
|
|
|
|
|
updated. Call end_psymtab_common.
|
|
|
|
|
* dwarf2read.c (process_psymtab_comp_unit_reader): Call
|
|
|
|
|
end_psymtab_common.
|
|
|
|
|
(build_type_psymtabs_reader): Ditto.
|
|
|
|
|
* psympriv.h (sort_pst_symbols): Delete.
|
|
|
|
|
(end_psymtab_common): Declare.
|
|
|
|
|
* psymtab.c (sort_pst_symbols): Make static.
|
|
|
|
|
(end_psymtab_common): New function.
|
|
|
|
|
* xcoffread.c (xcoff_end_psymtab): Call end_psymtab_common.
|
|
|
|
|
|
2015-08-16 01:25:53 +02:00
|
|
|
|
2015-08-15 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* defs.h (LANGUAGE_BITS): Define.
|
|
|
|
|
* psympriv.h (partial_symbol) <domain>: Use SYMBOL_DOMAIN_BITS.
|
|
|
|
|
(partial_symbol) <aclass>: Use SYMBOL_ACLASS_BITS.
|
|
|
|
|
* symtab.h (general_symbol_info> <language>: Usage LANGUAGE_BITS.
|
|
|
|
|
(minimal_symbol_type): Add nr_minsym_types.
|
|
|
|
|
(MINSYM_TYPE_BITS): Define.
|
|
|
|
|
(minimal_symbol) <type>: Use MINSYM_TYPE_BITS.
|
|
|
|
|
(domain_enum_tag): Add NR_DOMAINS.
|
|
|
|
|
(SYMBOL_DOMAIN_BITS): Change from 4 to 3.
|
|
|
|
|
(SYMBOL_ACLASS_BITS): Define from 6 to 5.
|
|
|
|
|
|
2015-08-16 00:51:00 +02:00
|
|
|
|
2015-08-15 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* objfiles.h: Whitespace cleanup.
|
|
|
|
|
* psympriv.h: Whitespace cleanup.
|
|
|
|
|
* psymtab.c: Whitespace/coding convention cleanup.
|
|
|
|
|
|
2015-07-28 21:00:58 +02:00
|
|
|
|
2015-08-15 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* inferior.c (detach_inferior_command): Don't call
|
|
|
|
|
any_thread_of_process when pid is 0.
|
|
|
|
|
(kill_inferior_command): Likewise.
|
|
|
|
|
|
2015-08-15 06:45:54 +02:00
|
|
|
|
2015-08-14 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/11833
|
|
|
|
|
* NEWS: Document new /s modifier for the disassemble command.
|
|
|
|
|
* cli/cli-cmds.c (disassemble_command): Add support for /s.
|
|
|
|
|
(_initialize_cli_cmds): Update online docs of disassemble command.
|
|
|
|
|
* disasm.c: #include "source.h".
|
|
|
|
|
(struct deprecated_dis_line_entry): Renamed from dis_line_entry.
|
|
|
|
|
All uses updated.
|
|
|
|
|
(dis_line_entry): New struct.
|
|
|
|
|
(hash_dis_line_entry, eq_dis_line_entry): New functions.
|
|
|
|
|
(allocate_dis_line_table): New functions.
|
|
|
|
|
(maybe_add_dis_line_entry, line_has_code_p): New functions.
|
|
|
|
|
(dump_insns): New arg end_pc. All callers updated.
|
|
|
|
|
(do_mixed_source_and_assembly_deprecated): Renamed from
|
|
|
|
|
do_mixed_source_and_assembly. All callers updated.
|
|
|
|
|
(do_mixed_source_and_assembly): New function.
|
|
|
|
|
(gdb_disassembly): Handle /s (DISASSEMBLY_SOURCE).
|
|
|
|
|
* disasm.h (DISASSEMBLY_SOURCE_DEPRECATED): Renamed from
|
|
|
|
|
DISASSEMBLY_SOURCE. All uses updated.
|
|
|
|
|
(DISASSEMBLY_SOURCE): New macro.
|
|
|
|
|
* mi/mi-cmd-disas.c (mi_cmd_disassemble): New modes 4,5.
|
|
|
|
|
|
2015-08-15 02:28:11 +02:00
|
|
|
|
2015-08-14 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (PrimaryExpression : TypeExp '.' IdentifierExp): Rename
|
|
|
|
|
`typename' to `type_name' to avoid C++ reserved word.
|
|
|
|
|
|
2015-08-15 00:00:04 +02:00
|
|
|
|
2015-08-14 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* location.c (EL_TYPE, EL_LINESPEC, EL_PROBE, EL_ADDRESS)
|
|
|
|
|
(EL_EXPLICIT, EL_STRING): Change macro parameter to "P" to
|
|
|
|
|
silence ARI errors.
|
|
|
|
|
|
2015-08-14 21:25:17 +02:00
|
|
|
|
2015-08-14 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (PrimaryExpression : TypeExp '.' IdentifierExp): Use
|
|
|
|
|
xstrprintf instead of malloc and sprintf.
|
|
|
|
|
(PrimaryExpression : IdentifierExp): Avoid operator at end of line.
|
|
|
|
|
(lex_one_token): Likewise.
|
|
|
|
|
|
2015-06-11 11:37:31 +02:00
|
|
|
|
2015-08-14 Matthew Fortune <matthew.fortune@imgtec.com>
|
|
|
|
|
|
|
|
|
|
* solib-svr4.c (read_program_header): Add base_addr argument to
|
|
|
|
|
report the runtime address of the segment.
|
|
|
|
|
(find_program_interpreter): Update read_program_header call to pass
|
|
|
|
|
a NULL pointer for the new argument.
|
|
|
|
|
(scan_dyntag): Add ptr_addr argument to report the runtime address
|
|
|
|
|
of the tag payload.
|
|
|
|
|
(scan_dyntag_auxv): Likewise and use thew new base_addr argument of
|
|
|
|
|
read_program_header to get the base address of the dynamic segment.
|
|
|
|
|
(elf_locate_base): Update uses of scan_dyntag, scan_dyntag_auxv and
|
|
|
|
|
read_program_header.
|
|
|
|
|
(elf_locate_base): Scan for and handle DT_MIPS_RLD_MAP_REL.
|
|
|
|
|
|
2015-08-14 14:07:23 +02:00
|
|
|
|
2015-08-14 Matthew Fortune <matthew.fortune@imgtec.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Matthew Fortune.
|
|
|
|
|
|
2015-08-13 21:35:09 +02:00
|
|
|
|
2015-08-13 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (%union): Add voidval.
|
|
|
|
|
(%token): Add UNKNOWN_NAME as a token to represent an unclassified
|
|
|
|
|
name in the lexing stage.
|
|
|
|
|
(PostfixExpression): Move symbol completion handling in grammar here
|
|
|
|
|
from PrimaryExpression.
|
|
|
|
|
(PrimaryExpression): Move routines to handle resolving identifier
|
|
|
|
|
tokens in the grammar here from push_expression_name.
|
|
|
|
|
(IdentifierExp): Remove the handling of alternating '.' and identifier
|
|
|
|
|
tokens.
|
|
|
|
|
(TypeExp): Allow TypeExp to be wrapped in parenthesis in the grammar.
|
|
|
|
|
(BasicType): Remove C-style typename rules.
|
|
|
|
|
(d_type_from_name, d_module_from_name, push_variable)
|
|
|
|
|
(push_fieldnames, push_type_name, push_module_name)
|
|
|
|
|
(push_expression_name): Remove.
|
|
|
|
|
(lex_one_token): Rename from yylex. Replace pstate with par_state.
|
|
|
|
|
(token_and_value): New type.
|
|
|
|
|
(token_fifo, popping, name_obstack): New globals.
|
|
|
|
|
(classify_name): New function.
|
|
|
|
|
(classify_inner_name): Likewise.
|
|
|
|
|
(yylex): Likewise.
|
|
|
|
|
(d_parse): Initialize token_fifo, popping and name_obstack.
|
|
|
|
|
|
2015-08-13 20:34:15 +02:00
|
|
|
|
2015-08-13 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add d-namespace.c.
|
|
|
|
|
(COMMON_OBS): Add d-namespace.o.
|
|
|
|
|
* d-lang.c (d_language_defn): Use d_lookup_symbol_nonlocal as the
|
|
|
|
|
la_lookup_symbol_nonlocal callback function pointer.
|
|
|
|
|
* d-lang.h (d_lookup_symbol_nonlocal): New declaration.
|
|
|
|
|
(d_lookup_nested_symbol): New declaration.
|
|
|
|
|
* d-namespace.c: New file.
|
|
|
|
|
|
2015-08-13 19:56:42 +02:00
|
|
|
|
2015-08-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (pyuw_sniffer): Install the invalidate
|
|
|
|
|
cleanup after the decref cleanup, not before.
|
|
|
|
|
|
2015-08-13 09:54:09 +02:00
|
|
|
|
2015-08-13 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c: Include namespace.h
|
|
|
|
|
(aux_add_nonlocal_symbols): Fix a function name in comment.
|
|
|
|
|
(ada_add_block_renamings): New.
|
|
|
|
|
(add_nonlocal_symbols): Add global renamings handling.
|
|
|
|
|
(ada_lookup_symbol_list_worker): Move the symbol lookup part
|
|
|
|
|
to...
|
|
|
|
|
(ada_add_all_symbols): ... this new function.
|
|
|
|
|
(ada_add_block_symbols): Try to match the input name against the
|
|
|
|
|
"using directives list", perform a recursive symbol lookup on
|
|
|
|
|
the matched declarations.
|
|
|
|
|
* block.h (struct block): Move the_namespace to top-level as
|
|
|
|
|
namespace_info. Remove the language_specific field.
|
|
|
|
|
(BLOCK_NAMESPACE): Update access to the namespace_info field.
|
|
|
|
|
* buildsym.h (using_directives): Rename into...
|
|
|
|
|
(local_using_directives): ... this.
|
|
|
|
|
(global_using_directives): New.
|
|
|
|
|
(struct context_stack): Rename the using_directives field into
|
|
|
|
|
local_using_directives.
|
|
|
|
|
* buildsym.c (finish_block_internal): Deal with the proper
|
|
|
|
|
using directives repository (local or global).
|
|
|
|
|
(prepare_for_building): Reset local_using_directives. Assert
|
|
|
|
|
that there is no pending global using directive.
|
|
|
|
|
(reset_symtab_globals): Reset global_using_directives and
|
|
|
|
|
local_using_directives.
|
|
|
|
|
(end_symtab_get_static_block): Don't ignore symtabs that have
|
|
|
|
|
only using directives.
|
|
|
|
|
(push_context): Update references to local_using_directives.
|
|
|
|
|
(buildsym_init): Do not reset using_directives.
|
|
|
|
|
* cp-support.c: Include namespace.h.
|
|
|
|
|
* cp-support.h (struct using_direct): Move to namespace.h.
|
|
|
|
|
(cp_add_using_directives): Move to namespace.h.
|
|
|
|
|
* cp-namespace.c: Include namespace.h
|
|
|
|
|
(cp_add_using_directive): Move to namespace.c, rename it to
|
|
|
|
|
add_using_directive, add a "using_directives" argument and use
|
|
|
|
|
it as the pending using directives repository. All callers
|
|
|
|
|
updated.
|
|
|
|
|
* dwarf2read.c (using_directives): New.
|
|
|
|
|
(read_import_statement): Call using_directives.
|
|
|
|
|
(read_func_scope): Update references to local_using_directives.
|
|
|
|
|
(read_lexical_block_scope): Likewise.
|
|
|
|
|
(read_namespace): Update the heading comment, call
|
|
|
|
|
using_directives.
|
|
|
|
|
* namespace.h: New file.
|
|
|
|
|
* namespace.c: New file.
|
|
|
|
|
* Makefile.in (SFILES): Add namespace.c.
|
|
|
|
|
(COMMON_OBS): Add namespace.o
|
|
|
|
|
|
[amd64] Invalid return address after displaced stepping
Making all-stop run on top of non-stop caused a small regression
in behavior. This was observed on x86_64-linux. The attached testcase
is in C whereas the investigation was done with an Ada program,
but it's the same scenario, and using a C testcase allows wider testing.
Basically: I am debugging a single-threaded program, and currently
stopped inside a function provided by a shared-library, at a line
calling a subprogram provided by a second shared library, and trying
to "next" over that function call.
Before we changed the default all-stop behavior, we had:
7 Impl_Initialize; -- Stop here and try "next" over this line
(gdb) n
8 return 5; <<-- OK
But now, "next" just stops much earlier:
(gdb) n
0x00007ffff7bd8560 in impl.initialize@plt () from /[...]/lib/libpck.so
What happens is that next stops at a call instruction, which calls
the function's PLT, and GDB fails to notice that the inferior stepped
into a subroutine, and so decides that we're done. We can see another
symptom of the same issue by looking at the backtrace at the point
GDB stopped:
(gdb) bt
#0 0x00007ffff7bd8560 in impl.initialize@plt ()
from /[...]/lib/libpck.so
#1 0x00000000f7bd86f9 in ?? ()
#2 0x00007fffffffdf50 in ?? ()
#3 0x0000000000401893 in a () at /[...]/a.adb:7
Backtrace stopped: frame did not save the PC
With a functioning GDB, the backtrace looks like the following instead:
#0 0x00007ffff7bd8560 in impl.initialize@plt ()
from /[...]/lib/libpck.so
#1 0x00007ffff7bd86f9 in sub () at /[...]/pck.adb:7
#2 0x0000000000401893 in a () at /[...]/a.adb:7
Note how, for frame #1, the address looks quite similar, except
for the high-order bits not being set:
#1 0x00007ffff7bd86f9 in sub () at /[...]/pck.adb:7 <<<-- OK
#1 0x00000000f7bd86f9 in ?? () <<<-- WRONG
^^^^
||||
Wrong
Investigating this further led me to displaced stepping.
As we are "next"-ing from a location where a breakpoint is inserted,
we need to step out of it, and since we're on non-stop mode, we need
to do it using displaced stepping. And looking at
amd64-tdep.c:amd64_displaced_step_fixup, I found the code that handles
the return address:
regcache_cooked_read_unsigned (regs, AMD64_RSP_REGNUM, &rsp);
retaddr = read_memory_unsigned_integer (rsp, retaddr_len, byte_order);
retaddr = (retaddr - insn_offset) & 0xffffffffUL;
The mask used to compute retaddr looks wrong to me, keeping only
4 bytes instead of 8, and explains why the high order bits of
the backtrace are unset. What happens is that, after the displaced
stepping has completed, GDB restores that return address at the location
where the program expects it. But because the top half bits of
the address have been masked out, the return address is now invalid.
The incorrect behavior of the "next" command and the backtrace at
that location are the first symptoms of that. Another symptom is
that this actually alters the behavior of the program, where a "cont"
from there soon leads to a SEGV when the inferior tries to jump back
to that incorrect return address:
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x00000000f7bd86f9 in ?? ()
^^^^^^^^^^^^^^^^^^
This patch fixes the issue by using a mask that seems more appropriate
for this architecture.
gdb/ChangeLog:
* amd64-tdep.c (amd64_displaced_step_fixup): Fix the mask used to
compute RETADDR.
gdb/testsuite/ChangeLog:
* gdb.base/dso2dso-dso2.c, gdb.base/dso2dso-dso2.h,
gdb.base/dso2dso-dso1.c, gdb.base/dso2dso-dso1.h, gdb.base/dso2dso.c,
gdb.base/dso2dso.exp: New files.
Tested on x86_64-linux, no regression.
2015-08-12 18:33:19 +02:00
|
|
|
|
2015-08-12 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c (amd64_displaced_step_fixup): Fix the mask used to
|
|
|
|
|
compute RETADDR.
|
|
|
|
|
|
2015-08-13 18:48:12 +02:00
|
|
|
|
2015-08-12 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-throw.c (re_set_exception_catchpoint) Rename
|
|
|
|
|
reserved C++ keyword "explicit" to "explicit_loc".
|
|
|
|
|
* breakpoint.c (create_overlay_event_breakpoint)
|
|
|
|
|
(create_longjmp_master_breakpoint)
|
|
|
|
|
(create_std_terminate_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint, update_static_tracepoint):
|
|
|
|
|
Rename reserved C++ keyword "explicit" to "explicit_loc".
|
|
|
|
|
* completer.c (collect_explicit_location_matches)
|
|
|
|
|
(explicit_location_completer): Rename reserved C++ keyword
|
|
|
|
|
"explicit" to "explicit_loc".
|
|
|
|
|
* linespec.c (struct linespec) <explicit>: Rename to "explicit_loc".
|
|
|
|
|
(canonicalize_linespec, create_sals_line_offset)
|
|
|
|
|
(convert_linespec_to_sals, convert_explicit_location_to_sals)
|
|
|
|
|
(event_location_to_sals, decode_objc): Rename reserved C++ keyword
|
|
|
|
|
"explicit" to "explicit_loc".
|
|
|
|
|
* location.c (struct event_location) <explicit>: Rename to
|
|
|
|
|
"explicit_loc".
|
|
|
|
|
(initialize_explicit_location, new_explicit_location)
|
|
|
|
|
(explicit_location_to_string_internal, explicit_location_to_linespec):
|
|
|
|
|
Rename reserved C++ keyword "explicit" to "explicit_loc".
|
|
|
|
|
* location.h (explicit_location_to_string)
|
|
|
|
|
(explicit_location_to_linespec, initialize_explicit_location)
|
|
|
|
|
(new_explicit_location): Rename reserved C++ keyword "explicit"
|
|
|
|
|
to "explicit_loc".
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Rename reserved C++
|
|
|
|
|
keyword "explicit" to "explicit_loc".
|
|
|
|
|
|
Initialize `location' in gdbpy_decode_line
BuildBot flagged an uninitialized variable coming from one of the patches
in my recently committed locations/explicit patchset.
The following patch fixes this.
gdb/ChangeLog
* python/python.c (gdbpy_decode_line): Initialize `location' to NULL
and only call decode_line_1 when it is non-NULL.
diff --git a/gdb/python/python.c b/gdb/python/python.c
index c28f98b..14da62c 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -730,7 +730,7 @@ gdbpy_decode_line (PyObject *self, PyObject *args)
PyObject *result = NULL;
PyObject *return_result = NULL;
PyObject *unparsed = NULL;
- struct event_location *location;
+ struct event_location *location = NULL;
if (! PyArg_ParseTuple (args, "|s", &arg))
return NULL;
@@ -747,7 +747,7 @@ gdbpy_decode_line (PyObject *self, PyObject *args)
TRY
{
- if (arg)
+ if (location != NULL)
sals = decode_line_1 (location, 0, 0, 0);
else
{
2015-08-12 20:31:24 +02:00
|
|
|
|
2015-08-12 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_decode_line): Initialize `location' to NULL
|
|
|
|
|
and only call decode_line_1 when it is non-NULL.
|
|
|
|
|
|
2015-08-12 10:36:09 +02:00
|
|
|
|
2015-08-12 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (bp_loc_is_permanent): Return 0 when breakpoint
|
|
|
|
|
location address is not meaningful.
|
|
|
|
|
(breakpoint_address_is_meaningful): Update comment.
|
|
|
|
|
|
2015-08-12 02:09:36 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention explicit locations.
|
|
|
|
|
* breakpoint.c [LOCATION_HELP_STRING]: New macro.
|
|
|
|
|
[BREAK_ARGS_HELP]: Use LOCATION_HELP_STRING.
|
|
|
|
|
(_initialize_breakpoint): Update documentation for
|
|
|
|
|
"clear", "break", "trace", "strace", "ftrace", and "dprintf".
|
|
|
|
|
|
Explicit locations: MI support for explicit locations
This patch adds support for explicit locations to MI's -break-insert
command. The new options, documented in the User Manual, are
--source, --line, --function, and --label.
gdb/ChangeLog:
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Add support for
explicit locations, options "--source", "--function",
"--label", and "--line".
gdb/testsuite/ChangeLog:
* gdb.mi/mi-break.exp (test_explicit_breakpoints): New proc.
(at toplevel): Call test_explicit_breakpoints.
* gdb.mi/mi-dprintf.exp: Add tests for explicit dprintf
breakpoints.
* lib/mi-support.exp (mi_make_breakpoint): Add support for
breakpoint conditions, "-cond".
2015-08-12 02:09:36 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Add support for
|
|
|
|
|
explicit locations, options "--source", "--function",
|
|
|
|
|
"--label", and "--line".
|
|
|
|
|
|
2015-08-12 02:09:36 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* completer.c: Include location.h.
|
|
|
|
|
(enum match_type): New enum.
|
|
|
|
|
(location_completer): Rename to ...
|
|
|
|
|
(linespec_completer): ... this.
|
|
|
|
|
(collect_explicit_location_matches, backup_text_ptr)
|
|
|
|
|
(explicit_location_completer): New functions.
|
|
|
|
|
(location_completer): "New" function; handle linespec
|
|
|
|
|
and explicit location completions.
|
|
|
|
|
(complete_line_internal): Remove all location completer-specific
|
|
|
|
|
handling.
|
|
|
|
|
* linespec.c (linespec_lexer_lex_keyword, is_ada_operator)
|
|
|
|
|
(find_toplevel_char): Export.
|
|
|
|
|
(linespec_parse_line_offset): Export.
|
|
|
|
|
Issue error if STRING is not numerical.
|
|
|
|
|
(gdb_get_linespec_parser_quote_characters): New function.
|
|
|
|
|
* linespec.h (linespec_parse_line_offset): Declare.
|
|
|
|
|
(get_gdb_linespec_parser_quote_characters): Declare.
|
|
|
|
|
(is_ada_operator): Declare.
|
|
|
|
|
(find_toplevel_char): Declare.
|
|
|
|
|
(linespec_lexer_lex_keyword): Declare.
|
|
|
|
|
* location.c (explicit_to_event_location): New function.
|
|
|
|
|
(explicit_location_lex_one): New function.
|
|
|
|
|
(string_to_explicit_location): New function.
|
|
|
|
|
(string_to_event_location): Handle explicit locations.
|
|
|
|
|
* location.h (explicit_to_event_location): Declare.
|
|
|
|
|
(string_to_explicit_location): Declare.
|
|
|
|
|
|
Explicit locations: introduce explicit locations
This patch add support for explicit locations and switches many linespec
locations to this new location type. This patch also converts all
linespec locations entered by the user to an explicit representation
internally (thus bypassing the linespec parser when resetting the
breakpoint).
This patch does not introduce any user-visible changes.
gdb/ChangeLog:
* break-catch-throw.c (re_set_exception_catchpoint): Convert
linespec into explicit location.
* breakpoint.c (create_overlay_breakpoint)
(create_longjmp_master_breakpoint)
(create_std_terminate_master_breakpoint)
(create_exception_master_breakpoint): Convert linespec into explicit
location.
(update_static_tracepoint): Convert linespec into explicit location.
* linespec.c (enum offset_relative_sign, struct line_offset): Move
location.h.
(struct linespec) <expression, expr_pc, source_filename>
<function_name, label_name, line_offset>: Replace with ...
<explicit>: ... this.
<is_linespec>: New member.
(PARSER_EXPLICIT): New accessor macro.
(undefined_label_error): New function.
(source_file_not_found_error): New function.
(linespec_parse_basic): The parser result is now an explicit location.
Use PARSER_EXPLICIT to access it.
Use undefined_label_error.
(canonicalize_linespec): Convert canonical linespec into explicit
location.
Move string representation of location to explicit_location_to_linespec
and use it and explicit_location_to_string to save string
representations of the canonical location.
(create_sals_line_offset, convert_linespec_to_sals): `ls' contains an
explicit location. Update all references.
(convert_explicit_location_to_sals): New function.
(parse_linespec): Use PARSER_EXPLICIT to access the parser
result's explicit location.
(linespec_state_constructor): Initialize is_linespec.
Use PARSER_EXPLICIT.
(linespec_parser_delete): Use PARSER_EXPLICIT to access the parser's
result.
(event_location_to_sals): For linespec locations, set is_linespec.
Handle explicit locations.
(decode_objc): 'ls' contains an explicit location now. Update all
references.
(symtabs_from_filename): Use source_file_not_found_error.
* location.c (struct event_location.u) <explicit>: New member.
(initialize_explicit_location): New function.
(initialize_event_location): Initialize explicit locations.
(new_explicit_location, get_explicit_location)
(get_explicit_location_const): New functions.
(explicit_to_string_internal): New function; most of contents moved
from canonicalize_linespec.
(explicit_location_to_string): New function.
(explicit_location_to_linespec): New function.
(copy_event_location, delete_event_location)
(event_location_to_string_const, event_location_empty_p): Handle
explicit locations.
* location.h (enum offset_relative_sign, struct line_offset): Move
here from linespec.h.
(enum event_location_type): Add EXPLICIT_LOCATION.
(struct explicit_location): New structure.
(explicit_location_to_string): Declare.
(explicit_location_to_linespec): Declare.
(new_explicit_location, get_explicit_locationp
(get_explicit_location_const, initialize_explicit_location): Declare.
2015-08-12 02:09:35 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-throw.c (re_set_exception_catchpoint): Convert
|
|
|
|
|
linespec into explicit location.
|
|
|
|
|
* breakpoint.c (create_overlay_breakpoint)
|
|
|
|
|
(create_longjmp_master_breakpoint)
|
|
|
|
|
(create_std_terminate_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint): Convert linespec into explicit
|
|
|
|
|
location.
|
|
|
|
|
(update_static_tracepoint): Convert linespec into explicit location.
|
|
|
|
|
* linespec.c (enum offset_relative_sign, struct line_offset): Move
|
|
|
|
|
location.h.
|
|
|
|
|
(struct linespec) <expression, expr_pc, source_filename>
|
|
|
|
|
<function_name, label_name, line_offset>: Replace with ...
|
|
|
|
|
<explicit>: ... this.
|
|
|
|
|
<is_linespec>: New member.
|
|
|
|
|
(PARSER_EXPLICIT): New accessor macro.
|
|
|
|
|
(undefined_label_error): New function.
|
|
|
|
|
(source_file_not_found_error): New function.
|
|
|
|
|
(linespec_parse_basic): The parser result is now an explicit location.
|
|
|
|
|
Use PARSER_EXPLICIT to access it.
|
|
|
|
|
Use undefined_label_error.
|
|
|
|
|
(canonicalize_linespec): Convert canonical linespec into explicit
|
|
|
|
|
location.
|
|
|
|
|
Move string representation of location to explicit_location_to_linespec
|
|
|
|
|
and use it and explicit_location_to_string to save string
|
|
|
|
|
representations of the canonical location.
|
|
|
|
|
(create_sals_line_offset, convert_linespec_to_sals): `ls' contains an
|
|
|
|
|
explicit location. Update all references.
|
|
|
|
|
(convert_explicit_location_to_sals): New function.
|
|
|
|
|
(parse_linespec): Use PARSER_EXPLICIT to access the parser
|
|
|
|
|
result's explicit location.
|
|
|
|
|
(linespec_state_constructor): Initialize is_linespec.
|
|
|
|
|
Use PARSER_EXPLICIT.
|
|
|
|
|
(linespec_parser_delete): Use PARSER_EXPLICIT to access the parser's
|
|
|
|
|
result.
|
|
|
|
|
(event_location_to_sals): For linespec locations, set is_linespec.
|
|
|
|
|
Handle explicit locations.
|
|
|
|
|
(decode_objc): 'ls' contains an explicit location now. Update all
|
|
|
|
|
references.
|
|
|
|
|
(symtabs_from_filename): Use source_file_not_found_error.
|
|
|
|
|
* location.c (struct event_location.u) <explicit>: New member.
|
|
|
|
|
(initialize_explicit_location): New function.
|
|
|
|
|
(initialize_event_location): Initialize explicit locations.
|
|
|
|
|
(new_explicit_location, get_explicit_location)
|
|
|
|
|
(get_explicit_location_const): New functions.
|
|
|
|
|
(explicit_to_string_internal): New function; most of contents moved
|
|
|
|
|
from canonicalize_linespec.
|
|
|
|
|
(explicit_location_to_string): New function.
|
|
|
|
|
(explicit_location_to_linespec): New function.
|
|
|
|
|
(copy_event_location, delete_event_location)
|
|
|
|
|
(event_location_to_string_const, event_location_empty_p): Handle
|
|
|
|
|
explicit locations.
|
|
|
|
|
* location.h (enum offset_relative_sign, struct line_offset): Move
|
|
|
|
|
here from linespec.h.
|
|
|
|
|
(enum event_location_type): Add EXPLICIT_LOCATION.
|
|
|
|
|
(struct explicit_location): New structure.
|
|
|
|
|
(explicit_location_to_string): Declare.
|
|
|
|
|
(explicit_location_to_linespec): Declare.
|
|
|
|
|
(new_explicit_location, get_explicit_locationp
|
|
|
|
|
(get_explicit_location_const, initialize_explicit_location): Declare.
|
|
|
|
|
|
2015-08-12 02:09:35 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-throw.c (re_set_exception_catchpoint): Convert
|
|
|
|
|
linespec for stap probe to probe location.
|
|
|
|
|
* breakpoint.c (create_longjmp_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint): Likewise.
|
|
|
|
|
(break_command_1): Remove local variable `arg_cp'.
|
|
|
|
|
Check location type to set appropriate breakpoint ops methods.
|
|
|
|
|
(trace_command): Likewise.
|
|
|
|
|
* linespec.c (event_location_to_sals): Assert on probe locations.
|
|
|
|
|
* location.c (EL_PROBE): Add macro definition.
|
|
|
|
|
(new_probe_location, get_probe_location): New functions.
|
|
|
|
|
(copy_event_location, delete_event_location, event_location_to_string)
|
|
|
|
|
(string_to_event_location, event_location_empty_p): Handle probe
|
|
|
|
|
locations.
|
|
|
|
|
* location.h (enum event_location_type): Add PROBE_LOCATION.
|
|
|
|
|
(new_probe_location, get_probe_location): Declare.
|
|
|
|
|
* probe.c (parse_probes): Assert that LOCATION is a probe location.
|
|
|
|
|
Convert linespec into probe location.
|
|
|
|
|
|
2015-08-12 02:09:35 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (create_thread_event_breakpoint, init_breakpoint_sal):
|
|
|
|
|
Convert linespec to address location.
|
|
|
|
|
* linespec.c (canonicalize_linespec): Do not handle address
|
|
|
|
|
locations here.
|
|
|
|
|
(convert_address_location_to_sals): New function; contents moved
|
|
|
|
|
from ...
|
|
|
|
|
(convert_linespc_to_sals): ... here.
|
|
|
|
|
(parse_linespec): Remove address locations from linespec grammar.
|
|
|
|
|
Remove handling of address locations.
|
|
|
|
|
(linespec_lex_to_end): Remove handling of address linespecs.
|
|
|
|
|
(event_location_to_sals): Handle ADDRESS_LOCATION.
|
|
|
|
|
(linespec_expression_to_pc): Export.
|
|
|
|
|
* linespec.h (linespec_expression_to_pc): Add declaration.
|
|
|
|
|
* location.c (struct event_location.u) <address>: New member.
|
|
|
|
|
(new_address_location, get_address_location): New functions.
|
|
|
|
|
(copy_event_location, delete_event_location, event_location_to_string)
|
|
|
|
|
(string_to_event_location, event_location_empty_p): Handle address
|
|
|
|
|
locations.
|
|
|
|
|
* location.h (enum event_location_type): Add ADDRESS_LOCATION.
|
|
|
|
|
(new_address_location, get_address_location): Declare.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Convert linespec
|
|
|
|
|
to address location.
|
|
|
|
|
* spu-tdep.c (spu_catch_start): Likewise.
|
|
|
|
|
|
Explicit locations: use new location API
This patch converts the code base to use the new struct event_location
API being introduced. This patch preserves the current functionality and
adds no new features.
The "big picture" API usage introduced by this patch may be illustrated
with a simple exmaple. Where previously developers would write:
void
my_command (char *arg, int from_tty)
{
create_breakpoint (..., arg, ...);
...
}
one now uses:
void
my_command (char *arg, int from_tty)
{
struct event_locaiton *location;
struct cleanup *back_to;
location = string_to_event_locaiton (&arg, ...);
back_to = make_cleanup_delete_event_location (location);
create_breakpoint (..., location, ...);
do_cleanups (back_to);
}
Linespec-decoding functions (now called location-decoding) such as
decode_line_full no longer skip argument pointers over processed input.
That functionality has been moved into string_to_event_location as
demonstrated above.
gdb/ChangeLog
* ax-gdb.c: Include location.h.
(agent_command_1) Use linespec location instead of address
string.
* break-catch-throw.c: Include location.h.
(re_set_exception_catchpoint): Use linespec locations instead
of address strings.
* breakpoint.c: Include location.h.
(create_overlay_event_breakpoint, create_longjmp_master_breakpoint)
(create_std_terminate_master_breakpoint)
(create_exception_master_breakpoint, update_breakpoints_after_exec):
Use linespec location instead of address string.
(print_breakpoint_location): Use locations and
event_location_to_string.
Print extra_string for pending locations for non-MI streams.
(print_one_breakpoint_location): Use locations and
event_location_to_string.
(init_raw_breakpoint_without_location): Initialize b->location.
(create_thread_event_breakpoint): Use linespec location instead of
address string.
(init_breakpoint_sal): Likewise.
Only save extra_string if it is non-NULL and not the empty string.
Use event_location_to_string instead of `addr_string'.
Constify `p' and `endp'.
Use skip_spaces_const/skip_space_const instead of non-const versions.
Copy the location into the breakpoint.
If LOCATION is NULL, save the breakpoint address as a linespec location
instead of an address string.
(create_breakpoint_sal): Change `addr_string' parameter to a struct
event_location. All uses updated.
(create_breakpoints_sal): Likewise for local variable `addr_string'.
(parse_breakpoint_sals): Use locations instead of address strings.
Remove check for empty linespec with conditional.
Refactor.
(decode_static_tracepoint_spec): Make argument const and update
function.
(create_breakpoint): Change `arg' to a struct event_location and
rename.
Remove `copy_arg' and `addr_start'.
If EXTRA_STRING is empty, set it to NULL.
Don't populate `canonical' for pending breakpoints.
Pass `extra_string' to find_condition_and_thread.
Clear `extra_string' if `rest' was NULL.
Do not error with "garbage after location" if setting a dprintf
breakpoint.
Copy the location into the breakpoint instead of an address string.
(break_command_1): Use string_to_event_location and pass this to
create_breakpoint instead of an address string.
Check against `arg_cp' for a probe linespec.
(dprintf_command): Use string_to_event_location and pass this to
create_breakpoint instead of an address string.
Throw an exception if no format string was specified.
(print_recreate_ranged_breakpoint): Use event_location_to_string
instead of address strings.
(break_range_command, until_break_command)
(init_ada_exception_breakpoint): Use locations instead
of address strings.
(say_where): Print out extra_string for pending locations.
(base_breakpoint_dtor): Delete `location' and `location_range_end' of
the breakpoint.
(base_breakpoint_create_sals_from_location): Use struct event_location
instead of address string.
Remove `addr_start' and `copy_arg' parameters.
(base_breakpoint_decode_location): Use struct event_location instead of
address string.
(bkpt_re_set): Use locations instead of address strings.
Use event_location_empty_p to check for unset location.
(bkpt_print_recreate): Use event_location_to_string instead of
an address string.
Print out extra_string for pending locations.
(bkpt_create_sals_from_location, bkpt_decode_location)
(bkpt_probe_create_sals_from_location): Use struct event_location
instead of address string.
(bkpt_probe_decode_location): Use struct event_location instead of
address string.
(tracepoint_print_recreate): Use event_location_to_string to
recreate the tracepoint.
(tracepoint_create_sals_from_location, tracepoint_decode_location)
(tracepoint_probe_create_sals_from_location)
(tracepoint_probe_decode_location): Use struct event_location
instead of address string.
(dprintf_print_recreate): Use event_location_to_string to recreate
the dprintf.
(dprintf_re_set): Remove check for valid/missing format string.
(strace_marker_create_sals_from_location)
(strace_marker_create_breakpoints_sal, strace_marker_decode_location)
(update_static_tracepoint): Use struct event_location instead of
address string.
(location_to_sals): Likewise.
Pass `extra_string' to find_condition_and_thread.
For newly resolved pending breakpoint locations, clear the location's
string representation.
Assert that the breakpoint's condition string is NULL when
condition_not_parsed.
(breakpoint_re_set_default, create_sals_from_location_default)
(decode_location_default, trace_command, ftrace_command)
(strace_command, create_tracepoint_from_upload): Use locations
instead of address strings.
* breakpoint.h (struct breakpoint_ops) <create_sals_from_location>:
Use struct event_location instead of address string.
Update all uses.
<decode_location>: Likewise.
(struct breakpoint) <addr_string>: Change to struct event_location
and rename `location'.
<addr_string_range_end>: Change to struct event_location and rename
`location_range_end'.
(create_breakpoint): Use struct event_location instead of address
string.
* cli/cli-cmds.c: Include location.h.
(edit_command, list_command): Use locations instead of address strings.
* elfread.c: Include location.h.
(elf_gnu_ifunc_resolver_return_stop): Use event_location_to_string.
* guile/scm-breakpoint.c: Include location.h.
(bpscm_print_breakpoint_smob): Use event_location_to_string.
(gdbscm_register_breakpoint): Use locations instead of address
strings.
* linespec.c: Include location.h.
(struct ls_parser) <stream>: Change to const char *.
(PARSER_STREAM): Update.
(lionespec_lexer_lex_keyword): According to find_condition_and_thread,
keywords must be followed by whitespace.
(canonicalize_linespec): Save a linespec location into `canonical'.
Save a canonical linespec into `canonical'.
(parse_linespec): Change `argptr' to const char * and rename `arg'.
All uses updated.
Update function description.
(linespec_parser_new): Initialize `parser'.
Update initialization of parsing stream.
(event_location_to_sals): New function.
(decode_line_full): Change `argptr' to a struct event_location and
rename it `location'.
Use locations instead of address strings.
Call event_location_to_sals instead of parse_linespec.
(decode_line_1): Likewise.
(decode_line_with_current_source, decode_line_with_last_displayed)
Use locations instead of address strings.
(decode_objc): Likewise.
Change `argptr' to const char * and rename `arg'.
(destroy_linespec_result): Delete the linespec result's location
instead of freeing the address string.
* linespec.h (struct linespec_result) <addr_string>: Change to
struct event_location and rename to ...
<location>: ... this.
(decode_line_1, decode_line_full): Change `argptr' to struct
event_location. All callers updated.
* mi/mi-cmd-break.c: Include language.h, location.h, and linespec.h.
(mi_cmd_break_insert_1): Use locations instead of address strings.
Throw an error if there was "garbage" at the end of the specified
linespec.
* probe.c: Include location.h.
(parse_probes): Change `argptr' to struct event_location.
Use event locations instead of address strings.
* probe.h (parse_probes): Change `argptr' to struct event_location.
* python/py-breakpoint.c: Include location.h.
(bppy_get_location): Constify local variable `str'.
Use event_location_to_string.
(bppy_init): Use locations instead of address strings.
* python/py-finishbreakpoint.c: Include location.h.
(bpfinishpy_init): Remove local variable `addr_str'.
Use locations instead of address strings.
* python/python.c: Include location.h.
(gdbpy_decode_line): Use locations instead of address strings.
* remote.c: Include location.h.
(remote_download_tracepoint): Use locations instead of address
strings.
* spu-tdep.c: Include location.h.
(spu_catch_start): Remove local variable `buf'.
Use locations instead of address strings.
* tracepoint.c: Include location.h.
(scope_info): Use locations instead of address strings.
(encode_source_string): Constify parameter `src'.
* tracepoint.h (encode_source_string): Likewise.
gdb/testsuite/ChangeLog
* gdb.base/dprintf-pending.exp: Update dprintf "without format"
test.
Add tests for missing ",FMT" and ",".
2015-08-12 02:09:35 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.c: Include location.h.
|
|
|
|
|
(agent_command_1) Use linespec location instead of address
|
|
|
|
|
string.
|
|
|
|
|
* break-catch-throw.c: Include location.h.
|
|
|
|
|
(re_set_exception_catchpoint): Use linespec locations instead
|
|
|
|
|
of address strings.
|
|
|
|
|
* breakpoint.c: Include location.h.
|
|
|
|
|
(create_overlay_event_breakpoint, create_longjmp_master_breakpoint)
|
|
|
|
|
(create_std_terminate_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint, update_breakpoints_after_exec):
|
|
|
|
|
Use linespec location instead of address string.
|
|
|
|
|
(print_breakpoint_location): Use locations and
|
|
|
|
|
event_location_to_string.
|
|
|
|
|
Print extra_string for pending locations for non-MI streams.
|
|
|
|
|
(print_one_breakpoint_location): Use locations and
|
|
|
|
|
event_location_to_string.
|
|
|
|
|
(init_raw_breakpoint_without_location): Initialize b->location.
|
|
|
|
|
(create_thread_event_breakpoint): Use linespec location instead of
|
|
|
|
|
address string.
|
|
|
|
|
(init_breakpoint_sal): Likewise.
|
|
|
|
|
Only save extra_string if it is non-NULL and not the empty string.
|
|
|
|
|
Use event_location_to_string instead of `addr_string'.
|
|
|
|
|
Constify `p' and `endp'.
|
|
|
|
|
Use skip_spaces_const/skip_space_const instead of non-const versions.
|
|
|
|
|
Copy the location into the breakpoint.
|
|
|
|
|
If LOCATION is NULL, save the breakpoint address as a linespec location
|
|
|
|
|
instead of an address string.
|
|
|
|
|
(create_breakpoint_sal): Change `addr_string' parameter to a struct
|
|
|
|
|
event_location. All uses updated.
|
|
|
|
|
(create_breakpoints_sal): Likewise for local variable `addr_string'.
|
|
|
|
|
(parse_breakpoint_sals): Use locations instead of address strings.
|
|
|
|
|
Remove check for empty linespec with conditional.
|
|
|
|
|
Refactor.
|
|
|
|
|
(decode_static_tracepoint_spec): Make argument const and update
|
|
|
|
|
function.
|
|
|
|
|
(create_breakpoint): Change `arg' to a struct event_location and
|
|
|
|
|
rename.
|
|
|
|
|
Remove `copy_arg' and `addr_start'.
|
|
|
|
|
If EXTRA_STRING is empty, set it to NULL.
|
|
|
|
|
Don't populate `canonical' for pending breakpoints.
|
|
|
|
|
Pass `extra_string' to find_condition_and_thread.
|
|
|
|
|
Clear `extra_string' if `rest' was NULL.
|
|
|
|
|
Do not error with "garbage after location" if setting a dprintf
|
|
|
|
|
breakpoint.
|
|
|
|
|
Copy the location into the breakpoint instead of an address string.
|
|
|
|
|
(break_command_1): Use string_to_event_location and pass this to
|
|
|
|
|
create_breakpoint instead of an address string.
|
|
|
|
|
Check against `arg_cp' for a probe linespec.
|
|
|
|
|
(dprintf_command): Use string_to_event_location and pass this to
|
|
|
|
|
create_breakpoint instead of an address string.
|
|
|
|
|
Throw an exception if no format string was specified.
|
|
|
|
|
(print_recreate_ranged_breakpoint): Use event_location_to_string
|
|
|
|
|
instead of address strings.
|
|
|
|
|
(break_range_command, until_break_command)
|
|
|
|
|
(init_ada_exception_breakpoint): Use locations instead
|
|
|
|
|
of address strings.
|
|
|
|
|
(say_where): Print out extra_string for pending locations.
|
|
|
|
|
(base_breakpoint_dtor): Delete `location' and `location_range_end' of
|
|
|
|
|
the breakpoint.
|
|
|
|
|
(base_breakpoint_create_sals_from_location): Use struct event_location
|
|
|
|
|
instead of address string.
|
|
|
|
|
Remove `addr_start' and `copy_arg' parameters.
|
|
|
|
|
(base_breakpoint_decode_location): Use struct event_location instead of
|
|
|
|
|
address string.
|
|
|
|
|
(bkpt_re_set): Use locations instead of address strings.
|
|
|
|
|
Use event_location_empty_p to check for unset location.
|
|
|
|
|
(bkpt_print_recreate): Use event_location_to_string instead of
|
|
|
|
|
an address string.
|
|
|
|
|
Print out extra_string for pending locations.
|
|
|
|
|
(bkpt_create_sals_from_location, bkpt_decode_location)
|
|
|
|
|
(bkpt_probe_create_sals_from_location): Use struct event_location
|
|
|
|
|
instead of address string.
|
|
|
|
|
(bkpt_probe_decode_location): Use struct event_location instead of
|
|
|
|
|
address string.
|
|
|
|
|
(tracepoint_print_recreate): Use event_location_to_string to
|
|
|
|
|
recreate the tracepoint.
|
|
|
|
|
(tracepoint_create_sals_from_location, tracepoint_decode_location)
|
|
|
|
|
(tracepoint_probe_create_sals_from_location)
|
|
|
|
|
(tracepoint_probe_decode_location): Use struct event_location
|
|
|
|
|
instead of address string.
|
|
|
|
|
(dprintf_print_recreate): Use event_location_to_string to recreate
|
|
|
|
|
the dprintf.
|
|
|
|
|
(dprintf_re_set): Remove check for valid/missing format string.
|
|
|
|
|
(strace_marker_create_sals_from_location)
|
|
|
|
|
(strace_marker_create_breakpoints_sal, strace_marker_decode_location)
|
|
|
|
|
(update_static_tracepoint): Use struct event_location instead of
|
|
|
|
|
address string.
|
|
|
|
|
(location_to_sals): Likewise.
|
|
|
|
|
Pass `extra_string' to find_condition_and_thread.
|
|
|
|
|
For newly resolved pending breakpoint locations, clear the location's
|
|
|
|
|
string representation.
|
|
|
|
|
Assert that the breakpoint's condition string is NULL when
|
|
|
|
|
condition_not_parsed.
|
|
|
|
|
(breakpoint_re_set_default, create_sals_from_location_default)
|
|
|
|
|
(decode_location_default, trace_command, ftrace_command)
|
|
|
|
|
(strace_command, create_tracepoint_from_upload): Use locations
|
|
|
|
|
instead of address strings.
|
|
|
|
|
* breakpoint.h (struct breakpoint_ops) <create_sals_from_location>:
|
|
|
|
|
Use struct event_location instead of address string.
|
|
|
|
|
Update all uses.
|
|
|
|
|
<decode_location>: Likewise.
|
|
|
|
|
(struct breakpoint) <addr_string>: Change to struct event_location
|
|
|
|
|
and rename `location'.
|
|
|
|
|
<addr_string_range_end>: Change to struct event_location and rename
|
|
|
|
|
`location_range_end'.
|
|
|
|
|
(create_breakpoint): Use struct event_location instead of address
|
|
|
|
|
string.
|
|
|
|
|
* cli/cli-cmds.c: Include location.h.
|
|
|
|
|
(edit_command, list_command): Use locations instead of address strings.
|
|
|
|
|
* elfread.c: Include location.h.
|
|
|
|
|
(elf_gnu_ifunc_resolver_return_stop): Use event_location_to_string.
|
|
|
|
|
* guile/scm-breakpoint.c: Include location.h.
|
|
|
|
|
(bpscm_print_breakpoint_smob): Use event_location_to_string.
|
|
|
|
|
(gdbscm_register_breakpoint): Use locations instead of address
|
|
|
|
|
strings.
|
|
|
|
|
* linespec.c: Include location.h.
|
|
|
|
|
(struct ls_parser) <stream>: Change to const char *.
|
|
|
|
|
(PARSER_STREAM): Update.
|
|
|
|
|
(lionespec_lexer_lex_keyword): According to find_condition_and_thread,
|
|
|
|
|
keywords must be followed by whitespace.
|
|
|
|
|
(canonicalize_linespec): Save a linespec location into `canonical'.
|
|
|
|
|
Save a canonical linespec into `canonical'.
|
|
|
|
|
(parse_linespec): Change `argptr' to const char * and rename `arg'.
|
|
|
|
|
All uses updated.
|
|
|
|
|
Update function description.
|
|
|
|
|
(linespec_parser_new): Initialize `parser'.
|
|
|
|
|
Update initialization of parsing stream.
|
|
|
|
|
(event_location_to_sals): New function.
|
|
|
|
|
(decode_line_full): Change `argptr' to a struct event_location and
|
|
|
|
|
rename it `location'.
|
|
|
|
|
Use locations instead of address strings.
|
|
|
|
|
Call event_location_to_sals instead of parse_linespec.
|
|
|
|
|
(decode_line_1): Likewise.
|
|
|
|
|
(decode_line_with_current_source, decode_line_with_last_displayed)
|
|
|
|
|
Use locations instead of address strings.
|
|
|
|
|
(decode_objc): Likewise.
|
|
|
|
|
Change `argptr' to const char * and rename `arg'.
|
|
|
|
|
(destroy_linespec_result): Delete the linespec result's location
|
|
|
|
|
instead of freeing the address string.
|
|
|
|
|
* linespec.h (struct linespec_result) <addr_string>: Change to
|
|
|
|
|
struct event_location and rename to ...
|
|
|
|
|
<location>: ... this.
|
|
|
|
|
(decode_line_1, decode_line_full): Change `argptr' to struct
|
|
|
|
|
event_location. All callers updated.
|
|
|
|
|
* mi/mi-cmd-break.c: Include language.h, location.h, and linespec.h.
|
|
|
|
|
(mi_cmd_break_insert_1): Use locations instead of address strings.
|
|
|
|
|
Throw an error if there was "garbage" at the end of the specified
|
|
|
|
|
linespec.
|
|
|
|
|
* probe.c: Include location.h.
|
|
|
|
|
(parse_probes): Change `argptr' to struct event_location.
|
|
|
|
|
Use event locations instead of address strings.
|
|
|
|
|
* probe.h (parse_probes): Change `argptr' to struct event_location.
|
|
|
|
|
* python/py-breakpoint.c: Include location.h.
|
|
|
|
|
(bppy_get_location): Constify local variable `str'.
|
|
|
|
|
Use event_location_to_string.
|
|
|
|
|
(bppy_init): Use locations instead of address strings.
|
|
|
|
|
* python/py-finishbreakpoint.c: Include location.h.
|
|
|
|
|
(bpfinishpy_init): Remove local variable `addr_str'.
|
|
|
|
|
Use locations instead of address strings.
|
|
|
|
|
* python/python.c: Include location.h.
|
|
|
|
|
(gdbpy_decode_line): Use locations instead of address strings.
|
|
|
|
|
* remote.c: Include location.h.
|
|
|
|
|
(remote_download_tracepoint): Use locations instead of address
|
|
|
|
|
strings.
|
|
|
|
|
* spu-tdep.c: Include location.h.
|
|
|
|
|
(spu_catch_start): Remove local variable `buf'.
|
|
|
|
|
Use locations instead of address strings.
|
|
|
|
|
* tracepoint.c: Include location.h.
|
|
|
|
|
(scope_info): Use locations instead of address strings.
|
|
|
|
|
(encode_source_string): Constify parameter `src'.
|
|
|
|
|
* tracepoint.h (encode_source_string): Likewise.
|
|
|
|
|
|
2015-08-12 02:09:35 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add location.c.
|
|
|
|
|
(HFILES_NO_SRCDIR): Add location.h.
|
|
|
|
|
(COMMON_OBS): Add location.o.
|
|
|
|
|
* linespec.c (linespec_lex_to_end): New function.
|
|
|
|
|
* linespec.h (linespec_lex_to_end): Declare.
|
|
|
|
|
* location.c: New file.
|
|
|
|
|
* location.h: New file.
|
|
|
|
|
|
2015-08-12 02:09:35 +02:00
|
|
|
|
2015-08-11 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.h (struct breakpoint_ops) <create_sals_from_address>:
|
|
|
|
|
Renamed to create_sals_from_location.
|
|
|
|
|
<decode_linespec>: Renamed to decode_location.
|
|
|
|
|
Update all callers.
|
|
|
|
|
* breakpoint.c (create_sals_from_address_default): Renamed to ...
|
|
|
|
|
(create_sals_from_location_default): ... this.
|
|
|
|
|
(addr_string_to_sals): Renamed to ...
|
|
|
|
|
(location_to_sals): ... this.
|
|
|
|
|
(decode_linespec_default): Renamed to ...
|
|
|
|
|
(decode_location_default): ... this.
|
|
|
|
|
(base_breakpoint_create_sals_from_address): Renamed to ...
|
|
|
|
|
(base_breakpoint_create_sals_from_location): ... this.
|
|
|
|
|
(bkpt_create_sals_from_address): Renamed to ...
|
|
|
|
|
(bkpt_create_sals_from_location): ... this.
|
|
|
|
|
(bkpt_decode_linespec): Renamed to ...
|
|
|
|
|
(bkpt_decode_location): ... this.
|
|
|
|
|
(bkpt_probe_create_sals_from_address): Renamed to ...
|
|
|
|
|
(bkpt_probe_create_sals_from_location): ... this.
|
|
|
|
|
(tracepoint_create_sals_from_address): Renamed to ...
|
|
|
|
|
(tracepoint_create_sals_from_location): ... this.
|
|
|
|
|
(tracepoint_decode_linespec): Renamed to ...
|
|
|
|
|
(tracepoint_decode_location): ... this.
|
|
|
|
|
(tracepoint_probe_create_sals_from_address): Renamed to ...
|
|
|
|
|
(tracepoint_probe_create_sals_from_location): ... this.
|
|
|
|
|
(tracepoint_probe_decode_linespec): Renamed to ...
|
|
|
|
|
(tracepoint_probe_decode_location): ... this.
|
|
|
|
|
(strace_marker_create_sals_from_address): Renamed to ...
|
|
|
|
|
(strace_marker_create_sals_from_location): ... this.
|
|
|
|
|
(decode_linespec_default): Renamed to ...
|
|
|
|
|
(decode_location_default): ... this.
|
|
|
|
|
|
2015-08-10 21:23:09 +02:00
|
|
|
|
2015-08-10 Doug Evans <dje@google.com>
|
|
|
|
|
Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/17960
|
|
|
|
|
* symtab.c (make_file_symbol_completion_list_1): Renamed from
|
|
|
|
|
make_file_symbol_completion_list and made static.
|
|
|
|
|
(make_file_symbol_completion_list): New function.
|
2015-08-10 22:36:36 +02:00
|
|
|
|
|
2015-08-10 19:08:44 +02:00
|
|
|
|
2015-08-10 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_fork, displaced_step_prepare, resume): Remove
|
|
|
|
|
trailing new-line at end of warning message.
|
|
|
|
|
(proceed): Add i18n marker to error messages.
|
|
|
|
|
|
2015-08-06 19:23:01 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_always_non_stop_p): Return 1.
|
|
|
|
|
|
2015-08-06 19:23:01 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (is_non_branch_ril)
|
|
|
|
|
(s390_displaced_step_copy_insn): New functions.
|
|
|
|
|
(s390_displaced_step_fixup): Update comment.
|
|
|
|
|
(s390_gdbarch_init): Install s390_displaced_step_copy_insn as
|
|
|
|
|
gdbarch_displaced_step_copy_insn hook.
|
|
|
|
|
|
2015-08-06 19:23:00 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (displaced_step_prepare_throw): Return -1 if
|
|
|
|
|
gdbarch_displaced_step_copy_insn returns NULL. Update intro
|
|
|
|
|
comment.
|
|
|
|
|
* rs6000-tdep.c (LWARX_MASK, LWARX_INSTRUCTION, LDARX_INSTRUCTION)
|
|
|
|
|
(STWCX_MASK, STWCX_INSTRUCTION, STDCX_INSTRUCTION): Move higher up
|
|
|
|
|
in file.
|
|
|
|
|
(ppc_displaced_step_copy_insn): New function.
|
|
|
|
|
(ppc_displaced_step_fixup): Update comment.
|
|
|
|
|
(rs6000_gdbarch_init): Install ppc_displaced_step_copy_insn as
|
|
|
|
|
gdbarch_displaced_step_copy_insn hook.
|
|
|
|
|
* gdbarch.sh (displaced_step_copy_insn): Document what happens on
|
|
|
|
|
NULL return.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
|
Disable displaced stepping if trying it fails
Running the testsuite with "maint set target-non-stop on" shows:
(gdb) PASS: gdb.base/valgrind-infcall.exp: continue #98 (false warning)
continue
Continuing.
dl_main (phdr=<optimized out>..., auxv=<optimized out>) at rtld.c:2302
2302 LIBC_PROBE (init_complete, 2, LM_ID_BASE, r);
Cannot access memory at address 0x400532
(gdb) PASS: gdb.base/valgrind-infcall.exp: continue #99 (false warning)
p gdb_test_infcall ()
$1 = 1
(gdb) FAIL: gdb.base/valgrind-infcall.exp: p gdb_test_infcall ()
Even though that was a native GNU/Linux test run, this test spawns
Valgrind and connects to it with "target remote". The error above is
actually orthogonal to target-non-stop. The real issue is that that
enables displaced stepping, and displaced stepping doesn't work with
Valgrind, because we can't write to the inferior memory (thus can't
copy the instruction to the scratch pad area).
I'm sure there will be other targets with the same issue, so trying to
identify Valgrind wouldn't be sufficient. The fix is to try setting
up the displaced step anyway. If we get a MEMORY_ERROR, we disable
displaced stepping for that inferior, and fall back to doing an
in-line step-over. If "set displaced-stepping" is "on" (as opposed to
"auto), GDB warns displaced stepping failed ("on" is mainly useful for
the testsuite, not for users).
Tested on x86_64 Fedora 20.
gdb/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* inferior.h (struct inferior) <displaced_stepping_failed>: New
field.
* infrun.c (use_displaced_stepping_now_p): New parameter 'inf'.
Return false if dispaced stepping failed before.
(resume): Pass the current inferior to
use_displaced_stepping_now_p. Wrap displaced_step_prepare in
TRY/CATCH. If we get a MEMORY_ERROR, set the inferior's
displaced_stepping_failed flag, and fall back to an in-line
step-over.
gdb/testsuite/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* gdb.base/valgrind-disp-step.c: New file.
* gdb.base/valgrind-disp-step.exp: New file.
2015-08-06 19:22:59 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inferior.h (struct inferior) <displaced_stepping_failed>: New
|
|
|
|
|
field.
|
|
|
|
|
* infrun.c (use_displaced_stepping_now_p): New parameter 'inf'.
|
|
|
|
|
Return false if dispaced stepping failed before.
|
|
|
|
|
(resume): Pass the current inferior to
|
|
|
|
|
use_displaced_stepping_now_p. Wrap displaced_step_prepare in
|
|
|
|
|
TRY/CATCH. If we get a MEMORY_ERROR, set the inferior's
|
|
|
|
|
displaced_stepping_failed flag, and fall back to an in-line
|
|
|
|
|
step-over.
|
|
|
|
|
|
Fix interrupt-noterm.exp on targets always in non-stop
With "maint set target-non-stop on" we get:
@@ -66,13 +66,16 @@ Continuing.
interrupt
(gdb) PASS: gdb.base/interrupt-noterm.exp: interrupt
-Program received signal SIGINT, Interrupt.
-PASS: gdb.base/interrupt-noterm.exp: inferior received SIGINT
-testcase src/gdb/testsuite/gdb.base/interrupt-noterm.exp completed in 0 seconds
+[process 12119] #1 stopped.
+0x0000003615ebc6d0 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:81
+81 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
+FAIL: gdb.base/interrupt-noterm.exp: inferior received SIGINT (timeout)
+testcase src/gdb/testsuite/gdb.base/interrupt-noterm.exp completed in 10 seconds
That is, we get "[$thread] #1 stopped" instead of SIGINT.
The issue is that we don't currently distinguish send
"interrupt/ctrl-c" to target terminal vs "stop/pause" thread well;
both cases go through "target_stop".
And then, the native Linux backend (linux-nat.c) implements
target_stop with SIGSTOP in non-stop mode, and SIGINT in all-stop
mode. Since "maint set target-non-stop on" forces the backend to be
always running in non-stop mode, even though the user-visible behavior
is "set non-stop" is "off", "interrupt" causes a SIGSTOP instead of
the SIGINT the test expects.
Fix this by introducing a target_interrupt method to use in the
"interrupt/ctrl-c" case, so "set non-stop off" can always work the
same irrespective of "maint set target-non-stop on/off". I'm
explictly considering changing the "set non-stop on" behavior as out
of scope here.
Most of the patch is an across-the-board rename of to_stop hook
implementations to to_interrupt. The only targets where something
more than a rename is being done are linux-nat.c and remote.c, which
are the only targets that support async, and thus are the only ones
the core side calls target_stop on.
gdb/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* darwin-nat.c (darwin_stop): Rename to ...
(darwin_interrupt): ... this.
(_initialize_darwin_inferior): Adjust.
* gnu-nat.c (gnu_stop): Delete.
(gnu_target): Don't install gnu_stop.
* inf-ptrace.c (inf_ptrace_stop): Rename to ...
(inf_ptrace_interrupt): ... this.
(inf_ptrace_target): Adjust.
* infcmd.c (interrupt_target_1): Use target_interrupt instead of
target_stop.
* linux-nat (linux_nat_stop): Rename to ...
(linux_nat_interrupt): ... this.
(linux_nat_stop): Reimplement.
(linux_nat_add_target): Install linux_nat_interrupt.
* nto-procfs.c (nto_interrupt_twice): Rename to ...
(nto_handle_sigint_twice): ... this.
(nto_interrupt): Rename to ...
(nto_handle_sigint): ... this. Call target_interrupt instead of
target_stop.
(procfs_wait): Adjust.
(procfs_stop): Rename to ...
(procfs_interrupt): ... this.
(init_procfs_targets): Adjust.
* procfs.c (procfs_stop): Rename to ...
(procfs_interrupt): ... this.
(procfs_target): Adjust.
* remote-m32r-sdi.c (m32r_stop): Rename to ...
(m32r_interrupt): ... this.
(init_m32r_ops): Adjust.
* remote-sim.c (gdbsim_stop_inferior): Rename to ...
(gdbsim_interrupt_inferior): ... this.
(gdbsim_stop): Rename to ...
(gdbsim_interrupt): ... this.
(gdbsim_cntrl_c): Adjust.
(init_gdbsim_ops): Adjust.
* remote.c (sync_remote_interrupt): Adjust comments.
(remote_stop_as): Rename to ...
(remote_interrupt_as): ... this.
(remote_stop): Adjust comment.
(remote_interrupt): New function.
(init_remote_ops): Install remote_interrupt.
* target.c (target_interrupt): New function.
* target.h (struct target_ops) <to_interrupt>: New field.
(target_interrupt): New declaration.
* windows-nat.c (windows_stop): Rename to ...
(windows_interrupt): ... this.
* target-delegates.c: Regenerate.
2015-08-06 19:22:58 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* darwin-nat.c (darwin_stop): Rename to ...
|
|
|
|
|
(darwin_interrupt): ... this.
|
|
|
|
|
(_initialize_darwin_inferior): Adjust.
|
|
|
|
|
* gnu-nat.c (gnu_stop): Delete.
|
|
|
|
|
(gnu_target): Don't install gnu_stop.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_stop): Rename to ...
|
|
|
|
|
(inf_ptrace_interrupt): ... this.
|
|
|
|
|
(inf_ptrace_target): Adjust.
|
|
|
|
|
* infcmd.c (interrupt_target_1): Use target_interrupt instead of
|
|
|
|
|
target_stop.
|
|
|
|
|
* linux-nat (linux_nat_stop): Rename to ...
|
|
|
|
|
(linux_nat_interrupt): ... this.
|
|
|
|
|
(linux_nat_stop): Reimplement.
|
|
|
|
|
(linux_nat_add_target): Install linux_nat_interrupt.
|
|
|
|
|
* nto-procfs.c (nto_interrupt_twice): Rename to ...
|
|
|
|
|
(nto_handle_sigint_twice): ... this.
|
|
|
|
|
(nto_interrupt): Rename to ...
|
|
|
|
|
(nto_handle_sigint): ... this. Call target_interrupt instead of
|
|
|
|
|
target_stop.
|
|
|
|
|
(procfs_wait): Adjust.
|
|
|
|
|
(procfs_stop): Rename to ...
|
|
|
|
|
(procfs_interrupt): ... this.
|
|
|
|
|
(init_procfs_targets): Adjust.
|
|
|
|
|
* procfs.c (procfs_stop): Rename to ...
|
|
|
|
|
(procfs_interrupt): ... this.
|
|
|
|
|
(procfs_target): Adjust.
|
|
|
|
|
* remote-m32r-sdi.c (m32r_stop): Rename to ...
|
|
|
|
|
(m32r_interrupt): ... this.
|
|
|
|
|
(init_m32r_ops): Adjust.
|
|
|
|
|
* remote-sim.c (gdbsim_stop_inferior): Rename to ...
|
|
|
|
|
(gdbsim_interrupt_inferior): ... this.
|
|
|
|
|
(gdbsim_stop): Rename to ...
|
|
|
|
|
(gdbsim_interrupt): ... this.
|
|
|
|
|
(gdbsim_cntrl_c): Adjust.
|
|
|
|
|
(init_gdbsim_ops): Adjust.
|
|
|
|
|
* remote.c (sync_remote_interrupt): Adjust comments.
|
|
|
|
|
(remote_stop_as): Rename to ...
|
|
|
|
|
(remote_interrupt_as): ... this.
|
|
|
|
|
(remote_stop): Adjust comment.
|
|
|
|
|
(remote_interrupt): New function.
|
|
|
|
|
(init_remote_ops): Install remote_interrupt.
|
|
|
|
|
* target.c (target_interrupt): New function.
|
|
|
|
|
* target.h (struct target_ops) <to_interrupt>: New field.
|
|
|
|
|
(target_interrupt): New declaration.
|
|
|
|
|
* windows-nat.c (windows_stop): Rename to ...
|
|
|
|
|
(windows_interrupt): ... this.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
|
2015-08-06 19:22:57 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* signal-while-stepping-over-bp-other-thread.exp: Expect "restart
|
|
|
|
|
threads" as alternative to "switching back to stepped thread".
|
|
|
|
|
|
Implement all-stop on top of a target running non-stop mode
This finally implements user-visible all-stop mode running with the
target_ops backend always in non-stop mode. This is a stepping stone
towards finer-grained control of threads, being able to do interesting
things like thread groups, associating groups with breakpoints, etc.
From the user's perspective, all-stop mode is really just a special
case of being able to stop and resume specific sets of threads, so it
makes sense to do this step first.
With this, even in all-stop, the target is no longer in charge of
stopping all threads before reporting an event to the core -- the core
takes care of it when it sees fit. For example, when "next"- or
"step"-ing, we can avoid stopping and resuming all threads at each
internal single-step, and instead only stop all threads when we're
about to present the stop to the user.
The implementation is almost straight forward, as the heavy lifting
has been done already in previous patches. Basically, we replace
checks for "set non-stop on/off" (the non_stop global), with calls to
a new target_is_non_stop_p function. In a few places, if "set
non-stop off", we stop all threads explicitly, and in a few other
places we resume all threads explicitly, making use of existing
methods that were added for teaching non-stop to step over breakpoints
without displaced stepping.
This adds a new "maint set target-non-stop on/off/auto" knob that
allows both disabling the feature if we find problems, and
force-enable it for development (useful when teaching a target about
this. The default is "auto", which means the feature is enabled if a
new target method says it should be enabled. The patch implements the
method in linux-nat.c, just for illustration, because it still returns
false. We'll need a few follow up fixes before turning it on by
default. This is a separate target method from indicating regular
non-stop support, because e.g., while e.g., native linux-nat.c is
close to regression free with all-stop-non-stop (with following
patches will fixing the remaining regressions), remote.c+gdbserver
will still need more fixing, even though it supports "set non-stop
on".
Tested on x86_64 Fedora 20, native, with and without "set displaced
off", and with and without "maint set target-non-stop on"; and also
against gdbserver.
gdb/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* NEWS: Mention "maint set/show target-non-stop".
* breakpoint.c (update_global_location_list): Check
target_is_non_stop_p instead of non_stop.
* infcmd.c (attach_command_post_wait, attach_command): Likewise.
* infrun.c (show_can_use_displaced_stepping)
(can_use_displaced_stepping_p, start_step_over_inferior):
Likewise.
(internal_resume_ptid): New function.
(resume): Use it.
(proceed): Check target_is_non_stop_p instead of non_stop. If in
all-stop mode but the target is always in non-stop mode, start all
the other threads that are implicitly resumed too.
(for_each_just_stopped_thread, fetch_inferior_event)
(adjust_pc_after_break, stop_all_threads): Check
target_is_non_stop_p instead of non_stop.
(handle_inferior_event): Likewise. Handle detach-fork in all-stop
with the target always in non-stop mode.
(handle_signal_stop) <random signal>: Check target_is_non_stop_p
instead of non_stop.
(switch_back_to_stepped_thread): Check target_is_non_stop_p
instead of non_stop.
(keep_going_stepped_thread): Use internal_resume_ptid.
(stop_waiting): If in all-stop mode, and the target is in non-stop
mode, stop all threads.
(keep_going_pass): Likewise, when starting a new in-line step-over
sequence.
* linux-nat.c (get_pending_status, select_event_lwp)
(linux_nat_filter_event, linux_nat_wait_1, linux_nat_wait): Check
target_is_non_stop_p instead of non_stop.
(linux_nat_always_non_stop_p): New function.
(linux_nat_stop): Check target_is_non_stop_p instead of non_stop.
(linux_nat_add_target): Install linux_nat_always_non_stop_p.
* target-delegates.c: Regenerate.
* target.c (target_is_non_stop_p): New function.
(target_non_stop_enabled, target_non_stop_enabled_1): New globals.
(maint_set_target_non_stop_command)
(maint_show_target_non_stop_command): New functions.
(_initilize_target): Install "maint set/show target-non-stop"
commands.
* target.h (struct target_ops) <to_always_non_stop_p>: New field.
(target_non_stop_enabled): New declaration.
(target_is_non_stop_p): New declaration.
gdb/doc/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* gdb.texinfo (Maintenance Commands): Document "maint set/show
target-non-stop".
2015-08-07 18:24:01 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention "maint set/show target-non-stop".
|
|
|
|
|
* breakpoint.c (update_global_location_list): Check
|
|
|
|
|
target_is_non_stop_p instead of non_stop.
|
|
|
|
|
* infcmd.c (attach_command_post_wait, attach_command): Likewise.
|
|
|
|
|
* infrun.c (show_can_use_displaced_stepping)
|
|
|
|
|
(can_use_displaced_stepping_p, start_step_over_inferior):
|
|
|
|
|
Likewise.
|
|
|
|
|
(internal_resume_ptid): New function.
|
|
|
|
|
(resume): Use it.
|
|
|
|
|
(proceed): Check target_is_non_stop_p instead of non_stop. If in
|
|
|
|
|
all-stop mode but the target is always in non-stop mode, start all
|
|
|
|
|
the other threads that are implicitly resumed too.
|
|
|
|
|
(for_each_just_stopped_thread, fetch_inferior_event)
|
|
|
|
|
(adjust_pc_after_break, stop_all_threads): Check
|
|
|
|
|
target_is_non_stop_p instead of non_stop.
|
|
|
|
|
(handle_inferior_event): Likewise. Handle detach-fork in all-stop
|
|
|
|
|
with the target always in non-stop mode.
|
|
|
|
|
(handle_signal_stop) <random signal>: Check target_is_non_stop_p
|
|
|
|
|
instead of non_stop.
|
|
|
|
|
(switch_back_to_stepped_thread): Check target_is_non_stop_p
|
|
|
|
|
instead of non_stop.
|
|
|
|
|
(keep_going_stepped_thread): Use internal_resume_ptid.
|
|
|
|
|
(stop_waiting): If in all-stop mode, and the target is in non-stop
|
|
|
|
|
mode, stop all threads.
|
|
|
|
|
(keep_going_pass): Likewise, when starting a new in-line step-over
|
|
|
|
|
sequence.
|
|
|
|
|
* linux-nat.c (get_pending_status, select_event_lwp)
|
|
|
|
|
(linux_nat_filter_event, linux_nat_wait_1, linux_nat_wait): Check
|
|
|
|
|
target_is_non_stop_p instead of non_stop.
|
|
|
|
|
(linux_nat_always_non_stop_p): New function.
|
|
|
|
|
(linux_nat_stop): Check target_is_non_stop_p instead of non_stop.
|
|
|
|
|
(linux_nat_add_target): Install linux_nat_always_non_stop_p.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* target.c (target_is_non_stop_p): New function.
|
|
|
|
|
(target_non_stop_enabled, target_non_stop_enabled_1): New globals.
|
|
|
|
|
(maint_set_target_non_stop_command)
|
|
|
|
|
(maint_show_target_non_stop_command): New functions.
|
|
|
|
|
(_initilize_target): Install "maint set/show target-non-stop"
|
|
|
|
|
commands.
|
|
|
|
|
* target.h (struct target_ops) <to_always_non_stop_p>: New field.
|
|
|
|
|
(target_non_stop_enabled): New declaration.
|
|
|
|
|
(target_is_non_stop_p): New declaration.
|
|
|
|
|
|
Teach non-stop to do in-line step-overs (stop all, step, restart)
That is, step past breakpoints by:
- pausing all threads
- removing breakpoint at PC
- single-step
- reinsert breakpoint
- restart threads
similarly to all-stop (with displaced stepping disabled). This allows
non-stop to work on targets/architectures without displaced stepping
support. That is, it makes displaced stepping an optimization instead
of a requirement. For example, in principle, all GNU/Linux ports
support non-stop mode at the target_ops level, but not all
corresponding gdbarch's implement displaced stepping. This should
make non-stop work for all (albeit, not as efficiently). And then
there are scenarios where even if the architecture supports displaced
stepping, we can't use it, because we e.g., don't find a usable
address to use as displaced step scratch pad. It should also fix
stepping past watchpoints on targets that have non-continuable
watchpoints in non-stop mode (e.g., PPC, untested). Running the
instruction out of line in the displaced stepping scratch pad doesn't
help that case, as the copied instruction reads/writes the same
watched memory... We can fix that too by teaching GDB to only remove
the watchpoint from the thread that we want to move past the
watchpoint (currently, removing a watchpoint always removes it from
all threads), but again, that can be considered an optimization; not
all targets would support it.
For those familiar with the gdb and gdbserver Linux target_ops
backends, the implementation should look similar, except it is done on
the core side. When we pause threads, we may find they stop with an
interesting event that should be handled later when the thread is
re-resumed, thus we store such events in the thread object, and mark
the event as pending. We should only consume pending events if the
thread is indeed resumed, thus we add a new "resumed" flag to the
thread object. At a later stage, we might add new target methods to
accelerate some of this, like "pause all threads", with corresponding
RSP packets, but we'd still need a fallback method for remote targets
that don't support such packets, so, again, that can be deferred as
optimization.
My _real_ motivation here is making it possible to reimplement
all-stop mode on top of the target always working on non-stop mode, so
that e.g., we can send RSP packets to a remote target even while the
target is running -- can't do that in the all-stop RSP variant, by
design).
Tested on x86_64 Fedora 20, with and without "set displaced off"
forced. The latter forces the new code paths whenever GDB needs to
step past a breakpoint.
gdb/ChangeLog:
2015-08-07 Pedro Alves <pedro@codesourcery.com>
* breakpoint.c (breakpoints_should_be_inserted_now): If any thread
has a pending status, return true.
* gdbthread.h: Include target/waitstatus.h.
(struct thread_suspend_state) <stop_reason, waitstatus_pending_p,
stop_pc>: New fields.
(struct thread_info) <resumed>: New field.
(set_resumed): Declare.
* infrun.c: Include "event-loop.h".
(infrun_async_inferior_event_token, infrun_is_async): New globals.
(infrun_async): New function.
(clear_step_over_info): Add debug output.
(displaced_step_in_progress_any_inferior): New function.
(displaced_step_fixup): New returns int.
(start_step_over): Handle in-line step-overs too. Assert the
thread is marked resumed.
(resume_cleanups): Clear the thread's resumed flag.
(resume): Set the thread's resumed flag. Return early if the
thread has a pending status. Allow stepping a breakpoint with no
signal.
(proceed): Adjust to check 'resumed' instead of 'executing'.
(clear_proceed_status_thread): If the thread has a pending status,
and that status is a finished step, discard the pending status.
(clear_proceed_status): Don't clear step_over_info here.
(random_pending_event_thread, do_target_wait): New functions.
(prepare_for_detach, wait_for_inferior, fetch_inferior_event): Use
do_target_wait.
(wait_one): New function.
(THREAD_STOPPED_BY): New macro.
(thread_stopped_by_watchpoint, thread_stopped_by_sw_breakpoint)
(thread_stopped_by_hw_breakpoint): New functions.
(switch_to_thread_cleanup, save_waitstatus, stop_all_threads): New
functions.
(handle_inferior_event): Also call set_resumed(false) on all
threads implicitly stopped by the event.
(restart_threads, resumed_thread_with_pending_status): New
functions.
(finish_step_over): If we were doing an in-line step-over before,
and no longer are after trying to start a new step-over, restart
all threads. If we have multiple threads with pending events,
save the current event and go through the event loop again.
(handle_signal_stop): Return early if finish_step_over returns
false.
<random signal>: If we get a signal while stepping over a
breakpoint in-line in non-stop mode, restart all threads. Clear
step_over_info before delivering the signal.
(keep_going_stepped_thread): Use internal_error instead of
gdb_assert. Mark the thread as resumed.
(keep_going_pass_signal): Assert the thread isn't already resumed.
If some other thread is doing an in-line step-over, defer the
resume. If we just started a new in-line step-over, stop all
threads. Don't clear step_over_info.
(infrun_async_inferior_event_handler): New function.
(_initialize_infrun): Create async event handler with
infrun_async_inferior_event_handler as callback.
(infrun_async): New declaration.
* target.c (target_async): New function.
* target.h (target_async): Declare macro and readd as function
declaration.
* target/waitstatus.h (enum target_stop_reason)
<TARGET_STOPPED_BY_SINGLE_STEP>: New value.
* thread.c (new_thread): Clear the new waitstatus field.
(set_resumed): New function.
2015-08-07 18:24:00 +02:00
|
|
|
|
2015-08-07 Pedro Alves <pedro@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (breakpoints_should_be_inserted_now): If any thread
|
|
|
|
|
has a pending status, return true.
|
|
|
|
|
* gdbthread.h: Include target/waitstatus.h.
|
|
|
|
|
(struct thread_suspend_state) <stop_reason, waitstatus_pending_p,
|
|
|
|
|
stop_pc>: New fields.
|
|
|
|
|
(struct thread_info) <resumed>: New field.
|
|
|
|
|
(set_resumed): Declare.
|
|
|
|
|
* infrun.c: Include "event-loop.h".
|
|
|
|
|
(infrun_async_inferior_event_token, infrun_is_async): New globals.
|
|
|
|
|
(infrun_async): New function.
|
|
|
|
|
(clear_step_over_info): Add debug output.
|
|
|
|
|
(displaced_step_in_progress_any_inferior): New function.
|
|
|
|
|
(displaced_step_fixup): New returns int.
|
|
|
|
|
(start_step_over): Handle in-line step-overs too. Assert the
|
|
|
|
|
thread is marked resumed.
|
|
|
|
|
(resume_cleanups): Clear the thread's resumed flag.
|
|
|
|
|
(resume): Set the thread's resumed flag. Return early if the
|
|
|
|
|
thread has a pending status. Allow stepping a breakpoint with no
|
|
|
|
|
signal.
|
|
|
|
|
(proceed): Adjust to check 'resumed' instead of 'executing'.
|
|
|
|
|
(clear_proceed_status_thread): If the thread has a pending status,
|
|
|
|
|
and that status is a finished step, discard the pending status.
|
|
|
|
|
(clear_proceed_status): Don't clear step_over_info here.
|
|
|
|
|
(random_pending_event_thread, do_target_wait): New functions.
|
|
|
|
|
(prepare_for_detach, wait_for_inferior, fetch_inferior_event): Use
|
|
|
|
|
do_target_wait.
|
|
|
|
|
(wait_one): New function.
|
|
|
|
|
(THREAD_STOPPED_BY): New macro.
|
|
|
|
|
(thread_stopped_by_watchpoint, thread_stopped_by_sw_breakpoint)
|
|
|
|
|
(thread_stopped_by_hw_breakpoint): New functions.
|
|
|
|
|
(switch_to_thread_cleanup, save_waitstatus, stop_all_threads): New
|
|
|
|
|
functions.
|
|
|
|
|
(handle_inferior_event): Also call set_resumed(false) on all
|
|
|
|
|
threads implicitly stopped by the event.
|
|
|
|
|
(restart_threads, resumed_thread_with_pending_status): New
|
|
|
|
|
functions.
|
|
|
|
|
(finish_step_over): If we were doing an in-line step-over before,
|
|
|
|
|
and no longer are after trying to start a new step-over, restart
|
|
|
|
|
all threads. If we have multiple threads with pending events,
|
|
|
|
|
save the current event and go through the event loop again.
|
|
|
|
|
(handle_signal_stop): Return early if finish_step_over returns
|
|
|
|
|
false.
|
|
|
|
|
<random signal>: If we get a signal while stepping over a
|
|
|
|
|
breakpoint in-line in non-stop mode, restart all threads. Clear
|
|
|
|
|
step_over_info before delivering the signal.
|
|
|
|
|
(keep_going_stepped_thread): Use internal_error instead of
|
|
|
|
|
gdb_assert. Mark the thread as resumed.
|
|
|
|
|
(keep_going_pass_signal): Assert the thread isn't already resumed.
|
|
|
|
|
If some other thread is doing an in-line step-over, defer the
|
|
|
|
|
resume. If we just started a new in-line step-over, stop all
|
|
|
|
|
threads. Don't clear step_over_info.
|
|
|
|
|
(infrun_async_inferior_event_handler): New function.
|
|
|
|
|
(_initialize_infrun): Create async event handler with
|
|
|
|
|
infrun_async_inferior_event_handler as callback.
|
|
|
|
|
(infrun_async): New declaration.
|
|
|
|
|
* target.c (target_async): New function.
|
|
|
|
|
* target.h (target_async): Declare macro and readd as function
|
|
|
|
|
declaration.
|
|
|
|
|
* target/waitstatus.h (enum target_stop_reason)
|
|
|
|
|
<TARGET_STOPPED_BY_SINGLE_STEP>: New value.
|
|
|
|
|
* thread.c (new_thread): Clear the new waitstatus field.
|
|
|
|
|
(set_resumed): New function.
|
|
|
|
|
|
2015-08-07 18:23:59 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (keep_going_stepped_thread): New function, factored out
|
|
|
|
|
from ...
|
|
|
|
|
(switch_back_to_stepped_thread): ... here.
|
|
|
|
|
|
2015-08-07 18:23:59 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (currently_stepping): Extend intro comment.
|
|
|
|
|
* target.h (target_resume): Extend intro comment.
|
|
|
|
|
|
2015-08-07 18:23:58 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (switch_back_to_stepped_thread): Use ecs->ptid instead
|
|
|
|
|
of inferior_ptid. If the stepped thread vanished, return 0
|
|
|
|
|
instead of resuming here. Use reset_ecs. Print the prev_pc and
|
|
|
|
|
the current stop_pc in log message. Clear trap_expected if the
|
|
|
|
|
thread advanced. Don't pass currently_stepping to
|
|
|
|
|
do_target_resume.
|
|
|
|
|
|
2015-08-07 18:23:58 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (struct thread_info) <prev_pc>: Extend comment.
|
|
|
|
|
* infrun.c (struct execution_control_state): Move higher up in the
|
|
|
|
|
file.
|
|
|
|
|
(reset_ecs): New function.
|
|
|
|
|
(start_step_over): Now returns int. Rewrite to use
|
|
|
|
|
keep_going_pass_signal instead of manually starting a displaced step.
|
|
|
|
|
(resume): Don't call set_running here. If displaced stepping
|
|
|
|
|
can't start now, clear trap_expected.
|
|
|
|
|
(find_thread_needs_step_over): Delete function.
|
|
|
|
|
(proceed): Set up finish_thread_state_cleanup. Call set_running.
|
|
|
|
|
If the current thread needs a step over, push it in the step-over
|
|
|
|
|
chain. Don't set insert breakpoints nor call resume directly
|
|
|
|
|
here. Instead rewrite to use start_step_over and
|
|
|
|
|
keep_going_pass_signal.
|
|
|
|
|
(finish_step_over): New function.
|
|
|
|
|
(handle_signal_stop): Call finish_step_over instead of
|
|
|
|
|
start_step_over.
|
|
|
|
|
(switch_back_to_stepped_thread): If the event thread needs another
|
|
|
|
|
step-over do that first. Use start_step_over.
|
|
|
|
|
(keep_going_pass_signal): New function, factored out from ...
|
|
|
|
|
(keep_going): ... here.
|
|
|
|
|
(_initialize_infrun): Comment moved here.
|
|
|
|
|
* thread.c (set_running_thread): New function.
|
|
|
|
|
(set_running, finish_thread_state): Use set_running_thread.
|
|
|
|
|
|
Embed the pending step-over chain in thread_info objects
In order to teach non-stop mode to do in-line step-overs (pause all
threads, remove breakpoint, single-step, reinsert breakpoint, restart
threads), we'll need to be able to queue in-line step over requests,
much like we queue displaced stepping (out-of-line) requests.
Actually, the queue should be the same -- threads wait for their turn
to step past something (breakpoint, watchpoint), doesn't matter what
technique we end up using when the step over actually starts.
I found that the queue management ends up simpler and more efficient
if embedded in the thread objects themselves. This commit converts
the existing displaced stepping queue to that. Later patches will
make the in-line step-overs code paths use it too.
gdb/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* gdbthread.h (struct thread_info) <step_over_prev,
step_over_next>: New fields.
(thread_step_over_chain_enqueue, thread_step_over_chain_remove)
(thread_step_over_chain_next, thread_is_in_step_over_chain): New
declarations.
* infrun.c (struct displaced_step_request): Delete.
(struct displaced_step_inferior_state) <step_request_queue>:
Delete field.
(displaced_step_prepare): Assert that trap_expected is set. Use
thread_step_over_chain_enqueue. Split starting a new displaced
step to ...
(start_step_over): ... this new function.
(resume): Assert the thread isn't waiting for a step over already.
(proceed): Assert the thread isn't waiting for a step over
already.
(infrun_thread_stop_requested): Adjust to remove threads from the
embedded step-over chain.
(handle_inferior_event) <fork/vfork>: Call start_step_over after
displaced_step_fixup.
(handle_signal_stop): Call start_step_over after
displaced_step_fixup.
* infrun.h (step_over_queue_head): New declaration.
* thread.c (step_over_chain_enqueue, step_over_chain_remove)
(thread_step_over_chain_next, thread_is_in_step_over_chain)
(thread_step_over_chain_enqueue)
(thread_step_over_chain_remove): New functions.
(delete_thread_1): Remove thread from the step-over chain.
2015-08-07 18:23:57 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (struct thread_info) <step_over_prev,
|
|
|
|
|
step_over_next>: New fields.
|
|
|
|
|
(thread_step_over_chain_enqueue, thread_step_over_chain_remove)
|
|
|
|
|
(thread_step_over_chain_next, thread_is_in_step_over_chain): New
|
|
|
|
|
declarations.
|
|
|
|
|
* infrun.c (struct displaced_step_request): Delete.
|
|
|
|
|
(struct displaced_step_inferior_state) <step_request_queue>:
|
|
|
|
|
Delete field.
|
|
|
|
|
(displaced_step_prepare): Assert that trap_expected is set. Use
|
|
|
|
|
thread_step_over_chain_enqueue. Split starting a new displaced
|
|
|
|
|
step to ...
|
|
|
|
|
(start_step_over): ... this new function.
|
|
|
|
|
(resume): Assert the thread isn't waiting for a step over already.
|
|
|
|
|
(proceed): Assert the thread isn't waiting for a step over
|
|
|
|
|
already.
|
|
|
|
|
(infrun_thread_stop_requested): Adjust to remove threads from the
|
|
|
|
|
embedded step-over chain.
|
|
|
|
|
(handle_inferior_event) <fork/vfork>: Call start_step_over after
|
|
|
|
|
displaced_step_fixup.
|
|
|
|
|
(handle_signal_stop): Call start_step_over after
|
|
|
|
|
displaced_step_fixup.
|
|
|
|
|
* infrun.h (step_over_queue_head): New declaration.
|
|
|
|
|
* thread.c (step_over_chain_enqueue, step_over_chain_remove)
|
|
|
|
|
(thread_step_over_chain_next, thread_is_in_step_over_chain)
|
|
|
|
|
(thread_step_over_chain_enqueue)
|
|
|
|
|
(thread_step_over_chain_remove): New functions.
|
|
|
|
|
(delete_thread_1): Remove thread from the step-over chain.
|
|
|
|
|
|
2015-08-07 18:23:57 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (thread_still_needs_step_over): Rename to ...
|
|
|
|
|
(thread_still_needs_step_over_bp): ... this.
|
|
|
|
|
(enum step_over_what): New.
|
|
|
|
|
(thread_still_needs_step_over): Reimplement.
|
|
|
|
|
|
2015-08-07 18:23:56 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_wait_as): If not waiting for a stop reply,
|
|
|
|
|
return TARGET_WAITKIND_NO_RESUMED. If TARGET_WNOHANG is
|
|
|
|
|
requested, don't block waiting forever.
|
|
|
|
|
|
2015-08-07 18:23:56 +02:00
|
|
|
|
2015-08-07 Pedro Alves <pedro@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (adjust_pc_after_break): Now takes thread_info and
|
|
|
|
|
waitstatus pointers instead of an ecs. Adjust.
|
|
|
|
|
(handle_inferior_event): Adjust caller.
|
|
|
|
|
|
Fix and test "checkpoint" in non-stop mode
Letting a "checkpoint" run to exit with "set non-stop on" behaves
differently compared to the default all-stop mode ("set non-stop
off").
Currently, in non-stop mode:
(gdb) start
Temporary breakpoint 1 at 0x40086b: file src/gdb/testsuite/gdb.base/checkpoint.c, line 28.
Starting program: build/gdb/testsuite/gdb.base/checkpoint
Temporary breakpoint 1, main () at src/gdb/testsuite/gdb.base/checkpoint.c:28
28 char *tmp = &linebuf[0];
(gdb) checkpoint
checkpoint 1: fork returned pid 24948.
(gdb) c
Continuing.
Copy complete.
Deleting copy.
[Inferior 1 (process 24944) exited normally]
[Switching to process 24948]
(gdb) info threads
Id Target Id Frame
1 process 24948 "checkpoint" (running)
No selected thread. See `help thread'.
(gdb) c
The program is not being run.
(gdb)
Two issues above:
1. Thread 1 got stuck in "(running)" state (it isn't really running)
2. While checkpoints try to preserve the illusion that the thread is
still the same when the process exits, GDB switched to "No thread
selected." instead of staying with thread 1 selected.
Problem #1 is caused by handle_inferior_event and normal_stop not
considering that when a
TARGET_WAITKIND_SIGNALLED/TARGET_WAITKIND_EXITED event is reported,
and the inferior is mourned, the target may still have execution.
Problem #2 is caused by the make_cleanup_restore_current_thread
cleanup installed by fetch_inferior_event not being able to find the
original thread 1's ptid in the thread list, thus not being able to
restore thread 1 as selected thread. The fix is to make the cleanup
installed by make_cleanup_restore_current_thread aware of thread ptid
changes, by installing a thread_ptid_changed observer that adjusts the
cleanup's data.
After the patch, we get the same in all-stop and non-stop modes:
(gdb) c
Continuing.
Copy complete.
Deleting copy.
[Inferior 1 (process 25109) exited normally]
[Switching to process 25113]
(gdb) info threads
Id Target Id Frame
* 1 process 25113 "checkpoint" main () at src/gdb/testsuite/gdb.base/checkpoint.c:28
(gdb)
Turns out the whole checkpoints.exp file can run in non-stop mode
unmodified. I thought of moving most of the test file's contents to a
procedure that can be called twice, once in non-stop mode and another
in all-stop mode. But then, the test already takes close to 30
seconds to run on my machine, so I thought it'd be nicer to run
all-stop and non-stop mode in parallel. Thus I added a new
checkpoint-ns.exp file that just appends "set non-stop on" to GDBFLAGS
and sources checkpoint.exp.
gdb/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* infrun.c (handle_inferior_event): If we get
TARGET_WAITKIND_SIGNALLED or TARGET_WAITKIND_EXITED in non-stop
mode, mark all threads of the exiting process as not-executing.
(normal_stop): If we get TARGET_WAITKIND_SIGNALLED or
TARGET_WAITKIND_EXITED in non-stop mode, finish all threads of the
exiting process, if inferior_ptid still points at a process.
* thread.c (struct current_thread_cleanup) <next>: New field.
(current_thread_cleanup_chain): New global.
(restore_current_thread_ptid_changed): New function.
(restore_current_thread_cleanup_dtor): Remove the cleanup from the
current_thread_cleanup_chain list.
(make_cleanup_restore_current_thread): Add the cleanup data to the
current_thread_cleanup_chain list.
(_initialize_thread): Install restore_current_thread_ptid_changed
as thread_ptid_changed observer.
gdb/testsuite/ChangeLog:
2015-08-07 Pedro Alves <palves@redhat.com>
* gdb.base/checkpoint-ns.exp: New file.
* gdb.base/checkpoint.exp: Pass explicit "checkpoint.c" to
standard_testfile.
2015-08-07 18:23:55 +02:00
|
|
|
|
2015-08-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (handle_inferior_event): If we get
|
|
|
|
|
TARGET_WAITKIND_SIGNALLED or TARGET_WAITKIND_EXITED in non-stop
|
|
|
|
|
mode, mark all threads of the exiting process as not-executing.
|
|
|
|
|
(normal_stop): If we get TARGET_WAITKIND_SIGNALLED or
|
|
|
|
|
TARGET_WAITKIND_EXITED in non-stop mode, finish all threads of the
|
|
|
|
|
exiting process, if inferior_ptid still points at a process.
|
|
|
|
|
* thread.c (struct current_thread_cleanup) <next>: New field.
|
|
|
|
|
(current_thread_cleanup_chain): New global.
|
|
|
|
|
(restore_current_thread_ptid_changed): New function.
|
|
|
|
|
(restore_current_thread_cleanup_dtor): Remove the cleanup from the
|
|
|
|
|
current_thread_cleanup_chain list.
|
|
|
|
|
(make_cleanup_restore_current_thread): Add the cleanup data to the
|
|
|
|
|
current_thread_cleanup_chain list.
|
|
|
|
|
(_initialize_thread): Install restore_current_thread_ptid_changed
|
|
|
|
|
as thread_ptid_changed observer.
|
|
|
|
|
|
ignore invalid DOF provider sections
On x86-solaris 10, we noticed that starting a program would sometimes
cause the debugger to crash. For instance:
% gdb a
(gdb) break adainit
Breakpoint 1 at 0x8051f03
(gdb) run
Starting program: /[...]/a
[Thread debugging using libthread_db enabled]
zsh: 24398 segmentation fault (core dumped) /[...]/gdb a
The exception occurs in dtrace_process_dof_probe, while trying
to process each probe referenced by a DTRACE_DOF_SECT_TYPE_PROVIDER
DOF section from /lib/libc.so.1. For reference, the ELF section
in that shared library providing the DOF data has the following
characteristics:
Idx Name Size VMA LMA File off Algn
14 .SUNW_dof 0000109d 000b4398 000b4398 000b4398 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
The function dtrace_process_dof gets passed the contents of that
ELF section, which allows it to determine the location of the table
where all DOF sections are described. I dumped the contents of
each DOF section as seen by GDB, and it seemed to be plausible,
because the offset of each DOF section was pretty much equal to
the sum of the offset and size of the previous DOF section. Also,
the offset + sum of the last section corresponds to the size of
the .SUNW_dof section.
Things start to break down when processing one of the DOF sections
that has a type of DTRACE_DOF_SECT_TYPE_PROVIDER. It gets the contents
of this DOF section via:
struct dtrace_dof_provider *provider = (struct dtrace_dof_provider *)
DTRACE_DOF_PTR (dof, DOF_UINT (dof, section->dofs_offset));
Said more simply, the struct dtrace_dof_provider data is at
section->dofs_offset of the entire DOF contents. Given that
the contents of SECTION seemed to make sense, so far so good.
However, what SECTION tells us is that our DOF provider section
is 40 bytes long:
(gdb) print *section
$36 = {dofs_type = 15, dofs_align = 4, dofs_flags = 1,
dofs_entsize = 0, dofs_offset = 3264, dofs_size = 40}
^^^^^^^^^^^^^^
But on the other hand:
(gdb) p sizeof (struct dtrace_dof_provider)
$54 = 44
In other words GDB expected a bigger DOF section and when we try to
fetch the value of the last field of that DOF section (dofpv_prenoffs)...
eoffsets_s = DTRACE_DOF_SECT (dof,
DOF_UINT (dof, provider->dofpv_prenoffs));
... we end up reading data that actually belongs to another DOF
section, and therefore irrelevant. This in turn means that the value
of eofftab gets incorrectly set, since it depends on eoffsets_s:
eofftab = DTRACE_DOF_PTR (dof, DOF_UINT (dof, eoffsets_s->dofs_offset));
This invalid address quickly catches up to us when we pass it to
dtrace_process_dof_probe shortly after, where we crash because
we try to subscript it:
Program received signal SIGSEGV, Segmentation fault.
0x08155bba in dtrace_process_dof_probe ([...]) at [...]/dtrace-probe.c:378
378 = ((uint32_t *) eofftab)[...];
This patch fixes the issue by detecting provider DOF sections
that are smaller than expected, and discarding the DOF data.
gdb/ChangeLog:
* dtrace-probe.c (dtrace_process_dof): Ignore the objfile's DOF
data if a DTRACE_DOF_SECT_TYPE_PROVIDER section is found to be
smaller than expected.
2015-08-06 22:13:32 +02:00
|
|
|
|
2015-08-07 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* dtrace-probe.c (dtrace_process_dof): Ignore the objfile's DOF
|
|
|
|
|
data if a DTRACE_DOF_SECT_TYPE_PROVIDER section is found to be
|
|
|
|
|
smaller than expected.
|
|
|
|
|
|
2015-08-04 16:42:03 +02:00
|
|
|
|
2015-08-07 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (get_frame_language): Moved ...
|
|
|
|
|
* frame.c (get_frame_language): ... to here.
|
|
|
|
|
* language.h (get_frame_language): Declaration moved to frame.h.
|
|
|
|
|
* frame.h: Add language.h include, for language enum.
|
|
|
|
|
(get_frame_language): Declaration moved from language.h.
|
|
|
|
|
* language.c: Add frame.h include.
|
|
|
|
|
* top.c: Add frame.h include.
|
|
|
|
|
* symtab.h (struct obj_section): Declare.
|
|
|
|
|
(struct cmd_list_element): Declare.
|
|
|
|
|
|
2015-07-14 16:07:35 +02:00
|
|
|
|
2015-08-07 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* language.c (show_language_command): Find selected frame before
|
|
|
|
|
asking for the language of that frame.
|
|
|
|
|
(set_language_command): Likewise.
|
|
|
|
|
* language.h (get_frame_language): Add frame parameter.
|
|
|
|
|
* stack.c (get_frame_language): Add frame parameter, assert
|
|
|
|
|
parameter is not NULL, update comment and reindent.
|
|
|
|
|
* top.c (check_frame_language_change): Pass the selected frame
|
|
|
|
|
into get_frame_language.
|
|
|
|
|
|
2014-03-19 13:49:58 +01:00
|
|
|
|
2015-08-07 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_compute_ftrace_bts): Clear insn flags.
|
|
|
|
|
(pt_btrace_insn_flags): New.
|
|
|
|
|
(ftrace_add_pt): Call pt_btrace_insn_flags.
|
|
|
|
|
* btrace.h (btrace_insn_flag): New.
|
|
|
|
|
(btrace_insn) <flags>: New.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Print insn prefix.
|
|
|
|
|
* NEWS: Announce it.
|
|
|
|
|
|
2015-07-28 15:47:40 +02:00
|
|
|
|
2015-08-07 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac: Check for PERF_ATTR_SIZE_VER5 in linux/perf_event.h
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2015-08-07 00:35:26 +02:00
|
|
|
|
2015-08-06 Yaakov Selkowitz <yselkowi@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (LIBICONV): Define.
|
|
|
|
|
(CLIBS): Add LIBICONV.
|
|
|
|
|
* acinclude.m4: Use config/iconv.m4 instead of custom AM_ICONV.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2015-08-06 23:21:41 +02:00
|
|
|
|
2015-08-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (set_fp_model_sfunc): Add cast from integer to enum.
|
|
|
|
|
(arm_set_abi): Likewise.
|
|
|
|
|
* ax-general.c (ax_print): Likewise.
|
|
|
|
|
* c-exp.y (exp : string_exp): Likewise.
|
|
|
|
|
* compile/compile-loc2c.c (compute_stack_depth_worker): Likewise.
|
|
|
|
|
(do_compile_dwarf_expr_to_c): Likewise.
|
|
|
|
|
* cp-name-parser.y (demangler_special : DEMANGLER_SPECIAL start):
|
|
|
|
|
Likewise.
|
|
|
|
|
* dwarf2expr.c (execute_stack_op): Likewise.
|
|
|
|
|
* dwarf2loc.c (dwarf2_compile_expr_to_ax): Likewise.
|
|
|
|
|
(disassemble_dwarf_expression): Likewise.
|
|
|
|
|
* dwarf2read.c (dwarf2_add_member_fn): Likewise.
|
|
|
|
|
(read_array_order): Likewise.
|
|
|
|
|
(abbrev_table_read_table): Likewise.
|
|
|
|
|
(read_attribute_value): Likewise.
|
|
|
|
|
(skip_unknown_opcode): Likewise.
|
|
|
|
|
(dwarf_decode_macro_bytes): Likewise.
|
|
|
|
|
(dwarf_decode_macros): Likewise.
|
|
|
|
|
* eval.c (value_f90_subarray): Likewise.
|
|
|
|
|
* guile/scm-param.c (gdbscm_make_parameter): Likewise.
|
|
|
|
|
* i386-linux-tdep.c (i386_canonicalize_syscall): Likewise.
|
|
|
|
|
* infrun.c (handle_command): Likewise.
|
|
|
|
|
* memory-map.c (memory_map_start_memory): Likewise.
|
|
|
|
|
* osabi.c (set_osabi): Likewise.
|
|
|
|
|
* parse.c (operator_length_standard): Likewise.
|
|
|
|
|
* ppc-linux-tdep.c (ppc_canonicalize_syscall): Likewise, and use
|
|
|
|
|
single return point.
|
|
|
|
|
* python/py-frame.c (gdbpy_frame_stop_reason_string): Likewise.
|
|
|
|
|
* python/py-symbol.c (gdbpy_lookup_symbol): Likewise.
|
|
|
|
|
(gdbpy_lookup_global_symbol): Likewise.
|
|
|
|
|
* record-full.c (record_full_restore): Likewise.
|
|
|
|
|
* regcache.c (regcache_register_status): Likewise.
|
|
|
|
|
(regcache_raw_read): Likewise.
|
|
|
|
|
(regcache_cooked_read): Likewise.
|
|
|
|
|
* rs6000-tdep.c (powerpc_set_vector_abi): Likewise.
|
|
|
|
|
* symtab.c (initialize_ordinary_address_classes): Likewise.
|
|
|
|
|
* target-debug.h (target_debug_print_signals): Likewise.
|
|
|
|
|
* utils.c (do_restore_current_language): Likewise.
|
|
|
|
|
|
2015-08-06 18:24:58 +02:00
|
|
|
|
2015-08-06 Clem Dickey <clemd@acm.org>
|
|
|
|
|
|
|
|
|
|
PR python/17136
|
|
|
|
|
* python/lib/gdb/command/type_printers.py (InfoTypePrinter): Fix typo.
|
|
|
|
|
|
2015-08-06 18:01:05 +02:00
|
|
|
|
2015-08-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* complaints.c (enum complaint_series): Add newlines and remove
|
|
|
|
|
out of date comment.
|
|
|
|
|
(struct complaints) <series>: Change type to enum
|
|
|
|
|
complaint_series and remove out of date comment.
|
|
|
|
|
(symfile_complaint_hook): Use equivalent enum value
|
|
|
|
|
ISOLATED_MESSAGE instead of 0.
|
|
|
|
|
|
2015-07-30 17:15:24 +02:00
|
|
|
|
2015-08-06 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-waitpid.c (my_waitpid): Only print *status if waitpid
|
|
|
|
|
returned > 0.
|
|
|
|
|
|
2015-08-06 13:27:32 +02:00
|
|
|
|
2015-08-06 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* common/agent.c (symbol_list) <required>: Remove.
|
|
|
|
|
|
gdbserver: Fix non-stop / fork / step-over issues
Ref: https://sourceware.org/ml/gdb-patches/2015-07/msg00868.html
This adds a test that has a multithreaded program have several threads
continuously fork, while another thread continuously steps over a
breakpoint.
This exposes several intertwined issues, which this patch addresses:
- When we're stopping and suspending threads, some thread may fork,
and we missed setting its suspend count to 1, like we do when a new
clone/thread is detected. When we next unsuspend threads, the fork
child's suspend count goes below 0, which is bogus and fails an
assertion.
- If a step-over is cancelled because a signal arrives, but then gdb
is not interested in the signal, we pass the signal straight back
to the inferior. However, we miss that we need to re-increment the
suspend counts of all other threads that had been paused for the
step-over. As a result, other threads indefinitely end up stuck
stopped.
- If a detach request comes in just while gdbserver is handling a
step-over (in the test at hand, this is GDB detaching the fork
child), gdbserver internal errors in stabilize_thread's helpers,
which assert that all thread's suspend counts are 0 (otherwise we
wouldn't be able to move threads out of the jump pads). The
suspend counts aren't 0 while a step-over is in progress, because
all threads but the one stepping past the breakpoint must remain
paused until the step-over finishes and the breakpoint can be
reinserted.
- Occasionally, we see "BAD - reinserting but not stepping." being
output (from within linux_resume_one_lwp_throw). That was because
GDB pokes memory while gdbserver is busy with a step-over, and that
suspends threads, and then re-resumes them with proceed_one_lwp,
which missed another reason to tell linux_resume_one_lwp that the
thread should be set back to stepping.
- In a couple places, we were resuming threads that are meant to be
suspended. E.g., when a vCont;c/s request for thread B comes in
just while gdbserver is stepping thread A past a breakpoint. The
resume for thread B must be deferred until the step-over finishes.
- The test runs with both "set detach-on-fork" on and off. When off,
it exercises the case of GDB detaching the fork child explicitly.
When on, it exercises the case of gdb resuming the child
explicitly. In the "off" case, gdb seems to exponentially become
slower as new inferiors are created. This is _very_ noticeable as
with only 100 inferiors gdb is crawling already, which makes the
test take quite a bit to run. For that reason, I've disabled the
"off" variant for now.
gdb/ChangeLog:
2015-08-06 Pedro Alves <palves@redhat.com>
* target/waitstatus.h (enum target_stop_reason)
<TARGET_STOPPED_BY_SINGLE_STEP>: New value.
gdb/gdbserver/ChangeLog:
2015-08-06 Pedro Alves <palves@redhat.com>
* linux-low.c (handle_extended_wait): Set the fork child's suspend
count if stopping and suspending threads.
(check_stopped_by_breakpoint): If stopped by trace, set the LWP's
stop reason to TARGET_STOPPED_BY_SINGLE_STEP.
(linux_detach): Complete an ongoing step-over.
(lwp_suspended_inc, lwp_suspended_decr): New functions. Use
throughout.
(resume_stopped_resumed_lwps): Don't resume a suspended thread.
(linux_wait_1): If passing a signal to the inferior after
finishing a step-over, unsuspend and re-resume all lwps. If we
see a single-step event but the thread should be continuing, don't
pass the trap to gdb.
(stuck_in_jump_pad_callback, move_out_of_jump_pad_callback): Use
internal_error instead of gdb_assert.
(enqueue_pending_signal): New function.
(check_ptrace_stopped_lwp_gone): Add debug output.
(start_step_over): Use internal_error instead of gdb_assert.
(complete_ongoing_step_over): New function.
(linux_resume_one_thread): Don't resume a suspended thread.
(proceed_one_lwp): If the LWP is stepping over a breakpoint, reset
it stepping.
gdb/testsuite/ChangeLog:
2015-08-06 Pedro Alves <palves@redhat.com>
* gdb.threads/forking-threads-plus-breakpoint.exp: New file.
* gdb.threads/forking-threads-plus-breakpoint.c: New file.
2015-08-06 11:30:18 +02:00
|
|
|
|
2015-08-06 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target/waitstatus.h (enum target_stop_reason)
|
|
|
|
|
<TARGET_STOPPED_BY_SINGLE_STEP>: New value.
|
|
|
|
|
|
stepping is disturbed by setjmp/longjmp | try/catch in other threads
At https://sourceware.org/ml/gdb-patches/2015-08/msg00097.html, Joel
observed that trying to next/step a program on GNU/Linux sometimes
results in the following failed assertion:
% gdb -q .obj/gprof/main
(gdb) start
(gdb) n
(gdb) step
[...]/infrun.c:2391: internal-error:
resume: Assertion `sig != GDB_SIGNAL_0' failed.
What happened is that, during the "next" operation, GDB hit a
longjmp/exception/step-resume breakpoint but failed to see that this
breakpoint was set for a different thread than the one being stepped.
Joel's detailed analysis follows:
More precisely, at the end of the "start" command, we are stopped at
the start of function Main in main.adb; there are 4 threads in total,
and we are in the main thread (which is thread 1):
(gdb) info thread
Id Target Id Frame
4 Thread 0xb7a56ba0 (LWP 28379) 0xffffe410 in __kernel_vsyscall ()
3 Thread 0xb7c5aba0 (LWP 28378) 0xffffe410 in __kernel_vsyscall ()
2 Thread 0xb7e5eba0 (LWP 28377) 0xffffe410 in __kernel_vsyscall ()
* 1 Thread 0xb7ea18c0 (LWP 28370) main () at /[...]/main.adb:57
All the logs below reference Thread ID/LWP, but it'll be easier to
talk about the threads by GDB thread number. For instance, thread 1
is LWP 28370 while thread 3 is LWP 28378. So, the explanations below
translate the LWPs into thread numbers.
Back to what happens while we are trying to "next' our program:
(gdb) n
infrun: clear_proceed_status_thread (Thread 0xb7a56ba0 (LWP 28379))
infrun: clear_proceed_status_thread (Thread 0xb7c5aba0 (LWP 28378))
infrun: clear_proceed_status_thread (Thread 0xb7e5eba0 (LWP 28377))
infrun: clear_proceed_status_thread (Thread 0xb7ea18c0 (LWP 28370))
infrun: proceed (addr=0xffffffff, signal=GDB_SIGNAL_DEFAULT)
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0xb7ea18c0 (LWP 28370)] at 0x805451e
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28370.0 [Thread 0xb7ea18c0 (LWP 28370)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x8054523
We've resumed thread 1 (LWP 28370), and received in return a signal
that the same thread stopped slightly further. It's still in the
range of instructions for the line of source we started the "next"
from, as evidenced by the following trace...
infrun: stepping inside range [0x805451e-0x8054531]
... and thus, we decide to continue stepping the same thread:
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0xb7ea18c0 (LWP 28370)] at 0x8054523
infrun: prepare_to_wait
That's when we get an event from a different thread (thread 3)...
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28378.0 [Thread 0xb7c5aba0 (LWP 28378)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x80782d0
infrun: context switch
infrun: Switching context from Thread 0xb7ea18c0 (LWP 28370) to Thread 0xb7c5aba0 (LWP 28378)
... which we find to be at the address where we set a breakpoint on
"the unwinder debug hook" (namely "_Unwind_DebugHook"). But GDB fails
to notice that the breakpoint was inserted for thread 1 only, and so
decides to handle it as...
infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME
... and inserts a breakpoint at the corresponding resume address, as
evidenced by this the next log:
infrun: exception resume at 80542a2
That breakpoint seems innocent right now, but will play a role fairly
quickly. But for now, GDB has inserted the exception-resume
breakpoint, and needs to single-step thread 3 past the breakpoint it
just hit. Thus, it temporarily disables the exception breakpoint, and
requests a step of that thread:
infrun: skipping breakpoint: stepping past insn at: 0x80782d0
infrun: skipping breakpoint: stepping past insn at: 0x80782d0
infrun: skipping breakpoint: stepping past insn at: 0x80782d0
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 0xb7c5aba0 (LWP 28378)] at 0x80782d0
infrun: prepare_to_wait
We then get a notification, still from thread 3, that it's now past
that breakpoint...
infrun: prepare_to_wait
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28378.0 [Thread 0xb7c5aba0 (LWP 28378)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x8078424
... so we can resume what we were doing before, which is single-stepping
thread 1 until we get to a new line of code:
infrun: switching back to stepped thread
infrun: Switching context from Thread 0xb7c5aba0 (LWP 28378) to Thread 0xb7ea18c0 (LWP 28370)
infrun: expected thread still hasn't advanced
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0xb7ea18c0 (LWP 28370)] at 0x8054523
The "resume" log above shows that we're resuming thread 1 from where
we left off (0x8054523). We get one more stop at 0x8054529, which is
still inside our stepping range so we go again. That's when we get
the following event, from thread 3:
infrun: prepare_to_wait
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28378.0 [Thread 0xb7c5aba0 (LWP 28378)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x80542a2
Now the stop_pc address is interesting, because it's the address of
"exception resume" breakpoint...
infrun: context switch
infrun: Switching context from Thread 0xb7ea18c0 (LWP 28370) to Thread 0xb7c5aba0 (LWP 28378)
infrun: BPSTAT_WHAT_CLEAR_LONGJMP_RESUME
... and since that location is at a different line of code, this is
where it decides the "next" operation should stop:
infrun: stop_waiting
[Switching to Thread 0xb7c5aba0 (LWP 28378)]
0x080542a2 in inte_tache_rt.ttache_rt (
<_task>=0x80968ec <inte_tache_rt_inst.tache2>)
at /[...]/inte_tache_rt.adb:54
54 end loop;
However, what GDB should have noticed earlier that the exception
breakpoint we hit was for a different thread, thus should have
single-stepped that thread out of the breakpoint _without_ inserting
the exception-return breakpoint, and then resumed the single-stepping
of the initial thread (thread 1) until that thread stepped out of its
stepping range.
This is what this patch does, and after applying it, GDB now correctly
stops on the next line of code.
The patch adds a C++ test that exercises this, both for setjmp/longjmp
and exception breakpoints. With an unpatched GDB it shows:
(gdb) next
[Switching to Thread 22445.22455]
thread_try_catch (arg=0x0) at /home/pedro/gdb/mygit/build/../src/gdb/testsuite/gdb.threads/next-other-thr-longjmp.c:59
59 catch (...)
(gdb) FAIL: gdb.threads/next-other-thr-longjmp.exp: next to line 1
next
/home/pedro/gdb/mygit/build/../src/gdb/infrun.c:4865: internal-error: process_event_stop_test: Assertion `ecs->event_thread->control.exception_resume_breakpoint != NULL' fa
iled.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/next-other-thr-longjmp.exp: next to line 2 (GDB internal error)
Resyncing due to internal error.
n
Tested on x86_64-linux, no regressions.
gdb/ChangeLog:
2015-08-05 Pedro Alves <palves@redhat.com>
Joel Brobecker <brobecker@adacore.com>
* breakpoint.c (bpstat_what) <bp_longjmp, bp_longjmp_call_dummy>
<bp_exception, bp_longjmp_resume, bp_exception_resume>: Handle the
case where BS->STOP is not set.
gdb/testsuite/ChangeLog:
2015-08-05 Pedro Alves <palves@redhat.com>
* gdb.threads/next-while-other-thread-longjmps.c: New file.
* gdb.threads/next-while-other-thread-longjmps.exp: New file.
2015-08-05 21:01:42 +02:00
|
|
|
|
2015-08-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
2015-08-06 20:28:00 +02:00
|
|
|
|
* breakpoint.c (bpstat_what) <bp_longjmp, bp_longjmp_call_dummy>
|
stepping is disturbed by setjmp/longjmp | try/catch in other threads
At https://sourceware.org/ml/gdb-patches/2015-08/msg00097.html, Joel
observed that trying to next/step a program on GNU/Linux sometimes
results in the following failed assertion:
% gdb -q .obj/gprof/main
(gdb) start
(gdb) n
(gdb) step
[...]/infrun.c:2391: internal-error:
resume: Assertion `sig != GDB_SIGNAL_0' failed.
What happened is that, during the "next" operation, GDB hit a
longjmp/exception/step-resume breakpoint but failed to see that this
breakpoint was set for a different thread than the one being stepped.
Joel's detailed analysis follows:
More precisely, at the end of the "start" command, we are stopped at
the start of function Main in main.adb; there are 4 threads in total,
and we are in the main thread (which is thread 1):
(gdb) info thread
Id Target Id Frame
4 Thread 0xb7a56ba0 (LWP 28379) 0xffffe410 in __kernel_vsyscall ()
3 Thread 0xb7c5aba0 (LWP 28378) 0xffffe410 in __kernel_vsyscall ()
2 Thread 0xb7e5eba0 (LWP 28377) 0xffffe410 in __kernel_vsyscall ()
* 1 Thread 0xb7ea18c0 (LWP 28370) main () at /[...]/main.adb:57
All the logs below reference Thread ID/LWP, but it'll be easier to
talk about the threads by GDB thread number. For instance, thread 1
is LWP 28370 while thread 3 is LWP 28378. So, the explanations below
translate the LWPs into thread numbers.
Back to what happens while we are trying to "next' our program:
(gdb) n
infrun: clear_proceed_status_thread (Thread 0xb7a56ba0 (LWP 28379))
infrun: clear_proceed_status_thread (Thread 0xb7c5aba0 (LWP 28378))
infrun: clear_proceed_status_thread (Thread 0xb7e5eba0 (LWP 28377))
infrun: clear_proceed_status_thread (Thread 0xb7ea18c0 (LWP 28370))
infrun: proceed (addr=0xffffffff, signal=GDB_SIGNAL_DEFAULT)
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0xb7ea18c0 (LWP 28370)] at 0x805451e
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28370.0 [Thread 0xb7ea18c0 (LWP 28370)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x8054523
We've resumed thread 1 (LWP 28370), and received in return a signal
that the same thread stopped slightly further. It's still in the
range of instructions for the line of source we started the "next"
from, as evidenced by the following trace...
infrun: stepping inside range [0x805451e-0x8054531]
... and thus, we decide to continue stepping the same thread:
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0xb7ea18c0 (LWP 28370)] at 0x8054523
infrun: prepare_to_wait
That's when we get an event from a different thread (thread 3)...
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28378.0 [Thread 0xb7c5aba0 (LWP 28378)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x80782d0
infrun: context switch
infrun: Switching context from Thread 0xb7ea18c0 (LWP 28370) to Thread 0xb7c5aba0 (LWP 28378)
... which we find to be at the address where we set a breakpoint on
"the unwinder debug hook" (namely "_Unwind_DebugHook"). But GDB fails
to notice that the breakpoint was inserted for thread 1 only, and so
decides to handle it as...
infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME
... and inserts a breakpoint at the corresponding resume address, as
evidenced by this the next log:
infrun: exception resume at 80542a2
That breakpoint seems innocent right now, but will play a role fairly
quickly. But for now, GDB has inserted the exception-resume
breakpoint, and needs to single-step thread 3 past the breakpoint it
just hit. Thus, it temporarily disables the exception breakpoint, and
requests a step of that thread:
infrun: skipping breakpoint: stepping past insn at: 0x80782d0
infrun: skipping breakpoint: stepping past insn at: 0x80782d0
infrun: skipping breakpoint: stepping past insn at: 0x80782d0
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [Thread 0xb7c5aba0 (LWP 28378)] at 0x80782d0
infrun: prepare_to_wait
We then get a notification, still from thread 3, that it's now past
that breakpoint...
infrun: prepare_to_wait
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28378.0 [Thread 0xb7c5aba0 (LWP 28378)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x8078424
... so we can resume what we were doing before, which is single-stepping
thread 1 until we get to a new line of code:
infrun: switching back to stepped thread
infrun: Switching context from Thread 0xb7c5aba0 (LWP 28378) to Thread 0xb7ea18c0 (LWP 28370)
infrun: expected thread still hasn't advanced
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0xb7ea18c0 (LWP 28370)] at 0x8054523
The "resume" log above shows that we're resuming thread 1 from where
we left off (0x8054523). We get one more stop at 0x8054529, which is
still inside our stepping range so we go again. That's when we get
the following event, from thread 3:
infrun: prepare_to_wait
infrun: target_wait (-1.0.0, status) =
infrun: 28370.28378.0 [Thread 0xb7c5aba0 (LWP 28378)],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x80542a2
Now the stop_pc address is interesting, because it's the address of
"exception resume" breakpoint...
infrun: context switch
infrun: Switching context from Thread 0xb7ea18c0 (LWP 28370) to Thread 0xb7c5aba0 (LWP 28378)
infrun: BPSTAT_WHAT_CLEAR_LONGJMP_RESUME
... and since that location is at a different line of code, this is
where it decides the "next" operation should stop:
infrun: stop_waiting
[Switching to Thread 0xb7c5aba0 (LWP 28378)]
0x080542a2 in inte_tache_rt.ttache_rt (
<_task>=0x80968ec <inte_tache_rt_inst.tache2>)
at /[...]/inte_tache_rt.adb:54
54 end loop;
However, what GDB should have noticed earlier that the exception
breakpoint we hit was for a different thread, thus should have
single-stepped that thread out of the breakpoint _without_ inserting
the exception-return breakpoint, and then resumed the single-stepping
of the initial thread (thread 1) until that thread stepped out of its
stepping range.
This is what this patch does, and after applying it, GDB now correctly
stops on the next line of code.
The patch adds a C++ test that exercises this, both for setjmp/longjmp
and exception breakpoints. With an unpatched GDB it shows:
(gdb) next
[Switching to Thread 22445.22455]
thread_try_catch (arg=0x0) at /home/pedro/gdb/mygit/build/../src/gdb/testsuite/gdb.threads/next-other-thr-longjmp.c:59
59 catch (...)
(gdb) FAIL: gdb.threads/next-other-thr-longjmp.exp: next to line 1
next
/home/pedro/gdb/mygit/build/../src/gdb/infrun.c:4865: internal-error: process_event_stop_test: Assertion `ecs->event_thread->control.exception_resume_breakpoint != NULL' fa
iled.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/next-other-thr-longjmp.exp: next to line 2 (GDB internal error)
Resyncing due to internal error.
n
Tested on x86_64-linux, no regressions.
gdb/ChangeLog:
2015-08-05 Pedro Alves <palves@redhat.com>
Joel Brobecker <brobecker@adacore.com>
* breakpoint.c (bpstat_what) <bp_longjmp, bp_longjmp_call_dummy>
<bp_exception, bp_longjmp_resume, bp_exception_resume>: Handle the
case where BS->STOP is not set.
gdb/testsuite/ChangeLog:
2015-08-05 Pedro Alves <palves@redhat.com>
* gdb.threads/next-while-other-thread-longjmps.c: New file.
* gdb.threads/next-while-other-thread-longjmps.exp: New file.
2015-08-05 21:01:42 +02:00
|
|
|
|
<bp_exception, bp_longjmp_resume, bp_exception_resume>: Handle the
|
|
|
|
|
case where BS->STOP is not set.
|
|
|
|
|
|
2015-08-05 16:30:57 +02:00
|
|
|
|
2015-08-05 Ulrich Weigand <uweigand@de.ibm.com>
|
|
|
|
|
|
|
|
|
|
* nat/gdb_thread_db.h: Add copyright header.
|
|
|
|
|
Protect against multiple inclusion.
|
|
|
|
|
|
Remove get_thread_id
This patch removes get_thread_id from aarch64-linux-nat.c,
arm-linux-nat.c and xtensa-linux-nat.c.
get_thread_id was added in this commit below in 2000,
41c49b06c471443d3baf2eaa2463a315f9b5edca
https://sourceware.org/ml/gdb-patches/2000-04/msg00398.html
which predates the ptid_t stuff added into GDB. Nowadays, lwpid of
inferior_ptid is only zero when the inferior is created (in
fork-child.c:fork_inferior) and its lwpid will be set after
linux_nat_wait_1 gets the first event. After that, lwpid of
inferior_ptid is not zero for linux-nat target, then we can use
ptid_get_lwp, so this function isn't needed anymore.
Even when GDB attaches to a process, the lwp of inferior_ptid
isn't zero, see linux-nat.c:linux_nat_attach,
/* The ptrace base target adds the main thread with (pid,0,0)
format. Decorate it with lwp info. */
ptid = ptid_build (ptid_get_pid (inferior_ptid),
ptid_get_pid (inferior_ptid),
0);
Note that linux_nat_xfer_partial shifts lwpid to pid for inferior_ptid
temperately for calling linux_ops->to_xfer_partial, but all the
affected functions in this patch are not called in
linux_ops->to_xfer_partial.
I think we can safely remove get_thread_id for all linux native targets.
Regression tested on arm-linux and aarch64-linux. Unable to build
native GDB and test it on xtensa-linux.
gdb:
2015-08-05 Yao Qi <yao.qi@linaro.org>
* aarch64-linux-nat.c (get_thread_id): Remove.
(debug_reg_change_callback): Call ptid_get_lwp instead of
get_thread_id.
(fetch_gregs_from_thread): Likewise.
(store_gregs_to_thread): Likewise.
(fetch_fpregs_from_thread): Likewise.
(store_fpregs_to_thread): Likewise.
(aarch64_linux_get_debug_reg_capacity): Likewise.
* arm-linux-nat.c (get_thread_id): Remove.
(GET_THREAD_ID): Update macro to use ptid_get_lwp.
* xtensa-linux-nat.c (get_thread_id): Remove.
(GET_THREAD_ID): Update macro to use ptid_get_lwp.
* arm-linux-nat.c (get_thread_id): Remove.
(GET_THREAD_ID): Remove.
(fetch_fpregs): Call ptid_get_lwp instead of GET_THREAD_ID.
(store_fpregs, fetch_regs, store_regs): Likewise.
(fetch_wmmx_regs, store_wmmx_regs): Likewise.
(fetch_vfp_regs, store_vfp_regs): Likewise.
(arm_linux_read_description): Likewise.
(arm_linux_get_hwbp_cap): Likewise.
* xtensa-linux-nat.c (get_thread_id): Remove.
(GET_THREAD_ID): Remove.
(fetch_gregs, store_gregs): Call ptid_get_lwp instead of
GET_THREAD_ID.
2015-08-05 09:41:19 +02:00
|
|
|
|
2015-08-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (get_thread_id): Remove.
|
|
|
|
|
(debug_reg_change_callback): Call ptid_get_lwp instead of
|
|
|
|
|
get_thread_id.
|
|
|
|
|
(fetch_gregs_from_thread): Likewise.
|
|
|
|
|
(store_gregs_to_thread): Likewise.
|
|
|
|
|
(fetch_fpregs_from_thread): Likewise.
|
|
|
|
|
(store_fpregs_to_thread): Likewise.
|
|
|
|
|
(aarch64_linux_get_debug_reg_capacity): Likewise.
|
|
|
|
|
* arm-linux-nat.c (get_thread_id): Remove.
|
|
|
|
|
(GET_THREAD_ID): Update macro to use ptid_get_lwp.
|
|
|
|
|
* xtensa-linux-nat.c (get_thread_id): Remove.
|
|
|
|
|
(GET_THREAD_ID): Update macro to use ptid_get_lwp.
|
|
|
|
|
* arm-linux-nat.c (get_thread_id): Remove.
|
|
|
|
|
(GET_THREAD_ID): Remove.
|
|
|
|
|
(fetch_fpregs): Call ptid_get_lwp instead of GET_THREAD_ID.
|
|
|
|
|
(store_fpregs, fetch_regs, store_regs): Likewise.
|
|
|
|
|
(fetch_wmmx_regs, store_wmmx_regs): Likewise.
|
|
|
|
|
(fetch_vfp_regs, store_vfp_regs): Likewise.
|
|
|
|
|
(arm_linux_read_description): Likewise.
|
|
|
|
|
(arm_linux_get_hwbp_cap): Likewise.
|
|
|
|
|
* xtensa-linux-nat.c (get_thread_id): Remove.
|
|
|
|
|
(GET_THREAD_ID): Remove.
|
|
|
|
|
(fetch_gregs, store_gregs): Call ptid_get_lwp instead of
|
|
|
|
|
GET_THREAD_ID.
|
|
|
|
|
|
2015-08-04 18:03:15 +02:00
|
|
|
|
2015-08-04 Ciro Santilli <ciro.santilli@gmail.com> (obvious patch)
|
|
|
|
|
|
|
|
|
|
* python/py-linetable.c: Fix case of Linetable to LineTable
|
|
|
|
|
in docstrings and code comments.
|
|
|
|
|
* python/py-symtab.c: Same.
|
|
|
|
|
|
2015-08-04 13:42:56 +02:00
|
|
|
|
2015-08-04 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infcmd.c (signal_command): Call do_cleanups for args_chain.
|
|
|
|
|
|
2015-08-04 13:40:44 +02:00
|
|
|
|
2015-08-04 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18767
|
|
|
|
|
* infcmd.c (attach_command): Move ARGS_CHAIN cleanup after last ARGS
|
|
|
|
|
use.
|
|
|
|
|
|
C++: dlsym casts in gdb/linux-thread-db.c and gdb/gdbserver/thread-db.c
Implicit void * -> function pointer conversion doesn't work in C++, so
in C++, we need to cast the result of dlsym. This adds a few typedefs
and macros that make this easy. GDBserver's version already had the
CHK macro, so I added it to GDB too.
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/gdbserver/ChangeLog:
2015-08-04 Pedro Alves <palves@redhat.com>
* thread-db.c (struct thread_db): Use new typedefs.
(try_thread_db_load_1): Define local TDB_DLSYM macro and use it in
CHK calls.
(disable_thread_event_reporting): Cast result of dlsym to
destination function pointer type.
(thread_db_mourn): Use td_ta_delete_ftype.
gdb/ChangeLog:
2015-08-04 Pedro Alves <palves@redhat.com>
* nat/gdb_thread_db.h (td_init_ftype, td_ta_new_ftype)
(td_ta_map_lwp2thr_ftype, td_ta_thr_iter_ftype)
(td_ta_event_addr_ftype, td_ta_set_event_ftype)
(td_ta_clear_event_ftype, td_ta_event_getmsg_ftype)
(td_thr_validate_ftype, td_thr_get_info_ftype)
(td_thr_event_enable_ftype, td_thr_tls_get_addr_ftype)
(td_thr_tlsbase_ftype, td_symbol_list_ftype, td_ta_delete_ftype):
New typedefs.
* linux-thread-db.c (struct thread_db_info): Use new typedefs.
(try_thread_db_load_1): Define TDB_VERBOSE_DLSYM, TDB_DLSYM , CHK
local macros and use them instead of verbose_dlsym and dlsym
calls.
2015-08-04 10:39:47 +02:00
|
|
|
|
2015-08-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/gdb_thread_db.h (td_init_ftype, td_ta_new_ftype)
|
|
|
|
|
(td_ta_map_lwp2thr_ftype, td_ta_thr_iter_ftype)
|
|
|
|
|
(td_ta_event_addr_ftype, td_ta_set_event_ftype)
|
|
|
|
|
(td_ta_clear_event_ftype, td_ta_event_getmsg_ftype)
|
|
|
|
|
(td_thr_validate_ftype, td_thr_get_info_ftype)
|
|
|
|
|
(td_thr_event_enable_ftype, td_thr_tls_get_addr_ftype)
|
|
|
|
|
(td_thr_tlsbase_ftype, td_symbol_list_ftype, td_ta_delete_ftype):
|
|
|
|
|
New typedefs.
|
|
|
|
|
* linux-thread-db.c (struct thread_db_info): Use new typedefs.
|
|
|
|
|
(try_thread_db_load_1): Define TDB_VERBOSE_DLSYM, TDB_DLSYM , CHK
|
|
|
|
|
local macros and use them instead of verbose_dlsym and dlsym
|
|
|
|
|
calls.
|
|
|
|
|
|
2015-08-03 20:39:52 +02:00
|
|
|
|
2015-08-03 Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* nios2-tdep.h: Include opcode/nios2.h here.
|
|
|
|
|
(NIOS2_CDX_OPCODE_SIZE): New.
|
|
|
|
|
(struct gdbarch_tdep): Add OP parameter to syscall_next_pc.
|
|
|
|
|
* nios2-tdep.c: Don't include opcode/nios2.h here.
|
|
|
|
|
(nios2_fetch_insn): For R2, try reading 2-byte instruction if
|
|
|
|
|
4-byte read fails.
|
|
|
|
|
(nios2_match_add, nios2_match_sub): Add cases for R2 encodings.
|
|
|
|
|
(nios2_match_addi, nios2_match_orhi): Likewise.
|
|
|
|
|
(nios2_match_stw, nios2_match_ldw): Likewise.
|
|
|
|
|
(nios2_match_rdctl): Likewise.
|
|
|
|
|
(nios2_match_stwm, nios2_match_ldwm): New.
|
|
|
|
|
(nios2_match_branch): Add cases for R2 encodings.
|
|
|
|
|
(nios2_match_jmpi, nios2_match_calli): Likewise.
|
|
|
|
|
(nios2_match_jmpr, nios2_match_callr): Likewise.
|
|
|
|
|
(nios2_match_break, nios2_match_trap): Likewise.
|
|
|
|
|
(nios2_in_epilogue_p): Add R2 support.
|
|
|
|
|
(nios2_analyze_prologue): Update comments. Recognize R2 CDX
|
|
|
|
|
prologues.
|
|
|
|
|
(nios2_breakpoint_from_pc): Handle R2 instructions.
|
|
|
|
|
(nios2_get_next_pc): Likewise. Adjust call to
|
|
|
|
|
tdep->syscall_next_pc.
|
|
|
|
|
* nios2-linux-tdep.c (nios2_r1_linux_rt_sigreturn_tramp_frame):
|
|
|
|
|
Renamed from nios2_linux_rt_sigreturn_tramp_frame. Use
|
|
|
|
|
instruction field macros instead of literal hex values.
|
|
|
|
|
(nios2_r2_linux_rt_sigreturn_tramp_frame): New.
|
|
|
|
|
(nios2_linux_syscall_next_pc): Adjust signature to pass OP.
|
|
|
|
|
Use size field from OP instead of assuming all instructions
|
|
|
|
|
are the same size.
|
|
|
|
|
(nios2_linux_init_abi): Register appropriate unwinder for mach.
|
|
|
|
|
|
2015-08-03 14:35:58 +02:00
|
|
|
|
2015-08-03 Ulrich Weigand <uweigand@de.ibm.com>
|
|
|
|
|
|
|
|
|
|
* cp-namespace.c (cp_lookup_symbol_via_imports): Fix uninitialized
|
|
|
|
|
variable warning with some compilers.
|
|
|
|
|
|
2015-08-03 11:37:23 +02:00
|
|
|
|
2015-08-03 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (arm_linux_get_hwbp_type): Capitalize "type"
|
|
|
|
|
in comment. Replace "rw" with "type".
|
|
|
|
|
(arm_linux_remove_watchpoint): Change type of "rw" to
|
|
|
|
|
"enum target_hw_bp_type".
|
|
|
|
|
|
2015-08-01 11:25:44 +02:00
|
|
|
|
2015-08-02 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* alpha-mdebug-tdep.c (find_proc_desc): Update call to
|
|
|
|
|
lookup_symbol.
|
|
|
|
|
* ft32-tdep.c (ft32_skip_prologue): Likewise.
|
|
|
|
|
* moxie-tdep.c (moxie_skip_prologue): Likewise.
|
|
|
|
|
* mt-tdep.c (mt_skip_prologue): Likewise.
|
|
|
|
|
* xstormy16-tdep.c (xstormy16_skip_prologue): Likewise.
|
|
|
|
|
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
2015-08-01 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-exp.y (write_object_renaming): Replace struct
|
|
|
|
|
ada_symbol_info with struct block_symbol. Update field
|
|
|
|
|
references accordingly.
|
|
|
|
|
(block_lookup, select_possible_type_sym): Likewise.
|
|
|
|
|
(find_primitive_type): Likewise. Also update call to
|
|
|
|
|
ada_lookup_symbol to extract the symbol itself.
|
|
|
|
|
(write_var_or_type, write_name_assoc): Likewise.
|
|
|
|
|
* ada-lang.h (struct ada_symbol_info): Remove.
|
|
|
|
|
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
|
|
|
|
|
struct block_symbol.
|
|
|
|
|
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
|
|
|
|
|
(ada_lookup_symbol): Return struct block_symbol instead of a
|
|
|
|
|
mere symbol.
|
|
|
|
|
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
|
|
|
|
|
with struct block_symbol.
|
|
|
|
|
(resolve_subexp, ada_resolve_function, sort_choices,
|
|
|
|
|
user_select_syms, is_nonfunction, add_defn_to_vec,
|
|
|
|
|
num_defns_collected, defns_collected,
|
|
|
|
|
symbols_are_identical_enums, remove_extra_symbols,
|
|
|
|
|
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
|
|
|
|
|
ada_lookup_symbol_list, ada_iterate_over_symbols,
|
|
|
|
|
ada_lookup_encoded_symbol, get_var_value): Likewise.
|
|
|
|
|
(ada_lookup_symbol): Return a block_symbol instead of a mere
|
|
|
|
|
symbol. Replace struct ada_symbol_info with struct
|
|
|
|
|
block_symbol.
|
|
|
|
|
(ada_lookup_symbol_nonlocal): Likewise.
|
|
|
|
|
(standard_lookup): Make block passing explicit through
|
|
|
|
|
lookup_symbol_in_language.
|
|
|
|
|
* ada-tasks.c (get_tcb_types_info): Update the calls to
|
|
|
|
|
lookup_symbol_in_language to extract the mere symbol out of the
|
|
|
|
|
returned value.
|
|
|
|
|
(ada_tasks_inferior_data_sniffer): Likewise.
|
|
|
|
|
* ax-gdb.c (gen_static_field): Likewise for the call to
|
|
|
|
|
lookup_symbol.
|
2015-08-03 09:39:42 +02:00
|
|
|
|
(gen_maybe_namespace_elt): Deal with struct block_symbol from
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
lookup functions.
|
|
|
|
|
(gen_expr): Likewise.
|
|
|
|
|
* c-exp.y: Likewise. Remove uses of block_found.
|
|
|
|
|
(lex_one_token, classify_inner_name, c_print_token): Likewise.
|
|
|
|
|
(classify_name): Likewise. Rename the "sym" local variable to
|
|
|
|
|
"bsym".
|
|
|
|
|
* c-valprint.c (print_unpacked_pointer): Likewise.
|
|
|
|
|
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
|
|
|
|
|
"sym" parameter from struct symbol * to struct block_symbol.
|
|
|
|
|
Use it to remove uses of block_found. Deal with struct
|
2015-08-03 09:39:42 +02:00
|
|
|
|
block_symbol from lookup functions.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
(gcc_convert_symbol): Likewise. Update the call to
|
|
|
|
|
convert_symbol_sym.
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Deal with
|
2015-08-03 09:39:42 +02:00
|
|
|
|
struct block_symbol from lookup functions.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* cp-namespace.c (cp_lookup_nested_symbol_1,
|
|
|
|
|
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
|
|
|
|
|
cp_search_static_and_baseclasses,
|
|
|
|
|
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
|
|
|
|
|
cp_lookup_symbol_imports_or_template,
|
|
|
|
|
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
|
|
|
|
|
lookup_namespace_scope, cp_lookup_nonlocal,
|
2015-08-03 09:39:42 +02:00
|
|
|
|
find_symbol_in_baseclass): Return struct block_symbol instead of
|
|
|
|
|
mere symbols and deal with struct block_symbol from lookup
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
functions.
|
|
|
|
|
* cp-support.c (inspect_type, replace_typedefs,
|
2015-08-03 09:39:42 +02:00
|
|
|
|
cp_lookup_rtti_type): Deal with struct block_symbol from
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
lookup functions.
|
|
|
|
|
* cp-support.h (cp_lookup_symbol_nonlocal,
|
|
|
|
|
cp_lookup_symbol_from_namespace,
|
|
|
|
|
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
|
2015-08-03 09:39:42 +02:00
|
|
|
|
Return struct block_symbol instead of mere symbols.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
|
|
|
|
|
push_module_name):
|
2015-08-03 09:39:42 +02:00
|
|
|
|
Deal with struct block_symbol from lookup functions. Remove
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
uses of block_found.
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Update call to
|
|
|
|
|
cp_lookup_symbol_namespace.
|
2015-08-03 09:39:42 +02:00
|
|
|
|
* f-exp.y: Deal with struct block_symbol from lookup functions.
|
|
|
|
|
Remove uses of block_found.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
(yylex): Likewise.
|
|
|
|
|
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
|
|
|
|
|
lookup_enum, lookup_template_type, check_typedef): Deal with
|
2015-08-03 09:39:42 +02:00
|
|
|
|
struct block_symbol from lookup functions.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
|
|
|
|
|
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
|
|
|
|
|
(gdbscm_lookup_global_symbol): Likewise.
|
|
|
|
|
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
|
|
|
|
|
* go-exp.y: Likewise. Remove uses of block_found.
|
|
|
|
|
(package_name_p, classify_packaged_name, classify_name):
|
|
|
|
|
Likewise.
|
|
|
|
|
* infrun.c (insert_exception_resume_breakpoint): Likewise.
|
|
|
|
|
* jv-exp.y (push_variable): Likewise.
|
|
|
|
|
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
|
|
|
|
|
* language.c (language_bool_type): Likewise.
|
|
|
|
|
* language.h (struct language_defn): Update
|
2015-08-03 09:39:42 +02:00
|
|
|
|
la_lookup_symbol_nonlocal to return a struct block_symbol rather
|
|
|
|
|
than a mere symbol.
|
|
|
|
|
* linespec.c (find_label_symbols): Deal with struct block_symbol
|
|
|
|
|
from lookup functions.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* m2-exp.y: Likewise. Remove uses of block_found.
|
|
|
|
|
(yylex): Likewise.
|
|
|
|
|
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
|
|
|
|
|
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
|
|
|
|
|
* p-exp.y: Likewise. Remove uses of block_found.
|
|
|
|
|
(yylex): Likewise.
|
|
|
|
|
* p-valprint.c (pascal_val_print): Likewise.
|
|
|
|
|
* parse.c (write_dollar_variable): Likewise. Remove uses of
|
|
|
|
|
block_found.
|
|
|
|
|
* parser-defs.h (struct symtoken): Turn the SYM field into a
|
2015-08-03 09:39:42 +02:00
|
|
|
|
struct block_symbol.
|
|
|
|
|
* printcmd.c (address_info): Deal with struct block_symbol from
|
|
|
|
|
lookup functions.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* python/py-frame.c (frapy_read_var): Likewise.
|
|
|
|
|
* python/py-symbol.c (gdbpy_lookup_symbol,
|
|
|
|
|
gdbpy_lookup_global_symbol): Likewise.
|
|
|
|
|
* skip.c (skip_function_command): Likewise.
|
|
|
|
|
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
|
2015-08-03 09:39:42 +02:00
|
|
|
|
block_symbol instead of a mere symbol.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
|
|
|
|
|
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
|
|
|
|
|
* solib.c (solib_global_lookup): Likewise.
|
|
|
|
|
* solist.h (solib_global_lookup): Likewise.
|
|
|
|
|
(struct target_so_ops): Update lookup_lib_global_symbol to
|
2015-08-03 09:39:42 +02:00
|
|
|
|
return a struct block_symbol rather than a mere symbol.
|
|
|
|
|
* source.c (select_source_symtab): Deal with struct block_symbol
|
|
|
|
|
from lookup functions.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* stack.c (print_frame_args, iterate_over_block_arg_vars):
|
|
|
|
|
Likewise.
|
|
|
|
|
* symfile.c (set_initial_language): Likewise.
|
|
|
|
|
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
|
2015-08-03 09:39:42 +02:00
|
|
|
|
block_symbol.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
|
|
|
|
|
(struct symbol_cache_slot): Turn the FOUND field into a struct
|
2015-08-03 09:39:42 +02:00
|
|
|
|
block_symbol.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
(block_found): Remove.
|
2015-08-03 09:39:42 +02:00
|
|
|
|
(eq_symbol_entry): Update to deal with struct block_symbol in
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
cache slots.
|
2015-08-03 09:39:42 +02:00
|
|
|
|
(symbol_cache_lookup): Return a struct block_symbol rather than
|
|
|
|
|
a mere symbol.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
(symbol_cache_mark_found): Add a BLOCK parameter to fill
|
|
|
|
|
appropriately the cache slots. Update callers.
|
|
|
|
|
(symbol_cache_dump): Update cache slots handling to the type
|
|
|
|
|
change.
|
|
|
|
|
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
|
|
|
|
|
lookup_symbol_aux, lookup_local_symbol,
|
|
|
|
|
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
|
|
|
|
|
lookup_symbol_in_objfile_symtabs,
|
|
|
|
|
lookup_symbol_in_objfile_from_linkage_name,
|
|
|
|
|
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
|
|
|
|
|
lookup_symbol_in_static_block, lookup_static_symbol,
|
|
|
|
|
lookup_global_symbol):
|
2015-08-03 09:39:42 +02:00
|
|
|
|
Return a struct block_symbol rather than a mere symbol. Deal
|
|
|
|
|
with struct block_symbol from other lookup functions. Remove
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
uses of block_found.
|
|
|
|
|
(lookup_symbol_in_block): Remove uses of block_found.
|
|
|
|
|
(struct global_sym_lookup_data): Turn the RESULT field into a
|
2015-08-03 09:39:42 +02:00
|
|
|
|
struct block_symbol.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
(lookup_symbol_global_iterator_cb): Update references to the
|
|
|
|
|
RESULT field.
|
2015-08-03 09:39:42 +02:00
|
|
|
|
(search_symbols): Deal with struct block_symbol from lookup
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
functions.
|
2015-08-03 09:39:42 +02:00
|
|
|
|
* symtab.h (struct block_symbol): New structure.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
(block_found): Remove.
|
|
|
|
|
(lookup_symbol_in_language, lookup_symbol,
|
|
|
|
|
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
|
2015-08-03 09:39:42 +02:00
|
|
|
|
lookup_static_symbol, lookup_global_symbol, lookup_language_this,
|
|
|
|
|
lookup_global_symbol_from_objfile): Return a struct block_symbol
|
|
|
|
|
rather than just a mere symbol. Update comments to remove
|
|
|
|
|
mentions of block_found.
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
* valops.c (find_function_in_inferior,
|
|
|
|
|
value_struct_elt_for_reference, value_maybe_namespace_elt,
|
2015-08-03 09:39:42 +02:00
|
|
|
|
value_of_this): Deal with struct block_symbol from lookup
|
Replace the block_found global with explicit data-flow
As Pedro suggested on gdb-patches@ (see
https://sourceware.org/ml/gdb-patches/2015-05/msg00714.html), this
change makes symbol lookup functions return a structure that includes
both the symbol found and the block in which it was found. This makes
it possible to get rid of the block_found global variable and thus makes
block hunting explicit.
gdb/
* ada-exp.y (write_object_renaming): Replace struct
ada_symbol_info with struct block_symbol. Update field
references accordingly.
(block_lookup, select_possible_type_sym): Likewise.
(find_primitive_type): Likewise. Also update call to
ada_lookup_symbol to extract the symbol itself.
(write_var_or_type, write_name_assoc): Likewise.
* ada-lang.h (struct ada_symbol_info): Remove.
(ada_lookup_symbol_list): Replace struct ada_symbol_info with
struct block_symbol.
(ada_lookup_encoded_symbol, user_select_syms): Likewise.
(ada_lookup_symbol): Return struct block_symbol instead of a
mere symbol.
* ada-lang.c (defns_collected): Replace struct ada_symbol_info
with struct block_symbol.
(resolve_subexp, ada_resolve_function, sort_choices,
user_select_syms, is_nonfunction, add_defn_to_vec,
num_defns_collected, defns_collected,
symbols_are_identical_enums, remove_extra_symbols,
remove_irrelevant_renamings, add_lookup_symbol_list_worker,
ada_lookup_symbol_list, ada_iterate_over_symbols,
ada_lookup_encoded_symbol, get_var_value): Likewise.
(ada_lookup_symbol): Return a block_symbol instead of a mere
symbol. Replace struct ada_symbol_info with struct
block_symbol.
(ada_lookup_symbol_nonlocal): Likewise.
(standard_lookup): Make block passing explicit through
lookup_symbol_in_language.
* ada-tasks.c (get_tcb_types_info): Update the calls to
lookup_symbol_in_language to extract the mere symbol out of the
returned value.
(ada_tasks_inferior_data_sniffer): Likewise.
* ax-gdb.c (gen_static_field): Likewise for the call to
lookup_symbol.
(gen_maybe_namespace_elt): Deal with struct symbol_in_block from
lookup functions.
(gen_expr): Likewise.
* c-exp.y: Likewise. Remove uses of block_found.
(lex_one_token, classify_inner_name, c_print_token): Likewise.
(classify_name): Likewise. Rename the "sym" local variable to
"bsym".
* c-valprint.c (print_unpacked_pointer): Likewise.
* compile/compile-c-symbols.c (convert_symbol_sym): Promote the
"sym" parameter from struct symbol * to struct block_symbol.
Use it to remove uses of block_found. Deal with struct
symbol_in_block from lookup functions.
(gcc_convert_symbol): Likewise. Update the call to
convert_symbol_sym.
* compile/compile-object-load.c (compile_object_load): Deal with
struct symbol_in_block from lookup functions.
* cp-namespace.c (cp_lookup_nested_symbol_1,
cp_lookup_nested_symbol, cp_lookup_bare_symbol,
cp_search_static_and_baseclasses,
cp_lookup_symbol_in_namespace, cp_lookup_symbol_via_imports,
cp_lookup_symbol_imports_or_template,
cp_lookup_symbol_via_all_imports, cp_lookup_symbol_namespace,
lookup_namespace_scope, cp_lookup_nonlocal,
find_symbol_in_baseclass): Return struct symbol_in_block instead
of mere symbols and deal with struct symbol_in_block from lookup
functions.
* cp-support.c (inspect_type, replace_typedefs,
cp_lookup_rtti_type): Deal with struct symbol_in_block from
lookup functions.
* cp-support.h (cp_lookup_symbol_nonlocal,
cp_lookup_symbol_from_namespace,
cp_lookup_symbol_imports_or_template, cp_lookup_nested_symbol):
Return struct symbol_in_block instead of mere symbols.
* d-exp.y (d_type_from_name, d_module_from_name, push_variable,
push_module_name):
Deal with struct symbol_in_block from lookup functions. Remove
uses of block_found.
* eval.c (evaluate_subexp_standard): Update call to
cp_lookup_symbol_namespace.
* f-exp.y: Deal with struct symbol_in_block from lookup
functions. Remove uses of block_found.
(yylex): Likewise.
* gdbtypes.c (lookup_typename, lookup_struct, lookup_union,
lookup_enum, lookup_template_type, check_typedef): Deal with
struct symbol_in_block from lookup functions.
* guile/scm-frame.c (gdbscm_frame_read_var): Likewise.
* guile/scm-symbol.c (gdbscm_lookup_symbol): Likewise.
(gdbscm_lookup_global_symbol): Likewise.
* gnu-v3-abi.c (gnuv3_get_typeid_type): Likewise.
* go-exp.y: Likewise. Remove uses of block_found.
(package_name_p, classify_packaged_name, classify_name):
Likewise.
* infrun.c (insert_exception_resume_breakpoint): Likewise.
* jv-exp.y (push_variable): Likewise.
* jv-lang.c (java_lookup_class, get_java_object_type): Likewise.
* language.c (language_bool_type): Likewise.
* language.h (struct language_defn): Update
la_lookup_symbol_nonlocal to return a struct symbol_in_block
rather than a mere symbol.
* linespec.c (find_label_symbols): Deal with struct
symbol_in_block from lookup functions.
* m2-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* objc-lang.c (lookup_struct_typedef, find_imps): Likewise.
* p-exp.y: Likewise. Remove uses of block_found.
(yylex): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
* parse.c (write_dollar_variable): Likewise. Remove uses of
block_found.
* parser-defs.h (struct symtoken): Turn the SYM field into a
struct symbol_in_block.
* printcmd.c (address_info): Deal with struct symbol_in_block
from lookup functions.
* python/py-frame.c (frapy_read_var): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol,
gdbpy_lookup_global_symbol): Likewise.
* skip.c (skip_function_command): Likewise.
* solib-darwin.c (darwin_lookup_lib_symbol): Return a struct
symbol_in_block instead of a mere symbol.
* solib-spu.c (spu_lookup_lib_symbol): Likewise.
* solib-svr4.c (elf_lookup_lib_symbol): Likewise.
* solib.c (solib_global_lookup): Likewise.
* solist.h (solib_global_lookup): Likewise.
(struct target_so_ops): Update lookup_lib_global_symbol to
return a struct symbol_in_block rather than a mere symbol.
* source.c (select_source_symtab): Deal with struct
symbol_in_block from lookup functions.
* stack.c (print_frame_args, iterate_over_block_arg_vars):
Likewise.
* symfile.c (set_initial_language): Likewise.
* symtab.c (SYMBOL_LOOKUP_FAILED): Turn into a struct
symbol_in_block.
(SYMBOL_LOOKUP_FAILED_P): New predicate as a macro.
(struct symbol_cache_slot): Turn the FOUND field into a struct
symbol_in_block.
(block_found): Remove.
(eq_symbol_entry): Update to deal with struct symbol_in_block in
cache slots.
(symbol_cache_lookup): Return a struct symbol_in_block rather
than a mere symbol.
(symbol_cache_mark_found): Add a BLOCK parameter to fill
appropriately the cache slots. Update callers.
(symbol_cache_dump): Update cache slots handling to the type
change.
(lookup_symbol_in_language, lookup_symbol, lookup_language_this,
lookup_symbol_aux, lookup_local_symbol,
lookup_symbol_in_objfile, lookup_global_symbol_from_objfile,
lookup_symbol_in_objfile_symtabs,
lookup_symbol_in_objfile_from_linkage_name,
lookup_symbol_via_quick_fns, basic_lookup_symbol_nonlocal,
lookup_symbol_in_static_block, lookup_static_symbol,
lookup_global_symbol):
Return a struct symbol_in_block rather than a mere symbol. Deal
with struct symbol_in_block from other lookup functions. Remove
uses of block_found.
(lookup_symbol_in_block): Remove uses of block_found.
(struct global_sym_lookup_data): Turn the RESULT field into a
struct symbol_in_block.
(lookup_symbol_global_iterator_cb): Update references to the
RESULT field.
(search_symbols): Deal with struct symbol_in_block from lookup
functions.
* symtab.h (struct symbol_in_block): New structure.
(block_found): Remove.
(lookup_symbol_in_language, lookup_symbol,
basic_lookup_symbol_nonlocal, lookup_symbol_in_static_block,
looku_static_symbol, lookup_global_symbol,
lookup_symbol_in_block, lookup_language_this,
lookup_global_symbol_from_objfile): Return a struct
symbol_in_block rather than just a mere symbol. Update comments
to remove mentions of block_found.
* valops.c (find_function_in_inferior,
value_struct_elt_for_reference, value_maybe_namespace_elt,
value_of_this): Deal with struct symbol_in_block from lookup
functions.
* value.c (value_static_field, value_fn_field): Likewise.
2015-07-21 17:02:15 +02:00
|
|
|
|
functions.
|
|
|
|
|
* value.c (value_static_field, value_fn_field): Likewise.
|
|
|
|
|
|
2015-07-31 20:08:14 +02:00
|
|
|
|
2015-07-31 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote-m32r-sdi.c (m32r_remove_watchpoint): Use enum type
|
|
|
|
|
instead of integer.
|
|
|
|
|
|
2015-07-31 19:19:53 +02:00
|
|
|
|
2015-07-31 Simon Marchi <simon.marchi@ericsson.com>
|
2015-08-06 21:36:31 +02:00
|
|
|
|
Pedro Alves <palves@redhat.com>
|
2015-07-31 19:19:53 +02:00
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_can_use_hw_breakpoint): Use enum
|
|
|
|
|
type or value instead of integer.
|
|
|
|
|
(aarch64_linux_insert_watchpoint): Likewise.
|
|
|
|
|
(aarch64_linux_remove_watchpoint): Likewise.
|
|
|
|
|
* ada-lang.c (ada_op_print_tab): Likewise.
|
|
|
|
|
* amd64-linux-tdep.c (amd64_canonicalize_syscall): Likewise.
|
|
|
|
|
(amd64_linux_syscall_record_common): Likewise.
|
|
|
|
|
* arch-utils.c (target_byte_order_user): Likewise.
|
|
|
|
|
(default_byte_order): Likewise.
|
|
|
|
|
* arm-linux-nat.c (arm_linux_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
(arm_linux_get_hwbp_type): Likewise.
|
|
|
|
|
(arm_linux_hw_watchpoint_initialize): Likewise.
|
|
|
|
|
(arm_linux_insert_watchpoint): Likewise.
|
|
|
|
|
* arm-linux-tdep.c (arm_canonicalize_syscall): Likewise.
|
|
|
|
|
(arm_linux_syscall_record): Likewise.
|
|
|
|
|
* breakpoint.c (update_watchpoint): Likewise.
|
|
|
|
|
(breakpoint_here_p): Likewise.
|
|
|
|
|
(bpstat_print): Likewise.
|
|
|
|
|
(enable_breakpoint_disp): Likewise.
|
|
|
|
|
* c-lang.c (c_op_print_tab): Likewise.
|
|
|
|
|
* cli/cli-decode.c (add_info_alias): Likewise.
|
|
|
|
|
* d-lang.c (d_op_print_tab): Likewise.
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Likewise.
|
|
|
|
|
* f-exp.y (dot_ops): Likewise.
|
|
|
|
|
(f77_keywords): Likewise.
|
|
|
|
|
* f-lang.c (f_op_print_tab): Likewise.
|
|
|
|
|
* go-lang.c (go_op_print_tab): Likewise.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_make_breakpoint): Likewise.
|
|
|
|
|
* guile/scm-cmd.c (gdbscm_make_command): Likewise.
|
|
|
|
|
* guile/scm-param.c (gdbscm_make_parameter): Likewise.
|
|
|
|
|
* guile/scm-pretty-print.c (gdbscm_apply_val_pretty_printer): Likewise.
|
|
|
|
|
* guile/scm-string.c (struct scm_to_stringn_data): Likewise.
|
|
|
|
|
(struct scm_from_stringn_data): Likewise.
|
|
|
|
|
* i386-linux-tdep.c (i386_canonicalize_syscall): Likewise.
|
|
|
|
|
* ia64-linux-nat.c (ia64_linux_insert_watchpoint): Likewise.
|
|
|
|
|
(ia64_linux_remove_watchpoint): Likewise.
|
|
|
|
|
(ia64_linux_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
* infrun.c (print_stop_event): Likewise.
|
|
|
|
|
* jv-lang.c (java_op_print_tab): Likewise.
|
|
|
|
|
* linux-nat.c (linux_proc_xfer_partial): Likewise.
|
|
|
|
|
* linux-nat.h (struct lwp_info): Likewise.
|
|
|
|
|
* linux-thread-db.c (enable_thread_event): Likewise.
|
|
|
|
|
* m2-lang.c (m2_op_print_tab): Likewise.
|
|
|
|
|
* mi/mi-cmd-stack.c (mi_cmd_stack_list_locals): Likewise.
|
|
|
|
|
(mi_cmd_stack_list_variables): Likewise.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_trace_frame_collected): Likewise.
|
|
|
|
|
* mi/mi-out.c (mi_table_begin): Likewise.
|
|
|
|
|
(mi_table_header): Likewise.
|
|
|
|
|
* mips-linux-nat.c (mips_linux_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
(mips_linux_insert_watchpoint): Likewise.
|
|
|
|
|
(mips_linux_remove_watchpoint): Likewise.
|
|
|
|
|
* nat/mips-linux-watch.c (mips_linux_watch_type_to_irw): Likewise.
|
|
|
|
|
* nat/mips-linux-watch.h (struct mips_watchpoint): Likewise.
|
|
|
|
|
(mips_linux_watch_type_to_irw): Likewise.
|
|
|
|
|
* nto-procfs.c (procfs_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
(procfs_insert_hw_watchpoint): Likewise.
|
|
|
|
|
(procfs_remove_hw_watchpoint): Likewise.
|
|
|
|
|
(procfs_hw_watchpoint): Likewise.
|
|
|
|
|
(procfs_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
(procfs_remove_hw_watchpoint): Likewise.
|
|
|
|
|
(procfs_insert_hw_watchpoint): Likewise.
|
|
|
|
|
* p-lang.c (pascal_op_print_tab): Likewise.
|
|
|
|
|
* ppc-linux-nat.c (ppc_linux_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
* ppc-linux-tdep.c (ppu2spu_unwind_register): Likewise.
|
|
|
|
|
* ppc-sysv-tdep.c (get_decimal_float_return_value): Likewise.
|
|
|
|
|
* procfs.c (procfs_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
(procfs_insert_watchpoint): Likewise.
|
|
|
|
|
(procfs_remove_watchpoint): Likewise.
|
|
|
|
|
* psymtab.c (recursively_search_psymtabs): Likewise.
|
|
|
|
|
* remote-m32r-sdi.c (m32r_can_use_hw_watchpoint): Likewise.
|
|
|
|
|
(m32r_insert_watchpoint): Likewise.
|
|
|
|
|
* remote-mips.c (mips_can_use_watchpoint): Likewise.
|
|
|
|
|
(mips_insert_watchpoint): Likewise.
|
|
|
|
|
(mips_remove_watchpoint): Likewise.
|
|
|
|
|
* remote.c (watchpoint_to_Z_packet): Likewise.
|
|
|
|
|
(remote_insert_watchpoint): Likewise.
|
|
|
|
|
(remote_remove_watchpoint): Likewise.
|
|
|
|
|
(remote_check_watch_resources): Likewise.
|
|
|
|
|
* s390-linux-nat.c (s390_insert_watchpoint): Likewise.
|
|
|
|
|
(s390_remove_watchpoint): Likewise.
|
|
|
|
|
(s390_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
|
|
|
|
|
* spu-linux-nat.c (spu_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
* target.h (struct target_ops): Likewise.
|
|
|
|
|
* tilegx-tdep.c (tilegx_analyze_prologue): Likewise.
|
|
|
|
|
* ui-out.c (struct ui_out_hdr): Likewise.
|
|
|
|
|
(append_header_to_list): Likewise.
|
|
|
|
|
(get_next_header): Likewise.
|
|
|
|
|
(verify_field): Likewise.
|
|
|
|
|
(ui_out_begin): Likewise.
|
|
|
|
|
(ui_out_field_int): Likewise.
|
|
|
|
|
(ui_out_field_fmt_int): Likewise.
|
|
|
|
|
(ui_out_field_skip): Likewise.
|
|
|
|
|
(ui_out_field_string): Likewise.
|
|
|
|
|
(ui_out_field_fmt): Likewise.
|
|
|
|
|
* varobj.c (new_variable): Likewise.
|
|
|
|
|
* x86-nat.c (x86_insert_watchpoint): Likewise.
|
|
|
|
|
(x86_remove_watchpoint): Likewise.
|
|
|
|
|
(x86_can_use_hw_breakpoint): Likewise.
|
|
|
|
|
* xtensa-tdep.h (struct gdbarch_tdep): Likewise.
|
|
|
|
|
* inflow.c (enum gdb_has_a_terminal_flag_enum): Add name to
|
|
|
|
|
previously anonymous enumeration type..
|
|
|
|
|
* linux-record.h (enum gdb_syscall): Add gdb_sys_no_syscall
|
|
|
|
|
value.
|
|
|
|
|
* target-debug.h (target_debug_print_enum_target_hw_bp_type): New.
|
|
|
|
|
(target_debug_print_enum_bptype): New.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
|
2015-07-30 22:26:03 +02:00
|
|
|
|
2015-07-30 Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* nios2-tdep.c (nios2_analyze_prologue): Do what the comment
|
|
|
|
|
already says and disallow non-stack memory writes in the prologue.
|
|
|
|
|
|
2015-07-30 22:23:43 +02:00
|
|
|
|
2015-07-30 Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* nios2-tdep.c (nios2_analyze_prologue): Update comments to
|
|
|
|
|
reflect how current GCC emits stack overflow checks. Match
|
|
|
|
|
both trap and break instructions for backward compatbility.
|
|
|
|
|
Disallow other trap and break instructions in the prologue.
|
|
|
|
|
|
2015-07-22 19:01:46 +02:00
|
|
|
|
2015-07-30 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR threads/18600
|
|
|
|
|
* linux-nat.c (wait_lwp): Report to the core when thread group
|
|
|
|
|
leader exits.
|
|
|
|
|
|
PR threads/18600: Threads left stopped after fork+thread spawn
When a program forks and another process start threads while gdb is
handling the fork event, newly created threads are left stuck stopped
by gdb, even though gdb presents them as "running", to the user.
This can be seen with the test added by this patch. The test has the
inferior fork a certain number of times and waits for all children to
exit. Each fork child spawns a number of threads that do nothing and
joins them immediately. Normally, the program should run unimpeded
(from the point of view of the user) and exit very quickly. Without
this fix, it doesn't because of some threads left stopped by gdb, so
inferior 1 never exits.
The program triggers when a new clone thread is found while inside the
linux_stop_and_wait_all_lwps call in linux-thread-db.c:
linux_stop_and_wait_all_lwps ();
ALL_LWPS (lp)
if (ptid_get_pid (lp->ptid) == pid)
thread_from_lwp (lp->ptid);
linux_unstop_all_lwps ();
Within linux_stop_and_wait_all_lwps, we reach
linux_handle_extended_wait with the "stopping" parameter set to 1, and
because of that we don't mark the new lwp as resumed. As consequence,
the subsequent resume_stopped_resumed_lwps, called from
linux_unstop_all_lwps, never resumes the new LWP.
There's lots of cruft in linux_handle_extended_wait that no longer
makes sense. On systems with CLONE events support, we don't rely on
libthread_db for thread listing anymore, so the code that preserves
stop_requested and the handling of last_resume_kind is all dead.
So the fix is to remove all that, and simply always mark the new LWP
as resumed, so that resume_stopped_resumed_lwps re-resumes it.
gdb/ChangeLog:
2015-07-30 Pedro Alves <palves@redhat.com>
Simon Marchi <simon.marchi@ericsson.com>
PR threads/18600
* linux-nat.c (linux_handle_extended_wait): On CLONE event, always
mark the new thread as resumed. Remove STOPPING parameter.
(wait_lwp): Adjust call to linux_handle_extended_wait.
(linux_nat_filter_event): Adjust call to
linux_handle_extended_wait.
(resume_stopped_resumed_lwps): Add debug output.
gdb/testsuite/ChangeLog:
2015-07-30 Simon Marchi <simon.marchi@ericsson.com>
Pedro Alves <palves@redhat.com>
PR threads/18600
* gdb.threads/fork-plus-threads.c: New file.
* gdb.threads/fork-plus-threads.exp: New file.
2015-07-30 19:50:29 +02:00
|
|
|
|
2015-07-30 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
PR threads/18600
|
|
|
|
|
* linux-nat.c (linux_handle_extended_wait): On CLONE event, always
|
|
|
|
|
mark the new thread as resumed. Remove STOPPING parameter.
|
|
|
|
|
(wait_lwp): Adjust call to linux_handle_extended_wait.
|
|
|
|
|
(linux_nat_filter_event): Adjust call to
|
|
|
|
|
linux_handle_extended_wait.
|
|
|
|
|
(resume_stopped_resumed_lwps): Add debug output.
|
|
|
|
|
|
2015-07-30 19:05:00 +02:00
|
|
|
|
2015-07-30 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* arch-utils.c (default_fast_tracepoint_valid_at): Remove unused
|
|
|
|
|
isize argument.
|
|
|
|
|
* arch-utils.h (default_fast_tracepoint_valid_at): Likewise.
|
|
|
|
|
* breakpoint.c (check_fast_tracepoint_sals): Adjust call to
|
|
|
|
|
gdbarch_fast_tracepoint_valid_at.
|
|
|
|
|
* gdbarch.sh (fast_tracepoint_valid_at): Remove isize argument.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* i386-tdep.c (i386_fast_tracepoint_valid_at): Remove isize
|
|
|
|
|
argument. Do not set it.
|
|
|
|
|
* remote.c (remote_download_tracepoint): Adjust call to
|
|
|
|
|
gdbarch_fast_tracepoint_valid_at. Call gdb_insn_length to get
|
|
|
|
|
the instruction length.
|
|
|
|
|
|
2015-07-30 16:07:38 +02:00
|
|
|
|
2015-07-30 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.h (enum gdb_regnum): Move it to ...
|
|
|
|
|
* arch/arm.h: ... here. New file.
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add arch/arm.h.
|
|
|
|
|
|
2015-07-30 13:40:49 +02:00
|
|
|
|
2015-07-30 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (decode_b): Rename link argument to is_bl.
|
|
|
|
|
Change its type to int *.
|
|
|
|
|
(decode_br): Rename link argument to is_blr. Change its type to
|
|
|
|
|
int *.
|
|
|
|
|
(decode_cb): Rename op argument to is_cbnz. Change its type to
|
|
|
|
|
int *.
|
|
|
|
|
(decode_tb): Rename op argument to is_tbnz. Change its type to
|
|
|
|
|
int *. Set is_tbnz to either 1 or 0.
|
|
|
|
|
(aarch64_analyze_prologue): Change type of is_link to int. Add
|
|
|
|
|
new variables is_cbnz and is_tbnz. Adjust call to
|
|
|
|
|
aarch64_decode_cb and aarch64_decode_tb.
|
|
|
|
|
|
2015-07-29 23:15:46 +02:00
|
|
|
|
2015-07-29 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* mips-linux-nat.c (write_watchpoint_regs): Add NULL as ptrace's 4th
|
|
|
|
|
parameter.
|
|
|
|
|
(mips_linux_new_thread): Likewise.
|
|
|
|
|
* nat/mips-linux-watch.c (mips_linux_read_watch_registers): Likewise.
|
|
|
|
|
|
2015-07-27 17:54:07 +02:00
|
|
|
|
2015-07-29 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* top.c: Include "tui/tui.h".
|
|
|
|
|
(undo_terminal_modifications_before_exit): New static function.
|
|
|
|
|
(quit_force): Use it.
|
|
|
|
|
|
2015-07-28 19:58:17 +02:00
|
|
|
|
2015-07-29 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* target.c (terminal_state): Initialize to terminal_is_ours.
|
|
|
|
|
|
PR record/18691: Fix fails in solib-precsave.exp
We see the following regressions in testing on x86_64-linux,
reverse-step^M
Cannot access memory at address 0x2aaaaaed26c0^M
(gdb) FAIL: gdb.reverse/solib-precsave.exp: reverse-step into solib function one
when GDB reverse step into a function, GDB wants to skip prologue so
it requests TARGET_OBJECT_CODE_MEMORY to read some code memory in
memory_xfer_partial_1. However in dcache_read_memory_partial, the object
becomes TARGET_OBJECT_MEMORY
return ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
myaddr, NULL, memaddr, len,
xfered_len);
in reverse debugging, ops->to_xfer_partial is record_full_core_xfer_partial
and it will return TARGET_XFER_E_IO because it can't find any records.
The test fails.
At this moment, the delegate relationship is like
dcache -> record-core -> core -> exec
and we want to GDB read memory across targets, which means if the
requested memory isn't found in record-core, GDB can read memory from
core, and exec even further if needed. I find raw_memory_xfer_partial
is exactly what I want.
gdb:
2015-07-29 Yao Qi <yao.qi@linaro.org>
PR record/18691
* dcache.c (dcache_read_memory_partial): Call
raw_memory_xfer_partial.
* target.c (raw_memory_xfer_partial): Make it non-static.
* target.h (raw_memory_xfer_partial): Declare.
2015-07-29 13:43:10 +02:00
|
|
|
|
2015-07-29 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR record/18691
|
|
|
|
|
* dcache.c (dcache_read_memory_partial): Call
|
|
|
|
|
raw_memory_xfer_partial.
|
|
|
|
|
* target.c (raw_memory_xfer_partial): Make it non-static.
|
|
|
|
|
* target.h (raw_memory_xfer_partial): Declare.
|
|
|
|
|
|
2015-07-28 17:01:50 +02:00
|
|
|
|
2015-07-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_val_print_array): Consider addressable memory
|
|
|
|
|
unit size.
|
|
|
|
|
(c_val_print_ptr): Likewise.
|
|
|
|
|
(c_val_print_int): Likewise.
|
|
|
|
|
* findvar.c (read_frame_register_value): Likewise.
|
|
|
|
|
* valarith.c (find_size_for_pointer_math): Likewise.
|
|
|
|
|
(value_ptrdiff): Likewise.
|
|
|
|
|
(value_subscripted_rvalue): Likewise.
|
|
|
|
|
* valops.c (read_value_memory): Likewise (and rename variables).
|
|
|
|
|
(value_assign): Likewise.
|
|
|
|
|
(value_repeat): Likewise.
|
|
|
|
|
(value_array): Likewise.
|
|
|
|
|
(value_slice): Likewise.
|
|
|
|
|
* valprint.c (generic_val_print_ptr): Likewise.
|
|
|
|
|
(generic_val_print_enum): Likewise.
|
|
|
|
|
(generic_val_print_bool): Likewise.
|
|
|
|
|
(generic_val_print_int): Likewise.
|
|
|
|
|
(generic_val_print_char): Likewise.
|
|
|
|
|
(generic_val_print_float): Likewise.
|
|
|
|
|
(generic_val_print_decfloat): Likewise.
|
|
|
|
|
(generic_val_print_complex): Likewise.
|
|
|
|
|
(val_print_scalar_formatted): Likewise.
|
|
|
|
|
(val_print_array_elements): Likewise.
|
|
|
|
|
* value.c (set_value_parent): Likewise.
|
|
|
|
|
(value_contents_copy_raw): Likewise.
|
|
|
|
|
(set_internalvar_component): Likewise.
|
|
|
|
|
(value_primitive_field): Likewise.
|
|
|
|
|
(value_fetch_lazy): Likewise.
|
|
|
|
|
* value.h (read_value_memory): Update comment.
|
|
|
|
|
|
2015-07-28 17:01:50 +02:00
|
|
|
|
2015-07-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* value.c (get_value_arch): New function.
|
|
|
|
|
* value.h (get_value_arch): New declaration.
|
|
|
|
|
|
2015-07-28 17:01:49 +02:00
|
|
|
|
2015-07-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* value.c (struct value): Update comments.
|
|
|
|
|
|
2015-07-28 17:01:49 +02:00
|
|
|
|
2015-07-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (type_length_units): New function.
|
|
|
|
|
* gdbtypes.h (type_length_units): New declaration.
|
|
|
|
|
(struct type) <length>: Update comment.
|
|
|
|
|
|
2015-07-27 20:11:26 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out complex
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_complex): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:25 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out decfloat
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_decfloat): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:24 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out float
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_float): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:24 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out char
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_char): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:23 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out integer
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_int): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:23 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out bool
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_bool): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:22 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out function/method
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_func): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:22 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out flags
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_flags): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:21 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out enum
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_enum): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:21 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out reference
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_ref): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:20 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out memberptr
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_memberptr): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:19 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out pointer
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_ptr): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:19 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out array
|
|
|
|
|
printing code to ...
|
|
|
|
|
(generic_val_print_array): ... this new function.
|
|
|
|
|
|
2015-07-27 20:11:18 +02:00
|
|
|
|
2015-07-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (generic_val_print): Factor out
|
|
|
|
|
print_unpacked_pointer code to ...
|
|
|
|
|
(print_unpacked_pointer): ... this new function.
|
|
|
|
|
|
2015-07-24 19:58:47 +02:00
|
|
|
|
2015-07-27 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* event-top.c (handle_sigterm): Don't inspect
|
|
|
|
|
target_can_async_p. Always set the quit flag and always mark
|
|
|
|
|
the async signal handler.
|
|
|
|
|
|
2015-07-27 17:12:31 +02:00
|
|
|
|
2015-07-27 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (REMOTE_EXAMPLES): Remove it.
|
|
|
|
|
|
remote.c: Make read_ptid return a null value when no thread id is found.
When using GDB to debug an RX target using the GDB remote protocol,
using a Renesas supplied debug agent, I encountered the following
assertion error:
thread.c:85: internal-error: inferior_thread: Assertion `tp' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) n
Command aborted.
This assertion error occurs due to the fact that the value associated
with inferior_ptid is not on the thread list.
The remote debug output (obtained with "set debug remote 1") is fairly
short, so I will include it up to the point where things go wrong -
which is somewhat before the assertion failure:
(gdb) target remote coyote.lan:61234
Remote debugging using coyote.lan:61234
Sending packet: $qSupported:multiprocess+;swbreak+;hwbreak+;qRelocInsn+#c9...Ack
Packet received: PacketSize=c00;qXfer:memory-map:read-;qXfer:features:read-;QStartNoAckMode+;multiprocess+;QNonStop+
Packet qSupported (supported-packets) is supported
Sending packet: $QStartNoAckMode#b0...Ack
Packet received: OK
Sending packet: $Hgp0.0#ad...Packet received: OK
Sending packet: $QNonStop:0#8c...Packet received: OK
Sending packet: $qTStatus#49...Packet received:
Packet qTStatus (trace-status) is NOT supported
Sending packet: $?#3f...Packet received: S02
Sending packet: $qfThreadInfo#bb...Packet received: m1
Sending packet: $qsThreadInfo#c8...Packet received: l
Sending packet: $qAttached:a410#bf...Packet received: 0
Packet qAttached (query-attached) is supported
Sending packet: $Hc-1#09...Packet received: OK
Sending packet: $qC#b4...Packet received: QC not supported
Above is the trace starting from the invocation of "target remote"
through the call of get_current_thread() in remote_start_remote().
Below, I've pasted this line of code along with additional lines of
context. The test following the call is especially important to
understanding both the problem and my patch.
/* We have thread information; select the thread the target
says should be current. If we're reconnecting to a
multi-threaded program, this will ideally be the thread
that last reported an event before GDB disconnected. */
inferior_ptid = get_current_thread (wait_status);
if (ptid_equal (inferior_ptid, null_ptid))
{
/* Odd... The target was able to list threads, but not
tell us which thread was current (no "thread"
register in T stop reply?). Just pick the first
thread in the thread list then. */
inferior_ptid = thread_list->ptid;
}
}
Prior to getting to the code pasted above, remote_start_remote()
made a call to target_update_thread_list(). This corresponds to the
following lines from the above trace:
Sending packet: $qfThreadInfo#bb...Packet received: m1
Sending packet: $qsThreadInfo#c8...Packet received: l
Sending packet: $qAttached:a410#bf...Packet received: 0
Packet qAttached (query-attached) is supported
Once target_update_thread_list has completed, the thread list
contains a single entry: {pid = 42000, lwp = 1, tid = 0}.
remote_start_remote() then makes a call to set_continue_thread(),
accounting for this line of the trace:
Sending packet: $Hc-1#09...Packet received: OK
Finally, the call to get_current_thread() is responsible for the last
line of the trace that I provided above:
Sending packet: $qC#b4...Packet received: QC not supported
get_current_thread() calls stop_reply_extract_thread() with the wait
status. This returns null_ptid.
get_current_thread() then calls remote_current_thread with a null
inferior_ptid. After the calls to putpkt() and getpkt(), rs->buf[0]
is 'Q', so read_ptid() is called and its result is returned.
The buffer passed to read_ptid() is " not supported". read_ptid ultimately
returns a ptid of {pid = 4200, lwp = 0, tid = 0}.
However, this thread is not on the thread list. As noted earlier, the
call to target_update_thread_list() had placed {pid = 42000, lwp = 1,
tid = 0} on the list. This is the only thread in the list.
When these calls ultimately return to remote_start_remote(),
inferior_ptid gets set to {pid = 4200, lwp = 0, tid = 0}, which
(again) is not on the thread list.
It appears to me that the string " not supported" is coming from the
debug agent. If so, it should be fixed, but I don't see a reason to
not consult the thread list in order to place a valid thread id in
inferior_ptid.
This (consultation of the thread list) is what is done when
inferior_ptid is null_ptid:
if (ptid_equal (inferior_ptid, null_ptid))
{
/* Odd... The target was able to list threads, but not
tell us which thread was current (no "thread"
register in T stop reply?). Just pick the first
thread in the thread list then. */
inferior_ptid = thread_list->ptid;
}
My patch causes a null inferior_ptid to be returned by read_ptid when
no thread id is found in the response from the debug agent. This
return value ends up being returned by remote_current_thread() and
then by get_current_thread. The assignment then places this null
value into inferior_ptid. That, in turn, allows the ptid_equal test
(noted above) to fetch a valid thread from the thread list. I no
longer see the assertion failure due a good value (which is on the
thread list) being placed in inferior_ptid.
This patch also adds two log warnings that may be output when "set
debug remote 1" is used. When running against the Renesas debug agent
mentioned earlier, this is the relevant portion of the log output:
Sending packet: $qC#b4...Packet received: QC not supported
warning: garbage in qC reply
warning: couldn't determine remote current thread; picking first in list.
gdb/ChangeLog:
* remote.c (read_ptid): Return null_ptid when no thread id
is found.
(remote_current_thread): Add log warning for malformed
qC reply.
(remote_start_remote): Add log warning when current thread
not found.
2015-07-10 19:25:29 +02:00
|
|
|
|
2015-07-25 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (read_ptid): Return null_ptid when no thread id
|
|
|
|
|
is found.
|
|
|
|
|
(remote_current_thread): Add log warning for malformed
|
|
|
|
|
qC reply.
|
|
|
|
|
(remote_start_remote): Add log warning when current thread
|
|
|
|
|
not found.
|
|
|
|
|
|
Fix s390 GNU/Linux build after enum __ptrace_request changes
The buildbot noticed that the enum __ptrace_request series broke the
s390 GNU/Linux build:
../../binutils-gdb/gdb/s390-linux-nat.c: In function 'fetch_regs':
../../binutils-gdb/gdb/s390-linux-nat.c:226:54: error: macro "ptrace" requires 4 arguments, but only 3 given
if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0)
^
../../binutils-gdb/gdb/s390-linux-nat.c: In function 'store_regs':
../../binutils-gdb/gdb/s390-linux-nat.c:243:54: error: macro "ptrace" requires 4 arguments, but only 3 given
if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0)
^
Fix this the same way it's handled everywhere else -- just pass 0 as
forth argument, which also handles non-varargs ptrace prototypes in
non-glibc libcs, e.g., Bionic (if it ever gets a s390 port...).
gdb/ChangeLog:
2015-07-24 Pedro Alves <palves@redhat.com>
* s390-linux-nat.c (fetch_regs, store_regs, fetch_fpregs)
(s390_stopped_by_watchpoint, s390_prepare_to_resume): Pass 0 as
forth argument to ptrace PTRACE_PEEKUSR_AREA/PTRACE_POKEUSR_AREA.
2015-07-24 21:29:53 +02:00
|
|
|
|
2015-07-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-nat.c (fetch_regs, store_regs, fetch_fpregs)
|
|
|
|
|
(s390_stopped_by_watchpoint, s390_prepare_to_resume): Pass 0 as
|
|
|
|
|
forth argument to ptrace PTRACE_PEEKUSR_AREA/PTRACE_POKEUSR_AREA.
|
|
|
|
|
|
2015-07-24 20:18:44 +02:00
|
|
|
|
2015-07-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18717
|
|
|
|
|
* linux-nat.c (linux_nat_filter_event): Don't assert that the lwp
|
|
|
|
|
is resumed, and extend the debug log.
|
|
|
|
|
|
2015-07-24 18:27:58 +02:00
|
|
|
|
2015-07-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* fork-child.c (fork_inferior): Print argv[0] instead of exec_file.
|
|
|
|
|
|
2015-07-24 15:57:20 +02:00
|
|
|
|
2015-07-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c: Include nat/gdb_ptrace.h instead of
|
|
|
|
|
sys/ptrace.h.
|
|
|
|
|
* alpha-linux-nat.c: Likewise.
|
|
|
|
|
* amd64-linux-nat.c: Likewise.
|
|
|
|
|
* arm-linux-nat.c: Likewise.
|
|
|
|
|
* hppa-linux-nat.c: Likewise.
|
|
|
|
|
* i386-linux-nat.c: Likewise.
|
|
|
|
|
* ia64-linux-nat.c: Likewise.
|
|
|
|
|
* linux-fork.c: Likewise.
|
|
|
|
|
* linux-nat.c: Likewise.
|
|
|
|
|
* m32r-linux-nat.c: Likewise.
|
|
|
|
|
* m68klinux-nat.c: Likewise.
|
|
|
|
|
* mips-linux-nat.c: Likewise.
|
|
|
|
|
* nat/linux-btrace.c: Likewise.
|
|
|
|
|
* nat/linux-ptrace.c: Likewise.
|
|
|
|
|
* nat/linux-ptrace.h
|
|
|
|
|
* nat/mips-linux-watch.c: Likewise.
|
|
|
|
|
* nat/x86-linux-dregs.c: Likewise.
|
|
|
|
|
* ppc-linux-nat.c: Likewise.
|
|
|
|
|
* s390-linux-nat.c: Likewise.
|
|
|
|
|
* spu-linux-nat.c: Likewise.
|
|
|
|
|
* tilegx-linux-nat.c: Likewise.
|
|
|
|
|
* x86-linux-nat.c: Likewise.
|
|
|
|
|
* xtensa-linux-nat.c: Likewise.
|
|
|
|
|
|
C++: handle glibc's ptrace(enum __ptrace_request, ...)
Building in C++ mode issues ~40 warnings like this:
../../src/gdb/linux-nat.c: In function ‘int linux_handle_extended_wait(lwp_info*, int, int)’:
../../src/gdb/linux-nat.c:2016:51: warning: invalid conversion from ‘int’ to ‘__ptrace_request’ [-fpermissive]
ptrace (PTRACE_GETEVENTMSG, pid, 0, &new_pid);
The issue is that in glibc, ptrace's first parameter is an enum.
That's not a problem if we pick the PTRACE_XXX requests from
sys/ptrace.h, as those will be values of the corresponding enum.
However, we have fallback definitions for PTRACE_XXX symbols when the
system headers miss them (such as PTRACE_GETEVENTMSG above), and those
are plain integer constants. E.g., nat/linux-ptrace.h:
#define PTRACE_GETEVENTMSG 0x4201
One idea would be to fix this by defining those fallbacks like:
-#define PTRACE_GETEVENTMSG 0x4201
+#define PTRACE_GETEVENTMSG ((enum __ptrace_request) 0x4201)
However, while glibc's ptrace uses enum __ptrace_request for first
parameter:
extern long int ptrace (enum __ptrace_request __request, ...) __THROW;
other libc's, like e.g., Android's bionic do not -- in that case, the
first parameter is int:
long ptrace(int request, pid_t pid, void * addr, void * data);
So the fix I came up is to make configure/ptrace.m4 also detect the
type of the ptrace's first parameter and defin PTRACE_TYPE_ARG1, as
already does the for parameters 3-4, and then simply wrap ptrace with
a macro that casts the first argument to the detected type. (I'm
leaving adding a nicer wrapper for when we drop building in C).
While this adds the wrapper, GNU/Linux files won't use it until the
next patch, which makes all native GNU/Linux files include
gdb_ptrace.h.
gdb/ChangeLog:
2015-07-24 Pedro Alves <palves@redhat.com>
* ptrace.m4 (ptrace tests): Test in C++ mode. Try with 'enum
__ptrace_request as first parameter type instead of int.
(PTRACE_TYPE_ARG1): Define.
* nat/gdb_ptrace.h [!PTRACE_TYPE_ARG5] (ptrace): Define as wrapper
that casts first argument to PTRACE_TYPE_ARG1.
* config.in: Regenerate.
* configure: Regenerate.
gdb/gdbserver/ChangeLog:
2015-07-24 Pedro Alves <palves@redhat.com>
* config.in: Regenerate.
* configure: Regenerate.
2015-07-24 15:57:20 +02:00
|
|
|
|
2015-07-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ptrace.m4 (ptrace tests): Test in C++ mode. Try with 'enum
|
|
|
|
|
__ptrace_request as first parameter type instead of int.
|
|
|
|
|
(PTRACE_TYPE_ARG1): Define.
|
|
|
|
|
* nat/gdb_ptrace.h [!PTRACE_TYPE_ARG5] (ptrace): Define as wrapper
|
|
|
|
|
that casts first argument to PTRACE_TYPE_ARG1.
|
|
|
|
|
* config.in: Regenerate.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2015-07-24 15:57:19 +02:00
|
|
|
|
2015-07-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdb_ptrace.h: Move ...
|
|
|
|
|
* nat/gdb_ptrace.h: ... here.
|
|
|
|
|
* inf-ptrace.c: Adjust.
|
|
|
|
|
|
2015-07-24 15:57:19 +02:00
|
|
|
|
2015-07-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* acinclude.m4: Include ptrace.m4.
|
|
|
|
|
* configure.ac: Call GDB_AC_PTRACE and move ptrace checks ...
|
|
|
|
|
* ptrace.m4: ... to this new file.
|
|
|
|
|
|
2015-07-23 18:21:48 +02:00
|
|
|
|
2015-07-23 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_per_cu_data): Add comment.
|
|
|
|
|
(load_cu): Handle dummy CUs.
|
|
|
|
|
(dw2_do_instantiate_symtab, process_queuef): Ditto.
|
|
|
|
|
(dwarf2_fetch_die_loc_sect_off, dwarf2_fetch_constant_bytes): Ditto.
|
|
|
|
|
|
2015-07-23 15:36:25 +02:00
|
|
|
|
2015-07-23 Ciro Santilli <ciro.santilli@gmail.com> (tiny patch)
|
|
|
|
|
|
|
|
|
|
* py-linetable.c (ltpy_get_all_source_lines): Adjust function
|
|
|
|
|
documentation to say that it returns a list rather than
|
|
|
|
|
a FrozenSet.
|
|
|
|
|
(linetable_object_methods): Update the docstring of the
|
|
|
|
|
"source_line" entry.
|
|
|
|
|
|
2015-07-22 12:25:14 +02:00
|
|
|
|
2015-07-23 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (resolve_dynamic_array): Pass the peeled element
|
|
|
|
|
type to the recursive call instead of the original (maybe
|
|
|
|
|
TYPE_CODE_TYPEDEF) type.
|
|
|
|
|
|
2015-07-23 12:22:34 +02:00
|
|
|
|
2015-07-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_can_use_hw_breakpoint): If
|
|
|
|
|
TYPE is watchpoint, return zero if aarch64_num_wp_regs is zero.
|
|
|
|
|
If TYPE is breakpoint, return zero if arch64_num_bp_regs is zero.
|
|
|
|
|
|
2015-07-21 17:33:41 +02:00
|
|
|
|
2015-07-21 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_get_debug_reg_capacity):
|
|
|
|
|
Move it to nat/aarch64-linux-hw-point.c.
|
|
|
|
|
(aarch64_linux_child_post_startup_inferior): Update.
|
|
|
|
|
* nat/aarch64-linux-hw-point.c (aarch64_linux_get_debug_reg_capacity):
|
|
|
|
|
New function.
|
|
|
|
|
* nat/aarch64-linux-hw-point.h (aarch64_linux_get_debug_reg_capacity):
|
|
|
|
|
Declare it.
|
|
|
|
|
|
2015-07-15 08:43:09 +02:00
|
|
|
|
2015-07-21 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* common/btrace-common.c (btrace_data_append): Change case label.
|
|
|
|
|
|
2015-07-20 17:29:16 +02:00
|
|
|
|
2015-07-20 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* nat/aarch64-linux-hw-point.c (aarch64_handle_unaligned_watchpoint):
|
|
|
|
|
Re-indent the code.
|
|
|
|
|
* nat/aarch64-linux-hw-point.h: Use ULONGEST rather than
|
|
|
|
|
"unsigned long long".
|
|
|
|
|
|
2015-07-11 02:41:55 +02:00
|
|
|
|
2015-07-18 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_locate_sections): Allow has_section_at_zero
|
|
|
|
|
to be set for SEC_ALLOC sections too.
|
|
|
|
|
|
Move common aarch64 HW breakpoint/watchpoint code to nat/
When I look at test fails related to watchpoint on aarch64-linux,
I find there are some code duplicates between GDB and GDBserver.
This patch is to move some of them to a nat/aarch64-linux-hw-point.{h,c}.
The only change I do is about the dr_changed_t typedef, which was
ULONGEST in GDB and 'unsigned long long' in GDBserver. Each bit
of dr_changed_t represents a status of each HW breakpoint or
watchpoint register, and the max number of HW breakpoint or watchpoint
registers is 16, so the width of 'unsigned long long' is sufficient.
gdb:
2015-07-17 Yao Qi <yao.qi@linaro.org>
* Makefile.in (HFILES_NO_SRCDIR): Add
nat/aarch64-linux-hw-point.h.
(aarch64-linux-hw-point.o): New rule.
* nat/aarch64-linux-hw-point.h: New file.
* nat/aarch64-linux-hw-point.c: New file.
* aarch64-linux-nat.c: Include nat/aarch64-linux-hw-point.h.
(AARCH64_HBP_MAX_NUM): Move to nat/aarch64-linux-hw-point.h.
(AARCH64_HWP_MAX_NUM, AARCH64_HBP_ALIGNMENT): Likewise.
(AARCH64_HWP_ALIGNMENT): Likewise.
(AARCH64_HWP_MAX_LEN_PER_REG): Likewise.
(AARCH64_DEBUG_NUM_SLOTS, AARCH64_DEBUG_ARCH): Likewise.
(AARCH64_DEBUG_ARCH_V8, DR_MARK_ALL_CHANGED): Likewise.
(DR_MARK_N_CHANGED, DR_CLEAR_CHANGED): Likewise.
(DR_HAS_CHANGED, DR_N_HAS_CHANGE): Likewise.
(aarch64_num_bp_regs, aarch64_num_wp_regs): Likewise.
(struct aarch64_debug_reg_state): Likewise.
(struct arch_lwp_info): Likewise.
(aarch64_linux_set_debug_regs): Likewise.
(aarch64_notify_debug_reg_change): Remove static.
(aarch64_align_watchpoint): Likewise.
(DR_CONTROL_ENABLED, DR_CONTROL_LENGTH): Likewise.
(aarch64_watchpoint_length): Likewise.
(aarch64_point_encode_ctrl_reg): Likewise
(aarch64_point_is_aligned): Likewise.
(aarch64_dr_state_insert_one_point): Likewise.
(aarch64_dr_state_remove_one_point): Likewise.
(aarch64_handle_breakpoint): Likewise.
(aarch64_handle_aligned_watchpoint): Likewise.
(aarch64_handle_unaligned_watchpoint): Likewise.
(aarch64_handle_watchpoint): Likewise.
* config/aarch64/linux.mh (NAT_FILE): Add
aarch64-linux-hw-point.o.
gdb/gdbserver:
2015-07-17 Yao Qi <yao.qi@linaro.org>
* Makefile.in (aarch64-linux-hw-point.o): New rule.
* configure.srv (srv_tgtobj): Append aarch64-linux-hw-point.o.
* linux-aarch64-low.c: Include nat/aarch64-linux-hw-point.h.
(AARCH64_HBP_MAX_NUM): Move to nat/aarch64-linux-hw-point.h.
(AARCH64_HWP_MAX_NUM, AARCH64_HBP_ALIGNMENT): Likewise.
(AARCH64_HWP_ALIGNMENT): Likewise.
(AARCH64_HWP_MAX_LEN_PER_REG): Likewise.
(AARCH64_DEBUG_NUM_SLOTS, AARCH64_DEBUG_ARCH): Likewise.
(aarch64_num_bp_regs, aarch64_num_wp_regs): Likewise.
(AARCH64_DEBUG_ARCH_V8, DR_MARK_ALL_CHANGED): Likewise.
(DR_MARK_N_CHANGED, DR_CLEAR_CHANGED): Likewise.
(DR_HAS_CHANGED, DR_N_HAS_CHANGE): Likewise.
(struct aarch64_debug_reg_state): Likewise.
(struct arch_lwp_info): Likewise.
(aarch64_align_watchpoint): Likewise.
(DR_CONTROL_ENABLED, DR_CONTROL_LENGTH): Likewise.
(aarch64_watchpoint_length): Likewise.
(aarch64_point_encode_ctrl_reg): Likewise
(aarch64_point_is_aligned): Likewise.
(aarch64_align_watchpoint): Likewise.
(aarch64_linux_set_debug_regs):
(aarch64_dr_state_insert_one_point): Likewise.
(aarch64_dr_state_remove_one_point): Likewise.
(aarch64_handle_breakpoint): Likewise.
(aarch64_handle_aligned_watchpoint): Likewise.
(aarch64_handle_unaligned_watchpoint): Likewise.
(aarch64_handle_watchpoint): Likewise.
2015-07-17 15:32:40 +02:00
|
|
|
|
2015-07-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add
|
|
|
|
|
nat/aarch64-linux-hw-point.h.
|
|
|
|
|
(aarch64-linux-hw-point.o): New rule.
|
|
|
|
|
* nat/aarch64-linux-hw-point.h: New file.
|
|
|
|
|
* nat/aarch64-linux-hw-point.c: New file.
|
|
|
|
|
* aarch64-linux-nat.c: Include nat/aarch64-linux-hw-point.h.
|
|
|
|
|
(AARCH64_HBP_MAX_NUM): Move to nat/aarch64-linux-hw-point.h.
|
|
|
|
|
(AARCH64_HWP_MAX_NUM, AARCH64_HBP_ALIGNMENT): Likewise.
|
|
|
|
|
(AARCH64_HWP_ALIGNMENT): Likewise.
|
|
|
|
|
(AARCH64_HWP_MAX_LEN_PER_REG): Likewise.
|
|
|
|
|
(AARCH64_DEBUG_NUM_SLOTS, AARCH64_DEBUG_ARCH): Likewise.
|
|
|
|
|
(AARCH64_DEBUG_ARCH_V8, DR_MARK_ALL_CHANGED): Likewise.
|
|
|
|
|
(DR_MARK_N_CHANGED, DR_CLEAR_CHANGED): Likewise.
|
|
|
|
|
(DR_HAS_CHANGED, DR_N_HAS_CHANGE): Likewise.
|
|
|
|
|
(aarch64_num_bp_regs, aarch64_num_wp_regs): Likewise.
|
|
|
|
|
(struct aarch64_debug_reg_state): Likewise.
|
|
|
|
|
(struct arch_lwp_info): Likewise.
|
|
|
|
|
(aarch64_linux_set_debug_regs): Likewise.
|
|
|
|
|
(aarch64_notify_debug_reg_change): Remove static.
|
|
|
|
|
(aarch64_align_watchpoint): Likewise.
|
|
|
|
|
(DR_CONTROL_ENABLED, DR_CONTROL_LENGTH): Likewise.
|
|
|
|
|
(aarch64_watchpoint_length): Likewise.
|
|
|
|
|
(aarch64_point_encode_ctrl_reg): Likewise
|
|
|
|
|
(aarch64_point_is_aligned): Likewise.
|
|
|
|
|
(aarch64_dr_state_insert_one_point): Likewise.
|
|
|
|
|
(aarch64_dr_state_remove_one_point): Likewise.
|
|
|
|
|
(aarch64_handle_breakpoint): Likewise.
|
|
|
|
|
(aarch64_handle_aligned_watchpoint): Likewise.
|
|
|
|
|
(aarch64_handle_unaligned_watchpoint): Likewise.
|
|
|
|
|
(aarch64_handle_watchpoint): Likewise.
|
|
|
|
|
* config/aarch64/linux.mh (NAT_FILE): Add
|
|
|
|
|
aarch64-linux-hw-point.o.
|
|
|
|
|
|
2015-07-17 15:32:40 +02:00
|
|
|
|
2015-07-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_handle_breakpoint): Add argument
|
|
|
|
|
state and don't call aarch64_get_debug_reg_state. All callers
|
|
|
|
|
update.
|
|
|
|
|
(aarch64_linux_insert_hw_breakpoint): Call
|
|
|
|
|
aarch64_get_debug_reg_state earlier.
|
|
|
|
|
(aarch64_linux_remove_hw_breakpoint): Likewise.
|
|
|
|
|
(aarch64_handle_aligned_watchpoint): Add argument state and
|
|
|
|
|
don't call aarch64_get_debug_reg_state. All callers update.
|
|
|
|
|
(aarch64_handle_unaligned_watchpoint): Likewise.
|
|
|
|
|
(aarch64_handle_watchpoint): Add argument state.
|
|
|
|
|
(aarch64_linux_insert_watchpoint): Call aarch64_get_debug_reg_state
|
|
|
|
|
earlier.
|
|
|
|
|
(aarch64_linux_remove_watchpoint): Likewise.
|
|
|
|
|
|
2015-07-17 15:32:40 +02:00
|
|
|
|
2015-07-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_show_debug_reg_state): Use
|
|
|
|
|
debug_printf.
|
|
|
|
|
(aarch64_handle_unaligned_watchpoint): Likewise.
|
|
|
|
|
|
2015-07-17 15:32:40 +02:00
|
|
|
|
2015-07-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_dr_state_insert_one_point): Change
|
|
|
|
|
argument type's type to 'enum target_hw_bp_type'.
|
|
|
|
|
(aarch64_dr_state_remove_one_point): Likewise.
|
|
|
|
|
(aarch64_handle_breakpoint): Likewise.
|
|
|
|
|
(aarch64_linux_insert_hw_breakpoint): Likewise.
|
|
|
|
|
(aarch64_linux_remove_hw_breakpoint): Likewise.
|
|
|
|
|
(aarch64_handle_aligned_watchpoint): Likewise.
|
|
|
|
|
|
2015-07-17 15:06:34 +02:00
|
|
|
|
2015-07-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_get_debug_reg_capacity): Call
|
|
|
|
|
ptid_get_pid instead of get_thread_id.
|
|
|
|
|
|
Fix using uninitialised values
We did a code refacotr here
https://sourceware.org/ml/gdb-patches/2013-11/msg00063.html
> (get_current_thread): New function, factored out from ...
> (add_current_inferior_and_thread): ... this. Adjust.
>
>@@ -3332,18 +3371,8 @@ add_current_inferior_and_thread (char *wait_status)
>
> inferior_ptid = null_ptid;
>
>- /* Now, if we have thread information, update inferior_ptid. First
>- if we have a stop reply handy, maybe it's a T stop reply with a
>- "thread" register we can extract the current thread from. If
>- not, ask the remote which is the current thread, with qC. The
>- former method avoids a roundtrip. Note we don't use
>- remote_parse_stop_reply as that makes use of the target
>- architecture, which we haven't yet fully determined at this
>- point. */
>- if (wait_status != NULL)
>- ptid = stop_reply_extract_thread (wait_status);
>- if (ptid_equal (ptid, null_ptid))
>- ptid = remote_current_thread (inferior_ptid);
>+ /* Now, if we have thread information, update inferior_ptid. */
>+ ptid = get_current_thread (wait_status);
but after the refactor, local variable ptid is used without
initialisation. However, before this change, ptid is initialised to
null_ptid. This error can be found by valgrind too...
==3298== at 0x6B99BA: ptid_equal (ptid.c:80)
==3298== by 0x4C67FF: get_current_thread (remote.c:3484)
==3298== by 0x4C6951: add_current_inferior_and_thread (remote.c:3511)
==3298== by 0x4C762C: extended_remote_create_inferior (remote.c:8506)
==3298== by 0x5A5312: run_command_1 (infcmd.c:606)
==3298== by 0x68B4FB: execute_command (top.c:463)
==3298== by 0x5C7214: command_handler (event-top.c:494)
==3298== by 0x5C78A3: command_line_handler (event-top.c:692)
==3298== by 0x6DEB57: rl_callback_read_char (callback.c:220)
==3298== by 0x5C7278: rl_callback_read_char_wrapper (event-top.c:171)
==3298== by 0x5C72C2: stdin_event_handler (event-top.c:432)
==3298== by 0x5C6194: gdb_wait_for_event (event-loop.c:834)
This patch initialises local variable ptid to null in get_current_thread.
We don't need to initialise ptid in add_current_inferior_and_thread,
so this patch also removes the ptid initialisation.
gdb:
2015-07-17 Yao Qi <yao.qi@linaro.org>
* remote.c (get_current_thread): Initialise ptid to null_ptid.
(add_current_inferior_and_thread): Don't initialise ptid.
2015-07-17 13:14:59 +02:00
|
|
|
|
2015-07-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* remote.c (get_current_thread): Initialise ptid to null_ptid.
|
|
|
|
|
(add_current_inferior_and_thread): Don't initialise ptid.
|
|
|
|
|
|
2015-07-16 11:16:14 +02:00
|
|
|
|
2015-07-16 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_pseudo_read_value): Mark S register as
|
|
|
|
|
unavailable if invalid.
|
|
|
|
|
|
2015-07-15 20:27:32 +02:00
|
|
|
|
2015-07-15 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Revert the previous 6 commits:
|
|
|
|
|
Create empty nat/linux-maps.[ch] and common/target-utils.[ch].
|
|
|
|
|
Move gdb_regex* to common/
|
|
|
|
|
Prepare linux_find_memory_regions_full & co. for move
|
|
|
|
|
Move linux_find_memory_regions_full & co.
|
|
|
|
|
gdbserver build-id attribute generator
|
|
|
|
|
Validate symbol file using build-id
|
|
|
|
|
|
2015-07-15 17:37:28 +02:00
|
|
|
|
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Validate symbol file using build-id.
|
|
|
|
|
* NEWS (Changes since GDB 7.10): Add 'set validate-build-id'
|
|
|
|
|
and 'show validate-build-id'. Add build-id attribute.
|
|
|
|
|
* solib-darwin.c (_initialize_darwin_solib): Assign validate value.
|
|
|
|
|
* solib-dsbt.c (_initialize_dsbt_solib): Ditto.
|
|
|
|
|
* solib-frv.c (_initialize_frv_solib): Ditto.
|
|
|
|
|
* solib-spu.c (set_spu_solib_ops): Ditto.
|
|
|
|
|
* solib-svr4.c: Include rsp-low.h.
|
|
|
|
|
(NOTE_GNU_BUILD_ID_NAME): New define.
|
|
|
|
|
(svr4_validate): New function.
|
|
|
|
|
(svr4_copy_library_list): Duplicate field build_id.
|
|
|
|
|
(library_list_start_library): Parse 'build-id' attribute.
|
|
|
|
|
(svr4_library_attributes): Add 'build-id' attribute.
|
|
|
|
|
(_initialize_svr4_solib): Assign validate value.
|
|
|
|
|
* solib-target.c (solib.h): Include.
|
|
|
|
|
(_initialize_solib_target): Assign validate value.
|
|
|
|
|
* solib.c (validate_build_id, show_validate_build_id): New.
|
|
|
|
|
(solib_map_sections): Use ops->validate.
|
|
|
|
|
(clear_so): Free build_id.
|
|
|
|
|
(default_solib_validate): New function.
|
|
|
|
|
(_initialize_solib): Add "validate-build-id".
|
|
|
|
|
* solib.h (default_solib_validate): New declaration.
|
|
|
|
|
* solist.h (struct so_list): New fields 'build_idsz' and 'build_id'.
|
|
|
|
|
(target_so_ops): New field 'validate'.
|
|
|
|
|
|
gdbserver build-id attribute generator
Producer part of the new "build-id" XML attribute.
gdb/ChangeLog
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
Jan Kratochvil <jan.kratochvil@redhat.com>
gdbserver build-id attribute generator.
* features/library-list-svr4.dtd (library-list-svr4): New
'build-id' attribute.
gdb/doc/ChangeLog
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
Jan Kratochvil <jan.kratochvil@redhat.com>
gdbserver build-id attribute generator.
* gdb.texinfo (Library List Format for SVR4 Targets): Add
'build-id' in description, example, new attribute in dtd.
gdb/gdbserver/ChangeLog
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
Jan Kratochvil <jan.kratochvil@redhat.com>
gdbserver build-id attribute generator.
* linux-low.c (nat/linux-maps.h, search.h, rsp-low.h): Include.
(ElfXX_Ehdr, ElfXX_Phdr, ElfXX_Nhdr): New.
(ELFXX_FLD, ELFXX_SIZEOF, ELFXX_ROUNDUP, BUILD_ID_INVALID): New.
(find_phdr): New.
(get_dynamic): Use find_pdhr to traverse program headers.
(struct mapping_entry, mapping_entry_s, free_mapping_entry_vec)
(compare_mapping_entry_range, struct find_memory_region_callback_data)
(read_build_id, find_memory_region_callback, lrfind_mapping_entry)
(get_hex_build_id): New.
(linux_qxfer_libraries_svr4): Add optional build-id attribute
to reply XML document.
2015-07-15 17:37:28 +02:00
|
|
|
|
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
gdbserver build-id attribute generator.
|
|
|
|
|
* features/library-list-svr4.dtd (library-list-svr4): New
|
|
|
|
|
'build-id' attribute.
|
|
|
|
|
|
Move linux_find_memory_regions_full & co.
This should be just a move with no changes.
gdb/ChangeLog
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
Jan Kratochvil <jan.kratochvil@redhat.com>
Move linux_find_memory_regions_full & co.
* linux-tdep.c (nat/linux-maps.h): Include.
(gdb_regex.h): Remove the include.
(enum filterflags, struct smaps_vmflags, read_mapping, decode_vmflags)
(mapping_is_anonymous_p, dump_mapping_p): Moved to nat/linux-maps.c.
(linux_find_memory_region_ftype): Moved typedef to nat/linux-maps.h.
(linux_find_memory_regions_full): Moved definition to nat/linux-maps.c.
* nat/linux-maps.c: Include ctype.h, target/target-utils.h, gdb_regex.h
and target/target.h.
(struct smaps_vmflags, read_mapping, decode_vmflags)
(mapping_is_anonymous_p, dump_mapping_p): Move from linux-tdep.c.
(linux_find_memory_regions_full): Move from linux-tdep.c.
* nat/linux-maps.h (read_mapping): New declaration.
(linux_find_memory_region_ftype, enum filterflags): Moved from
linux-tdep.c.
(linux_find_memory_regions_full): New declaration.
* target.c (target/target-utils.h): Include.
(read_alloc_pread_ftype): Moved typedef to target/target-utils.h.
(read_alloc, read_stralloc_func_ftype, read_stralloc): Moved
definitions to target/target-utils.c.
* target.h (target_fileio_read_stralloc): Move it to target/target.h.
* target/target-utils.c (read_alloc, read_stralloc): Move definitions
from target.c.
* target/target-utils.h (read_alloc_pread_ftype): New typedef.
(read_alloc): New declaration.
(read_stralloc_func_ftype): New typedef.
(read_stralloc): New declaration.
* target/target.h (target_fileio_read_stralloc): Move it from target.h.
gdb/gdbserver/ChangeLog
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
Jan Kratochvil <jan.kratochvil@redhat.com>
* target.c: Include target/target-utils.h and fcntl.h.
(target_fileio_read_stralloc_1_pread, target_fileio_read_stralloc_1)
(target_fileio_read_stralloc): New functions.
2015-07-15 17:37:27 +02:00
|
|
|
|
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Move linux_find_memory_regions_full & co.
|
|
|
|
|
* linux-tdep.c (nat/linux-maps.h): Include.
|
|
|
|
|
(gdb_regex.h): Remove the include.
|
|
|
|
|
(enum filterflags, struct smaps_vmflags, read_mapping, decode_vmflags)
|
|
|
|
|
(mapping_is_anonymous_p, dump_mapping_p): Moved to nat/linux-maps.c.
|
|
|
|
|
(linux_find_memory_region_ftype): Moved typedef to nat/linux-maps.h.
|
|
|
|
|
(linux_find_memory_regions_full): Moved definition to nat/linux-maps.c.
|
|
|
|
|
* nat/linux-maps.c: Include ctype.h, target/target-utils.h, gdb_regex.h
|
|
|
|
|
and target/target.h.
|
|
|
|
|
(struct smaps_vmflags, read_mapping, decode_vmflags)
|
|
|
|
|
(mapping_is_anonymous_p, dump_mapping_p): Move from linux-tdep.c.
|
|
|
|
|
(linux_find_memory_regions_full): Move from linux-tdep.c.
|
|
|
|
|
* nat/linux-maps.h (read_mapping): New declaration.
|
|
|
|
|
(linux_find_memory_region_ftype, enum filterflags): Moved from
|
|
|
|
|
linux-tdep.c.
|
|
|
|
|
(linux_find_memory_regions_full): New declaration.
|
|
|
|
|
* target.c (target/target-utils.h): Include.
|
|
|
|
|
(read_alloc_pread_ftype): Moved typedef to target/target-utils.h.
|
|
|
|
|
(read_alloc, read_stralloc_func_ftype, read_stralloc): Moved
|
|
|
|
|
definitions to target/target-utils.c.
|
|
|
|
|
* target.h (target_fileio_read_stralloc): Move it to target/target.h.
|
|
|
|
|
* target/target-utils.c (read_alloc, read_stralloc): Move definitions
|
|
|
|
|
from target.c.
|
|
|
|
|
* target/target-utils.h (read_alloc_pread_ftype): New typedef.
|
|
|
|
|
(read_alloc): New declaration.
|
|
|
|
|
(read_stralloc_func_ftype): New typedef.
|
|
|
|
|
(read_stralloc): New declaration.
|
|
|
|
|
* target/target.h (target_fileio_read_stralloc): Move it from target.h.
|
|
|
|
|
|
2015-07-15 17:37:27 +02:00
|
|
|
|
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Prepare linux_find_memory_regions_full & co. for move.
|
|
|
|
|
* linux-tdep.c (linux_find_memory_region_ftype): Comment.
|
|
|
|
|
(linux_find_memory_regions_full): Change signature and prepare
|
|
|
|
|
for moving to linux-maps.
|
|
|
|
|
(linux_find_memory_regions_data): Rename field 'obfd' to 'data'.
|
|
|
|
|
(linux_find_memory_regions_thunk): New.
|
|
|
|
|
(linux_find_memory_regions_thunk): Use 'data' field instead of 'obfd'.
|
|
|
|
|
(linux_find_memory_regions_gdb): New.
|
|
|
|
|
(linux_find_memory_regions): Rename argument 'obfd' to 'func_data'.
|
|
|
|
|
(linux_make_mappings_corefile_notes): Use
|
|
|
|
|
linux_find_memory_regions_gdb.
|
|
|
|
|
* target.c (read_alloc_pread_ftype): New typedef.
|
|
|
|
|
(target_fileio_read_alloc_1_pread): New function.
|
|
|
|
|
(read_alloc): Refactor from target_fileio_read_alloc_1.
|
|
|
|
|
(read_stralloc_func_ftype): New typedef.
|
|
|
|
|
(target_fileio_read_alloc_1): New implementation. Use read_alloc.
|
|
|
|
|
(read_stralloc): Refactored from target_fileio_read_stralloc.
|
|
|
|
|
(target_fileio_read_stralloc): New implementation, use read_stralloc.
|
|
|
|
|
|
2015-07-15 17:37:27 +02:00
|
|
|
|
2015-07-15 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Change gdb_regex.h to
|
|
|
|
|
common/gdb_regex.h.
|
|
|
|
|
(COMMON_OBS): Add gdb_regex.o.
|
|
|
|
|
(gdb_regex.o): New.
|
|
|
|
|
* common/common.m4 (GDB_AC_COMMON): Add gdb_use_included_regex,
|
|
|
|
|
--without-included-regex and USE_INCLUDED_REGEX.
|
|
|
|
|
* common/gdb_regex.c: New file from utils.c functions.
|
|
|
|
|
* common/gdb_regex.h: Move it here from gdb_regex.h, update include
|
|
|
|
|
file wrapping define name.
|
|
|
|
|
* configure: Rebuilt.
|
|
|
|
|
* configure.ac (gdb_use_included_regex, --without-included-regex)
|
|
|
|
|
(USE_INCLUDED_REGEX): Move them to common/common.m4.
|
|
|
|
|
* gdb_regex.h: Move it to common/gdb_regex.h.
|
|
|
|
|
* utils.c: Remove include gdb_regex.h.
|
|
|
|
|
(do_regfree_cleanup, make_regfree_cleanup, get_regcomp_error)
|
|
|
|
|
(compile_rx_or_error): Move them to common/gdb_regex.c.
|
|
|
|
|
|
2015-07-15 17:37:27 +02:00
|
|
|
|
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Create empty nat/linux-maps.[ch] and common/target-utils.[ch].
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR); Add nat/linux-maps.h,
|
|
|
|
|
common/target-utils.h.
|
|
|
|
|
(COMMON_OBS): Add target-utils.o.
|
|
|
|
|
(linux-maps.o, target-utils.o): New.
|
|
|
|
|
* target/target-utils.c: New file.
|
|
|
|
|
* target/target-utils.h: New file.
|
|
|
|
|
* config/i386/linux.mh (NATDEPFILES): Add linux-maps.o.
|
|
|
|
|
* config/i386/linux64.mh (NATDEPFILES): Ditto.
|
|
|
|
|
* nat/linux-maps.c: New file.
|
|
|
|
|
* nat/linux-maps.h: New file.
|
|
|
|
|
|
2015-07-08 09:38:16 +02:00
|
|
|
|
2015-07-15 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-btrace.c (perf_event_read): Change the type of DATA_HEAD.
|
|
|
|
|
(perf_event_read_all): Change the type of SIZE and DATA_HEAD.
|
|
|
|
|
(perf_event_read_bts): Change the type of SIZE and READ.
|
|
|
|
|
(linux_enable_bts): Change the type of SIZE, PAGES, DATA_SIZE,
|
|
|
|
|
and DATA_OFFSET. Move DATA_SIZE declaration. Restrict the buffer size
|
|
|
|
|
to UINT_MAX. Check for overflows when using DATA_HEAD from the perf
|
|
|
|
|
mmap page.
|
|
|
|
|
(linux_enable_pt): Change the type of PAGES and SIZE. Restrict the
|
|
|
|
|
buffer size to UINT_MAX.
|
|
|
|
|
(linux_read_bts): Change the type of BUFFER_SIZE, SIZE, DATA_HEAD, and
|
|
|
|
|
DATA_TAIL.
|
|
|
|
|
* nat/linux-btrace.h (struct perf_event_buffer)<size, data_head>
|
|
|
|
|
<last_head>: Change type.
|
|
|
|
|
* common/btrace-common.h (struct btrace_dat_pt) <size>: Change type.
|
|
|
|
|
* common/btrace-common.c (btrace_data_append): Change the type of
|
|
|
|
|
SIZE.
|
|
|
|
|
* btrace.c (parse_xml_raw): Change the type of SIZE. Change oddness
|
|
|
|
|
check.
|
|
|
|
|
|
2015-07-06 22:05:06 +02:00
|
|
|
|
2015-07-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.h (CHECK_TYPEDEF): Remove.
|
|
|
|
|
* aarch64-tdep.c (aarch64_return_in_memory): Replace CHECK_TYPEDEF
|
|
|
|
|
with check_typedef.
|
|
|
|
|
* ada-lang.c (decode_constrained_packed_array_type): Likewise.
|
|
|
|
|
(ada_array_length): Likewise.
|
|
|
|
|
(find_parallel_type_by_descriptive_type): Likewise.
|
|
|
|
|
(ada_check_typedef): Likewise.
|
|
|
|
|
* arm-tdep.c (arm_return_in_memory): Likewise.
|
|
|
|
|
* ax-gdb.c (gen_trace_static_fields): Likewise.
|
|
|
|
|
(gen_struct_ref_recursive): Likewise.
|
|
|
|
|
* c-exp.y (exp : SIZEOF '(' type ')' %prec UNARY): Likewise.
|
|
|
|
|
(variable: block COLONCOLON name): Likewise.
|
|
|
|
|
(qualified_name: TYPENAME COLONCOLON name): Likewise.
|
|
|
|
|
* c-lang.c (classify_type): Likewise.
|
|
|
|
|
* c-typeprint.c (c_print_type): Likewise.
|
|
|
|
|
(c_print_typedef): Likewise.
|
|
|
|
|
(c_type_print_base): Likewise.
|
|
|
|
|
* c-valprint.c (c_val_print): Likewise.
|
|
|
|
|
* compile/compile-c-types.c (convert_type): Likewise.
|
|
|
|
|
* compile/compile-object-load.c (get_out_value_type): Likewise.
|
|
|
|
|
* completer.c (add_struct_fields): Likewise.
|
|
|
|
|
(expression_completer): Likewise.
|
|
|
|
|
* cp-namespace.c (cp_find_type_baseclass_by_name): Likewise.
|
|
|
|
|
(cp_lookup_nested_symbol_1): Likewise.
|
|
|
|
|
(cp_lookup_nested_symbol): Likewise.
|
|
|
|
|
* cp-valprint.c (cp_print_value_fields): Likewise.
|
|
|
|
|
(cp_print_static_field): Likewise.
|
|
|
|
|
* d-valprint.c (d_val_print): Likewise.
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Likewise.
|
|
|
|
|
(evaluate_subexp_for_sizeof): Likewise.
|
|
|
|
|
* f-exp.y (exp : SIZEOF '(' type ')' %prec UNARY): Likewise.
|
|
|
|
|
* f-typeprint.c (f_type_print_base): Likewise.
|
|
|
|
|
* f-valprint.c (f_val_print): Likewise.
|
|
|
|
|
* gdbtypes.c (get_discrete_bounds): Likewise.
|
|
|
|
|
(create_array_type_with_stride): Likewise.
|
|
|
|
|
(type_name_no_tag_or_error): Likewise.
|
|
|
|
|
(lookup_struct_elt_type): Likewise.
|
|
|
|
|
(get_unsigned_type_max): Likewise.
|
|
|
|
|
(internal_type_vptr_fieldno): Likewise.
|
|
|
|
|
(set_type_vptr_fieldno): Likewise.
|
|
|
|
|
(internal_type_vptr_basetype): Likewise.
|
|
|
|
|
(set_type_vptr_basetype): Likewise.
|
|
|
|
|
(get_vptr_fieldno): Likewise.
|
|
|
|
|
(is_integral_type): Likewise.
|
|
|
|
|
(is_scalar_type): Likewise.
|
|
|
|
|
(is_scalar_type_recursive): Likewise.
|
|
|
|
|
(distance_to_ancestor): Likewise.
|
|
|
|
|
(is_unique_ancestor_worker): Likewise.
|
|
|
|
|
(check_types_equal): Likewise.
|
|
|
|
|
* gnu-v2-abi.c (gnuv2_value_rtti_type): Likewise.
|
|
|
|
|
|
2015-07-14 20:31:21 +02:00
|
|
|
|
2015-07-14 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (find_slot_in_mapped_hash): Extend language support to
|
|
|
|
|
also test for language_d.
|
|
|
|
|
(dwarf2_compute_name): Likewise.
|
|
|
|
|
(read_func_scope): Likewise.
|
|
|
|
|
(read_structure_type): Likewise.
|
|
|
|
|
(new_symbol_full): Likewise.
|
|
|
|
|
(determine_prefix): Likewise.
|
|
|
|
|
(read_import_statement): Use dot as the separator for language_d.
|
|
|
|
|
(typename_concat): Likewise, but don't prefix the D main function.
|
|
|
|
|
|
2015-07-14 17:46:16 +02:00
|
|
|
|
2015-07-14 Peter Bergner <bergner@vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-namespaces.c (setns): Rename from this ...
|
|
|
|
|
(do_setns): ... to this. Support calling setns if it exists.
|
|
|
|
|
(mnsh_handle_setns): Call do_setns.
|
|
|
|
|
|
Fix attach-pie-noexec.exp fail on native-extended-gdbserver
When I examine the buildbot fails, I see this fail on
native-extended-gdbserver,
Attaching to process 13529^M
"target:/scratch/yao/gdb/build-git/x86_64/gdb/testsuite/gdb.base/attach-pie-noexec (deleted)": could not open as an executable file: No such file or directory^M
(gdb) FAIL: gdb.base/attach-pie-noexec.exp: attach
if I run tests with board file unix, it doesn't exist,
Attaching to process 13869^M
/scratch/yao/gdb/build-git/x86_64/gdb/testsuite/gdb.base/attach-pie-noexec (deleted): No such file or directory.^M
(gdb) PASS: gdb.base/attach-pie-noexec.exp: attach
the test expects to see the period at the end of the error message,
gdb_test "attach $testpid" "Attaching to process $testpid\r\n.*: No such file or directory\\." "attach"
however the period is missing when running with native-extended-gdbserver.
in exec.c:exec_file_attach, GDB has two places may throw errors [1] and [2],
if (load_via_target)
{
...
}
else
{
...
if (scratch_chan < 0)
perror_with_name (filename); <--- [1]
}
...
if (!exec_bfd)
{
error (_("\"%s\": could not open as an executable file: %s"), <-- [2]
scratch_pathname, bfd_errmsg (bfd_get_error ()));
}
perror_with_name [1] append a period at the end of error message,
but error [2] doesn't. This fix is to add a period at the end of the
error message. Note that this fail is shown up on 7.9 release as well.
gdb:
2015-07-13 Yao Qi <yao.qi@linaro.org>
* exec.c (exec_file_attach): Add period at the end of error
message.
2015-07-13 18:14:13 +02:00
|
|
|
|
2015-07-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* exec.c (exec_file_attach): Add period at the end of error
|
|
|
|
|
message.
|
|
|
|
|
|
2015-07-10 15:06:28 +02:00
|
|
|
|
2015-07-13 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (window_name_completer): New function.
|
|
|
|
|
(focus_completer): Call window_name_completer. All old content
|
|
|
|
|
moved into window_name_completer.
|
|
|
|
|
(winheight_completer): New function.
|
|
|
|
|
(_initialize_tui_win): Rename variable. Add completer to
|
|
|
|
|
winheight command. Update doc string on winheight.
|
|
|
|
|
|
2015-07-12 16:13:12 +02:00
|
|
|
|
2015-07-12 Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* nios2-linux-tdep.c (_initialize_nios2_linux_tdep): Register
|
|
|
|
|
all nios2 mach variants.
|
|
|
|
|
|
2015-07-10 01:05:31 +02:00
|
|
|
|
2015-07-10 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* rx-tdep.c (rx_get_opcode_byte): Use target_read_code instead
|
|
|
|
|
of target_read_memory.
|
|
|
|
|
|
2015-07-06 19:16:24 +02:00
|
|
|
|
2015-07-10 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (tui_set_win_height): Use a cleanup to free the
|
|
|
|
|
string copy.
|
|
|
|
|
(parse_scrolling_args): Likewise.
|
|
|
|
|
|
2015-07-06 18:50:28 +02:00
|
|
|
|
2015-07-10 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (focus_completer): Don't duplicate the tui window
|
|
|
|
|
names in this function.
|
|
|
|
|
|
2015-07-06 12:09:05 +02:00
|
|
|
|
2015-07-10 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-data.h (SRC_NAME): Convert to lower case.
|
|
|
|
|
(CMD_NAME): Likewise.
|
|
|
|
|
(DATA_NAME): Likewise.
|
|
|
|
|
(DISASSEM_NAME): Likewise.
|
|
|
|
|
* tui/tui-win.c (tui_set_focus): Window names are now lower case.
|
|
|
|
|
(tui_set_win_height): Likewise.
|
|
|
|
|
(parse_scrolling_args): Likewise.
|
|
|
|
|
|
record: set stop_pc in "record goto" command
When navigating in the recorded execution trace via "record goto", we do not
set stop_pc. This may trigger an internal error in infrun.c when stepping
from that location. Set it.
(gdb) rec full
(gdb) c
Continuing.
Breakpoint 1, foo (void) at foo.c:42
42 x = y
(gdb) rn
foo (void)
at foo.c:41
41 y = x
(gdb) rec go end
Go forward to insn number 98724
at foo.c:42
42 x = y
(gdb) n
infrun.c:2382: internal-error: resume: Assertion `sig != GDB_SIGNAL_0' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)
This happens because there's a breakpoint at PC when the "next"
is issued, so that breapoint should be immediately stepped over.
That should have been detected/done by proceed, here:
if (addr == (CORE_ADDR) -1)
{
if (pc == stop_pc
&& breakpoint_here_p (aspace, pc) == ordinary_breakpoint_here
&& execution_direction != EXEC_REVERSE)
/* There is a breakpoint at the address we will resume at,
step one instruction before inserting breakpoints so that
we do not stop right away (and report a second hit at this
breakpoint).
Note, we don't do this in reverse, because we won't
actually be executing the breakpoint insn anyway.
We'll be (un-)executing the previous instruction. */
tp->stepping_over_breakpoint = 1;
But since stop_pc was stale, the pc == stop_pc check failed, and left the
breakpont at PC inserted.
gdb/
* record-btrace.c (record_btrace_goto_begin, record_btrace_goto_end)
record_btrace_goto): Move call to print_stack_frame ...
(record_btrace_set_replay): ... here. Set stop_pc.
* record-full.c (record_full_goto_entry): Set stop_pc.
testsuite/
* gdb.btrace/record_goto-step.exp: New.
2015-07-06 16:36:45 +02:00
|
|
|
|
2015-07-10 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_goto_begin)
|
|
|
|
|
(record_btrace_goto_end, record_btrace_goto): Move call to
|
|
|
|
|
print_stack_frame ...
|
|
|
|
|
(record_btrace_set_replay): ... here. Set stop_pc.
|
|
|
|
|
* record-full.c (record_full_goto_entry): Set stop_pc.
|
|
|
|
|
|
2015-07-09 17:35:11 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention support for tracepoints on aarch64-linux.
|
|
|
|
|
|
2015-07-09 17:35:11 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* linux-aarch64-low.c (aarch64_supports_tracepoints): New
|
|
|
|
|
function. Return 1.
|
|
|
|
|
(the_low_target): Install it.
|
|
|
|
|
|
2015-07-09 17:35:11 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* gdb.trace/backtrace.exp: Set registers for aarch64 target.
|
|
|
|
|
* gdb.trace/collection.exp: Likewise.
|
|
|
|
|
* gdb.trace/mi-trace-frame-collected.exp: Likewise.
|
|
|
|
|
* gdb.trace/mi-trace-unavailable.exp: Likewise.
|
|
|
|
|
* gdb.trace/report.exp: Likewise.
|
|
|
|
|
* gdb.trace/trace-break.exp: Likewise.
|
|
|
|
|
* gdb.trace/unavailable.exp: Likewise.
|
|
|
|
|
* gdb.trace/while-dyn.exp: Likewise.
|
|
|
|
|
|
2015-07-09 17:35:11 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c: Add ax.h and ax-gdb.h includes.
|
|
|
|
|
(aarch64_gen_return_address): New function.
|
|
|
|
|
(aarch64_gdbarch_init): Hook it.
|
|
|
|
|
|
2015-07-09 17:35:11 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_make_stub_cache): Set available_p and
|
|
|
|
|
swallow NOT_AVAILABLE_ERROR.
|
|
|
|
|
(aarch64_stub_this_id): Call frame_id_build_unavailable_stack if
|
|
|
|
|
available_p is not set.
|
|
|
|
|
(aarch64_stub_frame_unwind_stop_reason): New function.
|
|
|
|
|
(aarch64_stub_unwind): Install it.
|
|
|
|
|
|
2015-07-09 17:35:11 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_prologue_cache) <available_p>: New
|
|
|
|
|
field.
|
|
|
|
|
(aarch64_make_prologue_cache_1): New function, factored out from
|
|
|
|
|
aarch64_make_prologue_cache. Do not allocate cache. Set
|
|
|
|
|
available_p.
|
|
|
|
|
(aarch64_make_prologue_cache): Reimplement wrapping
|
|
|
|
|
aarch64_make_prologue_cache_1, and swallowing
|
|
|
|
|
NOT_AVAILABLE_ERROR.
|
|
|
|
|
(aarch64_prologue_frame_unwind_stop_reason): New function.
|
|
|
|
|
Return UNWIND_UNAVAILABLE if available_p is not set.
|
|
|
|
|
(aarch64_prologue_unwind): Install it.
|
|
|
|
|
(aarch64_prologue_this_id): Move prev_pc and prev_sp limit
|
|
|
|
|
checks into aarch64_prologue_frame_unwind_stop_reason. Call
|
|
|
|
|
frame_id_build_unavailable_stack if available_p is not set.
|
|
|
|
|
|
2015-07-09 17:35:11 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_prologue_cache) <func, prev_pc>: New
|
|
|
|
|
fields.
|
|
|
|
|
(aarch64_scan_prologue): Set prev_pc.
|
|
|
|
|
(aarch64_make_prologue_cache): Set func.
|
|
|
|
|
(aarch64_make_stub_cache): Set prev_pc.
|
|
|
|
|
(aarch64_prologue_this_id): Remove local variables id, pc and
|
|
|
|
|
func. Read prev_pc and func from cache.
|
|
|
|
|
(aarch64_stub_this_id): Read prev_pc from cache.
|
|
|
|
|
|
2015-07-09 17:35:10 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_make_stub_cache): Update comment. New
|
|
|
|
|
argument this_cache. Remove unused local variables reg and
|
|
|
|
|
unwound_fp. Return early if this_cache is already set. Set
|
|
|
|
|
this_cache.
|
|
|
|
|
(aarch64_stub_this_id): Update call to aarch64_make_stub_cache.
|
|
|
|
|
|
2015-07-09 17:35:10 +02:00
|
|
|
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_make_prologue_cache): Update comment.
|
|
|
|
|
New argument this_cache. Return early if this_cache is already
|
|
|
|
|
set. Set this_cache.
|
|
|
|
|
(aarch64_prologue_this_id): Update call to
|
|
|
|
|
aarch64_make_prologue_cache.
|
|
|
|
|
(aarch64_prologue_prev_register): Likewise.
|
|
|
|
|
(aarch64_normal_frame_base): Likewise.
|
|
|
|
|
|
2015-07-09 17:19:25 +02:00
|
|
|
|
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_val_print): Factor out memberptr printing code
|
|
|
|
|
from c_val_print to ...
|
|
|
|
|
(c_val_print_memberptr): ... this new function.
|
|
|
|
|
|
2015-07-09 17:18:59 +02:00
|
|
|
|
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_val_print): Factor out int printing code to ...
|
|
|
|
|
(c_val_print_int): ... this new function.
|
|
|
|
|
|
2015-07-09 17:18:39 +02:00
|
|
|
|
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_val_print): Factor out struct and union
|
|
|
|
|
printing code to ...
|
|
|
|
|
(c_val_print_struct): ... this new function ...
|
|
|
|
|
(c_val_print_union): ... and this new function.
|
|
|
|
|
|
2015-07-09 17:18:12 +02:00
|
|
|
|
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_val_print): Factor out pointer printing code
|
|
|
|
|
to ...
|
|
|
|
|
(c_val_print_ptr): ... this new function.
|
|
|
|
|
|
2015-07-09 17:17:20 +02:00
|
|
|
|
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_valprint): Factor our array printing code from
|
|
|
|
|
c_val_print to ...
|
|
|
|
|
(c_val_print_array): ... this new function.
|
|
|
|
|
|
2015-07-09 17:16:22 +02:00
|
|
|
|
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_val_print): Factor out pointer printing code
|
|
|
|
|
to ...
|
|
|
|
|
(print_unpacked_pointer): ... this new function.
|
|
|
|
|
|
2015-07-09 17:15:40 +02:00
|
|
|
|
2015-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* c-valprint.c (c_val_print): Remove an assignment to i and move
|
|
|
|
|
its declaration.
|
|
|
|
|
|
2015-07-09 13:55:45 +02:00
|
|
|
|
2015-07-09 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_get_debug_reg_capacity): Add
|
|
|
|
|
argument ptid. Update comments. Caller update.
|
|
|
|
|
|
2015-07-02 15:16:09 +02:00
|
|
|
|
2015-07-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (pt_print_packet): Print stop, vmcs, tma, mtc, cyc, and
|
|
|
|
|
mnt packets.
|
|
|
|
|
|
btrace: fix build fail with 32-bit BFD
When compiling GDB with 32-bit BFD, the build fails with:
In file included from btrace.h:33:0,
from btrace.c:23:
/usr/include/intel-pt.h:1643:51: note: expected 'int (*)(uint8_t *, size_t,
const struct pt_asid *, uint64_t, void *)' but argument is of type 'int
(*)(gdb_byte *, size_t, const struct pt_asid *, CORE_ADDR, void *)' extern
pt_export int pt_image_set_callback(struct pt_image *image, ^
gdb/
* btrace.c (btrace_pt_readmem_callback): Change type of PC argument.
2015-07-07 13:54:34 +02:00
|
|
|
|
2015-07-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_pt_readmem_callback): Change type of PC argument.
|
|
|
|
|
|
2015-07-08 21:48:02 +02:00
|
|
|
|
2015-07-08 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* progspace.c (delete_program_space): Add missing spaces.
|
|
|
|
|
|
Delete program spaces directly when removing inferiors
When deleting an inferior, delete the associated program space as well
if it becomes unused. This replaces the "pruning" approach, with which
you could forget to call prune_program_spaces (as seen, with the
-remove-inferior command, see [1]).
This allows to remove the prune_program_spaces function. At the same
time, I was able to clean up the delete_inferior* family:
- delete_inferior is unused
- delete_inferior_silent is only used in monitor_close, but is replaced
with discard_all_inferiors [2], so it becomes unused
- All remaining calls to delete_inferior_1 are with silent=1, so the
parameter is removed
- delete_inferior_1 is renamed to delete_inferior
I renamed pspace_empty_p to program_space_empty_p. I prefer if the
"exported" functions have a more explicit and standard name.
Tested on Ubuntu 14.10.
[1] https://sourceware.org/ml/gdb-patches/2014-09/msg00717.html
[2] See https://sourceware.org/ml/gdb-patches/2015-07/msg00228.html and
follow-ups for details.
gdb/Changelog:
* inferior.c (delete_inferior_1): Rename to ...
(delete_inferior): ..., remove 'silent' parameter, delete
program space when unused and remove call to prune_program_spaces.
Remove the old, unused, delete_inferior.
(delete_inferior_silent): Remove.
(prune_inferiors): Change call from delete_inferior_1 to
delete_inferior and remove 'silent' parameter. Remove call to
prune_program_spaces.
(remove_inferior_command): Idem.
* inferior.h (delete_inferior_1): Rename to...
(delete_inferior): ..., remove 'silent' parameter and remove the
original delete_inferior.
(delete_inferior_silent): Remove.
* mi/mi-main.c (mi_cmd_remove_inferior): Change call from
delete_inferior_1 to delete_inferior and remove 'silent'
parameter.
* progspace.c (prune_program_spaces): Remove.
(pspace_empty_p): Rename to...
(program_space_empty_p): ... and make non-static.
(delete_program_space): New.
* progspace.h (prune_program_spaces): Remove declaration.
(program_space_empty_p): New declaration.
(delete_program_space): New declaration.
* monitor.c (monitor_close): Replace call to
delete_thread_silent and delete_inferior_silent with
discard_all_inferiors.
2015-07-08 21:41:01 +02:00
|
|
|
|
2015-07-08 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* inferior.c (delete_inferior_1): Rename to ...
|
|
|
|
|
(delete_inferior): ..., remove 'silent' parameter, delete
|
|
|
|
|
program space when unused and remove call to prune_program_spaces.
|
|
|
|
|
Remove the old, unused, delete_inferior.
|
|
|
|
|
(delete_inferior_silent): Remove.
|
|
|
|
|
(prune_inferiors): Change call from delete_inferior_1 to
|
|
|
|
|
delete_inferior and remove 'silent' parameter. Remove call to
|
|
|
|
|
prune_program_spaces.
|
|
|
|
|
(remove_inferior_command): Idem.
|
|
|
|
|
* inferior.h (delete_inferior_1): Rename to...
|
|
|
|
|
(delete_inferior): ..., remove 'silent' parameter and remove the
|
|
|
|
|
original delete_inferior.
|
|
|
|
|
(delete_inferior_silent): Remove.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_remove_inferior): Change call from
|
|
|
|
|
delete_inferior_1 to delete_inferior and remove 'silent'
|
|
|
|
|
parameter.
|
|
|
|
|
* progspace.c (prune_program_spaces): Remove.
|
|
|
|
|
(pspace_empty_p): Rename to...
|
|
|
|
|
(program_space_empty_p): ... and make non-static.
|
|
|
|
|
(delete_program_space): New.
|
|
|
|
|
* progspace.h (prune_program_spaces): Remove declaration.
|
|
|
|
|
(program_space_empty_p): New declaration.
|
|
|
|
|
(delete_program_space): New declaration.
|
|
|
|
|
* monitor.c (monitor_close): Replace call to
|
|
|
|
|
delete_thread_silent and delete_inferior_silent with
|
|
|
|
|
discard_all_inferiors.
|
|
|
|
|
|
2015-07-02 18:27:50 +02:00
|
|
|
|
2015-07-08 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* defs.h (deprecated_register_changed_hook): Remove prototype.
|
|
|
|
|
* interps.c (clear_iterpreter_hooks): Remove reference to
|
|
|
|
|
deprecated_register_changed_hook.
|
|
|
|
|
* top.c (deprecated_register_changed_hook): Remove prototype.
|
|
|
|
|
* valops.c (value_assign): Remove reference to
|
|
|
|
|
deprecated_register_changed_hook.
|
|
|
|
|
* tui/tui-hooks.c (tui_register_changed): Add parameter "frame".
|
|
|
|
|
Add comment documenting the function.
|
|
|
|
|
(tui_register_changed_observer): Define.
|
|
|
|
|
(tui_install_hooks): Remove reference to
|
|
|
|
|
deprecated_register_changed_hook. Set
|
|
|
|
|
tui_register_changed_observer.
|
|
|
|
|
(tui_remove_hooks): Remove reference to
|
|
|
|
|
deprecated_register_changed_hook. Unset
|
|
|
|
|
tui_register_changed_observer.
|
|
|
|
|
|
2015-07-08 14:42:19 +02:00
|
|
|
|
2015-07-08 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR compile/18484
|
|
|
|
|
* compile/compile-c-types.c (insert_type): Change gdb_assert to error.
|
|
|
|
|
|
2015-07-08 11:53:36 +02:00
|
|
|
|
2015-07-08 Robert O'Callahan <robert@ocallahan.org>
|
|
|
|
|
|
|
|
|
|
PR exp/18617
|
|
|
|
|
* ax-gdb.c (gen_conversion): Extend to 'to' bits, not 'from'.
|
|
|
|
|
|
2015-07-06 15:40:45 +02:00
|
|
|
|
2015-07-08 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Markus T. Metzger.
|
|
|
|
|
|
2015-07-06 15:21:37 +02:00
|
|
|
|
2015-07-08 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-btrace.c (kernel_supports_bts, kernel_supports_pt):
|
|
|
|
|
Use safe_strerror() instead of strerror().
|
|
|
|
|
|
Set architecture to arm in arm-*.xml files
This patch is to add the following line to various arm target description
xml files,
<architecture>arm</architecture>
in order to fix problems I've seen on aarch64 multi-arch debugging,
detach^M
Detaching from program: build-gdb/gdb/testsuite/gdb.base/attach, process 17145^M
(gdb) PASS: gdb.base/attach.exp: attach1 detach file^M
No executable file now.^M
Architecture of file not recognized.^M
(gdb) FAIL: gdb.base/attach.exp: attach1, purging symbols after detach
Without this patch, struct target_desc *tdesc_* are not initialised
properly, that is, fields arch and osabi in 'struct target_desc' are
not set properly. This doesn't cause any problems on single arch
debugging, because arch-utils.c:gdbarch_info_fill will guess correctly.
However, in multi-arch debugging, gdbarch_info_fill gets the aarch64
arch, but the target description is for arm (because the current
inferior is 32-bit arm).
It is a surprise to me we didn't set architecture to "arm" before in *.xml
files, and I didn't find out why didn't do so. AFAICS,
gdb/features/arm-with-iwmmxt.xml was added firstly (in patch
https://sourceware.org/ml/gdb-patches/2007-01/msg00593.html)
which had <architecture>iwmmxt</architecture>, however, afterwards,
architecture isn't set anymore in features/arm-*.xml files (in patches
https://sourceware.org/ml/gdb-patches/2009-07/msg00689.html and
https://sourceware.org/ml/gdb-patches/2010-08/msg00225.html).
gdb:
2015-07-07 Yao Qi <yao.qi@linaro.org>
* features/arm-with-m-fpa-layout.xml: Set architecture to arm.
* features/arm-with-m-fpa-layout.c: Regenerated.
* features/arm-with-m-vfp-d16.xml: Likewise.
* features/arm-with-m-vfp-d16.c: Regenerated.
* features/arm-with-m.xml: Likewise.
* features/arm-with-m.c: Regenerated.
* features/arm-with-neon.xml: Likewise.
* features/arm-with-neon.c: Regenerated.
* features/arm-with-vfpv2.xml: Likewise.
* features/arm-with-vfpv2.c: Regenerated.
* features/arm-with-vfpv3.xml: Likewise.
* features/arm-with-vfpv3.c: Regenerated.
2015-07-07 17:58:19 +02:00
|
|
|
|
2015-07-07 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* features/arm-with-m-fpa-layout.xml: Set architecture to arm.
|
|
|
|
|
* features/arm-with-m-fpa-layout.c: Regenerated.
|
|
|
|
|
* features/arm-with-m-vfp-d16.xml: Likewise.
|
|
|
|
|
* features/arm-with-m-vfp-d16.c: Regenerated.
|
|
|
|
|
* features/arm-with-m.xml: Likewise.
|
|
|
|
|
* features/arm-with-m.c: Regenerated.
|
|
|
|
|
* features/arm-with-neon.xml: Likewise.
|
|
|
|
|
* features/arm-with-neon.c: Regenerated.
|
|
|
|
|
* features/arm-with-vfpv2.xml: Likewise.
|
|
|
|
|
* features/arm-with-vfpv2.c: Regenerated.
|
|
|
|
|
* features/arm-with-vfpv3.xml: Likewise.
|
|
|
|
|
* features/arm-with-vfpv3.c: Regenerated.
|
|
|
|
|
|
2015-07-07 17:58:19 +02:00
|
|
|
|
2015-07-07 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch32-linux-nat.h (VFP_REGS_SIZE): New macro, moved from
|
|
|
|
|
arm-linux-nat.c.
|
|
|
|
|
* aarch64-linux-nat.c: Include aarch32-linux-nat.h and
|
|
|
|
|
elf/external.h.
|
|
|
|
|
(fetch_gregs_from_thread): Call aarch32_gp_regcache_supply
|
|
|
|
|
if target is 32-bit.
|
|
|
|
|
(store_gregs_to_thread): Call aarch32_gp_regcache_collect
|
|
|
|
|
if target is 32-bit.
|
|
|
|
|
(fetch_fpregs_from_thread): Call aarch32_vfp_regcache_supply
|
|
|
|
|
if target is 32-bit.
|
|
|
|
|
(store_fpregs_to_thread): Call aarch32_vfp_regcache_collect
|
|
|
|
|
if target is 32-bit.
|
|
|
|
|
(tdesc_arm_with_vfpv3, tdesc_arm_with_neon): Declare.
|
|
|
|
|
(aarch64_linux_read_description): Return the right target
|
|
|
|
|
description.
|
|
|
|
|
* arm-linux-nat.c (VFP_REGS_SIZE): Moved to aarch32-linux-nat.h.
|
|
|
|
|
* config/aarch64/linux.mh (NATDEPFILES): Add aarch32-linux-nat.o.
|
|
|
|
|
* configure.tgt (aarch64*-*-linux*): Add arm-tdep.o and
|
|
|
|
|
arm-linux-tdep.o.
|
|
|
|
|
|
2015-07-07 17:58:19 +02:00
|
|
|
|
2015-07-07 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch32-linux-nat.c: New file.
|
|
|
|
|
* aarch32-linux-nat.h: New file.
|
|
|
|
|
* arm-linux-nat.c: Include aarch32-linux-nat.h.
|
|
|
|
|
(fetch_regs): Move code to aarch32-linux-nat.c. Call
|
|
|
|
|
aarch32_gp_regcache_supply.
|
|
|
|
|
(store_regs): Move code to aarch32-linux-nat.c. Call
|
|
|
|
|
aarch32_gp_regcache_collect.
|
|
|
|
|
(fetch_vfp_regs): Move code to aarch32-linux-nat.c. Call
|
|
|
|
|
aarch32_vfp_regcache_supply.
|
|
|
|
|
(store_vfp_regs): Move code to aarch32-linux-nat.c. Call
|
|
|
|
|
aarch32_vfp_regcache_collect.
|
|
|
|
|
* config/arm/linux.mh (NATDEPFILES): Add aarch32-linux-nat.o.
|
|
|
|
|
|
2015-07-07 17:58:19 +02:00
|
|
|
|
2015-07-07 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (store_fpregister): Remove.
|
|
|
|
|
(store_register): Likewise.
|
|
|
|
|
(fetch_fpregister): Likewise.
|
|
|
|
|
(fetch_register): Likewise.
|
|
|
|
|
(arm_linux_store_inferior_registers): Call store_regs and
|
|
|
|
|
store_fpregs instead.
|
|
|
|
|
(arm_linux_fetch_inferior_registers): Call fetch_fpregs and
|
|
|
|
|
fetch_regs instead.
|
|
|
|
|
|
2015-07-06 12:33:31 +02:00
|
|
|
|
2015-07-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* doc/gdb.texinfo (TUI): Restructure documentation on TUI layout
|
|
|
|
|
and focus commands.
|
|
|
|
|
|
2015-07-06 22:02:47 +02:00
|
|
|
|
2015-07-06 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Create a new section for the next release branch.
|
|
|
|
|
Rename the section of the current branch, now that it has
|
|
|
|
|
been cut.
|
|
|
|
|
|
2015-07-06 21:58:29 +02:00
|
|
|
|
2015-07-06 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.10 branch created (66c4b3e8a628a207bc6aafef6af0c4128195f56e):
|
|
|
|
|
* version.in: Bump version to 7.10.50.DATE-cvs.
|
|
|
|
|
|
2015-07-06 21:09:21 +02:00
|
|
|
|
2015-07-06 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (remove_breakpoint_1): Don't handle permanent
|
|
|
|
|
breakpoints in a special way.
|
|
|
|
|
(remove_breakpoint): Likewise.
|
|
|
|
|
(mark_breakpoints_out): Likewise.
|
|
|
|
|
|
2015-07-06 12:37:24 +02:00
|
|
|
|
2015-07-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* doc/gdb.texinfo (TUI): Add comma after @xref.
|
|
|
|
|
|
2015-07-06 17:56:42 +02:00
|
|
|
|
2015-07-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (tui_set_focus): Use structure member 'generic'
|
|
|
|
|
instead of casting the structure type.
|
|
|
|
|
|
2015-07-06 19:10:56 +02:00
|
|
|
|
2015-07-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* valops.c (search_struct_field): Remove OFFSET parameter.
|
|
|
|
|
(value_cast_structs): Adjust calls to search_struct_field.
|
|
|
|
|
(value_struct_elt): Same.
|
|
|
|
|
(find_overload_match): Same.
|
|
|
|
|
|
2015-07-06 19:04:11 +02:00
|
|
|
|
2015-07-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* value.c (value_fetch_lazy): Update comment, change return
|
|
|
|
|
value to void.
|
|
|
|
|
* value.h (value_fetch_lazy): Change return value to void.
|
|
|
|
|
|
2015-07-06 16:32:11 +02:00
|
|
|
|
2015-07-06 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-data.c (tui_partial_win_by_name): Window name is const.
|
|
|
|
|
(tui_win_name): Make parameter and result const.
|
|
|
|
|
* tui/tui-data.h (tui_win_name): Make parameter and result const.
|
|
|
|
|
|
2015-07-02 17:55:01 +02:00
|
|
|
|
2015-07-06 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_mpx_info_bounds): Don't call error, instead
|
|
|
|
|
use printf_unfiltered.
|
|
|
|
|
(set_mpx_cmd): Add missing trailing space to command string
|
|
|
|
|
literal.
|
|
|
|
|
(_initialize_i386_tdep): Give the "mpx" prefix command its
|
|
|
|
|
correct name.
|
|
|
|
|
|
2015-07-03 01:46:31 +02:00
|
|
|
|
2015-07-02 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* rx-tdep.c (RX_USP_REGNUM, RX_BPC_REGNUM): New constants.
|
|
|
|
|
(enum rx_frame_type): New.
|
|
|
|
|
(struct rx_prologue): Add new field `frame_type'.
|
|
|
|
|
(rx_analyze_prologue): Add `frame_type' parameter. Cache this
|
|
|
|
|
parameter in the prologue struct. Add code for recording
|
|
|
|
|
locations of PC and PSW for fast interrupt and exception frames.
|
|
|
|
|
(rx_skip_prologue): Adjust call to rx_analyze_prologue.
|
|
|
|
|
(rx_analyze_frame_prologue): Add `frame_type' parameter.
|
|
|
|
|
(rx_frame_type): New function.
|
|
|
|
|
(rx_frame_base): Fetch frame type and pass it to rx_analyze_prologue.
|
|
|
|
|
(rx_frame_this_id): Rename parameter `this_prologue_cache' to
|
|
|
|
|
`this_cache'.
|
|
|
|
|
(rx_frame_prev_register): Rename parameter `this_prologue_cache' to
|
2015-07-24 13:08:12 +02:00
|
|
|
|
`this_cache'. Add cases for RX_FRAME_TYPE_EXCEPTION and
|
2015-07-03 01:46:31 +02:00
|
|
|
|
RX_FRAME_TYPE_FAST_INTERRUPT.
|
|
|
|
|
(normal_frame_p, exception_frame_p, rx_frame_sniffer_common)
|
|
|
|
|
(rx_frame_sniffer, rx_exception_sniffer): New functions.
|
|
|
|
|
(rx_frame_unwind): Use rx_frame_sniffer instead of
|
|
|
|
|
default_frame_sniffer.
|
|
|
|
|
(rx_frame_unwind): New unwinder.
|
|
|
|
|
(rx_gdbarch_init): Register new unwinder.
|
|
|
|
|
|
rx: Create and use flags types for psw, bpsw, and fpsw registers.
This change adds two flags types for the (Renesas RX) psw, bpsw, and
fpsw registers. As a result, symbolic flags are displayed for these
registers in the output of GDB's "info registers" command as well as
in output from other commands, such as "print".
gdb/ChangeLog:
* rx-tdep.c (RX_BPSW_REGNUM, RX_FPSW_REGNUM): New constants.
(struct gdbarch_tdep): Add fields rx_psw_type and rx_fpsw_type.
(rx_register_type): Add cases for RX_PSW_REGNUM, RX_BPSW_REGNUM,
and RX_FPSW_REGNUM.
(rx_gdbarch_init): Initialize PSW, BPSW, and FPSW flags types.
2015-07-03 00:02:56 +02:00
|
|
|
|
2015-07-02 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* rx-tdep.c (RX_BPSW_REGNUM, RX_FPSW_REGNUM): New constants.
|
|
|
|
|
(struct gdbarch_tdep): Add fields rx_psw_type and rx_fpsw_type.
|
|
|
|
|
(rx_register_type): Add cases for RX_PSW_REGNUM, RX_BPSW_REGNUM,
|
|
|
|
|
and RX_FPSW_REGNUM.
|
|
|
|
|
(rx_gdbarch_init): Initialize PSW, BPSW, and FPSW flags types.
|
|
|
|
|
|
2015-07-02 22:39:57 +02:00
|
|
|
|
2015-07-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Fix GCC false warning.
|
|
|
|
|
* s390-linux-tdep.c (s390_handle_arg): Initialize VAL.
|
|
|
|
|
|
2015-07-02 15:03:54 +02:00
|
|
|
|
2015-07-02 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (aarch64_linux_insert_hw_breakpoint): Fix
|
|
|
|
|
typo in the debugging message.
|
|
|
|
|
|
btrace: maintenance commands
Add maintenance commands that help debugging the btrace record target.
The following new commands are added:
maint info btrace
Print information about branch tracing internals.
maint btrace packet-history
Print the raw branch tracing data.
maint btrace clear-packet-history
Discard the stored raw branch tracing data.
maint btrace clear
Discard all branch tracing data. It will be fetched and processed
anew by the next "record" command.
maint set|show btrace pt skip-pad
Set and show whether PAD packets are skipped when computing the
packet history.
gdb/
* btrace.c: Include gdbcmd.h, cli/cli-utils.h, and ctype.h.
(maint_btrace_cmdlist, maint_btrace_set_cmdlist)
(maint_btrace_show_cmdlist, maint_btrace_pt_set_cmdlist)
(maint_btrace_pt_show_cmdlist, maint_btrace_pt_skip_pad)
(btrace_maint_clear): New.
(btrace_fetch, btrace_clear): Call btrace_maint_clear.
(pt_print_packet, btrace_maint_decode_pt)
(btrace_maint_update_pt_packets, btrace_maint_update_packets)
(btrace_maint_print_packets, get_uint, get_context_size, no_chunk)
(maint_btrace_packet_history_cmd)
(maint_btrace_clear_packet_history_cmd, maint_btrace_clear_cmd)
(maint_btrace_cmd, maint_btrace_set_cmd, maint_btrace_show_cmd)
(maint_btrace_pt_set_cmd, maint_btrace_pt_show_cmd)
(maint_info_btrace_cmd, _initialize_btrace): New.
* btrace.h (btrace_pt_packet, btrace_pt_packet_s)
(btrace_maint_packet_history, btrace_maint_info): New.
(btrace_thread_info) <maint>: New.
* NEWS: Announce it.
doc/
* gdb.texinfo (Maintenance Commands): Document "maint btrace"
commands.
2014-02-03 14:35:28 +01:00
|
|
|
|
2015-07-02 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c: Include gdbcmd.h, cli/cli-utils.h, and ctype.h.
|
|
|
|
|
(maint_btrace_cmdlist, maint_btrace_set_cmdlist)
|
|
|
|
|
(maint_btrace_show_cmdlist, maint_btrace_pt_set_cmdlist)
|
|
|
|
|
(maint_btrace_pt_show_cmdlist, maint_btrace_pt_skip_pad)
|
|
|
|
|
(btrace_maint_clear): New.
|
|
|
|
|
(btrace_fetch, btrace_clear): Call btrace_maint_clear.
|
|
|
|
|
(pt_print_packet, btrace_maint_decode_pt)
|
|
|
|
|
(btrace_maint_update_pt_packets, btrace_maint_update_packets)
|
|
|
|
|
(btrace_maint_print_packets, get_uint, get_context_size, no_chunk)
|
|
|
|
|
(maint_btrace_packet_history_cmd)
|
|
|
|
|
(maint_btrace_clear_packet_history_cmd, maint_btrace_clear_cmd)
|
|
|
|
|
(maint_btrace_cmd, maint_btrace_set_cmd, maint_btrace_show_cmd)
|
|
|
|
|
(maint_btrace_pt_set_cmd, maint_btrace_pt_show_cmd)
|
|
|
|
|
(maint_info_btrace_cmd, _initialize_btrace): New.
|
|
|
|
|
* btrace.h (btrace_pt_packet, btrace_pt_packet_s)
|
|
|
|
|
(btrace_maint_packet_history, btrace_maint_info): New.
|
|
|
|
|
(btrace_thread_info) <maint>: New.
|
|
|
|
|
* NEWS: Announce it.
|
|
|
|
|
|
2014-02-03 11:40:50 +01:00
|
|
|
|
2015-07-02 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_fetch): Append the new trace data.
|
|
|
|
|
(btrace_clear): Clear the stored trace data.
|
|
|
|
|
* btrace.h (btrace_thread_info) <data>: New.
|
|
|
|
|
* common/btrace-common.h (btrace_data_clear)
|
|
|
|
|
(btrace_data_append): New.
|
|
|
|
|
* common/btrace-common.c (btrace_data_clear)
|
|
|
|
|
(btrace_data_append): New.
|
|
|
|
|
|
2014-11-17 11:18:05 +01:00
|
|
|
|
2015-07-02 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-btrace.c (linux_enable_bts): Check for
|
|
|
|
|
PERF_ATTR_SIZE_VER5.
|
|
|
|
|
Check for data_offset and data_size fields. Use them.
|
|
|
|
|
|
btrace: support Intel(R) Processor Trace
Adds a new command "record btrace pt" to configure the kernel to use
Intel(R) Processor Trace instead of Branch Trace Strore.
The "record btrace" command chooses the tracing format automatically.
Intel(R) Processor Trace support requires Linux 4.1 and libipt.
gdb/
* NEWS: Announce new commands "record btrace pt" and "record pt".
Announce new options "set|show record btrace pt buffer-size".
* btrace.c: Include "rsp-low.h".
Include "inttypes.h".
(btrace_add_pc): Add forward declaration.
(pt_reclassify_insn, ftrace_add_pt, btrace_pt_readmem_callback)
(pt_translate_cpu_vendor, btrace_finalize_ftrace_pt)
(btrace_compute_ftrace_pt): New.
(btrace_compute_ftrace): Support BTRACE_FORMAT_PT.
(check_xml_btrace_version): Update version check.
(parse_xml_raw, parse_xml_btrace_pt_config_cpu)
(parse_xml_btrace_pt_raw, parse_xml_btrace_pt)
(btrace_pt_config_cpu_attributes, btrace_pt_config_children)
(btrace_pt_children): New.
(btrace_children): Add support for "pt".
(parse_xml_btrace_conf_pt, btrace_conf_pt_attributes): New.
(btrace_conf_children): Add support for "pt".
* btrace.h: Include "intel-pt.h".
(btrace_pt_error): New.
* common/btrace-common.c (btrace_format_string, btrace_data_fini)
(btrace_data_empty): Support BTRACE_FORMAT_PT.
* common/btrace-common.h (btrace_format): Add BTRACE_FORMAT_PT.
(struct btrace_config_pt): New.
(struct btrace_config)<pt>: New.
(struct btrace_data_pt_config, struct btrace_data_pt): New.
(struct btrace_data)<pt>: New.
* features/btrace-conf.dtd (btrace-conf)<pt>: New.
(pt): New.
* features/btrace.dtd (btrace)<pt>: New.
(pt, pt-config, cpu): New.
* nat/linux-btrace.c (perf_event_read, perf_event_read_all)
(perf_event_pt_event_type, kernel_supports_pt)
(linux_supports_pt): New.
(linux_supports_btrace): Support BTRACE_FORMAT_PT.
(linux_enable_bts): Free tinfo on error.
(linux_enable_pt): New.
(linux_enable_btrace): Support BTRACE_FORMAT_PT.
(linux_disable_pt): New.
(linux_disable_btrace): Support BTRACE_FORMAT_PT.
(linux_fill_btrace_pt_config, linux_read_pt): New.
(linux_read_btrace): Support BTRACE_FORMAT_PT.
* nat/linux-btrace.h (struct btrace_tinfo_pt): New.
(struct btrace_target_info)<pt>: New.
* record-btrace.c (set_record_btrace_pt_cmdlist)
(show_record_btrace_pt_cmdlist): New.
(record_btrace_print_pt_conf): New.
(record_btrace_print_conf): Support BTRACE_FORMAT_PT.
(btrace_ui_out_decode_error): Support BTRACE_FORMAT_PT.
(cmd_record_btrace_pt_start): New.
(cmd_record_btrace_start): Support BTRACE_FORMAT_PT.
(cmd_set_record_btrace_pt, cmd_show_record_btrace_pt): New.
(_initialize_record_btrace): Add new commands.
* remote.c (PACKET_Qbtrace_pt, PACKET_Qbtrace_conf_pt_size): New.
(remote_protocol_features): Add "Qbtrace:pt".
Add "Qbtrace-conf:pt:size".
(remote_supports_btrace): Support BTRACE_FORMAT_PT.
(btrace_sync_conf): Support PACKET_Qbtrace_conf_pt_size.
(remote_enable_btrace): Support BTRACE_FORMAT_PT.
(_initialize_remote): Add new commands.
gdbserver/
* linux-low.c: Include "rsp-low.h"
(linux_low_encode_pt_config, linux_low_encode_raw): New.
(linux_low_read_btrace): Support BTRACE_FORMAT_PT.
(linux_low_btrace_conf): Support BTRACE_FORMAT_PT.
(handle_btrace_enable_pt): New.
(handle_btrace_general_set): Support "pt".
(handle_btrace_conf_general_set): Support "pt:size".
doc/
* gdb.texinfo (Process Record and Replay): Spell out that variables
and registers are not available during btrace replay.
Describe the new "record btrace pt" command.
Describe the new "set|show record btrace pt buffer-size" options.
(General Query Packets): Describe the new Qbtrace:pt and
Qbtrace-conf:pt:size packets.
Expand "bts" to "Branch Trace Store".
Update the branch trace DTD.
2014-01-24 13:45:47 +01:00
|
|
|
|
2015-07-02 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Announce new commands "record btrace pt" and "record pt".
|
|
|
|
|
Announce new options "set|show record btrace pt buffer-size".
|
|
|
|
|
* btrace.c: Include "rsp-low.h".
|
|
|
|
|
Include "inttypes.h".
|
|
|
|
|
(btrace_add_pc): Add forward declaration.
|
|
|
|
|
(pt_reclassify_insn, ftrace_add_pt, btrace_pt_readmem_callback)
|
|
|
|
|
(pt_translate_cpu_vendor, btrace_finalize_ftrace_pt)
|
|
|
|
|
(btrace_compute_ftrace_pt): New.
|
|
|
|
|
(btrace_compute_ftrace): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(check_xml_btrace_version): Update version check.
|
|
|
|
|
(parse_xml_raw, parse_xml_btrace_pt_config_cpu)
|
|
|
|
|
(parse_xml_btrace_pt_raw, parse_xml_btrace_pt)
|
|
|
|
|
(btrace_pt_config_cpu_attributes, btrace_pt_config_children)
|
|
|
|
|
(btrace_pt_children): New.
|
|
|
|
|
(btrace_children): Add support for "pt".
|
|
|
|
|
(parse_xml_btrace_conf_pt, btrace_conf_pt_attributes): New.
|
|
|
|
|
(btrace_conf_children): Add support for "pt".
|
|
|
|
|
* btrace.h: Include "intel-pt.h".
|
|
|
|
|
(btrace_pt_error): New.
|
|
|
|
|
* common/btrace-common.c (btrace_format_string, btrace_data_fini)
|
|
|
|
|
(btrace_data_empty): Support BTRACE_FORMAT_PT.
|
|
|
|
|
* common/btrace-common.h (btrace_format): Add BTRACE_FORMAT_PT.
|
|
|
|
|
(struct btrace_config_pt): New.
|
|
|
|
|
(struct btrace_config)<pt>: New.
|
|
|
|
|
(struct btrace_data_pt_config, struct btrace_data_pt): New.
|
|
|
|
|
(struct btrace_data)<pt>: New.
|
|
|
|
|
* features/btrace-conf.dtd (btrace-conf)<pt>: New.
|
|
|
|
|
(pt): New.
|
|
|
|
|
* features/btrace.dtd (btrace)<pt>: New.
|
|
|
|
|
(pt, pt-config, cpu): New.
|
|
|
|
|
* nat/linux-btrace.c (perf_event_read, perf_event_read_all)
|
|
|
|
|
(perf_event_pt_event_type, kernel_supports_pt)
|
|
|
|
|
(linux_supports_pt): New.
|
|
|
|
|
(linux_supports_btrace): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(linux_enable_bts): Free tinfo on error.
|
|
|
|
|
(linux_enable_pt): New.
|
|
|
|
|
(linux_enable_btrace): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(linux_disable_pt): New.
|
|
|
|
|
(linux_disable_btrace): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(linux_fill_btrace_pt_config, linux_read_pt): New.
|
|
|
|
|
(linux_read_btrace): Support BTRACE_FORMAT_PT.
|
|
|
|
|
* nat/linux-btrace.h (struct btrace_tinfo_pt): New.
|
|
|
|
|
(struct btrace_target_info)<pt>: New.
|
|
|
|
|
* record-btrace.c (set_record_btrace_pt_cmdlist)
|
|
|
|
|
(show_record_btrace_pt_cmdlist): New.
|
|
|
|
|
(record_btrace_print_pt_conf): New.
|
|
|
|
|
(record_btrace_print_conf): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(btrace_ui_out_decode_error): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(cmd_record_btrace_pt_start): New.
|
|
|
|
|
(cmd_record_btrace_start): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(cmd_set_record_btrace_pt, cmd_show_record_btrace_pt): New.
|
|
|
|
|
(_initialize_record_btrace): Add new commands.
|
|
|
|
|
* remote.c (PACKET_Qbtrace_pt, PACKET_Qbtrace_conf_pt_size): New.
|
|
|
|
|
(remote_protocol_features): Add "Qbtrace:pt".
|
|
|
|
|
Add "Qbtrace-conf:pt:size".
|
|
|
|
|
(remote_supports_btrace): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(btrace_sync_conf): Support PACKET_Qbtrace_conf_pt_size.
|
|
|
|
|
(remote_enable_btrace): Support BTRACE_FORMAT_PT.
|
|
|
|
|
(_initialize_remote): Add new commands.
|
|
|
|
|
|
2013-11-12 16:58:45 +01:00
|
|
|
|
2015-07-02 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac: check for libipt
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* config.in: Regenerate.
|
|
|
|
|
* Makefile.in (LIBIPT): New.
|
|
|
|
|
(CLIBS): Add $LIBIPT.
|
|
|
|
|
* NEWS: document new configure options
|
|
|
|
|
|
2015-07-02 08:01:35 +02:00
|
|
|
|
2015-07-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Replace debug
|
|
|
|
|
message "lookup undefined ELF symbol" by 3 more specific messages.
|
|
|
|
|
|
2015-07-02 01:18:35 +02:00
|
|
|
|
2015-07-01 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* rl78-tdep.c (struct gdbarch_tdep): Add new field, rl78_psw_type.
|
|
|
|
|
(rl78_register_type): Add case for RL78_PSW_REGNUM.
|
|
|
|
|
(rl78_gdbarch_init): Initialize rl78_psw_type.
|
|
|
|
|
|
TUI: Make sure to update registers if frame information has changed
When I replaced TUI's frame_changed hook to fix PR tui/13378 I assumed
that there's no reason to refresh register information following a call
to "up", "down" or "frame". This assumption was made to fix the problem
of refreshing frame information twice following a sync-execution normal
stop (once in tui_normal_stop and then in tui_before_prompt) -- the
second refresh removing any highlights made by the first.
I was wrong about that -- GDB's snapshot of register information is
per-frame, and when the frame changes, registers do too (most
prominently the %rip and %rsp registers). So e.g. GDB 7.8 would
highlight such register changes after invoking "up", "down" or "frame",
and current GDB does not.
To fix this regression, this patch adds another (sufficient) condition
for refreshing register information: in
tui_refresh_frame_and_register_information, always refresh register
information if frame information has changed. This makes register
information get refreshed following a call to "up", "down" or "frame"
while still avoiding the "double refresh" issue following a normal stop.
This condition may seem to obsolete the existing registers_too_p
parameter, but it does not: following a normal stop, it is possible that
registers may have changed while frame information had not. We could be
on the exact same PC with different register values. The new condition
would not catch such a case, but the registers_too_p condition will. So
both conditions seem necessary (and either one is sufficient).
gdb/ChangeLog:
* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
Update commentary. Always refresh the registers when frame
information has changed.
* tui/tui-stack.c (tui_show_frame_info): Update commentary.
Change return type to int. Return 1 if frame information has
changed, 1 otherwise.
(tui_before_prompt): Update commentary.
* tui/tui-stack.h (tui_show_frame_info): Change return type to
int.
2015-07-01 14:02:09 +02:00
|
|
|
|
2015-07-01 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
|
|
|
|
|
Update commentary. Always refresh the registers when frame
|
|
|
|
|
information has changed.
|
|
|
|
|
* tui/tui-stack.c (tui_show_frame_info): Update commentary.
|
|
|
|
|
Change return type to int. Return 1 if frame information has
|
|
|
|
|
changed, 0 otherwise.
|
|
|
|
|
(tui_before_prompt): Update commentary.
|
|
|
|
|
* tui/tui-stack.h (tui_show_frame_info): Change return type to
|
|
|
|
|
int.
|
|
|
|
|
|
Replace TUI's select_frame hook (PR tui/13378)
The select_frame hook is used by TUI to update TUI's frame and register
information following changes to the selected frame. The problem with
this hook is that it gets called after every single frame change, even
if the frame change is only temporary or internal. This is the primary
cause of flickering and slowdown when running the inferior under TUI
with conditional breakpoints set. Internal GDB events are the source of
many calls to select_frame and these internal events are triggered
frequently, especially when a few conditional breakpoints are set.
This patch removes the select_frame hook altogether and instead makes
the frame and register information get updated in two key places (using
observers): after an inferior stops, and right before displaying a
prompt. The latter hook covers the case when frame information must be
updated following a call to "up", "down" or "frame", and the former
covers the case when frame and register information must be updated
after a call to "continue", "step", etc. or after the inferior stops in
async execution mode. Together these hooks should cover all the cases
when frame information ought to be refreshed (and when the relevant
windows ought to be subsequently updated).
The print_frame_info_listing hook is also effectively obsolete now, but
it still must be set while the TUI is active because its caller
print_frame_info will otherwise assume that the CLI is active, and will
print the frame informaion accordingly. So this patch also sets the
print_frame_info_listing hook to a dummy callback, in lieu of outright
removing it yet.
Effectively, with this patch, frame/PC changes that do not immediately
precede an inferior-stop event or a prompt display event no longer cause
TUI's frame and register information to be updated.
And as a result of this change and of the previous change to
tui_show_frame_info, the TUI is much more disciplined about updating the
screen, and so the flicker as described in the PR is totally gone.
gdb/ChangeLog:
PR tui/13378
* frame.c (select_frame): Remove reference to
deprecated_selected_frame_level_changed_hook.
* frame.h (deprecated_selected_frame_level_changed_hook): Remove
declaration.
* stack.c (deprecated_selected_frame_level_changed_hook):
Likewise.
* tui/tui-hooks.c (tui_selected_frame_level_changed_hook):
Rename to ...
(tui_refresh_frame_and_register_information): ... this. Bail
out if there is no stack. Don't update register information
unless registers_too_p is true.
(tui_print_frame_info_listing_hook): Rename to ...
(tui_dummy_print_frame_info_listing_hook): ... this.
(tui_before_prompt): New function.
(tui_normal_stop): New function.
(tui_before_prompt_observer): New observer.
(tui_normal_stop_observer): New observer.
(tui_install_hooks): Set
deprecated_print_frame_info_listing_hook to
tui_dummy_print_frame_info_listing_hook. Register
tui_before_prompt_observer to call tui_before_prompt and
tui_normal_stop_observer to call tui_normal_stop. Remove
reference to deprecated_selected_frame_level_changed_hook.
(tui_remove_hooks): Detach and unset tui_before_prompt_observer
and tui_normal_stop_observer. Remove reference to
deprecated_selected_frame_level_changed_hook.
2015-06-30 19:56:49 +02:00
|
|
|
|
2015-06-30 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
PR tui/13378
|
|
|
|
|
* frame.c (select_frame): Remove reference to
|
|
|
|
|
deprecated_selected_frame_level_changed_hook.
|
|
|
|
|
* frame.h (deprecated_selected_frame_level_changed_hook): Remove
|
|
|
|
|
declaration.
|
|
|
|
|
* stack.c (deprecated_selected_frame_level_changed_hook):
|
|
|
|
|
Likewise.
|
|
|
|
|
* tui/tui-hooks.c (tui_selected_frame_level_changed_hook):
|
|
|
|
|
Rename to ...
|
|
|
|
|
(tui_refresh_frame_and_register_information): ... this. Bail
|
|
|
|
|
out if there is no stack. Don't update register information
|
|
|
|
|
unless registers_too_p is true.
|
|
|
|
|
(tui_print_frame_info_listing_hook): Rename to ...
|
|
|
|
|
(tui_dummy_print_frame_info_listing_hook): ... this.
|
|
|
|
|
(tui_before_prompt): New function.
|
|
|
|
|
(tui_normal_stop): New function.
|
|
|
|
|
(tui_before_prompt_observer): New observer.
|
|
|
|
|
(tui_normal_stop_observer): New observer.
|
|
|
|
|
(tui_install_hooks): Set
|
|
|
|
|
deprecated_print_frame_info_listing_hook to
|
|
|
|
|
tui_dummy_print_frame_info_listing_hook. Register
|
|
|
|
|
tui_before_prompt_observer to call tui_before_prompt and
|
|
|
|
|
tui_normal_stop_observer to call tui_normal_stop. Remove
|
|
|
|
|
reference to deprecated_selected_frame_level_changed_hook.
|
|
|
|
|
(tui_remove_hooks): Detach and unset tui_before_prompt_observer
|
|
|
|
|
and tui_normal_stop_observer. Remove reference to
|
|
|
|
|
deprecated_selected_frame_level_changed_hook.
|
|
|
|
|
|
2015-06-27 02:38:30 +02:00
|
|
|
|
2015-06-30 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
PR tui/13378
|
|
|
|
|
* tui/tui-stack.c (tui_set_locator_info): Change prototype to
|
|
|
|
|
return an int instead of void. Return whether the locator
|
|
|
|
|
window has changed.
|
|
|
|
|
(tui_show_frame_info): If the locator info has not changed, then
|
|
|
|
|
bail out early to avoid refreshing the windows.
|
|
|
|
|
|
2015-06-27 02:17:56 +02:00
|
|
|
|
2015-06-30 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-stack.c (tui_set_locator_info): Explicitly pass
|
|
|
|
|
LOCATOR_WIN to tui_alloc_content.
|
|
|
|
|
|
2015-06-30 10:24:43 +02:00
|
|
|
|
2015-06-30 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR tdep/18605
|
|
|
|
|
* arm-tdep.c (arm_get_next_pc_raw): Break for media
|
|
|
|
|
instructions.
|
|
|
|
|
|
2015-06-29 17:08:12 +02:00
|
|
|
|
2015-06-29 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
2015-07-02 02:46:23 +02:00
|
|
|
|
* rx-tdep.c (RX_PSW_REGNUM): New enum constant.
|
|
|
|
|
(rx_dwarf_reg_to_regnum): New function.
|
|
|
|
|
(rx_gdbarch_init): Register rx_dwarf_reg_to_regnum. Use dwarf2
|
|
|
|
|
unwinding.
|
2015-06-29 17:08:12 +02:00
|
|
|
|
|
PR threads/18127 - threads spawned by infcall end up stuck in "running" state
Refs:
https://sourceware.org/ml/gdb/2015-03/msg00024.html
https://sourceware.org/ml/gdb/2015-06/msg00005.html
On GNU/Linux, if an infcall spawns a thread, that thread ends up with
stuck running state. This happens because:
- when linux-nat.c detects a new thread, it marks them as running,
and does not report anything to the core.
- we skip finish_thread_state when the thread that is running the
infcall stops.
As result, that new thread ends up with stuck "running" state, even
though it really is stopped.
On Windows, _all_ threads end up stuck in running state, not just the
one that was spawned. That happens because when a new thread is
detected, unlike linux-nat.c, windows-nat.c reports
TARGET_WAITKIND_SPURIOUS to infrun. It's the fact that that event
does not cause a user-visible stop that triggers the problem. When
the target is re-resumed, we call set_running with a wildcard ptid,
which marks all thread as running. That set_running is not suppressed
because the (leader) thread being resumed does not have in_infcall
set. Later, when the infcall finally finishes successfully, nothing
marks all threads back to stopped.
We can trigger the same problem on all targets by having a thread
other than the one that is running the infcall report a breakpoint hit
to infrun, and then have that breakpoint not cause a stop. That's
what the included test does.
The fix is to stop GDB from suppressing the set_running calls while
doing an infcall, and then set the threads back to stopped when the
call finishes, iff they were originally stopped before the infcall
started. (Note the MI *running/*stopped event suppression isn't
affected.)
Tested on x86_64 GNU/Linux.
gdb/ChangeLog:
2015-06-29 Pedro Alves <palves@redhat.com>
PR threads/18127
* infcall.c (run_inferior_call): On infcall success, if the thread
was marked stopped before, reset it back to stopped.
* infrun.c (resume): Don't suppress the set_running calls when
doing an infcall.
(normal_stop): Only discard the finish_thread_state cleanup if the
infcall succeeded.
gdb/testsuite/ChangeLog:
2015-06-29 Pedro Alves <palves@redhat.com>
PR threads/18127
* gdb.threads/hand-call-new-thread.c: New file.
* gdb.threads/hand-call-new-thread.c: New file.
2015-06-29 17:07:57 +02:00
|
|
|
|
2015-06-29 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR threads/18127
|
|
|
|
|
* infcall.c (run_inferior_call): On infcall success, if the thread
|
|
|
|
|
was marked stopped before, reset it back to stopped.
|
|
|
|
|
* infrun.c (resume): Don't suppress the set_running calls when
|
|
|
|
|
doing an infcall.
|
|
|
|
|
(normal_stop): Only discard the finish_thread_state cleanup if the
|
|
|
|
|
infcall succeeded.
|
|
|
|
|
|
2015-06-29 11:47:51 +02:00
|
|
|
|
2015-06-29 Pierre Langlois <pierre.langlois@arm.com>
|
2015-06-29 11:23:48 +02:00
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Update my email address.
|
|
|
|
|
|
PR 16253 revisited
Last year a patch was submitted/approved/commited to eliminate
symbol_matches_domain which was causing this problem. It was later reverted
because it introduced a (severe) performance regression.
Recap:
(gdb) list
1 enum e {A,B,C} e;
2 int main (void) { return 0; }
3
(gdb) p e
Attempt to use a type name as an expression
The parser attempts to find a symbol named "e" of VAR_DOMAIN.
This gets passed down through lookup_symbol and (eventually) into
block_lookup_symbol_primary, which iterates over the block's dictionary
of symbols:
for (sym = dict_iter_name_first (block->dict, name, &dict_iter);
sym != NULL;
sym = dict_iter_name_next (name, &dict_iter))
{
if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
SYMBOL_DOMAIN (sym), domain))
return sym;
}
The problem here is that we have a symbol named "e" in both STRUCT_DOMAIN
and VAR_DOMAIN, and for languages like C++, Java, and Ada, where a tag name
may be used as an implicit typedef of the type, symbol_matches_domain ignores
the difference between VAR_DOMAIN and STRUCT_DOMAIN. As it happens, the
STRUCT_DOMAIN symbol is found first, considered a match, and that symbol is
returned to the parser, eliciting the (now dreaded) error message.
Since this bug exists specifically because we have both STRUCT and VAR_DOMAIN
symbols in a given block/CU, this patch rather simply/naively changes
block_lookup_symbol_primary so that it continues to search for an exact
domain match on the symbol if symbol_matches_domain returns a symbol
which does not exactly match the requested domain.
This "fixes" the immediate problem, but admittedly might uncover other,
related bugs. [Paranoia?] However, it causes no regressions (functional
or performance) in the test suite. A similar change has been made
to block_lookup_symbol for other cases in which this bug might appear.
The tests from the previous submission have been resurrected and updated.
However since we can still be given a matching symbol with a different domain
than requested, we cannot say that a symbol "was not found." The error
messages today will still be the (dreaded) "Attempt to use a type name..."
ChangeLog
PR 16253
* block.c (block_lookup_symbol): For non-function blocks,
continue to search for a symbol with an exact domain match
Otherwise, return any previously found "best domain" symbol.
(block_lookup_symbol_primary): Likewise.
testsuite/ChangeLog
PR 16253
* gdb.cp/var-tag-2.cc: New file.
* gdb.cp/var-tag-3.cc: New file.
* gdb.cp/var-tag-4.cc: New file.
* gdb.cp/var-tag.cc: New file.
* gdb.cp/var-tag.exp: New file.
2015-06-26 19:27:45 +02:00
|
|
|
|
2015-06-26 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR 16253
|
|
|
|
|
* block.c (block_lookup_symbol): For non-function blocks,
|
|
|
|
|
continue to search for a symbol with an exact domain match
|
|
|
|
|
Otherwise, return any previously found "best domain" symbol.
|
|
|
|
|
(block_lookup_symbol_primary): Likewise.
|
|
|
|
|
|
2015-06-03 04:49:15 +02:00
|
|
|
|
2015-06-26 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention the new option "history remove-duplicates".
|
|
|
|
|
* top.c (history_remove_duplicates): New static variable.
|
|
|
|
|
(show_history_remove_duplicates): New static function.
|
|
|
|
|
(gdb_add_history): Conditionally remove duplicate history
|
|
|
|
|
entries.
|
|
|
|
|
(init_main): Add "history remove-duplicates" option.
|
|
|
|
|
|
2015-06-22 04:54:10 +02:00
|
|
|
|
2015-06-26 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (focus_completer): New static function.
|
|
|
|
|
(_initialize_tui_win): Set the completion function of the
|
|
|
|
|
"focus" command to focus_completer.
|
|
|
|
|
|
2015-06-26 15:11:14 +02:00
|
|
|
|
2015-06-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linespec.c (minsym_found): Reset sal.PC for COMPUNIT_LOCATIONS_VALID
|
|
|
|
|
and language_asm..
|
|
|
|
|
* symtab.c (find_function_start_sal): Likewise.
|
|
|
|
|
|
2015-06-25 10:54:12 +02:00
|
|
|
|
2015-06-25 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib.c (solib_find_1): Set local variable sysroot to NULL if
|
|
|
|
|
it is the empty string after trailing slashes have been stripped.
|
|
|
|
|
|
2015-06-24 17:06:49 +02:00
|
|
|
|
2015-06-25 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* exec.c (exec_file_locate_attach): Remove gdb_sysroot NULL check.
|
|
|
|
|
* infrun.c (follow_exec): Likewise.
|
|
|
|
|
* remote.c (remote_filesystem_is_local): Likewise.
|
|
|
|
|
* solib.c (solib_find_1): Likewise.
|
|
|
|
|
|
2015-06-04 19:13:50 +02:00
|
|
|
|
2015-06-24 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* build-id.c (build_id_to_debug_bfd): Add cleanup to free
|
|
|
|
|
return value from lrealpath.
|
|
|
|
|
|
2015-06-24 16:23:12 +02:00
|
|
|
|
2015-06-24 Mike Frysinger <vapier@gentoo.org>
|
|
|
|
|
|
|
|
|
|
* remote-sim.c (gdbsim_open): Move sysroot update to the top.
|
|
|
|
|
|
2015-06-23 17:29:39 +02:00
|
|
|
|
2015-06-24 Mike Frysinger <vapier@gentoo.org>
|
|
|
|
|
|
|
|
|
|
* remote-sim.c: Include gdb_bfd.h.
|
|
|
|
|
(gdbsim_open): Declare new local sysroot pointing to gdb_sysroot.
|
|
|
|
|
Skip TARGET_SYSROOT_PREFIX in gdb_sysroot when it is active.
|
|
|
|
|
|
2015-06-24 15:53:03 +02:00
|
|
|
|
2015-06-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-tdep.c (aarch64_linux_init_abi): Don't call
|
|
|
|
|
set_gdbarch_get_siginfo_type.
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_init_abi_common): Likewise.
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
|
|
|
|
|
* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
|
|
|
|
|
* m68klinux-tdep.c (m68k_linux_init_abi): Likewise.
|
|
|
|
|
* ppc-linux-tdep.c (ppc_linux_init_abi): Likewise.
|
|
|
|
|
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
|
|
|
|
|
* tilegx-linux-tdep.c (tilegx_linux_init_abi): Likewise.
|
|
|
|
|
* linux-tdep.c (linux_get_siginfo_type): Change it to static.
|
|
|
|
|
(linux_init_abi): Call set_gdbarch_get_siginfo_type.
|
|
|
|
|
* linux-tdep.h (linux_get_siginfo_type): Remove the declaration.
|
|
|
|
|
|
2015-06-24 12:59:03 +02:00
|
|
|
|
2015-06-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/buffer.c (stdint.h): Do not include.
|
|
|
|
|
* common/print-utils.c (stdint.h): Likewise.
|
|
|
|
|
* compile/compile-c-symbols.c (gdb_assert.h): Likewise.
|
|
|
|
|
* compile/compile-c-types.c (gdb_assert.h): Likewise.
|
|
|
|
|
* ft32-tdep.c (gdb_assert.h): Likewise.
|
|
|
|
|
* guile/scm-utils.c (stdint.h): Likewise.
|
|
|
|
|
* i386-linux-tdep.c (stdint.h): Likewise.
|
|
|
|
|
* i386-tdep.c (stdint.h): Likewise.
|
|
|
|
|
* nat/linux-btrace.c (stdint.h): Likewise.
|
|
|
|
|
* nat/linux-btrace.h (stdint.h): Likewise.
|
|
|
|
|
* nat/linux-ptrace.c (stdint.h): Likewise.
|
|
|
|
|
* nat/mips-linux-watch.h (stdint.h): Likewise.
|
|
|
|
|
* ppc-linux-nat.c (stdint.h): Likewise.
|
|
|
|
|
* python/python-internal.h (stdint.h): Likewise.
|
|
|
|
|
* stub-termcap.c (stdlib.h): Likewise.
|
|
|
|
|
* target/target.h (stdint.h): Likewise.
|
|
|
|
|
* xtensa-linux-nat.c (stdint.h): Likewise.
|
|
|
|
|
|
2015-06-23 16:01:38 +02:00
|
|
|
|
2015-06-23 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* top.c (init_history): Look at errno after calling strtol to
|
|
|
|
|
properly map large GDBHISTSIZE values to infinity.
|
|
|
|
|
|
2015-06-23 20:36:49 +02:00
|
|
|
|
2015-06-23 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* inferior.h (struct inferior_suspend_state): Delete, unused.
|
|
|
|
|
All references deleted.
|
|
|
|
|
|
2015-06-21 20:13:03 +02:00
|
|
|
|
2015-06-23 Mike Frysinger <vapier@gentoo.org>
|
|
|
|
|
|
|
|
|
|
* microblaze-tdep.c (microblaze_push_dummy_code): Delete.
|
|
|
|
|
(microblaze_push_dummy_call): Likewise.
|
|
|
|
|
(microblaze_gdbarch_init): Delete calls to set_gdbarch_push_dummy_code
|
|
|
|
|
and set_gdbarch_push_dummy_call.
|
|
|
|
|
|
Convert have_ptrace_getregset to a tri-state boolean
have_ptrace_getregset is a tri-state variable (-1, 0, 1), and we have
some conditions like "if (have_ptrace_getregset)", which is not correct.
I'll explain why it is not correct in the following example. This fix
to this problem to replace the test (have_ptrace_getregset) to test
(have_ptrace_getregset == 1) or (have_ptrace_getregset == -1) etc.
However Doug thinks it hinders readability
https://sourceware.org/ml/gdb-patches/2015-05/msg00692.html so I decide
to add a new enum tribool and change have_ptrace_getregset to it, in
order to make these tests more readable.
have_ptrace_getregset is initialised to -1, and is adjusted to 0 or 1 in
$ARCH_linux_read_description according to the capability of the kernel.
However, it is possible that have_ptrace_getregset is used before it is
set to 0 or 1, which means it is still -1. This is shown below.
(gdb) run
Starting program: gdb/testsuite/gdb.base/break
Breakpoint 2, amd64_linux_fetch_inferior_registers (ops=0xceaa80, regcache=0xe72000, regnum=16) at git/gdb/amd64-linux-nat.c:128
128 {
top?p have_ptrace_getregset
$1 = TRIBOOL_UNKNOWN
top?c
Continuing.
Breakpoint 2, amd64_linux_fetch_inferior_registers (ops=0xceaa80, regcache=0xe72000, regnum=16) at git/gdb/amd64-linux-nat.c:128
128 {
top?c
Continuing.
Breakpoint 1, x86_linux_read_description (ops=0xceaa80) at git/gdb/x86-linux-nat.c:117
117 {
PTRACE_GETREGSET command is used even GDB doesn't know whether
PTRACE_GETREGSET is supported or not. It is wrong, but works on x86.
However it doesn't work on arm-linux if the kernel doesn't support
PTRACE_GETREGSET at all. We'll get:
(gdb) run
Starting program: gdb/testsuite/gdb.base/break
warning: Unable to fetch general register.
PC register is not available
gdb:
2015-06-23 Yao Qi <yao.qi@linaro.org>
* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers):
Check whether have_ptrace_getregset is TRIBOOL_TRUE explicitly.
(amd64_linux_store_inferior_registers): Likewise.
* arm-linux-nat.c (fetch_fpregister): Likewise.
(fetch_fpregs, store_fpregister): Likewise.
(store_fpregister, store_fpregs): Likewise.
(fetch_register, fetch_regs): Likewise.
(store_register, store_regs): Likewise.
(fetch_vfp_regs, store_vfp_regs): Likewise.
(arm_linux_read_description): Check have_ptrace_getregset is
TRIBOOL_UNKNOWN. Set have_ptrace_getregset to TRIBOOL_TRUE
or TRIBOOL_FALSE.
* i386-linux-nat.c (fetch_xstateregs): Check
have_ptrace_getregset is not TRIBOOL_TRUE.
(store_xstateregs): Likewise.
* linux-nat.c (have_ptrace_getregset): Change its type to
enum tribool.
* linux-nat.h (tribool): New enum.
* x86-linux-nat.c (x86_linux_read_description): Use enum tribool.
Check whether have_ptrace_getregset is TRIBOOL_TRUE.
2015-06-23 15:03:11 +02:00
|
|
|
|
2015-06-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers):
|
|
|
|
|
Check whether have_ptrace_getregset is TRIBOOL_TRUE explicitly.
|
|
|
|
|
(amd64_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* arm-linux-nat.c (fetch_fpregister): Likewise.
|
|
|
|
|
(fetch_fpregs, store_fpregister): Likewise.
|
|
|
|
|
(store_fpregister, store_fpregs): Likewise.
|
|
|
|
|
(fetch_register, fetch_regs): Likewise.
|
|
|
|
|
(store_register, store_regs): Likewise.
|
|
|
|
|
(fetch_vfp_regs, store_vfp_regs): Likewise.
|
|
|
|
|
(arm_linux_read_description): Check have_ptrace_getregset is
|
|
|
|
|
TRIBOOL_UNKNOWN. Set have_ptrace_getregset to TRIBOOL_TRUE
|
|
|
|
|
or TRIBOOL_FALSE.
|
|
|
|
|
* i386-linux-nat.c (fetch_xstateregs): Check
|
|
|
|
|
have_ptrace_getregset is not TRIBOOL_TRUE.
|
|
|
|
|
(store_xstateregs): Likewise.
|
|
|
|
|
* linux-nat.c (have_ptrace_getregset): Change its type to
|
|
|
|
|
enum tribool.
|
|
|
|
|
* linux-nat.h (tribool): New enum.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_read_description): Use enum tribool.
|
|
|
|
|
Check whether have_ptrace_getregset is TRIBOOL_TRUE.
|
|
|
|
|
|
2015-06-19 20:34:43 +02:00
|
|
|
|
2015-06-19 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention Sun's version of stabs is no longer supported.
|
|
|
|
|
* elfread.c (free_elfinfo): Delete. All uses updated.
|
|
|
|
|
(elfstab_offset_sections): Delete. All uses updated.
|
|
|
|
|
* gdb-stabs.h (stab_section_info): Delete. All uses updated.
|
|
|
|
|
* psympriv.h (partial_symtab) <section_offsets>: Delete.
|
|
|
|
|
All uses updated.
|
|
|
|
|
* psymtab.c (start_psymtab_common): Delete arg section_offsets.
|
|
|
|
|
All callers updated.
|
|
|
|
|
|
2015-06-18 19:12:39 +02:00
|
|
|
|
2015-06-18 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/rsp-low.c (needs_escaping): New.
|
|
|
|
|
(remote_escape_output): Add unit_size parameter. Refactor to
|
|
|
|
|
support multi-byte addressable units. Rename parameters.
|
|
|
|
|
* common/rsp-low.h (remote_escape_output): Add unit_size
|
|
|
|
|
parameter and rename others. Update doc.
|
|
|
|
|
* remote.c (align_for_efficient_write): New.
|
|
|
|
|
(remote_write_bytes_aux): Add unit_size parameter and use it.
|
|
|
|
|
Rename some variables. Update doc.
|
|
|
|
|
(remote_xfer_partial): Get unit size and use it.
|
|
|
|
|
(remote_read_bytes_1): Add unit_size parameter and use it.
|
|
|
|
|
Rename some variables. Update doc.
|
|
|
|
|
(remote_write_bytes): Same.
|
|
|
|
|
(remote_xfer_live_readonly_partial): Same.
|
|
|
|
|
(remote_read_bytes): Same.
|
|
|
|
|
(remote_flash_write): Update call to remote_write_bytes_aux.
|
|
|
|
|
(remote_write_qxfer): Update call to remote_escape_output.
|
|
|
|
|
(remote_search_memory): Same.
|
|
|
|
|
(remote_hostio_pwrite): Same.
|
|
|
|
|
|
2015-06-17 21:50:57 +02:00
|
|
|
|
2015-06-17 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (add_location_to_breakpoint): Don't mark permanent
|
|
|
|
|
locations as inserted.
|
|
|
|
|
Update and expand comment about permanent locations.
|
|
|
|
|
(bp_loc_is_permanent): Don't return 0 for bp_call_dummy.
|
|
|
|
|
Move comment to add_location_to_breakpoint.
|
|
|
|
|
(update_global_location_list): Don't error out if a permanent
|
|
|
|
|
breakpoint is not marked inserted.
|
|
|
|
|
Don't error out if a non-permanent breakpoint location is inserted on
|
|
|
|
|
top of a permanent breakpoint.
|
|
|
|
|
|
2015-06-17 16:08:55 +02:00
|
|
|
|
2015-06-17 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (make_breakpoint_permanent): Remove unused
|
|
|
|
|
function.
|
|
|
|
|
* breakpoint.h (make_breakpoint_permanent): Remove declaration.
|
|
|
|
|
|
2015-05-12 12:50:26 +02:00
|
|
|
|
2015-06-17 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
PR gdb/16999
|
|
|
|
|
* NEWS: Mention new GDBHISTSIZE behavior.
|
|
|
|
|
* top.c (init_history): For null or out-of-range GDBHISTSIZE,
|
|
|
|
|
set history size to unlimited. Ignore non-numeric GDBHISTSIZE.
|
|
|
|
|
|
2015-06-17 19:31:56 +02:00
|
|
|
|
2015-06-17 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention that GDBHISTSIZE is read instead of HISTSIZE.
|
|
|
|
|
* top.c (init_history): Read from GDBHISTSIZE instead of
|
|
|
|
|
HISTSIZE.
|
|
|
|
|
(init_main): Refer to GDBHISTSIZE instead of HISTSIZE.
|
|
|
|
|
|
2015-06-04 16:12:27 +02:00
|
|
|
|
2015-06-17 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* top.c (gdb_safe_append_history): Do not call
|
|
|
|
|
history_truncate_file if the history is not stifled.
|
|
|
|
|
|
2015-06-17 11:17:08 +02:00
|
|
|
|
2015-06-17 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* syscalls/s390-linux.xml: Add syscalls 344 through 354.
|
|
|
|
|
* syscalls/s390x-linux.xml: Likewise.
|
|
|
|
|
|
2015-06-16 16:18:03 +02:00
|
|
|
|
2015-06-16 Michael Eager <eager@eagercon.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-namespaces.c (MSG_CMSG_CLOEXEC): Define if not defined.
|
|
|
|
|
|
2015-06-02 03:30:50 +02:00
|
|
|
|
2015-06-16 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-hooks.c (tui_selected_frame_level_changed_hook): Call
|
|
|
|
|
target_terminal_ours_for_output() before calling
|
|
|
|
|
tui_show_frame_info(), and restore the original terminal
|
|
|
|
|
settings afterwards.
|
|
|
|
|
|
2015-06-16 10:32:47 +02:00
|
|
|
|
2015-06-16 Martin Simmons <martin@lispworks.com> (tiny patch)
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c: Include nat/linux-ptrace.h.
|
|
|
|
|
|
2015-06-15 21:50:31 +02:00
|
|
|
|
2015-06-15 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (mi_cmd_data_read_memory_bytes): Consider addressable
|
|
|
|
|
memory unit size.
|
|
|
|
|
(mi_cmd_data_write_memory_bytes): Same.
|
|
|
|
|
|
2015-06-15 19:34:47 +02:00
|
|
|
|
2015-06-15 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* corefile.c (write_memory): Update doc.
|
|
|
|
|
* gdbcore.h (write_memory): Same.
|
|
|
|
|
|
2015-06-15 17:10:44 +02:00
|
|
|
|
2015-06-15 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-tdep.c (enum filterflags): Make it from anonymous enum.
|
|
|
|
|
(dump_mapping_p): Use it for parameter filterflags.
|
|
|
|
|
(linux_find_memory_regions_full): Use it for variable filterflags.
|
|
|
|
|
|
2015-06-15 17:08:49 +02:00
|
|
|
|
2015-06-15 Aleksandar Ristovski <aristovski@qnx.com
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Merge multiple hex conversions.
|
|
|
|
|
* monitor.c: Include rsp-low.h.
|
|
|
|
|
(fromhex): Remove definition.
|
|
|
|
|
|
Move utility functions to common/
gdb/ChangeLog
2015-06-15 Aleksandar Ristovski <aristovski@qnx.com
Jan Kratochvil <jan.kratochvil@redhat.com>
Move utility functions to common/.
* cli/cli-utils.c (skip_spaces, skip_spaces_const, skip_to_space_const):
Move defs to common/common-utils.c.
* cli/cli-utils.h (skip_spaces, skip_spaces_const, skip_to_space)
(skip_to_space_const): Move decls to common/common-utils.h.
* common/common-defs.h: Move include of common-types.h before
common-utils.h.
* common/common-utils.c: Include host-defs.h and ctype.h.
(HIGH_BYTE_POSN, is_digit_in_base, digit_to_int, strtoulst): Move
from utils.c.
(skip_spaces, skip_spaces_const, skip_to_space_const): Move from
cli/cli-utils.c.
* common/common-utils.h (strtoulst): Move decl from utils.h.
(skip_spaces, skip_spaces_const, skip_to_space, skip_to_space_const):
Move from cli/cli-utils.h.
* common/host-defs.h: Include limits.h.
(TARGET_CHAR_BIT, HOST_CHAR_BIT): Moved from defs.h.
(skip_spaces, skip_spaces_const): Move decls from cli/cli-utils.h.
* defs.h (TARGET_CHAR_BIT, HOST_CHAR_BIT): Move to
common/common-utils.h.
* utils.c (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int)
(strtoulst): Move to common/common-utils.c.
* utils.h (strtoulst): Moved decl to common/common-utils.h.
2015-06-15 17:04:56 +02:00
|
|
|
|
2015-06-15 Aleksandar Ristovski <aristovski@qnx.com
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Move utility functions to common/.
|
|
|
|
|
* cli/cli-utils.c (skip_spaces, skip_spaces_const, skip_to_space_const):
|
|
|
|
|
Move defs to common/common-utils.c.
|
|
|
|
|
* cli/cli-utils.h (skip_spaces, skip_spaces_const, skip_to_space)
|
|
|
|
|
(skip_to_space_const): Move decls to common/common-utils.h.
|
|
|
|
|
* common/common-defs.h: Move include of common-types.h before
|
|
|
|
|
common-utils.h.
|
|
|
|
|
* common/common-utils.c: Include host-defs.h and ctype.h.
|
|
|
|
|
(HIGH_BYTE_POSN, is_digit_in_base, digit_to_int, strtoulst): Move
|
|
|
|
|
from utils.c.
|
|
|
|
|
(skip_spaces, skip_spaces_const, skip_to_space_const): Move from
|
|
|
|
|
cli/cli-utils.c.
|
|
|
|
|
* common/common-utils.h (strtoulst): Move decl from utils.h.
|
|
|
|
|
(skip_spaces, skip_spaces_const, skip_to_space, skip_to_space_const):
|
|
|
|
|
Move from cli/cli-utils.h.
|
|
|
|
|
* common/host-defs.h: Include limits.h.
|
|
|
|
|
(TARGET_CHAR_BIT, HOST_CHAR_BIT): Moved from defs.h.
|
|
|
|
|
(skip_spaces, skip_spaces_const): Move decls from cli/cli-utils.h.
|
|
|
|
|
* defs.h (TARGET_CHAR_BIT, HOST_CHAR_BIT): Move to
|
|
|
|
|
common/common-utils.h.
|
|
|
|
|
* utils.c (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int)
|
|
|
|
|
(strtoulst): Move to common/common-utils.c.
|
|
|
|
|
* utils.h (strtoulst): Moved decl to common/common-utils.h.
|
|
|
|
|
|
2015-06-15 13:41:09 +02:00
|
|
|
|
2015-06-15 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* data-directory/Makefile.in (SYSCALLS_FILES): Add aarch64-linux.xml.
|
|
|
|
|
|
2015-04-07 21:49:08 +02:00
|
|
|
|
2015-06-10 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* build-id.c: Don't include elf-bfd.h.
|
|
|
|
|
(build_id_bfd_get): Use bfd_build_id.
|
|
|
|
|
(build_id_verify): Ditto.
|
|
|
|
|
* build-id.h: Ditto.
|
|
|
|
|
(find_separate_debug_file_by_buildid): Ditto.
|
|
|
|
|
* python/py-objfile.c: Don't include elf-bfd.h.
|
|
|
|
|
(objfpy_get_build_id) Use bfd_build_id.
|
|
|
|
|
(objfpy_build_id_matches, objfpy_lookup_objfile_by_build_id): Ditto.
|
|
|
|
|
* coffread.c: Include build-id.h.
|
|
|
|
|
(coff_symfile_read): Try find_separate_debug_file_by_buildid.
|
|
|
|
|
|
2015-06-03 14:58:45 +02:00
|
|
|
|
2015-06-03 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (do_windows_fetch_inferior_registers)
|
|
|
|
|
(handle_output_debug_string): Replace __COPY_CONTEXT_SIZE
|
|
|
|
|
conditional with __CYGWIN__.
|
|
|
|
|
|
2015-05-27 00:23:23 +02:00
|
|
|
|
2015-06-13 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* completer.c: Add arch-utils.h include.
|
|
|
|
|
(enum reg_completer_targets): New enum.
|
|
|
|
|
(reg_or_group_completer_1): New function containing old
|
|
|
|
|
reg_or_group_completer, add and use new parameter to control what
|
|
|
|
|
is completed on. Use get_current_arch rather than architecture of
|
|
|
|
|
currently selected frame.
|
|
|
|
|
(reg_or_group_completer): Call new reg_or_group_completer_1.
|
|
|
|
|
(reggroup_completer): Call new reg_or_group_completer_1.
|
|
|
|
|
* completer.h (reggroup_completer): Add declaration.
|
|
|
|
|
* tui/tui-regs.c: Add 'completer.h' include.
|
|
|
|
|
(tui_reg_next_command): Renamed to...
|
|
|
|
|
(tui_reg_next): ...this. Adjust parameters and return rather than
|
|
|
|
|
display new group.
|
|
|
|
|
(tui_reg_prev_command): Renamed to...
|
|
|
|
|
(tui_reg_prev): ...this. Adjust parameters and return rather than
|
|
|
|
|
display new group.
|
|
|
|
|
(tui_reg_float_command): Delete.
|
|
|
|
|
(tui_reg_general_command): Delete.
|
|
|
|
|
(tui_reg_system_command): Delete.
|
|
|
|
|
(tui_reg_command): Rewrite to perform switching of register group.
|
|
|
|
|
Add header comment.
|
|
|
|
|
(tuireglist): Remove.
|
|
|
|
|
(tui_reggroup_completer): New function.
|
|
|
|
|
(_initialize_tui_regs): Remove 'tui reg' sub-commands, update
|
|
|
|
|
creation of 'tui reg' command.
|
|
|
|
|
* NEWS: Add comment about 'tui reg' changes.
|
|
|
|
|
|
2015-06-12 23:02:44 +02:00
|
|
|
|
2015-06-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* target.c (target_read): Consider addressable unit size when
|
|
|
|
|
reading from a memory object.
|
|
|
|
|
(read_memory_robust): Same.
|
|
|
|
|
(read_whatever_is_readable): Same.
|
|
|
|
|
(target_write_with_progress): Consider addressable unit size
|
|
|
|
|
when writing to a memory object.
|
|
|
|
|
* target.h (target_read): Update documentation.
|
|
|
|
|
(target_write): Add documentation.
|
|
|
|
|
|
2015-06-12 22:51:51 +02:00
|
|
|
|
2015-06-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* arch-utils.h (default_addressable_memory_unit_size): New.
|
|
|
|
|
* arch-utils.c (default_addressable_memory_unit_size): New.
|
|
|
|
|
* gdbarch.sh (addressable_memory_unit_size): New.
|
|
|
|
|
* gdbarch.h: Re-generate.
|
|
|
|
|
* gdbarch.c: Re-generate.
|
|
|
|
|
|
2015-06-12 19:08:12 +02:00
|
|
|
|
2015-06-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* target.c (target_read): Rename variables and use
|
|
|
|
|
TARGET_XFER_E_IO.
|
|
|
|
|
(target_read_with_progress): Same.
|
|
|
|
|
(read_memory_robust): Constify parameters and rename
|
|
|
|
|
variables.
|
|
|
|
|
(read_whatever_is_readable): Constify parameters,
|
|
|
|
|
rename variables, adjust formatting.
|
|
|
|
|
* target.h (read_memory_robust): Constify parameters.
|
|
|
|
|
|
2015-06-15 13:49:43 +02:00
|
|
|
|
2015-06-12 Ulrich Weigand <uweigand@de.ibm.com>
|
2015-06-12 17:43:48 +02:00
|
|
|
|
|
|
|
|
|
* ppc-sysv-tdep.c (ppc64_sysv_abi_return_value_base): Handle short
|
|
|
|
|
synthetic (non-AltiVec) vector types.
|
|
|
|
|
(ppc64_sysv_abi_return_value): Likewise.
|
|
|
|
|
|
2015-06-12 13:58:47 +02:00
|
|
|
|
2015-06-12 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
PR breakpoints/16465
|
|
|
|
|
* breakpoint.c (create_breakpoint): Save extra_string for
|
|
|
|
|
pending breakpoints.
|
|
|
|
|
|
2015-06-12 09:42:16 +02:00
|
|
|
|
2015-06-10 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_mpx_get_bt_entry): Add a cast for mpx_bd_mask
|
|
|
|
|
and bt_mask to CORE_ADDR.
|
|
|
|
|
|
2015-06-11 14:38:15 +02:00
|
|
|
|
2015-06-11 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-namespaces.c (mnsh_send_message): Use pulongest.
|
|
|
|
|
(mnsh_recv_message): Likewise.
|
|
|
|
|
|
2015-06-11 13:48:26 +02:00
|
|
|
|
2015-06-11 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_mpx_print_bounds): use of LONGEST instead of
|
|
|
|
|
long long int and plongest instead of %ll.
|
|
|
|
|
|
2015-06-11 11:58:41 +02:00
|
|
|
|
2015-06-11 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-namespaces.c (gdb_wait.h): New include.
|
|
|
|
|
(sys/wait.h): Do not include.
|
|
|
|
|
|
2015-06-10 22:34:16 +02:00
|
|
|
|
2015-06-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf_record_line): Call dwarf_record_line if
|
|
|
|
|
end_sequence is true.
|
|
|
|
|
|
2015-06-10 19:37:19 +02:00
|
|
|
|
2015-06-10 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Code cleanup.
|
|
|
|
|
* solib-target.c (library_list_start_list): Use explicit NULL
|
|
|
|
|
comparison.
|
|
|
|
|
|
2015-06-10 18:29:05 +02:00
|
|
|
|
2015-06-10 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib-target.c (library_list_start_list): Do not dereference
|
|
|
|
|
variable version in its initialization. Make the VERSION check handle
|
|
|
|
|
NULL.
|
|
|
|
|
(library_list_attributes): Make "version" GDB_XML_AF_OPTIONAL.
|
|
|
|
|
|
2015-06-10 15:28:44 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Announce support for direct access of executable and
|
|
|
|
|
shared library files when attaching to inferiors in containers
|
|
|
|
|
on GNU/Linux systems.
|
|
|
|
|
|
2015-06-10 15:28:44 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (struct remote_state) <fs_pid>: New field.
|
|
|
|
|
(new_remote_state): Initialize the above.
|
|
|
|
|
(PACKET_vFile_setfs): New enum value.
|
|
|
|
|
(remote_hostio_set_filesystem): New function.
|
|
|
|
|
(remote_hostio_open): Call the above.
|
|
|
|
|
(remote_hostio_unlink): Likewise.
|
|
|
|
|
(remote_hostio_readlink): Likewise.
|
|
|
|
|
(_initialize_remote): Register new "set/show remote
|
|
|
|
|
hostio-setfs-packet" command.
|
|
|
|
|
* NEWS: Announce new vFile:setfs packet.
|
|
|
|
|
|
2015-06-10 15:28:43 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (nat/linux-namespaces.h): New include.
|
|
|
|
|
(fileio.h): Likewise.
|
|
|
|
|
(linux_nat_filesystem_is_local): New function.
|
|
|
|
|
(linux_nat_fileio_pid_of): Likewise.
|
|
|
|
|
(linux_nat_fileio_open): Likewise.
|
|
|
|
|
(linux_nat_fileio_readlink): Likewise.
|
|
|
|
|
(linux_nat_fileio_unlink): Likewise.
|
|
|
|
|
(linux_nat_add_target): Initialize to_filesystem_is_local,
|
|
|
|
|
to_fileio_open, to_fileio_readlink and to_fileio_unlink.
|
|
|
|
|
(_initialize_linux_nat): New "set/show debug linux-namespaces"
|
|
|
|
|
commands.
|
|
|
|
|
* NEWS: Mention new "set/show debug linux-namespaces" commands.
|
|
|
|
|
|
2015-06-10 15:28:43 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (struct inferior): New forward declaration.
|
|
|
|
|
(struct target_ops) <to_filesystem_is_local>: Update comment.
|
|
|
|
|
(struct target_ops) <to_fileio_open>: New argument inf.
|
|
|
|
|
Update comment. All implementations updated.
|
|
|
|
|
(struct target_ops) <to_fileio_unlink>: Likewise.
|
|
|
|
|
(struct target_ops) <to_fileio_readlink>: Likewise.
|
|
|
|
|
(target_filesystem_is_local): Update comment.
|
|
|
|
|
(target_fileio_open): New argument inf. Update comment.
|
|
|
|
|
(target_fileio_unlink): Likewise.
|
|
|
|
|
(target_fileio_readlink): Likewise.
|
|
|
|
|
(target_fileio_read_alloc): Likewise.
|
|
|
|
|
(target_fileio_read_stralloc): Likewise.
|
|
|
|
|
* target.c (target_fileio_open): New argument inf.
|
|
|
|
|
Pass inf to implementation. Update debug printing.
|
|
|
|
|
(target_fileio_unlink): Likewise.
|
|
|
|
|
(target_fileio_readlink): Likewise.
|
|
|
|
|
(target_fileio_read_alloc_1): New argument inf. Pass inf
|
|
|
|
|
to target_fileio_open.
|
|
|
|
|
(target_fileio_read_alloc): New argument inf. Pass inf to
|
|
|
|
|
target_fileio_read_alloc_1.
|
|
|
|
|
(target_fileio_read_stralloc): Likewise.
|
|
|
|
|
* gdb_bfd.c (inferior.h): New include.
|
|
|
|
|
(gdb_bfd_iovec_fileio_open): Replace unused "open_closure"
|
|
|
|
|
argument with new argument "inferior". Pass inferior to
|
|
|
|
|
target_fileio_open.
|
|
|
|
|
(gdb_bfd_open): Supply inferior argument to
|
|
|
|
|
gdb_bfd_iovec_fileio_open.
|
|
|
|
|
* linux-tdep.c (linux_info_proc): Supply inf argument to
|
|
|
|
|
relevant target_fileio calls.
|
|
|
|
|
(linux_find_memory_regions_full): Likewise.
|
|
|
|
|
(linux_fill_prpsinfo): Likewise.
|
|
|
|
|
* remote.c (remote_filesystem_is_local): Supply inf
|
|
|
|
|
argument to remote_hostio_open.
|
|
|
|
|
(remote_file_put): Likewise.
|
|
|
|
|
(remote_file_get): Likewise.
|
|
|
|
|
(remote_file_delete): Supply inf argument to
|
|
|
|
|
remote_hostio_unlink.
|
|
|
|
|
|
2015-06-10 15:28:43 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inf-child.c (inf_child_fileio_open): Replace comment.
|
|
|
|
|
(inf_child_fileio_pwrite): Likewise.
|
|
|
|
|
(inf_child_fileio_pread): Likewise.
|
|
|
|
|
(inf_child_fileio_fstat): Insert blank line before comment.
|
|
|
|
|
(inf_child_fileio_close): Replace comment.
|
|
|
|
|
(inf_child_fileio_unlink): Likewise.
|
|
|
|
|
(inf_child_fileio_readlink): Likewise.
|
|
|
|
|
* remote.c (remote_hostio_open): Likewise.
|
|
|
|
|
(remote_hostio_pread): Likewise.
|
|
|
|
|
(remote_hostio_pwrite): Likewise.
|
|
|
|
|
(remote_hostio_close): Likewise.
|
|
|
|
|
(remote_hostio_unlink): Likewise.
|
|
|
|
|
(remote_hostio_readlink): Likewise.
|
|
|
|
|
(remote_hostio_fstat): Likewise.
|
|
|
|
|
(remote_filesystem_is_local): Likewise.
|
|
|
|
|
* target.c (target_fileio_open): Likewise.
|
|
|
|
|
(target_fileio_pwrite): Likewise.
|
|
|
|
|
(target_fileio_pread): Likewise.
|
|
|
|
|
(target_fileio_fstat): Insert blank line before comment.
|
|
|
|
|
(target_fileio_close): Replace comment.
|
|
|
|
|
(target_fileio_unlink): Likewise.
|
|
|
|
|
(target_fileio_readlink): Likewise.
|
|
|
|
|
(target_fileio_read_alloc): Likewise.
|
|
|
|
|
(target_fileio_read_stralloc): Likewise.
|
|
|
|
|
|
2015-06-10 15:28:43 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-thread-db.c (nat/linux-namespaces.h): New include.
|
|
|
|
|
(check_pid_namespace_match): Use linux_ns_same rather than
|
|
|
|
|
linux_proc_pid_get_ns to spot PID namespace mismatches.
|
|
|
|
|
* nat/linux-procfs.h (linux_proc_pid_get_ns): Remove.
|
|
|
|
|
* nat/linux-procfs.c (linux_proc_pid_get_ns): Likewise.
|
|
|
|
|
|
2015-06-10 15:28:43 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac (AC_CHECK_FUNCS): Add setns.
|
|
|
|
|
* config.in: Regenerate.
|
|
|
|
|
* configure: Likewise.
|
|
|
|
|
* nat/linux-namespaces.h: New file.
|
|
|
|
|
* nat/linux-namespaces.c: Likewise.
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add nat/linux-namespaces.h.
|
|
|
|
|
(linux-namespaces.o): New rule.
|
|
|
|
|
* config/aarch64/linux.mh (NATDEPFILES): Add linux-namespaces.o.
|
|
|
|
|
* config/alpha/alpha-linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/arm/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/i386/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/i386/linux64.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/ia64/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/m32r/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/m68k/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/mips/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/pa/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/powerpc/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/powerpc/spu-linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/s390/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/sparc/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/sparc/linux64.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/tilegx/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/xtensa/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
|
2015-06-10 15:28:43 +02:00
|
|
|
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (make_cleanup_close): Moved to common/filestuff.h.
|
|
|
|
|
* utils.c (do_close_cleanup): Moved to common/filestuff.c.
|
|
|
|
|
(make_cleanup_close): Likewise.
|
|
|
|
|
* common/filestuff.h (make_cleanup_close): Moved from utils.h.
|
|
|
|
|
* common/filestuff.c (do_close_cleanup): Moved from utils.c.
|
|
|
|
|
(make_cleanup_close): Likewise.
|
|
|
|
|
|
2015-06-03 15:28:29 +02:00
|
|
|
|
2015-06-03 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (thread_rec): Also ignore ERROR_INVALID_HANDLE
|
|
|
|
|
from SuspendThread().
|
|
|
|
|
|
2015-06-03 15:03:50 +02:00
|
|
|
|
2015-06-03 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (handle_output_debug_string): Trim trailing '\n'
|
|
|
|
|
from OutputDebugString.
|
|
|
|
|
|
2015-06-10 10:52:12 +02:00
|
|
|
|
2015-06-10 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
Mircea Gherzan <mircea.gherzan@intel.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (MPX_BASE_MASK, MPX_BD_MASK, MPX_BT_MASK, MPX_BD_MASK_32,
|
|
|
|
|
MPX_BT_MASK_32): New macros.
|
|
|
|
|
(i386_mpx_set_bounds): New function that implements
|
|
|
|
|
the command "set-mpx-bound".
|
|
|
|
|
(i386_mpx_enabled): Helper function to test MPX availability.
|
|
|
|
|
(i386_mpx_bd_base): Helper function to calculate the base directory
|
|
|
|
|
address.
|
|
|
|
|
(i386_mpx_get_bt_entry): Helper function to access a bound
|
|
|
|
|
table entry.
|
|
|
|
|
(i386_mpx_print_bounds): Effectively display bound information.
|
|
|
|
|
(_initialize_i386_tdep): Add new commands to commands "set mpx" and
|
|
|
|
|
"show mpx".
|
|
|
|
|
(_initialize_i386_tdep):
|
|
|
|
|
Add "bound" to the commands "show mpx" and "set mpx" commands.
|
|
|
|
|
(mpx_set_cmdlist and mpx_show_cmdlist): List for the new prefixed "set mpx"
|
|
|
|
|
and "show mpx" commands.
|
|
|
|
|
* NEWS: List new commands for MPX support.
|
|
|
|
|
|
2015-06-09 11:00:15 +02:00
|
|
|
|
2015-06-09 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/fileio.h (fileio_to_host_mode): New declaration.
|
|
|
|
|
* common/fileio.c (fileio_to_host_mode): New Function.
|
|
|
|
|
* inf-child.c (inf_child_fileio_open): Process mode argument
|
|
|
|
|
with fileio_to_host_mode.
|
|
|
|
|
|
2015-06-09 11:02:25 +02:00
|
|
|
|
2015-06-09 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/fileio.c (fileio_mode_pack): Fix preprocessor
|
|
|
|
|
conditional.
|
|
|
|
|
|
2015-06-05 17:08:05 +02:00
|
|
|
|
2015-06-05 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdb_bfd.c (gdb_bfd_open): Move vgdb special case to...
|
|
|
|
|
* remote.c (remote_filesystem_is_local): ...here.
|
|
|
|
|
|
2015-06-04 18:26:29 +02:00
|
|
|
|
2015-06-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* gdbarch.c: Regenerate it.
|
|
|
|
|
|
2015-06-03 21:22:56 +02:00
|
|
|
|
2015-06-03 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* arch-utils.c (default_infcall_munmap): New.
|
|
|
|
|
* arch-utils.h (default_infcall_munmap): New declaration.
|
|
|
|
|
* compile/compile-object-load.c (struct munmap_list, munmap_list_add)
|
|
|
|
|
(munmap_list_free, munmap_listp_free_cleanup): New.
|
|
|
|
|
(struct setup_sections_data): Add field munmap_list_headp.
|
|
|
|
|
(setup_sections): Call munmap_list_add.
|
|
|
|
|
(compile_object_load): New variable munmap_list_head, initialize
|
|
|
|
|
setup_sections_data.munmap_list_headp, return munmap_list_head.
|
|
|
|
|
* compile/compile-object-load.h (struct munmap_list): New declaration.
|
|
|
|
|
(struct compile_module): Add field munmap_list_head.
|
|
|
|
|
(munmap_list_free): New declaration.
|
|
|
|
|
* compile/compile-object-run.c (struct do_module_cleanup): Add field
|
|
|
|
|
munmap_list_head.
|
|
|
|
|
(do_module_cleanup): Call munmap_list_free.
|
|
|
|
|
(compile_object_run): Pass munmap_list_head to do_module_cleanup.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
* gdbarch.sh (infcall_munmap): New.
|
|
|
|
|
* linux-tdep.c (linux_infcall_munmap): New.
|
|
|
|
|
(linux_init_abi): Install it.
|
|
|
|
|
|
2015-06-02 21:32:40 +02:00
|
|
|
|
2015-06-02 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/15564
|
|
|
|
|
* inferior.c (detach_inferior): Call exit_inferior_1 with silent = 0.
|
|
|
|
|
|
2015-06-02 11:28:03 +02:00
|
|
|
|
2015-06-02 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* i386-linux-nat.c: Include linux-nat.h.
|
|
|
|
|
|
2015-06-01 14:02:34 +02:00
|
|
|
|
2015-06-01 Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR symtab/18392
|
|
|
|
|
* dwarf2-frame-tailcall.c (pretended_chain_levels): Correct
|
|
|
|
|
assertion.
|
|
|
|
|
* dwarf2loc.c (chain_candidate): Likewise.
|
|
|
|
|
|
2015-06-01 13:13:02 +02:00
|
|
|
|
2015-06-01 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (fetch_vfp_regs): Use PTRACE_GETREGSET.
|
|
|
|
|
(store_vfp_regs): Use PTRACE_SETREGSET.
|
|
|
|
|
|
2015-06-01 13:13:02 +02:00
|
|
|
|
2015-06-01 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (fetch_fpregister): Use PTRACE_GETREGSET.
|
|
|
|
|
(fetch_fpregs): Likewise.
|
|
|
|
|
* arm-linux-nat.c (store_fpregister): Use PTRACE_SETREGSET.
|
|
|
|
|
(store_fpregs): Likewise.
|
|
|
|
|
|
2015-06-01 13:13:02 +02:00
|
|
|
|
2015-06-01 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (fetch_register): Use PTRACE_GETREGSET.
|
|
|
|
|
(fetch_regs): Likewise.
|
|
|
|
|
(store_regs): Use PTRACE_SETREGSET.
|
|
|
|
|
(store_register): Likewise.
|
|
|
|
|
|
2015-06-01 13:13:02 +02:00
|
|
|
|
2015-06-01 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (arm_linux_read_description): Check whether
|
|
|
|
|
kernel supports PTRACE_GETREGSET.
|
|
|
|
|
|
2015-06-01 13:13:02 +02:00
|
|
|
|
2015-06-01 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.c (have_ptrace_getregset): Move it to ...
|
|
|
|
|
* linux-nat.c: ... here.
|
|
|
|
|
* x86-linux-nat.h (have_ptrace_getregset): Move the declaration
|
|
|
|
|
to ...
|
|
|
|
|
* linux-nat.h: ... here.
|
|
|
|
|
|
2015-06-01 13:13:02 +02:00
|
|
|
|
2015-06-01 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-nat.c: Include "nat/linux-ptrace.h".
|
|
|
|
|
* i386-linux-nat.c: Likewise.
|
|
|
|
|
* nat/linux-ptrace.h (PTRACE_GETREGSET, PTRACE_SETREGSET): Define.
|
|
|
|
|
* s390-linux-nat.c: Include "nat/linux-ptrace.h".
|
|
|
|
|
(PTRACE_GETREGSET, PTRACE_SETREGSET): Remove.
|
|
|
|
|
* x86-linux-nat.c: Include "nat/linux-ptrace.h".
|
|
|
|
|
* x86-linux-nat.h (PTRACE_GETREGSET, PTRACE_SETREGSET): Remove.
|
|
|
|
|
|
2015-05-30 12:05:53 +02:00
|
|
|
|
2015-05-30 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
* go32-nat.c (go32_xfer_memory): Fix the return value to be
|
|
|
|
|
compatible to what read_child and write_child return. This
|
|
|
|
|
unbreaks that DJGPP build of GDB which was broken since v7.7.
|
|
|
|
|
|
2015-05-30 01:44:22 +02:00
|
|
|
|
2015-05-29 Martin Galvan <martin.galvan@tallertechnologies.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Martin Galvan.
|
|
|
|
|
|
2015-05-29 18:24:36 +02:00
|
|
|
|
2015-05-29 Roland McGrath <mcgrathr@google.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18464
|
|
|
|
|
* osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Use warning
|
|
|
|
|
rather than internal_error for an unrecognized value.
|
|
|
|
|
|
2015-05-18 00:39:40 +02:00
|
|
|
|
2015-05-29 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (xtensa_pseudo_register_read)
|
|
|
|
|
(xtensa_pseudo_register_write): Don't alias last pseudo register
|
|
|
|
|
to a1.
|
|
|
|
|
|
2015-05-28 23:26:03 +02:00
|
|
|
|
2015-05-28 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_fork_inferior): Ensure the use of
|
|
|
|
|
process-style ptids (pid,0,0) in verbose/debug "Detaching"
|
|
|
|
|
messages.
|
|
|
|
|
|
2015-05-28 18:42:02 +02:00
|
|
|
|
2015-05-28 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (record_line_ftype): Remove, duplicate.
|
|
|
|
|
|
2015-05-28 11:19:30 +02:00
|
|
|
|
2015-05-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (arm_linux_has_wmmx_registers): Remove.
|
|
|
|
|
(arm_linux_fetch_inferior_registers): Use
|
|
|
|
|
tdep->have_wmmx_registers instead of arm_linux_has_wmmx_registers.
|
|
|
|
|
(arm_linux_store_inferior_registers): Likewise.
|
|
|
|
|
(arm_linux_read_description): Don't set
|
|
|
|
|
arm_linux_has_wmmx_registers.
|
|
|
|
|
* arm-tdep.c (arm_gdbarch_init): Set
|
|
|
|
|
tdep->have_wmmx_registers according target descriptions.
|
|
|
|
|
* arm-tdep.h (struct gdbarch_tdep) <have_wmmx_registers>: New
|
|
|
|
|
field.
|
|
|
|
|
|
2015-05-28 11:19:30 +02:00
|
|
|
|
2015-05-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (arm_linux_vfp_register_count): Remove.
|
|
|
|
|
(fetch_vfp_regs): Use vfp_register_count from gdbarch_tdep
|
|
|
|
|
instead of arm_linux_vfp_register_count.
|
|
|
|
|
(store_vfp_regs): Likewise.
|
|
|
|
|
(arm_linux_fetch_inferior_registers): Likewise.
|
|
|
|
|
(arm_linux_store_inferior_registers): Likewise.
|
|
|
|
|
(arm_linux_read_description): Don't set
|
|
|
|
|
arm_linux_vfp_register_count.
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_iterate_over_regset_sections):
|
|
|
|
|
Adjust.
|
|
|
|
|
* arm-tdep.c (arm_gdbarch_init): Add assert on
|
|
|
|
|
vfp_register_count.
|
|
|
|
|
* arm-tdep.h (struct gdbarch_tdep) <have_vfp_registers>: Rename
|
|
|
|
|
field to vfp_register_count. All users updated.
|
|
|
|
|
|
2015-05-28 10:12:12 +02:00
|
|
|
|
2015-05-28 Kyle Huey <me@kylehuey.com> (tiny patch)
|
|
|
|
|
|
|
|
|
|
* gdb/arm-tdep.c (arm_gdbarch_init): Perform arm_abi detection on
|
|
|
|
|
ELFOSABI_GNU binaries.
|
|
|
|
|
|
2015-05-27 23:44:29 +02:00
|
|
|
|
2015-05-27 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (lnp_state_machine): New typedef.
|
|
|
|
|
(lnp_reader_state): New typedef.
|
|
|
|
|
(dwarf_record_line_1): Renamed from dwarf_record_line.
|
|
|
|
|
All callers updated.
|
|
|
|
|
(dwarf_record_line): New function.
|
|
|
|
|
(init_lnp_state_machine): New function.
|
|
|
|
|
(check_line_address): Replace p_record_line parameter with state.
|
|
|
|
|
All callers updated.
|
|
|
|
|
(dwarf_decode_lines_1): Call dwarf_record_line, init_lnp_state_machine.
|
|
|
|
|
Update to record state in lnp_state_machine.
|
|
|
|
|
|
2015-05-27 22:22:02 +02:00
|
|
|
|
2015-05-27 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (record_line_ftype): New typedef.
|
|
|
|
|
(check_line_address): New function.
|
|
|
|
|
(dwarf_decode_lines_1): Call it.
|
|
|
|
|
|
2015-05-27 21:55:19 +02:00
|
|
|
|
2015-05-27 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention "set debug dwarf-line".
|
|
|
|
|
* dwarf2read.c (dwarf_line_debug): New static global.
|
|
|
|
|
(add_include_dir): Add debug dwarf-line support.
|
|
|
|
|
(add_file_name, dwarf_record_line, dwarf_finish_line): Ditto.
|
|
|
|
|
(_initialize_dwarf2_read): New parameter "debug dwarf-line".
|
|
|
|
|
|
2015-05-27 21:17:37 +02:00
|
|
|
|
2015-05-27 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* cp-namespace.c (cp_lookup_nested_symbol): New arg "domain".
|
|
|
|
|
All callers updated.
|
|
|
|
|
(cp_lookup_nested_symbol_1, find_symbol_in_baseclass): Ditto.
|
|
|
|
|
* cp-support.h (cp_lookup_nested_symbol): Update.
|
|
|
|
|
|
2015-05-27 20:50:38 +02:00
|
|
|
|
2015-05-27 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR symtab/18258
|
|
|
|
|
* block.c (block_find_symbol): New function.
|
|
|
|
|
(block_find_non_opaque_type): Ditto.
|
|
|
|
|
(block_find_non_opaque_type_preferred): Ditto.
|
|
|
|
|
* block.h (block_symbol_matcher_ftype): New typedef.
|
|
|
|
|
(block_find_symbol): Declare.
|
|
|
|
|
(block_find_non_opaque_type): Ditto.
|
|
|
|
|
(block_find_non_opaque_type_preferred): Ditto.
|
|
|
|
|
* dwarf2read.c (dw2_lookup_symbol): Call block_find_symbol.
|
|
|
|
|
* psymtab.c (psym_lookup_symbol): Ditto.
|
|
|
|
|
* symtab.c (basic_lookup_transparent_type_1): New function.
|
|
|
|
|
(basic_lookup_transparent_type): Call it.
|
|
|
|
|
|
2015-05-27 12:08:40 +02:00
|
|
|
|
2015-05-27 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_record_data_proc_simd_fp): Return
|
|
|
|
|
AARCH64_RECORD_UNKNOWN for unknown instruction encoding.
|
|
|
|
|
|
2015-05-27 12:29:24 +02:00
|
|
|
|
2015-05-27 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_record_branch_except_sys): Split lines
|
|
|
|
|
before operator &&.
|
|
|
|
|
(aarch64_record_load_store): Likewise.
|
|
|
|
|
|
2015-05-27 02:20:49 +02:00
|
|
|
|
2015-05-26 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR c++/18141, c++/18417.
|
|
|
|
|
* cp-support.c (cp_lookup_rtti_type): Handle the case of NAME being
|
|
|
|
|
a typedef.
|
|
|
|
|
|
2015-05-27 01:50:57 +02:00
|
|
|
|
2015-05-26 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Add entries for command renamings.
|
|
|
|
|
* dwarf2read.c (dwarf_read_debug): Renamed from dwarf2_read_debug.
|
|
|
|
|
All uses updated.
|
|
|
|
|
(dwarf_die_debug): Renamed from dwarf2_die_debug. All uses updated.
|
|
|
|
|
(dwarf_max_cache_age): Renamed from dwarf2_max_cache_age.
|
|
|
|
|
All uses updated.
|
|
|
|
|
(show_dwarf_max_cache_age): Renamed from show_dwarf2_max_cache_age.
|
|
|
|
|
All callers updated. Fix spelling of DWARF in help text.
|
|
|
|
|
(set_dwarf_cmdlist): Renamed from set_dwarf2_cmdlist.
|
|
|
|
|
All uses updated.
|
|
|
|
|
(show_dwarf_cmdlist): Renamed from show_dwarf2_cmdlist.
|
|
|
|
|
All uses updated.
|
|
|
|
|
(set_dwarf_cmd): Renamed from set_dwarf2_cmd. All callers updated.
|
|
|
|
|
(show_dwarf_cmd): Renamed from show_dwarf2_cmd. All callers updated.
|
|
|
|
|
(dwarf_always_disassemble): Renamed from dwarf_always_disassemble.
|
|
|
|
|
All uses updated.
|
|
|
|
|
(show_dwarf_always_disassemble): Renamed from
|
|
|
|
|
show_dwarf2_always_disassemble. All callers updated.
|
|
|
|
|
(_initialize_dwarf2_read): Rename "set/show dwarf2" prefix to
|
|
|
|
|
"set/show dwarf". Rename "set/show dwarf2 max-cache-age" to
|
|
|
|
|
"set/show dwarf max-cache-age". Rename
|
|
|
|
|
"set/show dwarf2 always-disassemble" to
|
|
|
|
|
"set/show dwarf always-disassemble". Rename
|
|
|
|
|
"set/show debug dwarf2-read" to "set/show debug dwarf-read". Rename
|
|
|
|
|
"set/show debug dwarf2-die" to "set/show debug dwarf-die".
|
|
|
|
|
|
2015-05-27 01:13:04 +02:00
|
|
|
|
2015-05-26 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR python/18438
|
|
|
|
|
* python/py-lazy-string.c (stpy_convert_to_value): Use
|
|
|
|
|
gdbpy_gdb_memory_error not PyExc_MemoryError.
|
|
|
|
|
(gdbpy_create_lazy_string_object): Ditto.
|
|
|
|
|
|
2015-05-26 23:31:23 +02:00
|
|
|
|
2015-05-26 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-regs.c (tui_reg_next_command): Compare against NULL.
|
|
|
|
|
|
2015-05-21 21:51:53 +02:00
|
|
|
|
2015-05-26 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-regs.c (tui_reg_prev_command): New function.
|
|
|
|
|
(_initialize_tui_regs): Add 'prev' command for 'tui reg'.
|
|
|
|
|
* reggroups.c (reggroup_prev): New function.
|
|
|
|
|
* reggroups.h (reggroup_prev): Add declaration. Update comment.
|
|
|
|
|
|
2015-05-11 13:10:46 +02:00
|
|
|
|
2015-05-26 Omair Javaid <omair.javaid@linaro.org>
|
|
|
|
|
Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-tdep.c: Include linux-record.h and
|
|
|
|
|
record-full.h.
|
|
|
|
|
(struct linux_record_tdep aarch64_linux_record_tdep): Declare.
|
|
|
|
|
(aarch64_syscall): New enum.
|
|
|
|
|
(aarch64_canonicalize_syscall): New function.
|
|
|
|
|
(aarch64_all_but_pc_registers_record): New function.
|
|
|
|
|
(aarch64_linux_syscall_record): New function.
|
|
|
|
|
(aarch64_linux_init_abi): Install AArch64 process record
|
|
|
|
|
handler. Update to handle syscall recording.
|
|
|
|
|
* aarch64-tdep.c: Include record.h and record-full.h.
|
|
|
|
|
(submask, bit, bits, REG_ALLOC, MEM_ALLOC): New macros.
|
|
|
|
|
(struct aarch64_mem_r): Define.
|
|
|
|
|
(aarch64_record_result): New enum.
|
|
|
|
|
(struct insn_decode_record): Define.
|
|
|
|
|
(insn_decode_record): New typedef.
|
|
|
|
|
(aarch64_record_data_proc_reg): New function.
|
|
|
|
|
(aarch64_record_data_proc_imm): New function.
|
|
|
|
|
(aarch64_record_branch_except_sys): New function.
|
|
|
|
|
(aarch64_record_load_store): New function.
|
|
|
|
|
(aarch64_record_data_proc_simd_fp): New function.
|
|
|
|
|
(aarch64_record_asimd_load_store): New function.
|
|
|
|
|
(aarch64_record_decode_insn_handler): New function.
|
|
|
|
|
(deallocate_reg_mem): New function.
|
|
|
|
|
(aarch64_process_record): New function.
|
|
|
|
|
* aarch64-tdep.h (struct gdbarch_tdep) <aarch64_syscall_record>:
|
|
|
|
|
New field.
|
|
|
|
|
(aarch64_process_record): New extern declaration.
|
|
|
|
|
* configure.tgt: Add linux-record.o to gdb_target_obs.
|
|
|
|
|
* linux-record.h (struct linux_record_tdep) <arg7>: New field.
|
|
|
|
|
|
2015-05-11 13:10:43 +02:00
|
|
|
|
2015-05-26 Omair Javaid <omair.javaid@linaro.org>
|
|
|
|
|
|
|
|
|
|
* NEWS: Add a note on process record-replay support on aarch64*-linux*
|
|
|
|
|
targets.
|
|
|
|
|
|
2015-05-26 12:59:17 +02:00
|
|
|
|
2015-05-26 Martin Galvan <martin.galvan@tallertechnologies.com>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c: Replace in_function_epilogue_p with
|
|
|
|
|
stack_frame_destroyed_p throughout.
|
|
|
|
|
* arch-utils.c: Ditto.
|
|
|
|
|
* arch-utils.h: Ditto.
|
|
|
|
|
* arm-tdep.c: Ditto.
|
|
|
|
|
* breakpoint.c: Ditto.
|
|
|
|
|
* gdbarch.sh: Ditto.
|
|
|
|
|
* hppa-tdep.c: Ditto.
|
|
|
|
|
* i386-tdep.c: Ditto.
|
|
|
|
|
* mips-tdep.c: Ditto.
|
|
|
|
|
* nios2-tdep.c: Ditto.
|
|
|
|
|
* rs6000-tdep.c: Ditto.
|
|
|
|
|
* s390-linux-tdep.c: Ditto.
|
|
|
|
|
* score-tdep.c: Ditto.
|
|
|
|
|
* sh-tdep.c: Ditto.
|
|
|
|
|
* sparc-tdep.c: Ditto.
|
|
|
|
|
* sparc-tdep.h: Ditto.
|
|
|
|
|
* sparc64-tdep.c: Ditto.
|
|
|
|
|
* spu-tdep.c: Ditto.
|
|
|
|
|
* tic6x-tdep.c: Ditto.
|
|
|
|
|
* tilegx-tdep.c: Ditto.
|
|
|
|
|
* xstormy16-tdep.c: Ditto.
|
|
|
|
|
* gdbarch.c, gdbarch.h: Re-generated.
|
|
|
|
|
|
2015-05-22 10:07:42 +02:00
|
|
|
|
2015-05-22 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention 'tui enable' and 'tui disable'.
|
|
|
|
|
* tui/tui.c (tui_enable_command): New function.
|
|
|
|
|
(tui_disable_command): New function.
|
|
|
|
|
(_initialize_tui): New function.
|
|
|
|
|
|
2015-05-21 21:21:40 +02:00
|
|
|
|
2015-05-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-regs.c (tui_reg_next_command): Use NULL not 0.
|
|
|
|
|
|
2015-05-21 00:51:23 +02:00
|
|
|
|
2015-05-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-layout.c (tui_set_layout_for_display_command): Ensure
|
|
|
|
|
buf_ptr is freed.
|
|
|
|
|
|
2015-05-21 00:45:26 +02:00
|
|
|
|
2015-05-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-layout.c (tui_layout_command): Move call to tui_enable
|
|
|
|
|
into ...
|
|
|
|
|
(tui_set_layout_for_display_command): ...here, before calling
|
|
|
|
|
tui_set_layout. Only set the layout if gdb has not already
|
|
|
|
|
entered the TUI_FAILURE state.
|
|
|
|
|
|
2015-03-26 15:13:57 +01:00
|
|
|
|
2015-05-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-layout.c (layout_completer): New function.
|
|
|
|
|
(_initialize_tui_layout): Set completer on layout command.
|
|
|
|
|
|
gdb: Remove register class specific layout names.
The layout command supports the layout names $FREGS, $GREGS, $SREGS,
and $REGS. The intention of these layout names was to display the tui
register window with a specific set of registers.
First, these layout names no longer work, and haven't for a while, using
any of them will just result in switching to the general register view.
Second there is already the command 'tui reg GROUP' command to set the
displayed register set to GROUP, so making the layout command also
control the register set feels like unnecessary overloading of the
layout command.
This commit removes all code relating to supporting the register set
specific names from the layout command. Afterwards the user can select
an available layout using the layout command, and control the choice of
register set using the 'tui reg GROUP' command.
gdb/ChangeLog:
* tui/tui-layout.c (tui_set_layout): Remove
tui_register_display_type parameter. Remove all checking of this
parameter, and reindent function. Update header comment.
(tui_set_layout_for_display_command): Rename to...
(tui_set_layout_by_name): ...this, and don't check for different
register class types, don't pass a tui_register_display_type to
tui_set_layout. Update header comment.
(layout_names): Remove register set specific names.
* tui/tui-layout.h (tui_set_layout): Remove
tui_register_display_type parameter.
* tui/tui.c (tui_rl_change_windows): Don't pass a
tui_register_display_type to tui_set_layout.
(tui_rl_delete_other_windows): Likewise.
(tui_enable): Likewise.
* tui/tui-data.h (TUI_FLOAT_REGS_NAME): Remove.
(TUI_FLOAT_REGS_NAME_LOWER): Remove.
(TUI_GENERAL_REGS_NAME): Remove.
(TUI_GENERAL_REGS_NAME_LOWER): Remove.
(TUI_SPECIAL_REGS_NAME): Remove.
(TUI_SPECIAL_REGS_NAME_LOWER): Remove.
(TUI_GENERAL_SPECIAL_REGS_NAME): Remove.
(TUI_GENERAL_SPECIAL_REGS_NAME_LOWER): Remove.
(enum tui_register_display_type): Remove.
(struct tui_layout_def): Remove regs_display_type and
float_regs_display_type fields.
(struct tui_data_info): Remove regs_display_type field.
(tui_layout_command): Use new name for
tui_set_layout_for_display_command.
* tui/tui-data.c (layout_def): Don't initialise removed fields.
(tui_clear_win_detail): Don't initialise removed fields of
win_info.
* tui/tui-regs.c (tui_show_registers): Use new name for
tui_set_layout_for_display_command.
* tui/tui.h (tui_set_layout_for_display_command): Rename
declaration to...
(tui_set_layout_by_name): ...this.
* printcmd.c (display_command): Remove tui related layout call,
and reindent.
2015-05-20 23:35:07 +02:00
|
|
|
|
2015-05-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-layout.c (tui_set_layout): Remove
|
|
|
|
|
tui_register_display_type parameter. Remove all checking of this
|
|
|
|
|
parameter, and reindent function. Update header comment.
|
|
|
|
|
(tui_set_layout_for_display_command): Rename to...
|
|
|
|
|
(tui_set_layout_by_name): ...this, and don't check for different
|
|
|
|
|
register class types, don't pass a tui_register_display_type to
|
|
|
|
|
tui_set_layout. Update header comment.
|
|
|
|
|
(layout_names): Remove register set specific names.
|
|
|
|
|
* tui/tui-layout.h (tui_set_layout): Remove
|
|
|
|
|
tui_register_display_type parameter.
|
|
|
|
|
* tui/tui.c (tui_rl_change_windows): Don't pass a
|
|
|
|
|
tui_register_display_type to tui_set_layout.
|
|
|
|
|
(tui_rl_delete_other_windows): Likewise.
|
|
|
|
|
(tui_enable): Likewise.
|
|
|
|
|
* tui/tui-data.h (TUI_FLOAT_REGS_NAME): Remove.
|
|
|
|
|
(TUI_FLOAT_REGS_NAME_LOWER): Remove.
|
|
|
|
|
(TUI_GENERAL_REGS_NAME): Remove.
|
|
|
|
|
(TUI_GENERAL_REGS_NAME_LOWER): Remove.
|
|
|
|
|
(TUI_SPECIAL_REGS_NAME): Remove.
|
|
|
|
|
(TUI_SPECIAL_REGS_NAME_LOWER): Remove.
|
|
|
|
|
(TUI_GENERAL_SPECIAL_REGS_NAME): Remove.
|
|
|
|
|
(TUI_GENERAL_SPECIAL_REGS_NAME_LOWER): Remove.
|
|
|
|
|
(enum tui_register_display_type): Remove.
|
|
|
|
|
(struct tui_layout_def): Remove regs_display_type and
|
|
|
|
|
float_regs_display_type fields.
|
|
|
|
|
(struct tui_data_info): Remove regs_display_type field.
|
|
|
|
|
(tui_layout_command): Use new name for
|
|
|
|
|
tui_set_layout_for_display_command.
|
|
|
|
|
* tui/tui-data.c (layout_def): Don't initialise removed fields.
|
|
|
|
|
(tui_clear_win_detail): Don't initialise removed fields of
|
|
|
|
|
win_info.
|
|
|
|
|
* tui/tui-regs.c (tui_show_registers): Use new name for
|
|
|
|
|
tui_set_layout_for_display_command.
|
|
|
|
|
* tui/tui.h (tui_set_layout_for_display_command): Rename
|
|
|
|
|
declaration to...
|
|
|
|
|
(tui_set_layout_by_name): ...this.
|
|
|
|
|
* printcmd.c (display_command): Remove tui related layout call,
|
|
|
|
|
and reindent.
|
|
|
|
|
|
2015-02-13 11:57:29 +01:00
|
|
|
|
2015-05-20 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (handle_inferior_event_1): Renames handle_inferior_event.
|
|
|
|
|
(handle_inferior_event): New function.
|
|
|
|
|
|
2015-05-20 09:14:30 +02:00
|
|
|
|
2015-05-20 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (to_fixed_array_type): Rename local variable
|
|
|
|
|
typename into type_name.
|
|
|
|
|
|
2015-05-19 16:12:30 +02:00
|
|
|
|
2015-05-19 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Fix ASAN crash for gdb.compile/compile.exp.
|
|
|
|
|
* infcall.c (call_function_by_hand_dummy): Use xstrdup for NAME.
|
|
|
|
|
|
2015-05-19 14:27:06 +02:00
|
|
|
|
2015-05-19 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-c-symbols.c (convert_symbol_sym, gcc_convert_symbol)
|
|
|
|
|
(gcc_symbol_address): Change gdb_stdout to gdb_stdlog.
|
|
|
|
|
* compile/compile-object-load.c (setup_sections, compile_object_load):
|
|
|
|
|
Likewise.
|
|
|
|
|
* compile/compile.c (compile_to_object): Likewise.
|
|
|
|
|
|
2015-05-16 21:14:26 +02:00
|
|
|
|
2015-05-16 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention support for unbuffered Guile memory ports.
|
|
|
|
|
* scm-ports.c (ioscm_memory_port): Update comments on end, size.
|
|
|
|
|
(ioscm_lseek_address): Improve overflow calculation.
|
|
|
|
|
(gdbscm_memory_port_fill_input): Add assert.
|
|
|
|
|
(gdbscm_memory_port_write): Handle unbuffered ports.
|
|
|
|
|
Handle large writes identical to Guile's fport_write.
|
|
|
|
|
(gdbscm_memory_port_seek): Fix seeking past end check.
|
|
|
|
|
(gdbscm_memory_port_close): Handle closing unbuffered port.
|
|
|
|
|
(ioscm_parse_mode_bits): Recognize "0" for unbuffered ports.
|
|
|
|
|
(ioscm_init_memory_port): Handle unbuffered ports.
|
|
|
|
|
(ioscm_reinit_memory_port): Ditto.
|
|
|
|
|
(ioscm_init_memory_port): Update size calculation.
|
|
|
|
|
(gdbscm_open_memory): Support zero sized ports.
|
|
|
|
|
|
2015-05-16 16:36:44 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-load.c (get_out_value_type): Fix uninitialized
|
|
|
|
|
variable compiler warnings.
|
|
|
|
|
|
2015-05-16 15:36:33 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-load.c (get_out_value_type): Fix returned type.
|
|
|
|
|
|
2015-05-16 14:20:46 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
Phil Muldoon <pmuldoon@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 7.9): Add compile print.
|
|
|
|
|
* compile/compile-c-support.c (add_code_header, add_code_footer)
|
|
|
|
|
(c_compute_program): Add COMPILE_I_PRINT_ADDRESS_SCOPE and
|
|
|
|
|
COMPILE_I_PRINT_VALUE_SCOPE.
|
|
|
|
|
* compile/compile-internal.h (COMPILE_I_PRINT_OUT_ARG_TYPE)
|
|
|
|
|
(COMPILE_I_PRINT_OUT_ARG, COMPILE_I_EXPR_VAL, COMPILE_I_EXPR_PTR_TYPE):
|
|
|
|
|
New.
|
|
|
|
|
* compile/compile-object-load.c: Include block.h.
|
|
|
|
|
(get_out_value_type): New function.
|
|
|
|
|
(compile_object_load): Handle COMPILE_I_PRINT_ADDRESS_SCOPE and
|
|
|
|
|
COMPILE_I_PRINT_VALUE_SCOPE. Set compile_module's OUT_VALUE_ADDR and
|
|
|
|
|
OUT_VALUE_TYPE.
|
|
|
|
|
* compile/compile-object-load.h (struct compile_module): Add fields
|
|
|
|
|
out_value_addr and out_value_type.
|
|
|
|
|
* compile/compile-object-run.c: Include valprint.h and compile.h.
|
|
|
|
|
(struct do_module_cleanup): Add fields out_value_addr and
|
|
|
|
|
out_value_type.
|
|
|
|
|
(do_module_cleanup): Handle COMPILE_I_PRINT_ADDRESS_SCOPE and
|
|
|
|
|
COMPILE_I_PRINT_VALUE_SCOPE.
|
|
|
|
|
(compile_object_run): Propagate out_value_addr and out_value_type.
|
|
|
|
|
Pass OUT_VALUE_ADDR.
|
|
|
|
|
* compile/compile.c: Include valprint.h.
|
|
|
|
|
(compile_print_value, compile_print_command): New functions.
|
|
|
|
|
(eval_compile_command): Handle failed COMPILE_I_PRINT_ADDRESS_SCOPE.
|
|
|
|
|
(_initialize_compile): Update compile code help text. Install
|
|
|
|
|
compile_print_command.
|
|
|
|
|
* compile/compile.h (compile_print_value): New prototype.
|
|
|
|
|
* defs.h (enum compile_i_scope_types): Add
|
|
|
|
|
COMPILE_I_PRINT_ADDRESS_SCOPE and COMPILE_I_PRINT_VALUE_SCOPE.
|
|
|
|
|
|
2015-05-16 14:20:45 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-load.c (get_regs_type): Add parameter func_sym.
|
|
|
|
|
Rely on its parameter count.
|
|
|
|
|
(compile_object_load): Replace lookup_minimal_symbol_text by
|
|
|
|
|
lookup_global_symbol_from_objfile. Verify FUNC_SYM. Set it in the
|
|
|
|
|
return value.
|
|
|
|
|
* compile/compile-object-load.h (struct compile_module): Replace
|
|
|
|
|
func_addr by func_sym.
|
|
|
|
|
* compile/compile-object-run.c: Include block.h.
|
|
|
|
|
(compile_object_run): Reset module variable after it is freed. Use
|
|
|
|
|
FUNC_SYM instead of FUNC_ADDR. Rely on it.
|
|
|
|
|
|
2015-05-16 14:20:45 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-c-support.c (print_one_macro): Use #ifndef.
|
|
|
|
|
(generate_register_struct): Use __gdb_uintptr for TYPE_CODE_PTR.
|
|
|
|
|
(c_compute_program): Call generate_register_struct after typedefs.
|
|
|
|
|
* compile/compile-loc2c.c (push, pushf_register_address)
|
|
|
|
|
(pushf_register): Cast to GCC_UINTPTR.
|
|
|
|
|
(do_compile_dwarf_expr_to_c): Use unused attribute. Add space after
|
|
|
|
|
type. Use GCC_UINTPTR instead of void *. Remove excessive cast.
|
|
|
|
|
(compile_dwarf_expr_to_c): Use GCC_UINTPTR instead of void *.
|
|
|
|
|
* compile/compile.c (_initialize_compile): Enable warnings for
|
|
|
|
|
COMPILE_ARGS.
|
|
|
|
|
|
2015-05-16 14:27:47 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.c (execute_control_command): Update
|
|
|
|
|
eval_compile_command caller.
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Add parameters
|
|
|
|
|
scope and scope_data. Set them.
|
|
|
|
|
* compile/compile-object-load.h (struct compile_module): Add fields
|
|
|
|
|
scope and scope_data.
|
|
|
|
|
(compile_object_load): Add parameters scope and scope_data.
|
|
|
|
|
* compile/compile-object-run.c (struct do_module_cleanup): Add fields
|
|
|
|
|
scope and scope_data.
|
|
|
|
|
(compile_object_run): Propagate the fields scope and scope_data.
|
|
|
|
|
* compile/compile.c (compile_file_command, compile_code_command):
|
|
|
|
|
Update eval_compile_command callers.
|
|
|
|
|
(eval_compile_command): Add parameter scope_data. Pass it plus scope.
|
|
|
|
|
* compile/compile.h (eval_compile_command): Add parameter scope_data.
|
|
|
|
|
* defs.h (struct command_line): Add field scope_data.
|
|
|
|
|
|
2015-05-16 14:26:06 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* printcmd.c (struct format_data): Move it to valprint.h.
|
|
|
|
|
(print_command_parse_format, print_value): New functions from ...
|
|
|
|
|
(print_command_1): ... here. Call them.
|
|
|
|
|
* valprint.h (struct format_data): Move it here from printcmd.c.
|
|
|
|
|
(print_command_parse_format, print_value): New declarations.
|
|
|
|
|
|
2015-05-16 14:25:28 +02:00
|
|
|
|
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Add
|
|
|
|
|
COMPILE_DEBUG message.
|
|
|
|
|
|
Array indexed by non-contiguous enumeration types
In Ada, index types of arrays can be enumeration types, and enumeration
types can be non-contiguous. In which case the address of elements is
not given by the value of the index, but by its position in the enumeration
type.
In other words, in this example:
type Color is (Blue, Red);
for Color use (Blue => 8, Red => 12, Green => 16);
type A is array (Color) of Integer;
type B is array (1 .. 3) of Integer;
Arrays of type A and B will have the same layout in memory, even if
the enumeration Color has a hole in its set of integer value.
Since recently support for such a feature was in ada-lang.c, where the
array was casted to a regular continuous index range. We were losing
the information of index type. And this was not quite working for
subranges in variable-length fields; their bounds are expressed using
the integer value of the bounds, not its position in the enumeration,
and there was some confusion all over ada-lang.c as to whether we had
the position or the integer value was used for indexes.
The idea behind this patch is to clean this up by keeping the real
representation of these array index types and bounds when representing
the value, and only use the position when accessing the elements or
computing the length. This first patch fixes the printing of such
an array.
To the best of my knowledge, this feature only exists in Ada so it
should only affect this language.
gdb/ChangeLog:
Jerome Guitton <guitton@adacore.com>:
* ada-lang.c (ada_value_ptr_subscript): Use enum position of
index to get element instead of enum value.
(ada_value_slice_from_ptr, ada_value_slice): Use enum position
of index to compute length, but enum values to compute bounds.
(ada_array_length): Use enum position of index instead of enum value.
(pos_atr): Move position computation to...
(ada_evaluate_subexp): Use enum values to compute bounds.
* gdbtypes.c (discrete_position): ...this new function.
* gdbtypes.h (discrete_position): New function declaration.
* valprint.c (val_print_array_elements): Call discrete_position
to handle array indexed by non-contiguous enumeration types.
gdb/testsuite/ChangeLog:
* gdb.ada/arr_enum_with_gap: New testcase.
2015-03-27 14:45:08 +01:00
|
|
|
|
2015-05-15 Jerome Guitton <guitton@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_value_ptr_subscript): Use enum position of
|
|
|
|
|
index to get element instead of enum value.
|
|
|
|
|
(ada_value_slice_from_ptr, ada_value_slice): Use enum position
|
|
|
|
|
of index to compute length, but enum values to compute bounds.
|
|
|
|
|
(ada_array_length): Use enum position of index instead of enum value.
|
|
|
|
|
(pos_atr): Move position computation to...
|
|
|
|
|
(ada_evaluate_subexp): Use enum values to compute bounds.
|
|
|
|
|
* gdbtypes.c (discrete_position): ...this new function.
|
|
|
|
|
* gdbtypes.h (discrete_position): New function declaration.
|
|
|
|
|
* valprint.c (val_print_array_elements): Call discrete_position
|
|
|
|
|
to handle array indexed by non-contiguous enumeration types.
|
|
|
|
|
|
2015-03-26 16:19:27 +01:00
|
|
|
|
2015-05-15 Jerome Guitton <guitton@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (find_parallel_type_by_descriptive_type):
|
|
|
|
|
Go through typedefs during lookup.
|
|
|
|
|
(to_fixed_array_type): Add support for non-bit packed arrays
|
|
|
|
|
as variable-length fields.
|
|
|
|
|
|
Fix gdb.mi/mi-nsmoribund.exp timeouts
The PPC64 buildbot has been showing timeouts in mi-nsmoribund.exp,
like this:
(...)
-thread-info
FAIL: gdb.mi/mi-nsmoribund.exp: thread state: all running except the breakpoint thread (timeout)
... and I can reproduce this on gcc110 (PPC64) on the gcc compile
farm.
That is, the test sends "-thread-info" to GDB, but GDB never replies
back.
The problem is that these machines are too fast for gdb. :-)
That test has a few threads running the same tight loop, and
constantly hitting a thread-specific breakpoint that needs to be
stepped over. If threads trip on breakpoints fast enough that
linux-nat.c's event pipe associated with SIGCHLD is constantly being
written to, even if the stdin file descriptor also has an event to
handle, gdb never gets to it. because linux-nat.c's pipe comes first
in the set of descriptors served by the poll/select code in the event
loop.
Fix this by having the event loop serve file event sources in
round-robin-like fashion, similarly to how its done in
gdb_do_one_event.
Unfortunately, the poll and the select variants each need their own
fixing.
Tested on x86_64 Fedora 20 (poll and select variants), and PPC64
Fedora 18. Fixes the timeout in the PPC64 machine in the compile farm
that times out without this, and I won't be surprised if it fixes
other random timeouts in other tests.
(gdbserver's copy of the event-loop doesn't need this (yet), as it
still pushes all ready events to an event queue. That is, it hasn't
had 70b66289 merged yet. We should really merge both event-loop.c
copies into a single shared file, but that's for another day.)
gdb/ChangeLog:
2015-05-15 Pedro Alves <palves@redhat.com>
Simon Marchi <simon.marchi@ericsson.com>
* event-loop.c (gdb_notifier) <next_file_handler,
next_poll_fds_index>: New fields.
(get_next_file_handler_to_handle_and_advance): New function.
(delete_file_handler): If deleting the next file handler to
handle, advance to the next file handler.
(gdb_wait_for_event): Bail early if no event fired. Poll file
handlers in round-robin fashion.
2015-05-15 17:26:53 +02:00
|
|
|
|
2015-05-15 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* event-loop.c (gdb_notifier) <next_file_handler,
|
|
|
|
|
next_poll_fds_index>: New fields.
|
|
|
|
|
(get_next_file_handler_to_handle_and_advance): New function.
|
|
|
|
|
(delete_file_handler): If deleting the next file handler to
|
|
|
|
|
handle, advance to the next file handler.
|
|
|
|
|
(gdb_wait_for_event): Bail early if no event fired. Poll file
|
|
|
|
|
handlers in round-robin fashion.
|
|
|
|
|
|
2015-05-15 17:00:41 +02:00
|
|
|
|
2015-05-15 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-tdep.c (linux_find_memory_regions_full): Rename local
|
|
|
|
|
'private' to 'priv'.
|
|
|
|
|
|
2015-05-15 17:00:40 +02:00
|
|
|
|
2015-05-15 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-nat.h: Include "target/waitstatus.h".
|
|
|
|
|
|
Fix a couple C++ build issues
Building mingw GDB with --enable-build-with-cxx shows:
../../binutils-gdb/gdb/python/py-unwind.c:500:45: error: cannot convert 'cached_frame_info::reg_info*' to 'pyuw_prev_register(frame_info*, void**, int)::reg_info*' in initialization
struct reg_info *reg_info = cached_frame->reg;
^
../../binutils-gdb/gdb/python/py-unwind.c:501:60: error: invalid use of incomplete type 'struct pyuw_prev_register(frame_info*, void**, int)::reg_info'
struct reg_info *reg_info_end = reg_info + cached_frame->reg_count;
^
../../binutils-gdb/gdb/python/py-unwind.c:500:10: error: forward declaration of 'struct pyuw_prev_register(frame_info*, void**, int)::reg_info'
struct reg_info *reg_info = cached_frame->reg;
^
../../binutils-gdb/gdb/python/py-unwind.c:505:37: error: cannot increment a pointer to incomplete type 'pyuw_prev_register(frame_info*, void**, int)::reg_info'
for (; reg_info < reg_info_end; ++reg_info)
^
../../binutils-gdb/gdb/python/py-unwind.c:507:29: error: invalid use of incomplete type 'struct pyuw_prev_register(frame_info*, void**, int)::reg_info'
if (regnum == reg_info->number)
^
../../binutils-gdb/gdb/python/py-unwind.c:500:10: error: forward declaration of 'struct pyuw_prev_register(frame_info*, void**, int)::reg_info'
struct reg_info *reg_info = cached_frame->reg;
^
../../binutils-gdb/gdb/python/py-unwind.c:508:68: error: invalid use of incomplete type 'struct pyuw_prev_register(frame_info*, void**, int)::reg_info'
return frame_unwind_got_bytes (this_frame, regnum, reg_info->data);
^
../../binutils-gdb/gdb/python/py-unwind.c:500:10: error: forward declaration of 'struct pyuw_prev_register(frame_info*, void**, int)::reg_info'
struct reg_info *reg_info = cached_frame->reg;
^
../../binutils-gdb/gdb/python/py-unwind.c: In function 'int pyuw_sniffer(const frame_unwind*, frame_info*, void**)':
../../binutils-gdb/gdb/python/py-unwind.c:574:70: warning: invalid conversion from 'void*' to 'cached_frame_info*' [-fpermissive]
reg_count * sizeof (cached_frame->reg[0]));
^
../../binutils-gdb/gdb/python/py-unwind.c: In function 'void pyuw_on_new_gdbarch(gdbarch*)':
../../binutils-gdb/gdb/python/py-unwind.c:636:47: warning: invalid conversion from 'void*' to 'pyuw_gdbarch_data_type*' [-fpermissive]
gdbarch_data (newarch, pyuw_gdbarch_data);
^
../../binutils-gdb/gdb/python/py-unwind.c:647:29: warning: invalid conversion from 'void*' to 'const frame_data*' [-fpermissive]
unwinder->unwind_data = (void *) newarch;
^
../../binutils-gdb/gdb/python/py-unwind.c: At global scope:
../../binutils-gdb/gdb/python/py-unwind.c:699:21: error: redefinition of 'PyTypeObject pending_frame_object_type'
static PyTypeObject pending_frame_object_type =
^
../../binutils-gdb/gdb/python/py-unwind.c:96:21: error: 'PyTypeObject pending_frame_object_type' previously declared here
static PyTypeObject pending_frame_object_type
^
../../binutils-gdb/gdb/python/py-unwind.c:749:21: error: redefinition of 'PyTypeObject unwind_info_object_type'
static PyTypeObject unwind_info_object_type =
^
../../binutils-gdb/gdb/python/py-unwind.c:99:21: error: 'PyTypeObject unwind_info_object_type' previously declared here
static PyTypeObject unwind_info_object_type
^
The first kind of error is caused by the embedded struct definition,
so move it out of the parent struct.
The second kind of error is caused by forward declaring a static
global variable, which works in C, but not in C++ (or C with
-fno-common). Make it using extern instead, like done in other
similar cases.
gdb/ChangeLog:
2015-05-15 Yuanhui Zhang <asmwarrior@gmail.com>
* python/py-unwind.c (struct reg_info): Move out of ...
(struct cached_frame_info): ... this scope.
(pending_frame_object_type, unwind_info_object_type): Make extern.
2015-05-15 17:00:40 +02:00
|
|
|
|
2015-05-15 Yuanhui Zhang <asmwarrior@gmail.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (struct reg_info): Move out of ...
|
|
|
|
|
(struct cached_frame_info): ... this scope.
|
|
|
|
|
(pending_frame_object_type, unwind_info_object_type): Make extern.
|
|
|
|
|
|
[Ada] problem printing negative integer values in packed arrays.
Consider the following declarations:
type Signed_Small is new Integer range - (2 ** 5) .. (2 ** 5 - 1);
type Signed_Simple_Array is array (1 .. 4) of Signed_Small;
pragma Pack (Signed_Simple_Array);
SSA : Signed_Simple_Array := (-1, 2, -3, 4);
GDB currently print its value incorrectly for the elements that
are negative:
(gdb) print ssa
$1 = (65535, 2, 1048573, 4)
(gdb) print ssa(1)
$2 = 65535
(gdb) print ssa(2)
$3 = 2
(gdb) print ssa(3)
$4 = 1048573
(gdb) print ssa(4)
$5 = 4
What happens is that the sign-extension is not working because
we're trying to do left shift with a negative count. In
ada_value_primitive_packed_val, we have a loop which populates
the extra bits of the target (unpacked) value, after extraction
of the data from the original (packed) value:
while (ntarg > 0)
{
accum |= sign << accumSize;
unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
!!! -> accumSize -= HOST_CHAR_BIT;
accum >>= HOST_CHAR_BIT;
ntarg -= 1;
targ += delta;
}
At each iteration, accumSize gets decremented by HOST_CHAR_BIT,
which can easily cause it to become negative, particularly on
little endian targets, where accumSize is at most HOST_CHAR_BIT - 1.
This causes us to perform a left-shift operation with a negative
accumSize at the next loop iteration, which is undefined, and
acutally does not produce the effect we wanted (value left untouched)
when the code is compiled with GCC.
This patch fixes the issue by simply setting accumSize to zero
if negative.
gdb/ChangeLog:
* ada-lang.c (ada_value_primitive_packed_val): Make sure
accumSize is never negative.
gdb/testsuite/ChangeLog:
* gdb.ada/pckd_neg: New testcase.
2015-05-09 02:11:35 +02:00
|
|
|
|
2015-05-15 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_value_primitive_packed_val): Make sure
|
|
|
|
|
accumSize is never negative.
|
|
|
|
|
|
2015-05-13 22:26:48 +02:00
|
|
|
|
2015-05-14 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-command.c: Remove include of <ctype.h>.
|
|
|
|
|
(tui_dispatch_ctrl_char): Remove workaround for xterm terminals.
|
|
|
|
|
|
2015-05-13 23:09:19 +02:00
|
|
|
|
2015-05-13 Martin Galvan <martin.galvan@tallertechnologies.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (die_needs_namespace): Return 1 for
|
|
|
|
|
DW_TAG_inlined_subroutine.
|
|
|
|
|
|
2015-05-13 20:47:33 +02:00
|
|
|
|
2015-05-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_cpy_no_passthrough): New declaration.
|
|
|
|
|
(regcache_cpy_no_passthrough): Make it static, add function comment.
|
|
|
|
|
* regcache.h (regcache_dup, regcache_cpy): Reduce/update their comment.
|
|
|
|
|
(regcache_cpy_no_passthrough): Remove declaration.
|
|
|
|
|
|
2015-05-13 20:47:33 +02:00
|
|
|
|
2015-05-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (struct thread_control_state): Update comment for
|
|
|
|
|
proceed_to_finish.
|
|
|
|
|
* infcall.c (run_inferior_call): Update comment about
|
|
|
|
|
proceed_to_finish.
|
|
|
|
|
* infcmd.c (get_return_value): Update comment about stop_registers.
|
|
|
|
|
(finish_forward): Update comment about proceed_to_finish.
|
|
|
|
|
* infrun.c (stop_registers): Remove.
|
|
|
|
|
(clear_proceed_status, normal_stop): Remove stop_registers handling.
|
|
|
|
|
* infrun.h (stop_registers): Remove.
|
|
|
|
|
|
2015-05-13 20:47:32 +02:00
|
|
|
|
2015-05-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infcall.c (struct dummy_frame_context_saver)
|
|
|
|
|
(dummy_frame_context_saver_data_free, dummy_frame_context_saver_dtor)
|
|
|
|
|
(dummy_frame_context_saver_drop, dummy_frame_context_saver_cleanup)
|
|
|
|
|
(dummy_frame_context_saver_get_regs, dummy_frame_context_saver_setup):
|
|
|
|
|
New.
|
|
|
|
|
(call_function_by_hand_dummy): Move discard_cleanups of
|
|
|
|
|
inf_status_cleanup before dummy_frame_push. Call
|
|
|
|
|
dummy_frame_context_saver_setup and prepare context_saver_cleanup.
|
|
|
|
|
Use dummy_frame_context_saver_get_regs instead of stop_registers.
|
|
|
|
|
* infcall.h (struct dummy_frame_context_saver)
|
|
|
|
|
(dummy_frame_context_saver_drop, dummy_frame_context_saver_cleanup)
|
|
|
|
|
(dummy_frame_context_saver_get_regs, dummy_frame_context_saver_setup):
|
|
|
|
|
New declarations.
|
|
|
|
|
* infcmd.c: Include infcall.h.
|
|
|
|
|
(get_return_value): Add parameter ctx_saver, use it instead of
|
|
|
|
|
stop_registers.
|
|
|
|
|
(print_return_value): Add parameter ctx_saver, pass it.
|
|
|
|
|
(struct finish_command_continuation_args): Add field ctx_saver.
|
|
|
|
|
(finish_command_continuation): Update print_return_value caller.
|
|
|
|
|
(finish_command_continuation_free_arg): Free also ctx_saver.
|
|
|
|
|
(finish_forward): Call dummy_frame_context_saver_setup.
|
|
|
|
|
* inferior.h (struct dummy_frame_context_saver): New declaration.
|
|
|
|
|
(get_return_value): Add parameter ctx_saver.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_pre_stop_hook): Update
|
|
|
|
|
get_return_value caller.
|
|
|
|
|
|
2015-05-13 20:47:32 +02:00
|
|
|
|
2015-05-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dummy-frame.c (struct dummy_frame_dtor_list): New.
|
|
|
|
|
(struct dummy_frame): Replace dtor and dtor_data by dtor_list.
|
|
|
|
|
(remove_dummy_frame): Process dtor_list.
|
|
|
|
|
(pop_dummy_frame): Process dtor_list.
|
|
|
|
|
(register_dummy_frame_dtor): Maintain dtor_list.
|
|
|
|
|
(find_dummy_frame_dtor): Handle dtor_list.
|
|
|
|
|
* dummy-frame.h (register_dummy_frame_dtor, find_dummy_frame_dtor):
|
|
|
|
|
Update comments.
|
|
|
|
|
|
2015-05-13 20:47:32 +02:00
|
|
|
|
2015-05-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-run.c (do_module_cleanup): Add parameter
|
|
|
|
|
registers_valid.
|
|
|
|
|
(compile_object_run): Update do_module_cleanup caller.
|
|
|
|
|
* dummy-frame.c: Include infcall.h.
|
|
|
|
|
(struct dummy_frame): Update dtor comment.
|
|
|
|
|
(remove_dummy_frame): Call dtor.
|
|
|
|
|
(pop_dummy_frame): Update dtor caller.
|
|
|
|
|
* dummy-frame.h (dummy_frame_dtor_ftype): Add parameter
|
|
|
|
|
registers_valid.
|
|
|
|
|
|
2015-05-13 19:48:31 +02:00
|
|
|
|
2015-05-13 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.9.1 released.
|
|
|
|
|
|
2015-05-13 19:31:00 +02:00
|
|
|
|
2015-05-13 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Create "Changes in GDB 7.9.1" section. Move news about
|
|
|
|
|
Xmethods now being able to specify a result type to that new
|
|
|
|
|
sectioin.
|
|
|
|
|
|
2015-05-13 17:57:06 +02:00
|
|
|
|
2015-05-13 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (tui_async_resize_screen): Clear win_resized
|
|
|
|
|
first before resizing the window.
|
2015-05-13 22:26:48 +02:00
|
|
|
|
* tui/tui.c (tui_enable): Likewise.
|
2015-05-13 17:57:06 +02:00
|
|
|
|
|
|
|
|
|
2015-05-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
2015-05-13 15:55:09 +02:00
|
|
|
|
|
|
|
|
|
* dummy-frame.c (struct dummy_frame): Use proper typedef for dtor.
|
|
|
|
|
* dummy-frame.h (dummy_frame_dtor_ftype): Add its comment.
|
|
|
|
|
* infcall.c (call_function_by_hand_dummy): Use proper typedef for
|
|
|
|
|
dummy_dtor parameter.
|
|
|
|
|
* infcall.h: Include dummy-frame.h.
|
|
|
|
|
(call_function_by_hand_dummy_dtor_ftype): Remove.
|
|
|
|
|
(call_function_by_hand_dummy): Use proper typedef for dummy_dtor
|
|
|
|
|
parameter.
|
|
|
|
|
|
2015-04-26 20:13:59 +02:00
|
|
|
|
2015-05-13 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
PR gdb/17820
|
|
|
|
|
* top.c (history_size_setshow_var): Change type to signed.
|
|
|
|
|
Initialize to -2. Update documentation.
|
|
|
|
|
(set_readline_history_size): Define.
|
|
|
|
|
(set_history_size_command): Use it. Remove logic for handling
|
|
|
|
|
out-of-range sizes.
|
|
|
|
|
(init_history): Use set_readline_history_size(). Test for a
|
|
|
|
|
value of -2 instead of 0 when determining whether to set a
|
|
|
|
|
default history size.
|
|
|
|
|
(init_main): Decode the argument of the "size" command as a
|
|
|
|
|
zuinteger_unlimited.
|
|
|
|
|
|
2015-05-12 19:42:49 +02:00
|
|
|
|
2015-05-12 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct file_entry): Tweak comments.
|
|
|
|
|
(get_debug_line_section): Tweak comments.
|
|
|
|
|
|
2015-05-12 18:52:47 +02:00
|
|
|
|
2015-05-12 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Announce fork support in the RSP and support
|
|
|
|
|
for fork debugging in extended mode.
|
|
|
|
|
|
Extended-remote fork catch
This patch implements catchpoints for fork events on extended-remote
Linux targets.
Implementation appeared to be straightforward, requiring four new functions
in remote.c to implement insert/remove of fork/vfork catchpoints. These
functions are essentially stubs that just return 0 ('success') if the
required features are enabled. If the fork events are being reported, then
catchpoints are set and hit.
However, there are some extra issues that arise with catchpoints.
1) Thread creation reporting -- fork catchpoints are hit before the
follow_fork has been completed. When stopped at a fork catchpoint
in the native implementation, the new process is not 'reported'
until after the follow is done. It doesn't show up in the inferiors
list or the threads list. However, in the gdbserver case, an
'info threads' while stopped at a fork catchpoint will retrieve the
new thread info from the target and add it to GDB's data structures,
prior to the follow operations. Because of this premature report,
things on the GDB side eventually get very confused.
So in remote.c:remote_update_thread_list, we check to see if there
are any pending fork parent threads. If there are we remove the
related fork child thread from the thread list sent by the target.
2) Kill process before fork is followed -- on the native side in
linux-nat.c:linux_nat_kill, there is some code to handle the case where
a fork has occurred but follow_fork hasn't been called yet. It does
this by using the last status to determine if a follow is pending, and
if it is, to kill the child task. The use of last_status is fragile
in situations like non-stop mode where other events may have occurred
after the fork event. This patch identifies a fork parent
in remote.c:extended_remote_kill in a way similar to that used in
thread creation reporting above. If one is found, it kills the new
child as well.
Tested on x64 Ubuntu Lucid, native, remote, extended-remote. Tested the
case of killing the forking process before the fork has been followed
manually.
gdb/ChangeLog:
* remote.c (remote_insert_fork_catchpoint): New function.
(remote_remove_fork_catchpoint): New function.
(remote_insert_vfork_catchpoint): New function.
(remote_remove_vfork_catchpoint): New function.
(pending_fork_parent_callback): New function.
(remove_new_fork_child): New function.
(remote_update_thread_list): Call remote_notif_get_pending_events
and remove_new_fork_child.
(extended_remote_kill): Kill fork child when killing the
parent before follow_fork completes.
(init_extended_remote_ops): Initialize target vector with
new fork catchpoint functions.
2015-05-12 18:52:46 +02:00
|
|
|
|
2015-05-12 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_insert_fork_catchpoint): New function.
|
|
|
|
|
(remote_remove_fork_catchpoint): New function.
|
|
|
|
|
(remote_insert_vfork_catchpoint): New function.
|
|
|
|
|
(remote_remove_vfork_catchpoint): New function.
|
|
|
|
|
(pending_fork_parent_callback): New function.
|
|
|
|
|
(remove_new_fork_child): New function.
|
|
|
|
|
(remote_update_thread_list): Call remote_notif_get_pending_events
|
|
|
|
|
and remove_new_fork_child.
|
|
|
|
|
(extended_remote_kill): Kill fork child when killing the
|
|
|
|
|
parent before follow_fork completes.
|
|
|
|
|
(init_extended_remote_ops): Initialize target vector with
|
|
|
|
|
new fork catchpoint functions.
|
|
|
|
|
|
2015-05-12 18:52:45 +02:00
|
|
|
|
2015-05-12 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remove_vfork_event_p): New function.
|
|
|
|
|
(remote_follow_fork): Add vfork event type to event checking.
|
|
|
|
|
(remote_parse_stop_reply): New stop reasons "vfork" and
|
|
|
|
|
"vforkdone" for RSP 'T' Stop Reply Packet.
|
|
|
|
|
|
Extended-remote Linux follow fork
This patch implements basic support for follow-fork and detach-on-fork on
extended-remote Linux targets. Only 'fork' is supported in this patch;
'vfork' support is added n a subsequent patch. This patch depends on
the previous patches in the patch series.
Sufficient extended-remote functionality has been implemented here to pass
gdb.base/multi-forks.exp, as well as gdb.base/foll-fork.exp with the
catchpoint tests commented out. Some other fork tests fail with this
patch because it doesn't provide the architecture support needed for
watchpoint inheritance or fork catchpoints.
The implementation follows the same general structure as for the native
implementation as much as possible.
This implementation includes:
* enabling fork events in linux-low.c in initialize_low and
linux_enable_extended_features
* handling fork events in gdbserver/linux-low.c:handle_extended_wait
- when a fork event occurs in gdbserver, we must do the full creation
of the new process, thread, lwp, and breakpoint lists. This is
required whether or not the new child is destined to be
detached-on-fork, because GDB will make target calls that require all
the structures. In particular we need the breakpoint lists in order
to remove the breakpoints from a detaching child. If we are not
detaching the child we will need all these structures anyway.
- as part of this event handling we store the target_waitstatus in a new
member of the parent lwp_info structure, 'waitstatus'. This
is used to store extended event information for reporting to GDB.
- handle_extended_wait is given a return value, denoting whether the
handled event should be reported to GDB. Previously it had only
handled clone events, which were never reported.
* using a new predicate in gdbserver to control handling of the fork event
(and eventually all extended events) in linux_wait_1. The predicate,
extended_event_reported, checks a target_waitstatus.kind for an
extended ptrace event.
* implementing a new RSP 'T' Stop Reply Packet stop reason: "fork", in
gdbserver/remote-utils.c and remote.c.
* implementing new target and RSP support for target_follow_fork with
target extended-remote. (The RSP components were actually defined in
patch 1, but they see their first use here).
- remote target routine remote_follow_fork, which just sends the 'D;pid'
detach packet to detach the new fork child cleanly. We can't just
call target_detach because the data structures for the forked child
have not been allocated on the host side.
Tested on x64 Ubuntu Lucid, native, remote, extended-remote.
gdb/gdbserver/ChangeLog:
* linux-low.c (handle_extended_wait): Implement return value,
rename argument 'event_child' to 'event_lwp', handle
PTRACE_EVENT_FORK, call internal_error for unrecognized event.
(linux_low_ptrace_options): New function.
(linux_low_filter_event): Call linux_low_ptrace_options,
use different argument fo linux_enable_event_reporting,
use return value from handle_extended_wait.
(extended_event_reported): New function.
(linux_wait_1): Call extended_event_reported and set
status to report fork events.
(linux_write_memory): Add pid to debug message.
(reset_lwp_ptrace_options_callback): New function.
(linux_handle_new_gdb_connection): New function.
(linux_target_ops): Initialize new structure member.
* linux-low.h (struct lwp_info) <waitstatus>: New member.
* lynx-low.c: Initialize new structure member.
* remote-utils.c (prepare_resume_reply): Implement stop reason
"fork" for "T" stop message.
* server.c (handle_query): Call handle_new_gdb_connection.
* server.h (report_fork_events): Declare global flag.
* target.h (struct target_ops) <handle_new_gdb_connection>:
New member.
(target_handle_new_gdb_connection): New macro.
* win32-low.c: Initialize new structure member.
gdb/ChangeLog:
* linux-nat.c (linux_nat_ptrace_options): New function.
(linux_init_ptrace, wait_lwp, linux_nat_filter_event):
Call linux_nat_ptrace_options and use different argument to
linux_enable_event_reporting.
(_initialize_linux_nat): Delete call to
linux_ptrace_set_additional_flags.
* nat/linux-ptrace.c (current_ptrace_options): Rename to
supported_ptrace_options.
(additional_flags): Delete variable.
(linux_check_ptrace_features): Use supported_ptrace_options.
(linux_test_for_tracesysgood, linux_test_for_tracefork):
Likewise, and remove additional_flags check.
(linux_enable_event_reporting): Change 'attached' argument to
'options'. Use supported_ptrace_options.
(ptrace_supports_feature): Change comment. Use
supported_ptrace_options.
(linux_ptrace_set_additional_flags): Delete function.
* nat/linux-ptrace.h (linux_ptrace_set_additional_flags):
Delete function prototype.
* remote.c (remote_fork_event_p): New function.
(remote_detach_pid): New function.
(remote_detach_1): Call remote_detach_pid, don't mourn inferior
if doing detach-on-fork.
(remote_follow_fork): New function.
(remote_parse_stop_reply): Handle new "T" stop reason "fork".
(remote_pid_to_str): Print "process" strings for pid/0/0 ptids.
(init_extended_remote_ops): Initialize to_follow_fork.
2015-05-12 18:52:43 +02:00
|
|
|
|
2015-05-12 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_ptrace_options): New function.
|
|
|
|
|
(linux_init_ptrace, wait_lwp, linux_nat_filter_event):
|
|
|
|
|
Call linux_nat_ptrace_options and use different argument to
|
|
|
|
|
linux_enable_event_reporting.
|
|
|
|
|
(_initialize_linux_nat): Delete call to
|
|
|
|
|
linux_ptrace_set_additional_flags.
|
2015-05-29 18:24:36 +02:00
|
|
|
|
* nat/linux-ptrace.c (current_ptrace_options): Rename to
|
Extended-remote Linux follow fork
This patch implements basic support for follow-fork and detach-on-fork on
extended-remote Linux targets. Only 'fork' is supported in this patch;
'vfork' support is added n a subsequent patch. This patch depends on
the previous patches in the patch series.
Sufficient extended-remote functionality has been implemented here to pass
gdb.base/multi-forks.exp, as well as gdb.base/foll-fork.exp with the
catchpoint tests commented out. Some other fork tests fail with this
patch because it doesn't provide the architecture support needed for
watchpoint inheritance or fork catchpoints.
The implementation follows the same general structure as for the native
implementation as much as possible.
This implementation includes:
* enabling fork events in linux-low.c in initialize_low and
linux_enable_extended_features
* handling fork events in gdbserver/linux-low.c:handle_extended_wait
- when a fork event occurs in gdbserver, we must do the full creation
of the new process, thread, lwp, and breakpoint lists. This is
required whether or not the new child is destined to be
detached-on-fork, because GDB will make target calls that require all
the structures. In particular we need the breakpoint lists in order
to remove the breakpoints from a detaching child. If we are not
detaching the child we will need all these structures anyway.
- as part of this event handling we store the target_waitstatus in a new
member of the parent lwp_info structure, 'waitstatus'. This
is used to store extended event information for reporting to GDB.
- handle_extended_wait is given a return value, denoting whether the
handled event should be reported to GDB. Previously it had only
handled clone events, which were never reported.
* using a new predicate in gdbserver to control handling of the fork event
(and eventually all extended events) in linux_wait_1. The predicate,
extended_event_reported, checks a target_waitstatus.kind for an
extended ptrace event.
* implementing a new RSP 'T' Stop Reply Packet stop reason: "fork", in
gdbserver/remote-utils.c and remote.c.
* implementing new target and RSP support for target_follow_fork with
target extended-remote. (The RSP components were actually defined in
patch 1, but they see their first use here).
- remote target routine remote_follow_fork, which just sends the 'D;pid'
detach packet to detach the new fork child cleanly. We can't just
call target_detach because the data structures for the forked child
have not been allocated on the host side.
Tested on x64 Ubuntu Lucid, native, remote, extended-remote.
gdb/gdbserver/ChangeLog:
* linux-low.c (handle_extended_wait): Implement return value,
rename argument 'event_child' to 'event_lwp', handle
PTRACE_EVENT_FORK, call internal_error for unrecognized event.
(linux_low_ptrace_options): New function.
(linux_low_filter_event): Call linux_low_ptrace_options,
use different argument fo linux_enable_event_reporting,
use return value from handle_extended_wait.
(extended_event_reported): New function.
(linux_wait_1): Call extended_event_reported and set
status to report fork events.
(linux_write_memory): Add pid to debug message.
(reset_lwp_ptrace_options_callback): New function.
(linux_handle_new_gdb_connection): New function.
(linux_target_ops): Initialize new structure member.
* linux-low.h (struct lwp_info) <waitstatus>: New member.
* lynx-low.c: Initialize new structure member.
* remote-utils.c (prepare_resume_reply): Implement stop reason
"fork" for "T" stop message.
* server.c (handle_query): Call handle_new_gdb_connection.
* server.h (report_fork_events): Declare global flag.
* target.h (struct target_ops) <handle_new_gdb_connection>:
New member.
(target_handle_new_gdb_connection): New macro.
* win32-low.c: Initialize new structure member.
gdb/ChangeLog:
* linux-nat.c (linux_nat_ptrace_options): New function.
(linux_init_ptrace, wait_lwp, linux_nat_filter_event):
Call linux_nat_ptrace_options and use different argument to
linux_enable_event_reporting.
(_initialize_linux_nat): Delete call to
linux_ptrace_set_additional_flags.
* nat/linux-ptrace.c (current_ptrace_options): Rename to
supported_ptrace_options.
(additional_flags): Delete variable.
(linux_check_ptrace_features): Use supported_ptrace_options.
(linux_test_for_tracesysgood, linux_test_for_tracefork):
Likewise, and remove additional_flags check.
(linux_enable_event_reporting): Change 'attached' argument to
'options'. Use supported_ptrace_options.
(ptrace_supports_feature): Change comment. Use
supported_ptrace_options.
(linux_ptrace_set_additional_flags): Delete function.
* nat/linux-ptrace.h (linux_ptrace_set_additional_flags):
Delete function prototype.
* remote.c (remote_fork_event_p): New function.
(remote_detach_pid): New function.
(remote_detach_1): Call remote_detach_pid, don't mourn inferior
if doing detach-on-fork.
(remote_follow_fork): New function.
(remote_parse_stop_reply): Handle new "T" stop reason "fork".
(remote_pid_to_str): Print "process" strings for pid/0/0 ptids.
(init_extended_remote_ops): Initialize to_follow_fork.
2015-05-12 18:52:43 +02:00
|
|
|
|
supported_ptrace_options.
|
|
|
|
|
(additional_flags): Delete variable.
|
|
|
|
|
(linux_check_ptrace_features): Use supported_ptrace_options.
|
|
|
|
|
(linux_test_for_tracesysgood, linux_test_for_tracefork):
|
|
|
|
|
Likewise, and remove additional_flags check.
|
|
|
|
|
(linux_enable_event_reporting): Change 'attached' argument to
|
|
|
|
|
'options'. Use supported_ptrace_options.
|
2015-05-29 18:24:36 +02:00
|
|
|
|
(ptrace_supports_feature): Change comment. Use
|
Extended-remote Linux follow fork
This patch implements basic support for follow-fork and detach-on-fork on
extended-remote Linux targets. Only 'fork' is supported in this patch;
'vfork' support is added n a subsequent patch. This patch depends on
the previous patches in the patch series.
Sufficient extended-remote functionality has been implemented here to pass
gdb.base/multi-forks.exp, as well as gdb.base/foll-fork.exp with the
catchpoint tests commented out. Some other fork tests fail with this
patch because it doesn't provide the architecture support needed for
watchpoint inheritance or fork catchpoints.
The implementation follows the same general structure as for the native
implementation as much as possible.
This implementation includes:
* enabling fork events in linux-low.c in initialize_low and
linux_enable_extended_features
* handling fork events in gdbserver/linux-low.c:handle_extended_wait
- when a fork event occurs in gdbserver, we must do the full creation
of the new process, thread, lwp, and breakpoint lists. This is
required whether or not the new child is destined to be
detached-on-fork, because GDB will make target calls that require all
the structures. In particular we need the breakpoint lists in order
to remove the breakpoints from a detaching child. If we are not
detaching the child we will need all these structures anyway.
- as part of this event handling we store the target_waitstatus in a new
member of the parent lwp_info structure, 'waitstatus'. This
is used to store extended event information for reporting to GDB.
- handle_extended_wait is given a return value, denoting whether the
handled event should be reported to GDB. Previously it had only
handled clone events, which were never reported.
* using a new predicate in gdbserver to control handling of the fork event
(and eventually all extended events) in linux_wait_1. The predicate,
extended_event_reported, checks a target_waitstatus.kind for an
extended ptrace event.
* implementing a new RSP 'T' Stop Reply Packet stop reason: "fork", in
gdbserver/remote-utils.c and remote.c.
* implementing new target and RSP support for target_follow_fork with
target extended-remote. (The RSP components were actually defined in
patch 1, but they see their first use here).
- remote target routine remote_follow_fork, which just sends the 'D;pid'
detach packet to detach the new fork child cleanly. We can't just
call target_detach because the data structures for the forked child
have not been allocated on the host side.
Tested on x64 Ubuntu Lucid, native, remote, extended-remote.
gdb/gdbserver/ChangeLog:
* linux-low.c (handle_extended_wait): Implement return value,
rename argument 'event_child' to 'event_lwp', handle
PTRACE_EVENT_FORK, call internal_error for unrecognized event.
(linux_low_ptrace_options): New function.
(linux_low_filter_event): Call linux_low_ptrace_options,
use different argument fo linux_enable_event_reporting,
use return value from handle_extended_wait.
(extended_event_reported): New function.
(linux_wait_1): Call extended_event_reported and set
status to report fork events.
(linux_write_memory): Add pid to debug message.
(reset_lwp_ptrace_options_callback): New function.
(linux_handle_new_gdb_connection): New function.
(linux_target_ops): Initialize new structure member.
* linux-low.h (struct lwp_info) <waitstatus>: New member.
* lynx-low.c: Initialize new structure member.
* remote-utils.c (prepare_resume_reply): Implement stop reason
"fork" for "T" stop message.
* server.c (handle_query): Call handle_new_gdb_connection.
* server.h (report_fork_events): Declare global flag.
* target.h (struct target_ops) <handle_new_gdb_connection>:
New member.
(target_handle_new_gdb_connection): New macro.
* win32-low.c: Initialize new structure member.
gdb/ChangeLog:
* linux-nat.c (linux_nat_ptrace_options): New function.
(linux_init_ptrace, wait_lwp, linux_nat_filter_event):
Call linux_nat_ptrace_options and use different argument to
linux_enable_event_reporting.
(_initialize_linux_nat): Delete call to
linux_ptrace_set_additional_flags.
* nat/linux-ptrace.c (current_ptrace_options): Rename to
supported_ptrace_options.
(additional_flags): Delete variable.
(linux_check_ptrace_features): Use supported_ptrace_options.
(linux_test_for_tracesysgood, linux_test_for_tracefork):
Likewise, and remove additional_flags check.
(linux_enable_event_reporting): Change 'attached' argument to
'options'. Use supported_ptrace_options.
(ptrace_supports_feature): Change comment. Use
supported_ptrace_options.
(linux_ptrace_set_additional_flags): Delete function.
* nat/linux-ptrace.h (linux_ptrace_set_additional_flags):
Delete function prototype.
* remote.c (remote_fork_event_p): New function.
(remote_detach_pid): New function.
(remote_detach_1): Call remote_detach_pid, don't mourn inferior
if doing detach-on-fork.
(remote_follow_fork): New function.
(remote_parse_stop_reply): Handle new "T" stop reason "fork".
(remote_pid_to_str): Print "process" strings for pid/0/0 ptids.
(init_extended_remote_ops): Initialize to_follow_fork.
2015-05-12 18:52:43 +02:00
|
|
|
|
supported_ptrace_options.
|
|
|
|
|
(linux_ptrace_set_additional_flags): Delete function.
|
|
|
|
|
* nat/linux-ptrace.h (linux_ptrace_set_additional_flags):
|
|
|
|
|
Delete function prototype.
|
|
|
|
|
* remote.c (remote_fork_event_p): New function.
|
|
|
|
|
(remote_detach_pid): New function.
|
|
|
|
|
(remote_detach_1): Call remote_detach_pid, don't mourn inferior
|
|
|
|
|
if doing detach-on-fork.
|
|
|
|
|
(remote_follow_fork): New function.
|
|
|
|
|
(remote_parse_stop_reply): Handle new "T" stop reason "fork".
|
|
|
|
|
(remote_pid_to_str): Print "process" strings for pid/0/0 ptids.
|
|
|
|
|
(init_extended_remote_ops): Initialize to_follow_fork.
|
|
|
|
|
|
Identify remote fork event support
This patch implements a mechanism for GDB to determine whether fork
events are supported in gdbserver. This is a preparatory patch for
remote fork and exec event support.
Two new RSP packets are defined to represent fork and vfork event
support. These packets are used just like PACKET_multiprocess_feature
to denote whether the corresponding event is supported. GDB sends
fork-events+ and vfork-events+ to gdbserver to inquire about fork
event support. If the response enables these packets, then GDB
knows that gdbserver supports the corresponding events and will
enable them.
Target functions used to query for support are included along with
each new packet.
In order for gdbserver to know whether the events are supported at the
point where the qSupported packet arrives, the code in nat/linux-ptrace.c
had to be reorganized. Previously it would test for fork/exec event
support, then enable the events using the pid of the inferior. When the
qSupported packet arrives there may not be an inferior. So the mechanism
was split into two parts: a function that checks whether the events are
supported, called when gdbserver starts up, and another that enables the
events when the inferior stops for the first time.
Another gdbserver change was to add some global variables similar to
multi_process, one per new packet. These are used to control whether
the corresponding fork events are enabled. If GDB does not inquire
about the event support in the qSupported packet, then gdbserver will
not set these "report the event" flags. If the flags are not set, the
events are ignored like they were in the past. Thus, gdbserver will
never send fork event notification to an older GDB that doesn't
recognize fork events.
Tested on Ubuntu x64, native/remote/extended-remote, and as part of
subsequent patches in the series.
gdb/gdbserver/ChangeLog:
* linux-low.c (linux_supports_fork_events): New function.
(linux_supports_vfork_events): New function.
(linux_target_ops): Initialize new structure members.
(initialize_low): Call linux_check_ptrace_features.
* lynx-low.c (lynx_target_ops): Initialize new structure
members.
* server.c (report_fork_events, report_vfork_events):
New global flags.
(handle_query): Add new features to qSupported packet and
response.
(captured_main): Initialize new global variables.
* target.h (struct target_ops) <supports_fork_events>:
New member.
<supports_vfork_events>: New member.
(target_supports_fork_events): New macro.
(target_supports_vfork_events): New macro.
* win32-low.c (win32_target_ops): Initialize new structure
members.
gdb/ChangeLog:
* nat/linux-ptrace.c (linux_check_ptrace_features): Change
from static to extern.
* nat/linux-ptrace.h (linux_check_ptrace_features): Declare.
* remote.c (anonymous enum): <PACKET_fork_event_feature,
* PACKET_vfork_event_feature>: New enumeration constants.
(remote_protocol_features): Add table entries for new packets.
(remote_query_supported): Add new feature queries to qSupported
packet.
(_initialize_remote): Exempt new packets from the requirement
to have 'set remote' commands.
2015-05-12 18:52:41 +02:00
|
|
|
|
2015-05-12 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-ptrace.c (linux_check_ptrace_features): Change
|
|
|
|
|
from static to extern.
|
|
|
|
|
* nat/linux-ptrace.h (linux_check_ptrace_features): Declare.
|
|
|
|
|
* remote.c (anonymous enum): <PACKET_fork_event_feature,
|
|
|
|
|
* PACKET_vfork_event_feature>: New enumeration constants.
|
|
|
|
|
(remote_protocol_features): Add table entries for new packets.
|
|
|
|
|
(remote_query_supported): Add new feature queries to qSupported
|
|
|
|
|
packet.
|
|
|
|
|
|
2015-05-12 12:57:52 +02:00
|
|
|
|
2015-05-12 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_inferior): Call exec_file_locate_attach
|
|
|
|
|
for fake PIDs as well as real ones.
|
|
|
|
|
(remote_pid_to_exec_file): Send empty annex if PID is fake.
|
|
|
|
|
|
2015-04-25 16:04:40 +02:00
|
|
|
|
2015-05-09 Siva Chandra Reddy <sivachandra@google.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Python Scripting): Mention the new gdb.Value methods.
|
|
|
|
|
* python/py-value.c (valpy_reference_value): New function.
|
|
|
|
|
(valpy_const_value): Likewise.
|
|
|
|
|
(value_object_methods): Add new methods.
|
|
|
|
|
* value.c (make_cv_value): New function.
|
|
|
|
|
* value.h (make_cv_value): Declare.
|
|
|
|
|
|
2015-05-08 21:43:39 +02:00
|
|
|
|
2015-05-08 Yao Qi <yao@codesourcery.com>
|
|
|
|
|
Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (setup_type_unit_groups): Do NULL pointer check
|
|
|
|
|
to 'lh->include_dirs' before accessing to it.
|
|
|
|
|
(psymtab_include_file_name): Likewise.
|
|
|
|
|
(dwarf_decode_lines_1): Likewise.
|
|
|
|
|
(dwarf_decode_lines): Likewise.
|
|
|
|
|
(file_file_name): Likewise.
|
|
|
|
|
|
2015-05-08 21:34:52 +02:00
|
|
|
|
2015-05-08 Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* nios2-linux-tdep.c (NIOS2_SIGRETURN_TRAMP_ADDR): Define.
|
|
|
|
|
(NIOS2_SIGRETURN_REGSAVE_OFFSET): Define.
|
|
|
|
|
(nios2_linux_rt_sigreturn_init): Adjust base address of
|
|
|
|
|
register save area.
|
|
|
|
|
|
2015-05-08 21:24:41 +02:00
|
|
|
|
2015-05-08 Sandra Loosemore <sandra@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* nios2-tdep.c (nios2_breakpoint_from_pc): Revert to using
|
|
|
|
|
"trap 31" as the breakpoint instruction on all targets.
|
|
|
|
|
|
2015-05-08 17:58:21 +02:00
|
|
|
|
2015-05-08 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infcmd.c (print_return_value): Remove unused declaration.
|
|
|
|
|
|
Problem printing record with array whose upper bound is record component
Consider the following declarations...
type Obj_T (Selected_Flights_Length : Natural) is
record
Selected_Flights : Flights.List.T (1 .. Selected_Flights_Length);
end record;
Broken : Obj_T;
... which defines a variable named "broken" which is a discrimated
record where broken.Selected_Flights is an array whose upper bound
is stored in the record's Selected_Flights_Length component.
Trying to print the value of that object currently fails:
(gdb) print broken
cannot find reference address for offset property
Looking at the debugging info, we see that variable "Broken" is
a reference...
<1><8e3>: Abbrev Number: 21 (DW_TAG_const_type)
<8e4> DW_AT_type : <0x8e8>
<1><8e8>: Abbrev Number: 22 (DW_TAG_reference_type)
<8e9> DW_AT_byte_size : 8
<8ea> DW_AT_type : <0x7ec>
... to ...
<1><7ec>: Abbrev Number: 12 (DW_TAG_structure_type)
<7ed> DW_AT_name : (indirect string, offset: 0xc6d): reprod__obj_t
<7f1> DW_AT_decl_file : 2
<7f2> DW_AT_decl_line : 15
<7f3> DW_AT_GNAT_descriptive_type: <0x87e>
<7f7> DW_AT_sibling : <0x87e>
... which has 2 members, the first one being the discriminant...
<2><7fb>: Abbrev Number: 9 (DW_TAG_member)
<7fc> DW_AT_name : (indirect string, offset: 0xc98): selected_flights_length
<800> DW_AT_decl_file : 2
<801> DW_AT_decl_line : 15
<802> DW_AT_type : <0x807>
<806> DW_AT_data_member_location: 0
... and the second one being the one that causes trouble...
<2><83d>: Abbrev Number: 9 (DW_TAG_member)
<83e> DW_AT_name : (indirect string, offset: 0xd17): selected_flights
<842> DW_AT_decl_file : 2
<843> DW_AT_decl_line : 17
<844> DW_AT_type : <0x815>
<848> DW_AT_data_member_location: 4
The second field's type is an array....
<2><815>: Abbrev Number: 14 (DW_TAG_array_type)
<816> DW_AT_name : (indirect string, offset: 0xd2f): reprod__obj_t__T5sP
<81a> DW_AT_GNAT_descriptive_type: <0x7e1>
<81e> DW_AT_type : <0x748>
<822> DW_AT_sibling : <0x830>
... whose uppper bound is a reference to <0x7fb>...
<3><826>: Abbrev Number: 15 (DW_TAG_subrange_type)
<827> DW_AT_type : <0x830>
<82b> DW_AT_upper_bound : <0x7fb>
<3><82f>: Abbrev Number: 0
Because the upper bound is dynamic, we try to resolve it.
As it happens, the upper-bound resolution for this range type
works fine. What breaks is when we try to resolve this range
type's target type, which is:
<2><830>: Abbrev Number: 16 (DW_TAG_subrange_type)
<831> DW_AT_upper_bound : <0x7fb>
<835> DW_AT_name : (indirect string, offset: 0xc7b): reprod__obj_t__T4s___XDLU_1__selected_flights_length
<839> DW_AT_type : <0x766>
<83d> DW_AT_artificial : 1
It is actually pretty much the same as the first subrange type,
so you might ask why this is causing trouble, when the resolution
of the previous DIE worked like a charm???
Well, for that, we need to backtrack a bit, and notice that, ahead
of the DW_TAG_structure_type's DIE, there is the following DIE:
<1><7e1>: Abbrev Number: 6 (DW_TAG_typedef)
<7e2> DW_AT_name : (indirect string, offset: 0xbae): reprod__obj_t__T5s
<7e6> DW_AT_decl_file : 2
<7e7> DW_AT_decl_line : 17
<7e8> DW_AT_type : <0x849>
... and that DIE references an array type...
<2><849>: Abbrev Number: 14 (DW_TAG_array_type)
<84a> DW_AT_name : (indirect string, offset: 0xbae): reprod__obj_t__T5s
<84e> DW_AT_GNAT_descriptive_type: <0x864>
<852> DW_AT_type : <0x748>
<856> DW_AT_sibling : <0x864>
... whose subrange is...
<3><85a>: Abbrev Number: 15 (DW_TAG_subrange_type)
<85b> DW_AT_type : <0x830>
<85f> DW_AT_upper_bound : <0x7fb>
... where the subrange's base type is the DW_TAG_subrange_type DIE
that is causing problem.
In summary, we process the typedef first, which causes us to process
the second subrange BEFORE we process the struct DIE itself, and
therefore the struct's discriminent (DW_TAG_member #1). As a result,
while trying to handle the reference to that DW_TAG_member #1 as
the upper bound of the second range type, we do...
case DW_AT_data_member_location:
{
[...]
baton->referenced_type = get_die_type (target_die->parent,
target_cu);
... where target_die->parent (DW_TAG_member #1) hasn't been processed
yet, and thus get_die_type returns NULL.
This is what later causes us problems trying to find the right address
to use as the base address for our field, which then triggers the
error message we are seeing.
This patch fixes the issue by calling read_type_die instead of
get_die_type. If the DIE has already been processed, then this
is the same as get_die_type. If not, the it'll get the parent
die to be read, and then get its type.
gdb/ChangeLog:
* dwarf2read.c (attr_to_dynamic_prop)
<DW_AT_data_member_location>: Use read_type_die isntead of
get_die_type.
Tested on x86_64-linux, no regression.
No testcase, unfortunately, as the reproducer was given to us by
a customer, and it's been otherwise surprisingly difficult to
reproduce the same error outside of that reproducer.
2015-03-20 18:57:36 +01:00
|
|
|
|
2015-05-08 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (attr_to_dynamic_prop)
|
|
|
|
|
<DW_AT_data_member_location>: Use read_type_die isntead of
|
|
|
|
|
get_die_type.
|
|
|
|
|
|
[Ada] error trying to call function when parameter is aligner type.
We observed on x86-windows that trying to call a function from
GDB leads to a mysterious "Invalid cast" error. This can be
observed in gdb.ada/float_param.exp:
(gdb) call set_long_double(1, global_small_struct, 4.0)
Invalid cast.
This happens because the 3rd parameter, a Long_Long_Float, is
actually passed wrapped inside a PAD structure. As documented
in GNAT's exp_dbug.ads, PAD types are simple wrappers that GNAT
uses to handle types with size or alignment constraints.
We already support those when printing an object encapsulated
in a PAD type, but not when trying to pass an argument that
is wrapped inside a PAD type. As a result, what happens is that
call_function_by_hand ends up with an argument with a type
that looks incompatible with the expected type of the argument.
The error comes when trying to push the arguments in inferior
memory, while trying to coerce each one of them to their expected
types (in value_arg_coerce).
Note that the problem is not specific to Windows, but so far, this is
the only platform where we've seen this happen.
gdb/ChangeLog:
* ada-lang.c (ada_convert_actual): Add handling of formals
passed inside an aligner type.
Tested on x86-windows (AdaCore testsuite) and x86_64-linux (official
testsuite as well as AdaCore's testsuite).
2015-01-30 14:51:19 +01:00
|
|
|
|
2015-05-08 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_convert_actual): Add handling of formals
|
|
|
|
|
passed inside an aligner type.
|
|
|
|
|
|
2015-05-08 16:19:42 +02:00
|
|
|
|
2015-05-08 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* copyright.py (NOT_FSF_LIST): Remove sim/erc32 entries.
|
|
|
|
|
|
2015-04-26 02:10:30 +02:00
|
|
|
|
2015-05-08 Siva Chandra Reddy <sivachandra@google.com>
|
|
|
|
|
|
|
|
|
|
PR python/18291
|
|
|
|
|
* python/lib/gdb/command/xmethods.py (print_xm_info): Fix typo.
|
|
|
|
|
Print xmethod matcher status.
|
|
|
|
|
|
2015-05-08 12:50:47 +02:00
|
|
|
|
2015-05-08 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-nat.c (fill_gregset): Avoid relying on the PSWA
|
|
|
|
|
register in the regcache when treating the PSWM register, and vice
|
|
|
|
|
versa.
|
|
|
|
|
|
2015-05-07 16:41:43 +02:00
|
|
|
|
2015-05-07 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-thread-db.c (struct thread_db_info)
|
|
|
|
|
<td_ta_map_id2thr_p>: Remove field.
|
|
|
|
|
(try_thread_db_load_1): Remove initialization for the above.
|
|
|
|
|
|
2015-05-07 15:52:59 +02:00
|
|
|
|
2015-05-07 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-thread-db.c (struct thread_db_info)
|
|
|
|
|
<td_thr_validate_p>: Remove field.
|
|
|
|
|
(try_thread_db_load_1): Remove initialization for the above.
|
|
|
|
|
|
2015-05-06 20:59:19 +02:00
|
|
|
|
2015-05-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Support
|
|
|
|
|
mst_text_gnu_ifunc.
|
|
|
|
|
|
2015-05-06 20:57:41 +02:00
|
|
|
|
2015-05-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (compile_to_object): Make the cmd_string parameter
|
|
|
|
|
const. Use new variables for the const compatibility.
|
|
|
|
|
(eval_compile_command): Make the cmd_string parameter const.
|
|
|
|
|
* compile/compile.h (eval_compile_command): Make the cmd_string
|
|
|
|
|
parameter const.
|
|
|
|
|
|
2015-05-06 19:40:52 +02:00
|
|
|
|
2015-05-06 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* defs.h (deprecated_init_ui_hook): Delete. Remove associated
|
|
|
|
|
comment.
|
|
|
|
|
* top.c (deprecated_init_ui_hook): Delete.
|
|
|
|
|
(gdb_init): Remove handling of deprecated_init_ui_hook.
|
|
|
|
|
* interps.c (clear_interpreter_hooks): Remove handling of
|
|
|
|
|
deprecated_init_ui_hook.
|
|
|
|
|
* main.c (captured_main): Update comment.
|
|
|
|
|
|
2015-05-02 13:46:47 +02:00
|
|
|
|
2015-05-06 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* solib.c (_initialize_solib): Add "info dll" alias creation.
|
|
|
|
|
* windows-nat.c (set_windows_aliases): Delete.
|
|
|
|
|
(_initialize_windows_nat): Remove deprecated_init_ui_hook
|
|
|
|
|
assignment.
|
|
|
|
|
* NEWS: Add news entry about "info dll" now being available
|
|
|
|
|
on all platforms.
|
|
|
|
|
|
2015-01-30 13:33:04 +01:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (value_assign_to_component): Reformat and improve
|
|
|
|
|
documentation. Remove all trailing spaces.
|
|
|
|
|
|
out of line functions nested inside inline functions.
This patch improves the handling of out-of-line functions nested
inside functions that have been inlined.
Consider for instance a situation where function Foo_O224_021
has a function Child1 declared in it, which itself has a function
Child2 nested inside Child1. After compiling the program with
optimization on, Child1 gets inlined, but not Child2.
After inserting a breakpoint on Child2, and running the program
until reaching that breakpoint, we get the following backtrace:
% gdb foo_o224_021
(gdb) break foo_o224_021.child1.child2
(gdb) run
[...]
Breakpoint 1, foo_o224_021 () at foo_o224_021.adb:28
28 Child1;
(gdb) bt
#0 0x0000000000402400 in foo_o224_021 () at foo_o224_021.adb:28
#1 0x00000000004027a4 in foo_o224_021.child1 () at foo_o224_021.adb:23
#2 0x00000000004027a4 in foo_o224_021 () at foo_o224_021.adb:28
GDB reports the wrong function name for frame #0. We also get the same
kind of error in the "Breakpoint 1, foo_o224_021 () [...]" message.
In both cases, the function name should be foo_o224_021.child1.child2,
and the parameters should be "s=...".
What happens is that the inlined frame handling does not handle well
the case where an inlined function is calling an out-of-line function
which was declared inside the inlined function's scope.
In particular, looking first at the inlined-frame sniffer when applying
to frame #0:
/* Calculate DEPTH, the number of inlined functions at this
location. */
depth = 0;
cur_block = frame_block;
while (BLOCK_SUPERBLOCK (cur_block))
{
if (block_inlined_p (cur_block))
depth++;
cur_block = BLOCK_SUPERBLOCK (cur_block);
}
What happens is that cur_block starts as the block associated
to child2, which is not inlined. We shoud be stopping here, but
instead, we keep walking the superblock chain, which takes us
all the way to Foo_O224_021's block, via Child2's block. And
since Child1 was inlined, we end up with a depth count of 1,
wrongly making GDB think that frame #0 is an inlined frame.
Same kind of issue inside skip_inline_frames.
The fix is to stop checking for inlined frames as soon as we see
a block corresponding to a function which is not inlined. This is
the behavior we now obtain:
(gdb) run
[...]
Breakpoint 1, foo_o224_021.child1.child2 (s=...) at foo_o224_021.adb:9
9 function Child2 (S : String) return Boolean is
(gdb) bt
#0 0x0000000000402400 in foo_o224_021.child1.child2 (s=...)
at foo_o224_021.adb:9
#1 0x00000000004027a4 in foo_o224_021.child1 () at foo_o224_021.adb:23
#2 0x00000000004027a4 in foo_o224_021 () at foo_o224_021.adb:28
gdb/ChangeLog:
* inline-frame.c (inline_frame_sniffer, skip_inline_frames):
Stop counting inlined frames as soon as an out-of-line function
is found.
gdb/testsuite/ChangeLog:
* gdb.ada/out_of_line_in_inlined.exp: Add run and "bt" tests.
2015-04-21 19:34:04 +02:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* inline-frame.c (inline_frame_sniffer, skip_inline_frames):
|
|
|
|
|
Stop counting inlined frames as soon as an out-of-line function
|
|
|
|
|
is found.
|
|
|
|
|
|
DWARF: cannot break on out-of-line function nested inside inlined function.
Consider the following code, which defines a function, Child2,
which is itself nested inside Child1:
procedure Foo_O224_021 is
O1 : constant Object_Type := Get_Str ("Foo");
procedure Child1 is
O2 : constant Object_Type := Get_Str ("Foo");
function Child2 (S : String) return Boolean is -- STOP
begin
for C of S loop
Do_Nothing (C);
if C = 'o' then
return True;
end if;
end loop;
return False;
end Child2;
R : Boolean;
begin
R := Child2 ("Foo");
R := Child2 ("Bar");
R := Child2 ("Foobar");
end Child1;
begin
Child1;
end Foo_O224_021;
On x86_64-linux, when compiled at -O2, GDB is unable to insert
a breakpoint on Child2:
% gnatmake -g -O2 foo_o224_021
% gdb foo_o224_021
(gdb) b child2
Function "child2" not defined.
(gdb) b foo_o224_021.child1.child2
Function "foo_o224_021.child1.child2" not defined.
The problem is caused by the fact that GDB did not create a symbol
for Child2, and this, in turn, is caused by the fact that the compiler
decided to inline Child1, but not Child2. The DWARF debugging info
first provides an abstract instance tree for Child1...
<3><1b7b>: Abbrev Number: 29 (DW_TAG_subprogram)
<1b7c> DW_AT_name : (indirect string, offset: 0x23f8): foo_o224_021__child1
<1b82> DW_AT_inline : 1 (inlined)
<1b83> DW_AT_sibling : <0x1c01>
... where that subprogram is given the DW_AT_inline attribute.
Inside that function there is a lexical block which has no PC
range (corresponding to the fact that this is the abstract tree):
<4><1b87>: Abbrev Number: 30 (DW_TAG_lexical_block)
... inside which our subprogram Child2 is described:
<5><1b92>: Abbrev Number: 32 (DW_TAG_subprogram)
<1b93> DW_AT_name : (indirect string, offset: 0x2452): foo_o224_021__child1__child2
<1b99> DW_AT_type : <0x1ab1>
<1b9d> DW_AT_low_pc : 0x402300
<1ba5> DW_AT_high_pc : 0x57
[...]
Then, later on, we get the concrete instance tree, starting at:
<3><1c5e>: Abbrev Number: 41 (DW_TAG_inlined_subroutine)
<1c5f> DW_AT_abstract_origin: <0x1b7b>
<1c63> DW_AT_entry_pc : 0x4025fd
<1c6b> DW_AT_ranges : 0x150
... which refers to Child1. One of that inlined subroutine children
is the concrete instance of the empty lexical block we saw above
(in the abstract instance tree), which gives the actual address
range for this inlined instance:
<5><1c7a>: Abbrev Number: 43 (DW_TAG_lexical_block)
<1c7b> DW_AT_abstract_origin: <0x1b87>
<1c7f> DW_AT_ranges : 0x180
This is the DIE which provides the context inside which we can
record Child2. But unfortunately, GDB does not take the abstract
origin into account when handling lexical blocks, causing it
to miss the fact that this block contains some symbols described
in the abstract instance tree. This is the first half of this patch:
modifying GDB to follow DW_AT_abstract_origin attributes for
lexical blocks.
But this not enough to fix the issue, as we're still unable to
break on Child2 with just that change. The second issue can be
traced to the way inherit_abstract_dies determines the list of
DIEs to inherit from. For that, it iterates over all the DIEs in
the concrete instance tree, and finds the list of DIEs from the
abstract instance tree that are not referenced from the concrete
instance tree. As it happens, there is one type of DIE in the
concrete instance tree which does reference Child2's DIE, but
in fact does otherwise define a concrete instance of the reference
DIE; that's (where <0x1b92> is Child2's DIE):
<6><1d3c>: Abbrev Number: 35 (DW_TAG_GNU_call_site)
<1d3d> DW_AT_low_pc : 0x4026a4
<1d45> DW_AT_abstract_origin: <0x1b92>
So, the second part of the patch is to modify inherit_abstract_dies
to ignore DW_TAG_GNU_call_site DIEs when iterating over the concrete
instance tree.
This patch also includes a testcase which can be used to reproduce
the issue. Unfortunately, for it to actually pass, a smal patch in
GCC is also necessary to make sure that GCC provides lexical blocks'
DW_AT_abstract_origin attributes from the concrete tree back to
the abstract tree. We hope to be able to submit and integrate that
patch in the GCC tree soon. Meanwhile, a setup_xfail has been added.
gdb/ChangeLog:
2014-05-05 Pierre-Marie de Rodat <derodat@adacore.com>
* dwarf2read.c (inherit_abstract_dies): Skip
DW_TAG_GNU_call_site dies while inheriting children of an
abstract DIE into a scope.
(read_lexical_block_scope): Inherit abstract DIE's for
lexical scopes.
gdb/testsuite/ChangeLog:
* gdb.ada/out_of_line_in_inlined: New testcase.
2015-04-20 17:53:00 +02:00
|
|
|
|
2014-05-05 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (inherit_abstract_dies): Skip
|
|
|
|
|
DW_TAG_GNU_call_site dies while inheriting children of an
|
|
|
|
|
abstract DIE into a scope.
|
|
|
|
|
(read_lexical_block_scope): Inherit abstract DIE's for
|
|
|
|
|
lexical scopes.
|
|
|
|
|
|
compare object sizes before comparing them with value_contents_eq
This is an issue which I noticed while working on trying to print
an array of variant records. For instance, trying to print "A1",
an array of elements whose size is variable, defined as follow
(see gdb.ada/var_rec_arr testcase):
subtype Small_Type is Integer range 0 .. 10;
type Record_Type (I : Small_Type := 0) is record
S : String (1 .. I);
end record;
function Ident (R : Record_Type) return Record_Type;
type Array_Type is array (Integer range <>) of Record_Type;
A1 : Array_Type := (1 => (I => 0, S => <>),
2 => (I => 1, S => "A"),
3 => (I => 2, S => "AB"));
The debugger sometimes prints the array as follow:
(gdb) print A1
$1 = ((i => 0, s => ""), (i => 0, s => ""), (i => 0, s => ""))
The problem happens inside the part of the loop printing the array's
elements, while trying to count the number of consecutive elements
that have the same value (in order to replace them by the "<repeats
nnn times>" message when the number exceeds a threshold). In particular,
in ada-valprint.c::val_print_packed_array_elements:
elttype = TYPE_TARGET_TYPE (type);
eltlen = TYPE_LENGTH (check_typedef (elttype));
while (...)
{
if (!value_contents_eq (v0, value_embedded_offset (v0),
v1, value_embedded_offset (v1),
eltlen))
break;
The value comparison is performed using value_contents_eq but makes
the assumption that elttype is not dynamic, which is not always true.
In particular, in the case above, elttype is dynamic and therefore
its TYPE_LENGTH changes from element to element.
As it happens in this case, the eltlen is zero, which causes the call
to value_contents_eq to return true, and therefore GDB thinks all
3 elements of the array are equal.
This patch fixes the issue by making sure that both v0 and v1, which
are values whose type we expect to be resolved, have identical lengths.
If not, then the two elements of the array cannot possibly have the
same value and we do not even need to do the binary comparison.
Unfortunately, this is still not enough to get GDB to print the correct
value for our array, because the assumption that v0 and v1 have a type
which has been resolved is actually not met. So, the second part of
the patch modifies the function that constructed the values to make
sure dynamic types do get resolved.
gdb/ChangeLog:
* ada-valprint.c (val_print_packed_array_elements): Delete
variable "len". Add a type-length check when comparing two
consecutive elements of the array. Use the element's actual
length in call to value_contents_eq.
* ada-lang.c (ada_value_primitive_packed_val): Always return
a value whose type has been resolved.
2015-04-30 23:04:25 +02:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-valprint.c (val_print_packed_array_elements): Delete
|
|
|
|
|
variable "len". Add a type-length check when comparing two
|
|
|
|
|
consecutive elements of the array. Use the element's actual
|
|
|
|
|
length in call to value_contents_eq.
|
|
|
|
|
* ada-lang.c (ada_value_primitive_packed_val): Always return
|
|
|
|
|
a value whose type has been resolved.
|
|
|
|
|
|
GDB crash trying to subscript array of variant record.
Consider the following declarations:
subtype Small_Type is Integer range 0 .. 10;
type Record_Type (I : Small_Type := 0) is record
S : String (1 .. I);
end record;
A2 : Array_Type := (1 => (I => 2, S => "AB"),
2 => (I => 1, S => "A"),
3 => (I => 0, S => <>));
Compiled with -fgnat-encodings=minimal, and trying to print
one element of our array, valgrind reports an invalid memory
access. On certain GNU/Linux boxes, malloc even reports it as
well, and causes GDB to crash.
(gdb) print a2(1)
*** glibc detected *** /[...]/gdb:
malloc(): memory corruption: 0x0a30ba48 ***
[crash]
The invalid memory access occurs because of a simple buffer
overflow in ada_value_primitive_packed_val. When this function
is called, it is given a bit_size of 128 (or 16 bytes), which
corresponds to the stride of our array. But the actual size of
each element depends on its value. In particular, A2(1) is a record
whose size is only 6 bytes.
What happens in our example is that we start building a new value
(v) where the element is to be unpacked, with any of its dynamic
properties getting resolved as well. We then unpack the data into
this value's buffer:
unpacked = (unsigned char *) value_contents (v);
[...]
nsrc = len;
[...]
while (nsrc > 0)
{
[...]
unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
[...]
targ += delta;
[...]
nsrc -= 1;
[...]
}
In the loop above, targ starts at zero (for LE architectures),
and len is 16. With delta being +1, we end up iterating 16 times,
writing 16 bytes into a 6-bytes buffer.
This patch fixes the issue by adjusting BIT_SIZE and recomputing
LEN after having resolved our type if the resolved type turns out
to be smaller than bit_size.
gdb/ChangeLog:
* ada-lang.c (ada_value_primitive_packed_val): Recompute
BIT_SIZE and LEN if the size of the resolved type is smaller
than BIT_SIZE * HOST_CHAR_BIT.
2015-04-14 20:55:57 +02:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_value_primitive_packed_val): Recompute
|
|
|
|
|
BIT_SIZE and LEN if the size of the resolved type is smaller
|
|
|
|
|
than BIT_SIZE * HOST_CHAR_BIT.
|
|
|
|
|
|
[Ada] array of variant record subscripting
Consider the following (Ada) array...
A1 : Array_Type := (1 => (I => 0, S => <>),
2 => (I => 1, S => "A"),
3 => (I => 2, S => "AB"));
... where Array_Type is declared as follow:
subtype Small_Type is Integer range 0 .. 10;
type Record_Type (I : Small_Type := 0) is record
S : String (1 .. I);
end record;
type Array_Type is array (Integer range <>) of Record_Type;
Trying to print the value of each element individually does not
always work. Printing the value of the first one does:
(gdb) p a1(1)
$1 = (i => 0, s => "")
But printing the value of the subsequent ones often does not.
For instance:
(gdb) p a1(2)
$2 = (i => 1, s => "") <<<--- s should be "A"
(gdb) p a1(3)
$3 = (i => 2, s => "") <<<--- s should be "AB"
I traced the problem to ada_value_primitive_packed_val,
which is trying to perform the array subscripting by
extracting the value of the corresponding array element
into a buffer where the contents is now byte-aligned.
The element type that ada_value_primitive_packed_val gets passed
is a dynamic type. As it happens, that dynamic type can get resolved
thanks to:
v = value_at (type, value_address (obj));
type = value_type (v);
However, obj represents the array, so the address given in the call
to value_at represents the value of the first element. As a result,
the solution of component S's upper bound always gets resolved based
on the value of component I in the first element of the array, whose
value is 0, thus leading to GDB mistakely resolving the element type
where S's upper bound is always 0.
The proper fix would be to systematically resolve the element type
first. But, this requires us to extract-and-realign the element's
value so as to be able to pass it as "valaddr" to resolve_dynamic_type.
In the meantime, it's easy to make the situation a little better by
passing "value_address (obj) + offset" as the object address. This
only works when BIT_OFFSET is nul, but that should be the case when
the element type is anything but a scalar, which seems to be the only
situation where it seems important to resolve the type now. And we're
not that worse off otherwise.
But we'll try to find a better solution in a separate patch.
gdb/ChangeLog:
* ada-lang.c (ada_value_primitive_packed_val): Use a more
correct address in call to value_at. Adjust call to
value_address accordingly.
2015-04-02 20:09:15 +02:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_value_primitive_packed_val): Use a more
|
|
|
|
|
correct address in call to value_at. Adjust call to
|
|
|
|
|
value_address accordingly.
|
|
|
|
|
|
[Ada] Resolve dynamic type before trying to print it.
This is another required step towards trying to print the value of
an array of variant records. For instance:
A1 : Array_Type := (1 => (I => 0, S => <>),
2 => (I => 1, S => "A"),
3 => (I => 2, S => "AB"));
... where Array_Type is an array of records whose size is variable:
subtype Small_Type is Integer range 0 .. 10;
type Record_Type (I : Small_Type := 0) is record
S : String (1 .. I);
end record;
type Array_Type is array (Integer range <>) of Record_Type;
What happens is that the ada-valprint modules gets passed an array
whose element type is not resolved yet (since each element of the
array needs to be resolved separately). the module then recurses,
and eventually gets called with the first element of the array.
But because the element hasn't been resolved yet, we end up having
trouble printing its value soon after.
This patch fixes the issue by calling resolve_dynamic_type before
trying to print it.
With this patch, GDB is finally able to print the complete value
for variable "A1":
(gdb) p a1
$1 = ((i => 0, s => ""), (i => 1, s => "A"), (i => 2, s => "AB"))
gdb/ChangeLog:
* ada-valprint.c (ada_val_print_1): Resolve TYPE before trying
to print it.
2015-04-02 00:46:54 +02:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-valprint.c (ada_val_print_1): Resolve TYPE before trying
|
|
|
|
|
to print it.
|
|
|
|
|
|
Add valaddr support in dynamic property resolution.
This is the second part of enhancing the debugger to print the value
of arrays of records whose size is variable when only standard DWARF
info is available (no GNAT encoding). For instance:
subtype Small_Type is Integer range 0 .. 10;
type Record_Type (I : Small_Type := 0) is record
S : String (1 .. I);
end record;
type Array_Type is array (Integer range <>) of Record_Type;
A1 : Array_Type := (1 => (I => 0, S => <>),
2 => (I => 1, S => "A"),
3 => (I => 2, S => "AB"));
Currently, GDB prints the following output:
(gdb) p a1
$1 = (
The error happens while the ada-valprint module is trying to print
the value of an element of our array. Because of the fact that
the array's element (type Record_Type) has a variant size, the DWARF
info for our array provide the array's stride:
<1><749>: Abbrev Number: 10 (DW_TAG_array_type)
<74a> DW_AT_name : (indirect string, offset: 0xb6d): pck__T18s
<74e> DW_AT_byte_stride : 16
<74f> DW_AT_type : <0x6ea>
And because our array has a stride, ada-valprint treats it the same
way as packed arrays (see ada-valprint.c::ada_val_print_array):
if (TYPE_FIELD_BITSIZE (type, 0) > 0)
val_print_packed_array_elements (type, valaddr, offset_aligned,
0, stream, recurse,
original_value, options);
The first thing that we should notice in the call above is that
the "valaddr" buffer and the associated offset (OFFSET_ALIGNED)
is passed, but that the corresponding array's address is not.
This can be explained by looking inside val_print_packed_array_elements,
where we see that the function unpacks each element of our array from
the buffer alone (ada_value_primitive_packed_val), and then prints
the resulting artificial value instead:
v0 = ada_value_primitive_packed_val (NULL, valaddr + offset,
(i0 * bitsize) / HOST_CHAR_BIT,
(i0 * bitsize) % HOST_CHAR_BIT,
bitsize, elttype);
[...]
val_print (elttype, value_contents_for_printing (v0),
value_embedded_offset (v0), 0, stream,
recurse + 1, v0, &opts, current_language);
Of particular interest, here, is the fact that we call val_print
with a null address, which is OK, since we're providing a buffer
instead (value_contents_for_printing). Also, providing an address
might not always possible, since packing could place elements at
boundaries that are not byte-aligned.
Things go south when val_print tries to see if there is a pretty-printer
that could be applied. In particular, one of the first things that
the Python pretty-printer does is to create a value using our buffer,
and the given address, which in this case is null (see call to
value_from_contents_and_address in gdbpy_apply_val_pretty_printer).
value_from_contents_and_address, in turn immediately tries to resolve
the type, using the given address, which is null. But, because our
array element is a record containing an array whose bound is the value
of one of its elements (the "s" component), the debugging info for
the array's upper bound is a reference...
<3><71a>: Abbrev Number: 7 (DW_TAG_subrange_type)
<71b> DW_AT_type : <0x724>
<71f> DW_AT_upper_bound : <0x703>
... to component "i" of our record...
<2><703>: Abbrev Number: 5 (DW_TAG_member)
<704> DW_AT_name : i
<706> DW_AT_decl_file : 2
<707> DW_AT_decl_line : 6
<708> DW_AT_type : <0x6d1>
<70c> DW_AT_data_member_location: 0
... where that component is located at offset 0 of the start
of the record. dwarf2_evaluate_property correctly determines
the offset where to load the value of the bound from, but then
tries to read that value from inferior memory using the address
that was given, which is null. See case PROP_ADDR_OFFSET in
dwarf2_evaluate_property:
val = value_at (baton->offset_info.type,
pinfo->addr + baton->offset_info.offset);
This triggers a memory error, which then causes the printing to terminate.
Since there are going to be situations where providing an address
alone is not going to be sufficient (packed arrays where array elements
are not stored at byte boundaries), this patch fixes the issue by
enhancing the type resolution to take both address and data. This
follows the same principle as the val_print module, where both
address and buffer ("valaddr") can be passed as arguments. If the data
has already been fetched from inferior memory (or provided by the
debugging info in some form -- Eg a constant), then use that data
instead of reading it from inferior memory.
Note that this should also be a good step towards being able to handle
dynamic types whose value is stored outside of inferior memory
(Eg: in a register).
With this patch, GDB isn't able to print all of A1, but does perform
a little better:
(gdb) p a1
$1 = ((i => 0, s => , (i => 1, s => , (i => 2, s => )
There is another issue which is independent of this one, and will
therefore be patched separately.
gdb/ChangeLog:
* dwarf2loc.h (struct property_addr_info): Add "valaddr" field.
* dwarf2loc.c (dwarf2_evaluate_property): Add handling of
pinfo->valaddr.
* gdbtypes.h (resolve_dynamic_type): Add "valaddr" parameter.
* gdbtypes.c (resolve_dynamic_struct): Set pinfo.valaddr.
(resolve_dynamic_type_internal): Set pinfo.valaddr.
Add handling of addr_stack->valaddr.
(resolve_dynamic_type): Add "valaddr" parameter.
Set pinfo.valaddr field.
* ada-lang.c (ada_discrete_type_high_bound): Update call to
resolve_dynamic_type.
(ada_discrete_type_low_bound): Likewise.
* findvar.c (default_read_var_value): Likewise.
* value.c (value_from_contents_and_address): Likewise.
2015-04-01 19:00:13 +02:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.h (struct property_addr_info): Add "valaddr" field.
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_property): Add handling of
|
|
|
|
|
pinfo->valaddr.
|
|
|
|
|
* gdbtypes.h (resolve_dynamic_type): Add "valaddr" parameter.
|
|
|
|
|
* gdbtypes.c (resolve_dynamic_struct): Set pinfo.valaddr.
|
|
|
|
|
(resolve_dynamic_type_internal): Set pinfo.valaddr.
|
|
|
|
|
Add handling of addr_stack->valaddr.
|
|
|
|
|
(resolve_dynamic_type): Add "valaddr" parameter.
|
|
|
|
|
Set pinfo.valaddr field.
|
|
|
|
|
* ada-lang.c (ada_discrete_type_high_bound): Update call to
|
|
|
|
|
resolve_dynamic_type.
|
|
|
|
|
(ada_discrete_type_low_bound): Likewise.
|
|
|
|
|
* findvar.c (default_read_var_value): Likewise.
|
|
|
|
|
* value.c (value_from_contents_and_address): Likewise.
|
|
|
|
|
|
preserve the bit stride when resolving an array type.
Consider the following (Ada) variable...
A1 : Array_Type := (1 => (I => 0, S => <>),
2 => (I => 1, S => "A"),
3 => (I => 2, S => "AB"));
... where Array_Type is an array of records whose size is variable:
subtype Small_Type is Integer range 0 .. 10;
type Record_Type (I : Small_Type := 0) is record
S : String (1 .. I);
end record;
type Array_Type is array (Integer range <>) of Record_Type;
Trying to print the value of this array currently results in the following
error:
(gdb) p a1
Cannot access memory at address 0x61c000
What happens in this case, is that the compiler describes our array
as an array with a specific stride (and bounds being static 1..3):
<1><749>: Abbrev Number: 10 (DW_TAG_array_type)
<74a> DW_AT_name : (indirect string, offset: 0xb6d): pck__T18s
<74e> DW_AT_byte_stride : 16
<74f> DW_AT_type : <0x6ea>
<2><757>: Abbrev Number: 11 (DW_TAG_subrange_type)
<758> DW_AT_type : <0x75e>
<75c> DW_AT_upper_bound : 3
This is because we cannot use, in this case, the size of the record
to determine that stride, since the size of the record depends on
its contents. So the compiler helps us by providing that stride.
The problems start when trying to resolve that type. Because the elements
contained in that array type are dynamic, the array itself is considered
dynamic, and thus we end up creating a resolved version of that array.
And during that resolution, we were not handling the case where the array
had a stride. See gdbtypes.c::resolve_dynamic_array...
return create_array_type (copy_type (type),
elt_type,
range_type);
As a result, we created an array whose stride was based on the size
of elt_type, which a record whose size isn't static and irrelevant
regardless.
This patch fixes is by calling create_array_type_with_stride instead.
As it happens, there is another issue for us to be able to print
the value of our array, but those are independent of this patch
and will be handled separately. For now, the patch allows us to
get rid of the first error, and the output is now:
(gdb) p a1
$1 = (
gdb/ChangeLog:
* gdbtypes.c (resolve_dynamic_array): Use
create_array_type_with_stride instead of create_array_type.
2015-03-31 16:59:35 +02:00
|
|
|
|
2015-05-05 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (resolve_dynamic_array): Use
|
|
|
|
|
create_array_type_with_stride instead of create_array_type.
|
|
|
|
|
|
2015-04-30 21:25:49 +02:00
|
|
|
|
2015-04-30 DJ Delorie <dj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* rl78-tdep.c (rl78_analyze_prologue): Pass RL78_ISA_DEFAULT to
|
|
|
|
|
rl78_decode_opcode
|
|
|
|
|
|
2015-04-29 22:24:21 +02:00
|
|
|
|
2015-04-29 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR python/18285
|
|
|
|
|
* NEWS: Document new gdb.XMethodWorker.get_result_type method.
|
|
|
|
|
* eval.c (evaluate_subexp_standard) <OP_FUNCALL>: Handle
|
|
|
|
|
EVAL_AVOID_SIDE_EFFECTS for xmethods.
|
|
|
|
|
* extension-priv.h (struct extension_language_ops)
|
|
|
|
|
<get_xmethod_result_type>: New member.
|
|
|
|
|
* extension.c (get_xmethod_result_type): New function.
|
|
|
|
|
* extension.h (get_xmethod_result_type): Declare.
|
|
|
|
|
* python/py-xmethods.c (get_result_type_method_name): New static
|
|
|
|
|
global.
|
|
|
|
|
(py_get_result_type_method_name): Ditto.
|
|
|
|
|
(gdbpy_get_xmethod_result_type): New function.
|
|
|
|
|
(gdbpy_initialize_xmethods): Initialize py_get_result_type_method_name.
|
|
|
|
|
* python/python-internal.h (gdbpy_get_xmethod_result_type): Declare.
|
|
|
|
|
* python/python.c (python_extension_ops): Add
|
|
|
|
|
gdbpy_get_xmethod_result_type.
|
|
|
|
|
* python/lib/gdb/xmethod.py (XMethodWorker): Add get_result_type.
|
|
|
|
|
* valarith.c (value_x_binop): Handle EVAL_AVOID_SIDE_EFFECTS for
|
|
|
|
|
xmethods.
|
|
|
|
|
(value_x_unop): Ditto.
|
|
|
|
|
* value.c (result_type_of_xmethod): New function.
|
|
|
|
|
* value.h (result_type_of_xmethod): Declare.
|
|
|
|
|
|
2015-04-29 16:20:22 +02:00
|
|
|
|
2015-04-29 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib.c (solib_find_1): Allow fd argument to be NULL.
|
|
|
|
|
(exec_file_find): Update comment.
|
|
|
|
|
(solib_find): Likewise.
|
|
|
|
|
* exec.c (exec_file_locate_attach): Use NULL as fd
|
|
|
|
|
argument to exec_file_find to avoid having to close
|
|
|
|
|
the opened file.
|
|
|
|
|
* infrun.c (follow_exec): Likewise.
|
|
|
|
|
|
2015-04-29 07:14:23 +02:00
|
|
|
|
2015-04-28 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR python/18299
|
|
|
|
|
* python/lib/gdb/printing.py (register_pretty_printer): Handle
|
|
|
|
|
name or __name__ attributes. Handle gdb module as first argument.
|
|
|
|
|
|
2015-04-29 06:53:54 +02:00
|
|
|
|
2015-04-28 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR python/18089
|
|
|
|
|
* python/py-prettyprint.c (print_children): Verify result of children
|
|
|
|
|
iterator. Provide better error message.
|
|
|
|
|
* python/python-internal..h (gdbpy_print_python_errors_p): Declare.
|
|
|
|
|
* python/python.c (gdbpy_print_python_errors_p): New function.
|
|
|
|
|
|
2015-04-29 06:23:24 +02:00
|
|
|
|
2015-04-28 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.h (struct cplus_struct_type) <n_baseclasses>: Fix comment.
|
|
|
|
|
|
2015-04-29 02:41:09 +02:00
|
|
|
|
2015-04-28 Sasha Smundak <asmundak@google.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention gdb.Type.optimized_out method.
|
|
|
|
|
* python/py-type.c (typy_optimized_out): New function.
|
|
|
|
|
|
2015-04-28 17:30:23 +02:00
|
|
|
|
2015-04-28 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c: Include "gdb_wait.h" instead of <sys/wait.h>.
|
|
|
|
|
|
2015-04-24 01:28:32 +02:00
|
|
|
|
2015-04-28 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* utils.c (init_page_info): Set rl_catch_sigwinch to zero.
|
|
|
|
|
(initialize_utils): Move call of init_page_info() to ...
|
|
|
|
|
* top.c (gdb_init): ... here.
|
|
|
|
|
|
2015-04-24 00:36:58 +02:00
|
|
|
|
2015-04-28 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (tui_sigwinch_handler): Remove now-stale comment.
|
|
|
|
|
(tui_sigwinch_handler): Still update our idea of
|
|
|
|
|
the terminal's width and height even when TUI is not active.
|
|
|
|
|
|
2015-04-24 00:31:38 +02:00
|
|
|
|
2015-04-28 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* utils.h (set_screen_width_and_height): Declare.
|
|
|
|
|
* utils.c (set_screen_width_and_height): Define.
|
|
|
|
|
* tui/tui-win.c (tui_update_gdb_sizes): Use it.
|
|
|
|
|
|
2015-04-28 13:21:32 +02:00
|
|
|
|
2015-04-28 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (solist.h): New include.
|
|
|
|
|
(follow_exec): Use exec_file_find to prefix execd_pathname
|
|
|
|
|
with gdb_sysroot.
|
|
|
|
|
|
2015-04-25 16:29:29 +02:00
|
|
|
|
2015-04-28 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-source.c (tui_set_source_content): Avoid calling
|
|
|
|
|
strcpy() when offset is 0.
|
|
|
|
|
|
2015-04-26 03:59:02 +02:00
|
|
|
|
2015-04-28 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
PR gdb/18155
|
|
|
|
|
* tui/tui-data.c (tui_free_window): Don't free the locator
|
|
|
|
|
window when passed an SRC_WIN or a DISASSEM_WIN.
|
|
|
|
|
|
2015-04-24 14:26:50 +02:00
|
|
|
|
2015-04-28 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-data.h (struct tui_win_element): Forward-declare.
|
|
|
|
|
(tui_win_content): Move declaration.
|
|
|
|
|
(struct tui_gen_win_info): Give 'content' field the
|
|
|
|
|
type tui_win_content.
|
|
|
|
|
* tui/tui-data.c (init_content_element): Remove redundant and
|
|
|
|
|
erroneous casts.
|
|
|
|
|
(tui_add_content_elements): Remove erroneous cast.
|
|
|
|
|
* tui/tui-disasm.c (tui_set_disassem_content): Remove redundant
|
|
|
|
|
casts.
|
|
|
|
|
(tui_get_begin_asm_address): Likewise.
|
|
|
|
|
* tui/tui-regs.c (tui_show_registers): Likewise.
|
|
|
|
|
(tui_show_register_group): Likewise.
|
|
|
|
|
(tui_display_registers_from): Likewise.
|
|
|
|
|
(tui_check_register_values): Likewise.
|
|
|
|
|
* tui/tui-source.c (tui_set_source_content): Likewise.
|
|
|
|
|
(tui_set_source_content_nil): Likewise.
|
|
|
|
|
(tui_source_is_displayed): Likewise.
|
|
|
|
|
* tui/tui-stack.c (tui_show_locator_content): Likewise.
|
|
|
|
|
(tui_set_locator_fullname): Likewise.
|
|
|
|
|
(tui_set_locator_info): Likewise.
|
|
|
|
|
(tui_show_frame_info): Likewise.
|
|
|
|
|
* tui/tui-winsource.c (tui_clear_source_content): Likewise.
|
|
|
|
|
(tui_show_source_line): Likewise.
|
|
|
|
|
(tui_horizontal_source_scroll): Likewise.
|
|
|
|
|
(tui_update_breakpoint_info): Likewise.
|
|
|
|
|
(tui_set_exec_info_content): Likewise.
|
|
|
|
|
(tui_show_exec_info_content): Likewise.
|
|
|
|
|
(tui_alloc_source_buffer): Likewise.
|
|
|
|
|
(tui_line_is_displayed): Likewise.
|
|
|
|
|
(tui_addr_is_displayed): Likewise.
|
|
|
|
|
|
2015-04-18 07:00:06 +02:00
|
|
|
|
2015-04-27 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c: (fbsd_wait) [PL_FLAG_EXEC]: Report TARGET_WAITKIND_EXECD
|
|
|
|
|
event if PL_FLAG_EXEC is set.
|
|
|
|
|
[PL_FLAG_EXEC] (fbsd_insert_exec_catchpoint): New function.
|
|
|
|
|
[PL_FLAG_EXEC] (fbsd_remove_exec_catchpoint): New function.
|
|
|
|
|
(fbsd_nat_add_target) [PL_FLAG_EXEC]: Set
|
|
|
|
|
"to_insert_exec_catchpoint" to "fbsd_insert_exec_catchpoint".
|
|
|
|
|
Set "to_remove_exec_catchpoint" to "fbsd_remove_exec_catchpoint".
|
|
|
|
|
|
2015-04-17 22:20:47 +02:00
|
|
|
|
2015-04-27 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c: [PT_LWPINFO] New variable super_wait.
|
|
|
|
|
[TDP_RFPPWAIT] New variable fbsd_pending_children.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_remember_child): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_is_child_pending): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_fetch_kinfo_proc): New function.
|
|
|
|
|
[PT_LWPINFO] (fbsd_wait): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_follow_fork): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_insert_fork_catchpoint): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_remove_fork_catchpoint): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_insert_vfork_catchpoint): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_remove_vfork_catchpoint): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_enable_follow_fork): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_post_startup_inferior): New function.
|
|
|
|
|
[TDP_RFPPWAIT] (fbsd_post_attach): New function.
|
|
|
|
|
(fbsd_nat_add_target) [PT_LWPINFO] Set "to_wait" to
|
|
|
|
|
"fbsd_wait".
|
|
|
|
|
[TDP_RFPPWAIT] Set "to_follow_fork" to "fbsd_follow_fork".
|
|
|
|
|
Set "to_insert_fork_catchpoint" to "fbsd_insert_fork_catchpoint".
|
|
|
|
|
Set "to_remove_fork_catchpoint" to "fbsd_remove_fork_catchpoint".
|
|
|
|
|
Set "to_insert_vfork_catchpoint" to "fbsd_insert_vfork_catchpoint".
|
|
|
|
|
Set "to_remove_vfork_catchpoint" to "fbsd_remove_vfork_catchpoint".
|
|
|
|
|
Set "to_post_startup_inferior" to "fbsd_post_startup_inferior".
|
|
|
|
|
Set "to_post_attach" to "fbsd_post_attach".
|
|
|
|
|
|
2015-04-17 20:02:03 +02:00
|
|
|
|
2015-04-27 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c (fbsd_pid_to_exec_file): Mark static.
|
|
|
|
|
(fbsd_find_memory_regions): Mark static.
|
|
|
|
|
(fbsd_nat_add_target): New function.
|
|
|
|
|
* fbsd-nat.h: Export fbsd_nat_add_target and remove prototypes for
|
|
|
|
|
fbsd_pid_to_exec_file and fbsd_find_memory_regions.
|
|
|
|
|
* amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Use fbsd_nat_add_target.
|
|
|
|
|
* i386fbsd-nat.c (_initialize_i386fbsd_nat): Likewise.
|
|
|
|
|
* ppcfbsd-nat.c (_initialize_ppcfbsd_nat): Likewise.
|
|
|
|
|
* sparc64fbsd-nat.c (_initialize_sparc64fbsd_nat): Likewise.
|
|
|
|
|
|
2015-04-27 12:46:13 +02:00
|
|
|
|
2015-04-27 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* objfiles.c (allocate_objfile): Do not attempt to expand name
|
|
|
|
|
if name is a "target:" filename.
|
|
|
|
|
* auto-load.c (load_auto_scripts_for_objfile): Do not attempt
|
|
|
|
|
to load auto-load scripts for objfiles with "target:" filenames.
|
|
|
|
|
|
2015-04-27 11:38:47 +02:00
|
|
|
|
2015-04-27 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c: Include "elf/s390.h" and "elf-bfd.h".
|
|
|
|
|
(enum s390_vector_abi_kind): New enum.
|
|
|
|
|
(struct gdbarch_tdep)<vector_abi>: New field.
|
|
|
|
|
(s390_effective_inner_type): Add parameter min_size. Stop
|
|
|
|
|
unwrapping if the inner type is smaller than min_size.
|
|
|
|
|
(s390_function_arg_float): Adjust call to
|
|
|
|
|
s390_effective_inner_type.
|
|
|
|
|
(s390_function_arg_vector): New function.
|
|
|
|
|
(s390_function_arg_integer): Adjust comment.
|
|
|
|
|
(struct s390_arg_state)<vr>: New field.
|
|
|
|
|
(s390_handle_arg): Add parameter 'is_unnamed'. Pass vector
|
|
|
|
|
arguments according to vector ABI when appropriate.
|
|
|
|
|
(s390_push_dummy_call): Initialize the argument state's field
|
|
|
|
|
'vr'. Adjust calls to s390_handle_arg.
|
|
|
|
|
(s390_register_return_value): Handle vector return values.
|
|
|
|
|
(s390_return_value): Apply the "register" return value convention
|
|
|
|
|
to a vector when appropriate.
|
|
|
|
|
(s390_gdbarch_init): Initialize tdep->vector_abi.
|
|
|
|
|
* NEWS: Announce S390 vector ABI support.
|
|
|
|
|
|
2015-04-27 11:38:47 +02:00
|
|
|
|
2015-04-27 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (s390_return_value_convention): Remove
|
|
|
|
|
function. Inline its logic...
|
|
|
|
|
(s390_return_value): ...here. Instead, move the handling of the
|
|
|
|
|
"register" return value convention...
|
|
|
|
|
(s390_register_return_value): ...here. New function.
|
|
|
|
|
|
2015-04-27 11:38:46 +02:00
|
|
|
|
2015-04-27 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c
|
|
|
|
|
(is_float_singleton): Remove function. Move the "singleton" part
|
|
|
|
|
of the logic...
|
|
|
|
|
(s390_effective_inner_type): ...here. New function.
|
|
|
|
|
(is_float_like): Remove function. Inline its logic...
|
|
|
|
|
(s390_function_arg_float): ...here.
|
|
|
|
|
(is_pointer_like, is_integer_like, is_struct_like): Remove
|
|
|
|
|
functions. Inline their logic...
|
|
|
|
|
(s390_function_arg_integer): ...here.
|
|
|
|
|
(s390_function_arg_pass_by_reference): Remove function.
|
|
|
|
|
(extend_simple_arg): Remove function.
|
|
|
|
|
(alignment_of): Remove function.
|
|
|
|
|
(struct s390_arg_state): New structure.
|
|
|
|
|
(s390_handle_arg): New function.
|
|
|
|
|
(s390_push_dummy_call): Move parameter placement logic to the new
|
|
|
|
|
function s390_handle_arg. Call it for calculating the stack area
|
|
|
|
|
sizes first, and again for actually writing the parameters.
|
|
|
|
|
|
2015-04-27 11:38:46 +02:00
|
|
|
|
2015-04-27 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (is_power_of_two): Add comment. Return
|
|
|
|
|
false if the argument is zero.
|
|
|
|
|
|
2015-04-27 11:06:07 +02:00
|
|
|
|
2015-04-27 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (template_to_static_fixed_type): Return input type
|
|
|
|
|
when it is already fixed. Cache the input type itself when not
|
|
|
|
|
creating a static fixed copy. Make it explicit that we never
|
|
|
|
|
molestate the input type.
|
|
|
|
|
* gdbtypes.c (resolve_dynamic_struct): Reset the
|
|
|
|
|
TYPE_TARGET_TYPE field for resolved copies.
|
|
|
|
|
|
2015-04-27 11:04:47 +02:00
|
|
|
|
2015-04-27 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_is_tagged_type): Add call to ada_check_typedef.
|
|
|
|
|
(ada_lookup_struct_elt_type): Remove calls to ada_check_typedef.
|
|
|
|
|
(template_to_static_fixed_type): Call ada_check_typedef only
|
|
|
|
|
when necessary.
|
|
|
|
|
|
2015-04-23 23:18:55 +02:00
|
|
|
|
2015-04-24 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-dump.c (srec_dump_command): Add internationalization
|
|
|
|
|
mark ups.
|
|
|
|
|
(ihex_dump_command): Likewise.
|
|
|
|
|
(tekhex_dump_command): Likewise.
|
|
|
|
|
(binary_dump_command): Likewise.
|
|
|
|
|
(binary_append_command): Likewise.
|
|
|
|
|
|
2015-04-22 23:52:36 +02:00
|
|
|
|
2015-04-24 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-dump.c (verilog_cmdlist): New variable.
|
|
|
|
|
(dump_verilog_memory): New function.
|
|
|
|
|
(dump_verilog_value): New function.
|
|
|
|
|
(verilog_dump_command): New function.
|
|
|
|
|
(_initialize_cli_dump): Add new commands to support verilog dump
|
|
|
|
|
format.
|
|
|
|
|
* NEWS: Add entry for "dump verilog".
|
|
|
|
|
|
2015-04-24 16:13:19 +02:00
|
|
|
|
2015-04-24 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (print_gnat_stuff): Do not recurse on the
|
|
|
|
|
descriptive type when there is none.
|
|
|
|
|
|
Explicitly call rl_resize_terminal() in TUI's SIGWINCH handler
In readline 6.3, the semantics of SIGWINCH handling has changed.
When a SIGWINCH signal is raised, readline's rl_sigwinch_handler() now
does not immediately call rl_resize_terminal(). Instead it sets a flag
that is checked by RL_CHECK_SIGNALS() at a point where readline has
control, and calls rl_resize_terminal() if said flag is set.
This change is item (c) in https://cnswww.cns.cwru.edu/php/chet/readline/CHANGES
c. Fixed a bug that caused readline to try and run code to modify its idea
of the screen size in a signal handler context upon receiving a SIGWINCH.
This change in behavior is important to us because TUI's
tui_sigwinch_handler() relies on the assumption that by the time it's
called, readline will have updated its knowledge of the terminal
dimensions via rl_resize_terminal(). Since this assumption no longer
holds true, TUI's SIGWINCH handling does not work correctly with
readline 6.3.
To fix this issue this patch makes TUI explicitly call
rl_resize_terminal() in tui_async_resize_screen() at the point where
current terminal dimensions are needed. (We could call it in
tui_sigwinch_handler too, but since readline avoids doing it, we are
probably safer off avoiding to call it in signal handler context as
well.) After this change, SIGWINCH handling continues to work properly
with both readline 6.2 and 6.3.
Since we no longer need it, we could now explicitly disable readline's
SIGWINCH handler by setting rl_catch_sigwinch to zero early on in the
program startup but I can't seem to find a good spot to place this
assignment (the first call to rl_initialize() occurs in
tui_initialize_readline() so the assignment should occur before then),
and the handler is harmless anyway.
gdb/ChangeLog:
* tui/tui-win.c (tui_async_resize_screen): Call
rl_resize_terminal().
2015-04-23 01:25:55 +02:00
|
|
|
|
2015-04-23 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-win.c (tui_async_resize_screen): Call
|
|
|
|
|
rl_resize_terminal().
|
|
|
|
|
|
windows-nat: Don't change current_event.dwThreadId in handle_output_debug_string()
Using the 'catch-signal' test from the testsuite, on x86_64 Cygwin:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
Failed to resume program execution (ContinueDebugEvent failed, error 87)
(gdb)
This error occurs because when handle_output_debug_string processes a Cygwin
signal message, it re-writes current_event.dwThreadId to reflect the thread that
the signal will be delivered to, which can be different to the thread reporting
the signal.
Altering current_event.dwThreadId() will cause ContinueDebugEvent() to be
applied to the wrong thread and fail.
So, rather than re-writing the thread id in current_event, use the thread
id by returning it.
With this patch applied this test now yields the expected result:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:42
42 raise (SIGHUP); /* third HUP */
(gdb)
gdb/ChangeLog:
2015-04-22 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (handle_output_debug_string): Don't change
current_event.dwThreadId.
(get_windows_debug_event): Use thread_id, rather than relying on
current_event.dwThreadId being changed.
2015-04-15 22:41:25 +02:00
|
|
|
|
2015-04-22 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (handle_output_debug_string): Don't change
|
|
|
|
|
current_event.dwThreadId.
|
|
|
|
|
(get_windows_debug_event): Use thread_id, rather than relying on
|
|
|
|
|
current_event.dwThreadId being changed.
|
|
|
|
|
|
windows-nat: Report an error if ContinueDebugEvent() fails
Using the 'catch-signal' test from the testsuite, on x86_64 Cygwin:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
[hangs]
This is due to a defect in the way Cygwin signals are handled: When
handle_output_debug_string processes a Cygwin signal message, it re-writes
current_event.dwThreadId to reflect the thread that the signal will be delivered
to.
Subsequently, the call to ContinueDebugEvent will fail, because we're trying to
resume the wrong thread. GDB is then stuck waiting forever for another event
that will never come.
This patch doesn't fix the problem, it just adds appropriate error handling.
Using error() seems appropriate here, if ContinueDebugEvent() fails, the
inferior is in an unknown state and we will probably not be debugging it
anymore.
With this patch applied, resuming the execution of the program now yields:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
Failed to resume program execution (ContinueDebugEvent failed, error 87)
(gdb)
gdb/ChangeLog:
2015-04-22 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (windows_continue): Report an error if
ContinueDebugEvent() fails.
2015-04-15 22:37:11 +02:00
|
|
|
|
2015-04-22 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (windows_continue): Report an error if
|
|
|
|
|
ContinueDebugEvent() fails.
|
|
|
|
|
|
2015-04-14 22:05:21 +02:00
|
|
|
|
2015-04-16 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (windows_resume): Fix misspelling in debug output.
|
|
|
|
|
|
2015-04-14 20:28:44 +02:00
|
|
|
|
2015-04-16 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (get_windows_debug_event): Replace retval with
|
|
|
|
|
thread_id throughout. Update stale comment.
|
|
|
|
|
|
2015-04-14 20:42:07 +02:00
|
|
|
|
2015-04-16 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (get_windows_debug_event): Don't use ternary
|
|
|
|
|
conditional operator.
|
|
|
|
|
|
2015-04-21 22:10:08 +02:00
|
|
|
|
2015-04-21 Pierre Muller <muller@sourceware.org>
|
|
|
|
|
|
|
|
|
|
PR pascal/17815
|
|
|
|
|
p-exp.y (yylex): Reorganize code to return the matched pattern
|
|
|
|
|
for a field of this.
|
|
|
|
|
|
2015-04-21 13:07:54 +02:00
|
|
|
|
2015-04-21 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/fileio.h (fileio_to_host_openflags): New declaration.
|
|
|
|
|
* common/fileio.c (fcntl.h): New include.
|
|
|
|
|
(fileio_to_host_openflags): New function, factored out from...
|
|
|
|
|
* inf-child.c (inf_child_fileio_open_flags_to_host): ...here.
|
|
|
|
|
Single use updated.
|
|
|
|
|
|
2015-04-21 08:37:44 +02:00
|
|
|
|
2015-04-21 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* rl78-tdep.c (RL78_SP_ADDR): Define.
|
|
|
|
|
(opc_reg_to_gdb_regnum): New static function.
|
|
|
|
|
(rl78_analyze_prologue): Recognize instructions forming slightly
|
|
|
|
|
more interesting prologues.
|
|
|
|
|
|
2015-04-20 16:06:50 +02:00
|
|
|
|
2015-04-20 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
Revert:
|
|
|
|
|
2015-04-03 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
* gdbtypes.c (is_dynamic_type_internal): Remove special handling of
|
|
|
|
|
TYPE_CODE_REF types so that they are not considered as dynamic
|
|
|
|
|
depending on the referenced type.
|
|
|
|
|
(resolve_dynamic_type_internal): Likewise.
|
|
|
|
|
|
2015-04-20 16:04:28 +02:00
|
|
|
|
2015-04-20 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
Revert:
|
|
|
|
|
2015-04-03 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
* gdbtypes.c (is_dynamic_type_internal): Remove the unused
|
|
|
|
|
"top_level" parameter.
|
|
|
|
|
(resolve_dynamic_type_internal): Remove the unused "top_level"
|
|
|
|
|
parameter. Update call to is_dynamic_type_internal.
|
|
|
|
|
(is_dynamic_type): Update call to is_dynamic_type_internal.
|
|
|
|
|
(resolve_dynamic_range): Update call to
|
|
|
|
|
resolve_dynamic_type_internal.
|
|
|
|
|
(resolve_dynamic_union): Likewise.
|
|
|
|
|
(resolve_dynamic_struct): Likewise.
|
|
|
|
|
(resolve_dynamic_type): Likewise.
|
|
|
|
|
|
2015-04-20 00:34:08 +02:00
|
|
|
|
2015-04-19 Gabriel Krisman Bertazi <gabriel@krisman.be>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (update_dprintf_command_list): Remove duplicated
|
|
|
|
|
xmalloc.
|
|
|
|
|
|
2015-04-20 00:22:32 +02:00
|
|
|
|
2015-04-20 Thomas Schwinge <thomas@codesourcery.com>
|
|
|
|
|
|
2015-04-20 00:31:54 +02:00
|
|
|
|
* reply_mig_hack.awk: Robustify parsing.
|
|
|
|
|
|
2015-04-20 00:22:32 +02:00
|
|
|
|
* reply_mig_hack.awk: Don't bother to declare an intermediate
|
|
|
|
|
function pointer variable.
|
|
|
|
|
|
2015-04-17 19:57:45 +02:00
|
|
|
|
2015-04-17 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* solib-svr4.c (svr4_exec_displacement): Rename outer "displacement"
|
|
|
|
|
to "exec_displacement" to avoid confusion with inner use of the name.
|
|
|
|
|
|
2015-04-17 14:52:44 +02:00
|
|
|
|
2015-04-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (arm_linux_can_use_hw_breakpoint): Return zero
|
|
|
|
|
if HW point of TYPE isn't supported.
|
|
|
|
|
|
2015-04-17 14:45:53 +02:00
|
|
|
|
2015-04-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (target_can_use_hardware_watchpoint): Update comments.
|
|
|
|
|
Remove trailing ";".
|
|
|
|
|
|
2015-04-17 10:47:30 +02:00
|
|
|
|
2015-04-17 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_inferior): New argument try_open_exec.
|
|
|
|
|
If nonzero, attempt to open the inferior's executable file as
|
|
|
|
|
the main executable if no main executable is open already.
|
|
|
|
|
All callers updated.
|
|
|
|
|
* NEWS: Mention that GDB now supports automatic location and
|
|
|
|
|
retrieval of executable + files from remote targets.
|
|
|
|
|
|
2015-04-17 10:47:30 +02:00
|
|
|
|
2015-04-17 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (TARGET_OBJECT_EXEC_FILE): New enum value.
|
|
|
|
|
* remote.c (PACKET_qXfer_exec_file): Likewise.
|
|
|
|
|
(remote_protocol_features): Register the
|
|
|
|
|
"qXfer:exec-file:read" feature.
|
|
|
|
|
(remote_xfer_partial): Handle TARGET_OBJECT_EXEC_FILE.
|
|
|
|
|
(remote_pid_to_exec_file): New function.
|
|
|
|
|
(init_remote_ops): Initialize to_pid_to_exec_file.
|
|
|
|
|
(_initialize_remote): Register new "set/show remote
|
|
|
|
|
pid-to-exec-file-packet" command.
|
|
|
|
|
* NEWS: Announce new qXfer:exec-file:read packet.
|
|
|
|
|
|
2015-04-17 10:47:30 +02:00
|
|
|
|
2015-04-17 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-procfs.h (linux_proc_pid_to_exec_file):
|
|
|
|
|
New declaration.
|
|
|
|
|
* nat/linux-procfs.c (linux_proc_pid_to_exec_file):
|
|
|
|
|
New function, factored out from...
|
|
|
|
|
* linux-nat.c (linux_child_pid_to_exec_file): ...here.
|
|
|
|
|
|
2015-04-17 10:47:30 +02:00
|
|
|
|
2015-04-17 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* exec.c (solist.h): New include.
|
|
|
|
|
(exec_file_locate_attach): Prefix absolute executable
|
|
|
|
|
paths with gdb_sysroot if set.
|
|
|
|
|
* NEWS: Mention that executable paths may be prepended
|
|
|
|
|
with sysroot.
|
|
|
|
|
|
2015-04-17 10:47:30 +02:00
|
|
|
|
2015-04-17 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solist.h (exec_file_find): New declaration.
|
|
|
|
|
* solib.c (solib_find_1): New function, factored out from...
|
|
|
|
|
(solib_find): ...here.
|
|
|
|
|
(exec_file_find): New function.
|
|
|
|
|
|
2015-04-17 10:47:30 +02:00
|
|
|
|
2015-04-17 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbcore.h (exec_file_locate_attach): New declaration.
|
|
|
|
|
* exec.c (exec_file_locate_attach): New function, factored
|
|
|
|
|
out from...
|
|
|
|
|
* infcmd.c (attach_command_post_wait): ...here.
|
|
|
|
|
|
2015-04-02 06:51:25 +02:00
|
|
|
|
2015-04-17 Mike Frysinger <vapier@gentoo.org>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS: Add myself for Blackfin/write-after-approval.
|
|
|
|
|
|
Honour software single step in fallback of displaced stepping
Hi,
When I run gdb.threads/non-stop-fair-events.exp on arm-linux target,
I see the following message in the debugging log,
displaced: breakpoint is gone: Thread 22518, step(1)^M
Sending packet: $vCont;s:p57f3.57f6#9d...
^^^^^^^^^
GDB sends vCont;s by mistake, and GDBserver fails on assert. GDB
doesn't consider software single step in infrun.c:displaced_step_fixup,
/* Go back to what we were trying to do. */
step = currently_stepping (tp);
if (debug_displaced)
fprintf_unfiltered (gdb_stdlog,
"displaced: breakpoint is gone: %s, step(%d)\n",
target_pid_to_str (tp->ptid), step);
target_resume (ptid, step, GDB_SIGNAL_0);
The patch is to let GDB consider software single step here. It fixes
fails in gdb.threads/non-stop-fair-events.exp on arm.
gdb:
2015-04-16 Yao Qi <yao.qi@linaro.org>
* infrun.c (maybe_software_singlestep): Declare.
(displaced_step_fixup): Call maybe_software_singlestep.
2015-04-16 14:48:10 +02:00
|
|
|
|
2015-04-16 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* infrun.c (maybe_software_singlestep): Declare.
|
|
|
|
|
(displaced_step_fixup): Call maybe_software_singlestep.
|
|
|
|
|
|
2015-04-15 23:04:35 +02:00
|
|
|
|
2015-04-15 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* psymtab.c (psym_expand_symtabs_matching): Add QUIT call.
|
|
|
|
|
|
2015-04-15 22:25:42 +02:00
|
|
|
|
2015-04-15 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dw2_expand_symtabs_matching): Add some QUIT calls.
|
|
|
|
|
|
2015-04-15 17:54:33 +02:00
|
|
|
|
2015-04-15 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* python/lib/gdb/command/unwinders.py: Add parentheses.
|
|
|
|
|
|
2015-04-15 16:09:53 +02:00
|
|
|
|
2015-04-15 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_copy_svc): Update debug message.
|
|
|
|
|
|
2015-04-15 15:55:04 +02:00
|
|
|
|
2015-04-15 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_copy_svc): Fix indentation.
|
|
|
|
|
|
2015-04-15 15:34:03 +02:00
|
|
|
|
2015-04-15 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_cleanup_svc): Use
|
|
|
|
|
dsc->insn_size instead of 4.
|
|
|
|
|
|
2015-04-14 13:35:30 +02:00
|
|
|
|
2015-04-14 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* jit.c (mem_bfd_iovec_stat): Zero supplied buffer.
|
|
|
|
|
* minidebug.c (lzma_stat): Likewise.
|
|
|
|
|
* solib-spu.c (spu_bfd_iovec_stat): Likewise.
|
|
|
|
|
* spu-linux-nat.c (spu_bfd_iovec_stat): Likewise.
|
|
|
|
|
|
2015-04-10 20:06:52 +02:00
|
|
|
|
2015-04-13 Stan Shebs <stanshebs@google.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS: Update my email address.
|
|
|
|
|
|
2015-02-21 22:43:30 +01:00
|
|
|
|
2015-04-13 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c (amd64_target_description): New function.
|
|
|
|
|
* amd64-tdep.h: Export amd64_target_description and tdesc_amd64.
|
|
|
|
|
* amd64bsd-nat.c [PT_GETXSTATE_INFO]: New variable amd64bsd_xsave_len.
|
|
|
|
|
(amd64bsd_fetch_inferior_registers) [PT_GETXSTATE_INFO]: Handle
|
|
|
|
|
x86 extended save area.
|
|
|
|
|
(amd64bsd_store_inferior_registers) [PT_GETXSTATE_INFO]: Likewise.
|
|
|
|
|
* amd64bsd-nat.h: Export amd64bsd_xsave_len.
|
|
|
|
|
* amd64fbsd-nat.c (amd64fbsd_read_description): New function.
|
|
|
|
|
(_initialize_amd64fbsd_nat): Set "to_read_description" to
|
|
|
|
|
"amd64fbsd_read_description".
|
|
|
|
|
* amd64fbsd-tdep.c (amd64fbsd_core_read_description): New function.
|
|
|
|
|
(amd64fbsd_supply_xstateregset): New function.
|
|
|
|
|
(amd64fbsd_collect_xstateregset): New function.
|
|
|
|
|
Add "amd64fbsd_xstateregset".
|
|
|
|
|
(amd64fbsd_iterate_over_regset_sections): New function.
|
|
|
|
|
(amd64fbsd_init_abi): Set "xsave_xcr0_offset" to
|
|
|
|
|
"I386_FBSD_XSAVE_XCR0_OFFSET".
|
|
|
|
|
Add "iterate_over_regset_sections" gdbarch method.
|
|
|
|
|
Add "core_read_description" gdbarch method.
|
|
|
|
|
* i386-tdep.c (i386_target_description): New function.
|
|
|
|
|
* i386-tdep.h: Export i386_target_description and tdesc_i386.
|
|
|
|
|
* i386bsd-nat.c [PT_GETXSTATE_INFO]: New variable i386bsd_xsave_len.
|
|
|
|
|
(i386bsd_fetch_inferior_registers) [PT_GETXSTATE_INFO]: Handle
|
|
|
|
|
x86 extended save area.
|
|
|
|
|
(i386bsd_store_inferior_registers) [PT_GETXSTATE_INFO]: Likewise.
|
|
|
|
|
* i386bsd-nat.h: Export i386bsd_xsave_len.
|
|
|
|
|
* i386fbsd-nat.c (i386fbsd_read_description): New function.
|
|
|
|
|
(_initialize_i386fbsd_nat): Set "to_read_description" to
|
|
|
|
|
"i386fbsd_read_description".
|
|
|
|
|
* i386fbsd-tdep.c (i386fbsd_core_read_xcr0): New function.
|
|
|
|
|
(i386fbsd_core_read_description): New function.
|
|
|
|
|
(i386fbsd_supply_xstateregset): New function.
|
|
|
|
|
(i386fbsd_collect_xstateregset): New function.
|
|
|
|
|
Add "i386fbsd_xstateregset".
|
|
|
|
|
(i386fbsd_iterate_over_regset_sections): New function.
|
|
|
|
|
(i386fbsd4_init_abi): Set "xsave_xcr0_offset" to
|
|
|
|
|
"I386_FBSD_XSAVE_XCR0_OFFSET".
|
|
|
|
|
Add "iterate_over_regset_sections" gdbarch method.
|
|
|
|
|
Add "core_read_description" gdbarch method.
|
|
|
|
|
* i386fbsd-tdep.h: New file.
|
|
|
|
|
|
Remove --xdb
Pedro Alves:
The commands that enables aren't even documented in the manual.
Judging from that, I assume that only wdb users would ever really
be using the --xdb switch.
I think it's time to drop "support" for the --xdb switch too. I
looked through the commands that that exposes, the only that looked
potentially interesting was "go", but then it's just an alias
for "tbreak+jump", which can easily be done with "define go...end".
I'd rather free up the "go" name for something potentially
more interesting (either run control, or maybe even unrelated,
e.g., for golang).
gdb/ChangeLog
2015-04-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* NEWS (Changes since GDB 7.9): Add removed -xdb.
* breakpoint.c (command_line_is_silent): Remove xdb_commands
conditional.
(_initialize_breakpoint): Remove xdb_commands for bc, ab, sb, db, ba
and lb.
* cli/cli-cmds.c (_initialize_cli_cmds): Remove xdb_commands for v and
va.
* cli/cli-decode.c (find_command_name_length): Remove xdb_commands
conditional.
* defs.h (xdb_commands): Remove declaration.
* f-valprint.c (_initialize_f_valprint): Remove xdb_commands for lc.
* guile/scm-cmd.c (command_classes): Remove xdb from comment.
* infcmd.c (run_no_args_command, go_command): Remove.
(_initialize_infcmd): Remove xdb_commands for S, go, g, R and lr.
* infrun.c (xdb_handle_command): Remove.
(_initialize_infrun): Remove xdb_commands for lz and z.
* main.c (xdb_commands): Remove variable.
(captured_main): Remove "xdb" from long_options.
(print_gdb_help): Remove --xdb from help.
* python/py-cmd.c (gdbpy_initialize_commands): Remove xdb from comment.
* source.c (_initialize_source): Remove xdb_commands for D, ld, / and ?.
* stack.c (backtrace_full_command, args_plus_locals_info)
(current_frame_command): Remove.
(_initialize_stack): Remove xdb_commands for t, T and l.
* symtab.c (_initialize_symtab): Remove xdb_commands for lf and lg.
* thread.c (_initialize_thread): Remove xdb_commands condition.
* tui/tui-layout.c (tui_toggle_layout_command)
(tui_toggle_split_layout_command, tui_handle_xdb_layout): Remove.
(_initialize_tui_layout): Remove xdb_commands for td and ts.
* tui/tui-regs.c (tui_scroll_regs_forward_command)
(tui_scroll_regs_backward_command): Remove.
(_initialize_tui_regs): Remove xdb_commands for fr, gr, sr, +r and -r.
* tui/tui-win.c (tui_xdb_set_win_height_command): Remove.
(_initialize_tui_win): Remove xdb_commands for U and w.
* utils.c (pagination_on_command, pagination_off_command): Remove.
(initialize_utils): Remove xdb_commands for am and sm.
gdb/doc/ChangeLog
2015-04-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.texinfo (Mode Options): Remove -xdb.
2015-04-11 19:49:03 +02:00
|
|
|
|
2015-04-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 7.9): Add removed -xdb.
|
|
|
|
|
* breakpoint.c (command_line_is_silent): Remove xdb_commands
|
|
|
|
|
conditional.
|
|
|
|
|
(_initialize_breakpoint): Remove xdb_commands for bc, ab, sb, db, ba
|
|
|
|
|
and lb.
|
|
|
|
|
* cli/cli-cmds.c (_initialize_cli_cmds): Remove xdb_commands for v and
|
|
|
|
|
va.
|
|
|
|
|
* cli/cli-decode.c (find_command_name_length): Remove xdb_commands
|
|
|
|
|
conditional.
|
|
|
|
|
* defs.h (xdb_commands): Remove declaration.
|
|
|
|
|
* f-valprint.c (_initialize_f_valprint): Remove xdb_commands for lc.
|
|
|
|
|
* guile/scm-cmd.c (command_classes): Remove xdb from comment.
|
|
|
|
|
* infcmd.c (run_no_args_command, go_command): Remove.
|
|
|
|
|
(_initialize_infcmd): Remove xdb_commands for S, go, g, R and lr.
|
|
|
|
|
* infrun.c (xdb_handle_command): Remove.
|
|
|
|
|
(_initialize_infrun): Remove xdb_commands for lz and z.
|
|
|
|
|
* main.c (xdb_commands): Remove variable.
|
|
|
|
|
(captured_main): Remove "xdb" from long_options.
|
|
|
|
|
(print_gdb_help): Remove --xdb from help.
|
|
|
|
|
* python/py-cmd.c (gdbpy_initialize_commands): Remove xdb from comment.
|
|
|
|
|
* source.c (_initialize_source): Remove xdb_commands for D, ld, / and ?.
|
|
|
|
|
* stack.c (backtrace_full_command, args_plus_locals_info)
|
|
|
|
|
(current_frame_command): Remove.
|
|
|
|
|
(_initialize_stack): Remove xdb_commands for t, T and l.
|
|
|
|
|
* symtab.c (_initialize_symtab): Remove xdb_commands for lf and lg.
|
|
|
|
|
* thread.c (_initialize_thread): Remove xdb_commands condition.
|
|
|
|
|
* tui/tui-layout.c (tui_toggle_layout_command)
|
|
|
|
|
(tui_toggle_split_layout_command, tui_handle_xdb_layout): Remove.
|
|
|
|
|
(_initialize_tui_layout): Remove xdb_commands for td and ts.
|
|
|
|
|
* tui/tui-regs.c (tui_scroll_regs_forward_command)
|
|
|
|
|
(tui_scroll_regs_backward_command): Remove.
|
|
|
|
|
(_initialize_tui_regs): Remove xdb_commands for fr, gr, sr, +r and -r.
|
|
|
|
|
* tui/tui-win.c (tui_xdb_set_win_height_command): Remove.
|
|
|
|
|
(_initialize_tui_win): Remove xdb_commands for U and w.
|
|
|
|
|
* utils.c (pagination_on_command, pagination_off_command): Remove.
|
|
|
|
|
(initialize_utils): Remove xdb_commands for am and sm.
|
|
|
|
|
|
PPC64: Fix step-over-trips-on-watchpoint.exp with displaced stepping on
PPC64 currently fails this test like:
FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: displaced=on: no thread-specific bp: step: step
FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: displaced=on: no thread-specific bp: next: next
FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: displaced=on: no thread-specific bp: continue: continue (the program exited)
FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: displaced=on: with thread-specific bp: step: step
FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: displaced=on: with thread-specific bp: next: next
FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: displaced=on: with thread-specific bp: continue: continue (the program exited)
The problem is that PPC is a non-continuable watchpoints architecture
and the displaced stepping code isn't coping with that correctly. On
such targets/architectures, a watchpoint traps _before_ the
instruction executes/completes. On a watchpoint trap, the PC points
at the instruction that triggers the watchpoint (side effects haven't
happened yet). In order to move past the watchpoint, GDB needs to
remove the watchpoint, single-step, and reinsert the watchpoint, just
like when stepping past a breakpoint.
The trouble is that if GDB is stepping over a breakpoint with
displaced stepping, and the instruction under the breakpoint triggers
a watchpoint, we get the watchpoint SIGTRAP, expecting a finished
(hard or software) step trap. Even though the thread's PC hasn't
advanced yet (must remove watchpoint for that), since we get a
SIGTRAP, displaced_step_fixup thinks the single-step finished
successfuly anyway, and calls gdbarch_displaced_step_fixup, which then
adjusts the thread's registers incorrectly.
The fix is to cancel the displaced step if we trip on a watchpoint.
handle_inferior_event then processes the watchpoint event, and starts
a new step-over, here:
...
/* At this point, we are stopped at an instruction which has
attempted to write to a piece of memory under control of
a watchpoint. The instruction hasn't actually executed
yet. If we were to evaluate the watchpoint expression
now, we would get the old value, and therefore no change
would seem to have occurred.
...
ecs->event_thread->stepping_over_watchpoint = 1;
keep_going (ecs);
return;
...
but this time, since we have a watchpoint to step over, watchpoints
are removed from the target, so the step-over succeeds.
The keep_going/resume changes are necessary because if we're stepping
over a watchpoint, we need to remove it from the target - displaced
stepping doesn't help, the copy of the instruction in the scratch pad
reads/writes to the same addresses, thus triggers the watchpoint
too... So without those changes we keep triggering the watchpoint
forever, never making progress. With non-stop that means we'll need
to pause all threads momentarily, which we can't today. We could
avoid that by removing the watchpoint _only_ from the thread that is
moving past the watchpoint, but GDB is not prepared for that today
either. For remote targets, that would need new packets, so good to
be able to step over it in-line as fallback anyway.
gdb/ChangeLog:
2015-04-10 Pedro Alves <palves@redhat.com>
* infrun.c (displaced_step_fixup): Switch to the event ptid
earlier. If the thread stopped for a watchpoint and the
target/arch has non-continuable watchpoints, cancel the displaced
step.
(resume): Don't start a displaced step if in-line step-over info
is valid.
2015-04-10 14:08:32 +02:00
|
|
|
|
2015-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (displaced_step_fixup): Switch to the event ptid
|
|
|
|
|
earlier. If the thread stopped for a watchpoint and the
|
|
|
|
|
target/arch has non-continuable watchpoints, cancel the displaced
|
|
|
|
|
step.
|
|
|
|
|
(resume): Don't start a displaced step if in-line step-over info
|
|
|
|
|
is valid.
|
|
|
|
|
|
Fix gdb.base/sigstep.exp with displaced stepping on software single-step targets
TL;DR:
When stepping over a breakpoint with displaced stepping, the core must
be notified of all signals, otherwise the displaced step fixup code
confuses a breakpoint trap in the signal handler for the expected trap
indicating the displaced instruction was single-stepped
normally/successfully.
Detailed version:
Running sigstep.exp with displaced stepping on, against my x86
software single-step branch, I got:
FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler: performing step
FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler: performing next
FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler: performing continue
Turning on debug logs, we see:
(gdb) step
infrun: clear_proceed_status_thread (process 32147)
infrun: proceed (addr=0xffffffffffffffff, signal=GDB_SIGNAL_DEFAULT)
infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=1, current thread [process 32147] at 0x400842
displaced: stepping process 32147 now
displaced: saved 0x400622: 49 89 d1 5e 48 89 e2 48 83 e4 f0 50 54 49 c7 c0
displaced: %rip-relative addressing used.
displaced: using temp reg 2, old value 0x3615eafd37, new value 0x40084c
displaced: copy 0x400842->0x400622: c7 81 1c 08 20 00 00 00 00 00
displaced: displaced pc to 0x400622
displaced: run 0x400622: c7 81 1c 08
LLR: Preparing to resume process 32147, 0, inferior_ptid process 32147
LLR: PTRACE_CONT process 32147, 0 (resume event thread)
linux_nat_wait: [process -1], [TARGET_WNOHANG]
LLW: enter
LNW: waitpid(-1, ...) returned 32147, No child processes
LLW: waitpid 32147 received Alarm clock (stopped)
LLW: PTRACE_CONT process 32147, Alarm clock (preempt 'handle')
LNW: waitpid(-1, ...) returned 0, No child processes
LLW: exit (ignore)
sigchld
infrun: target_wait (-1.0.0, status) =
infrun: -1.0.0 [process -1],
infrun: status->kind = ignore
infrun: TARGET_WAITKIND_IGNORE
infrun: prepare_to_wait
linux_nat_wait: [process -1], [TARGET_WNOHANG]
LLW: enter
LNW: waitpid(-1, ...) returned 32147, No child processes
LLW: waitpid 32147 received Trace/breakpoint trap (stopped)
CSBB: process 32147 stopped by software breakpoint
LNW: waitpid(-1, ...) returned 0, No child processes
LLW: trap ptid is process 32147.
LLW: exit
infrun: target_wait (-1.0.0, status) =
infrun: 32147.32147.0 [process 32147],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
displaced: restored process 32147 0x400622
displaced: fixup (0x400842, 0x400622), insn = 0xc7 0x81 ...
displaced: restoring reg 2 to 0x3615eafd37
displaced: relocated %rip from 0x400717 to 0x400937
infrun: stop_pc = 0x400937
infrun: delayed software breakpoint trap, ignoring
infrun: no line number info
infrun: stop_waiting
0x0000000000400937 in __dso_handle ()
1: x/i $pc
=> 0x400937: and %ah,0xa0d64(%rip) # 0x4a16a1
(gdb) FAIL: gdb.base/sigstep.exp: displaced=on: step on breakpoint, to handler: performing step
What should have happened is that the breakpoint hit in the signal
handler should have been presented to the user. But note that
"preempt 'handle'" -- what happened instead is that
displaced_step_fixup confused the breakpoint in the signal handler for
the expected SIGTRAP indicating the displaced instruction was
single-stepped normally/successfully.
This should be affecting all software single-step targets in the same
way.
The fix is to make sure the core sees all signals when displaced
stepping, just like we already must see all signals when doing an
stepping over a breakpoint in-line. We now get:
infrun: target_wait (-1.0.0, status) =
infrun: 570.570.0 [process 570],
infrun: status->kind = stopped, signal = GDB_SIGNAL_ALRM
infrun: TARGET_WAITKIND_STOPPED
displaced: restored process 570 0x400622
infrun: stop_pc = 0x400842
infrun: random signal (GDB_SIGNAL_ALRM)
infrun: signal arrived while stepping over breakpoint
infrun: inserting step-resume breakpoint at 0x400842
infrun: resume (step=0, signal=GDB_SIGNAL_ALRM), trap_expected=0, current thread [process 570] at 0x400842
LLR: Preparing to resume process 570, Alarm clock, inferior_ptid process 570
LLR: PTRACE_CONT process 570, Alarm clock (resume event thread)
infrun: prepare_to_wait
linux_nat_wait: [process -1], [TARGET_WNOHANG]
LLW: enter
LNW: waitpid(-1, ...) returned 0, No child processes
LLW: exit (ignore)
infrun: target_wait (-1.0.0, status) =
infrun: -1.0.0 [process -1],
infrun: status->kind = ignore
sigchld
infrun: TARGET_WAITKIND_IGNORE
infrun: prepare_to_wait
linux_nat_wait: [process -1], [TARGET_WNOHANG]
LLW: enter
LNW: waitpid(-1, ...) returned 570, No child processes
LLW: waitpid 570 received Trace/breakpoint trap (stopped)
CSBB: process 570 stopped by software breakpoint
LNW: waitpid(-1, ...) returned 0, No child processes
LLW: trap ptid is process 570.
LLW: exit
infrun: target_wait (-1.0.0, status) =
infrun: 570.570.0 [process 570],
infrun: status->kind = stopped, signal = GDB_SIGNAL_TRAP
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x400717
infrun: BPSTAT_WHAT_STOP_NOISY
infrun: stop_waiting
Breakpoint 3, handler (sig=14) at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.base/sigstep.c:35
35 done = 1;
Hardware single-step targets already behave this way, because the
Linux backends (both native and gdbserver) always report signals to
the core if the thread was single-stepping.
As mentioned in the new comment in do_target_resume, we can't fix this
by instead making the displaced_step_fixup phase skip fixing up the PC
if the single step stopped somewhere we didn't expect. Here's what
the backtrace would look like if we did that:
Breakpoint 3, handler (sig=14) at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.base/sigstep.c:35
35 done = 1;
1: x/i $pc
=> 0x400717 <handler+7>: movl $0x1,0x200943(%rip) # 0x601064 <done>
(gdb) bt
#0 handler (sig=14) at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.base/sigstep.c:35
#1 <signal handler called>
#2 0x0000000000400622 in _start ()
(gdb) FAIL: gdb.base/sigstep.exp: displaced=on: step on breakpoint, to handler: backtrace
gdb/ChangeLog:
2015-04-10 Pedro Alves <palves@redhat.com>
* infrun.c (displaced_step_in_progress): New function.
(do_target_resume): Advise target to report all signals if
displaced stepping.
gdb/testsuite/ChangeLog:
2015-04-10 Pedro Alves <palves@redhat.com>
* gdb.base/sigstep.exp (breakpoint_to_handler)
(breakpoint_to_handler_entry): New parameter 'displaced'. Use it.
Test "backtrace" in handler.
(breakpoint_over_handler): New parameter 'displaced'. Use it.
(top level): Add new "displaced" test axis to
breakpoint_to_handler, breakpoint_to_handler_entry and
breakpoint_over_handler.
2015-04-10 11:55:09 +02:00
|
|
|
|
2015-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (displaced_step_in_progress): New function.
|
|
|
|
|
(do_target_resume): Advise target to report all signals if
|
|
|
|
|
displaced stepping.
|
|
|
|
|
|
2015-04-10 11:36:23 +02:00
|
|
|
|
2015-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18216
|
|
|
|
|
* infrun.c (process_event_stop_test): Don't assume a step-resume
|
|
|
|
|
is set if tp->stepped_breakpoint is true.
|
|
|
|
|
|
2015-04-10 11:33:01 +02:00
|
|
|
|
2015-04-10 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (install_alu_reg): Update comment.
|
|
|
|
|
(thumb_copy_alu_reg): Remove local variable rn. Update
|
|
|
|
|
debugging message. Use r2 instead of r1 in the modified
|
|
|
|
|
instruction.
|
|
|
|
|
|
PR13858 - Can't do displaced stepping with no symbols
Running break-interp.exp with the target always in non-stop mode trips
on PR13858, as enabling non-stop also enables displaced stepping.
The problem is that when GDB doesn't know where the entry point is, it
doesn't know where to put the displaced stepping scratch pad. The
test added by this commit exercises this. Without the fix, we get:
(gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: break *$pc
set displaced-stepping on
(gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: set displaced-stepping on
stepi
0x00000000004005be in ?? ()
Entry point address is not known.
(gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: stepi
p /x $pc
$2 = 0x4005be
(gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: get after PC
FAIL: gdb.base/step-over-no-symbols.exp: displaced=on: advanced
The fix switches all GNU/Linux ports to get the entry point from
AT_ENTRY in the target auxiliary vector instead of from symbols. This
is currently only done by PPC when Cell debugging is enabled, but I
think all archs should be able to do the same. Note that
ppc_linux_displaced_step_location cached the result, I'm guessing to
avoid constantly re-fetching the auxv out of remote targets, but
that's no longer necessary nowadays, as the auxv blob is itself cached
in the inferior object. The ppc_linux_entry_point_addr global is
obviously bad for multi-process too nowadays.
Tested on x86-64 (-m64/-m32), PPC64 (-m64/-m32) and S/390 GNU/Linux.
Yao tested the new test on ARM as well.
gdb/ChangeLog:
2015-04-10 Pedro Alves <palves@redhat.com>
PR gdb/13858
* amd64-linux-tdep.c (amd64_linux_init_abi_common): Install
linux_displaced_step_location as gdbarch_displaced_step_location
hook.
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
* linux-tdep.c (linux_displaced_step_location): New function,
based on ppc_linux_displaced_step_location.
* linux-tdep.h (linux_displaced_step_location): New declaration.
* ppc-linux-tdep.c (ppc_linux_entry_point_addr): Delete.
(ppc_linux_inferior_created, ppc_linux_displaced_step_location):
Delete.
(ppc_linux_init_abi): Install linux_displaced_step_location as
gdbarch_displaced_step_location hook, even without Cell/B.E..
(_initialize_ppc_linux_tdep): Don't install
ppc_linux_inferior_created as inferior_created observer.
* s390-linux-tdep.c (s390_gdbarch_init): Install
linux_displaced_step_location as gdbarch_displaced_step_location
hook.
gdb/testsuite/
2015-04-10 Pedro Alves <palves@redhat.com>
PR gdb/13858
* gdb.base/step-over-no-symbols.exp: New file.
2015-04-10 11:07:02 +02:00
|
|
|
|
2015-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/13858
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_init_abi_common): Install
|
|
|
|
|
linux_displaced_step_location as gdbarch_displaced_step_location
|
|
|
|
|
hook.
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
|
|
|
|
|
* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
|
|
|
|
|
* linux-tdep.c (linux_displaced_step_location): New function,
|
|
|
|
|
based on ppc_linux_displaced_step_location.
|
|
|
|
|
* linux-tdep.h (linux_displaced_step_location): New declaration.
|
|
|
|
|
* ppc-linux-tdep.c (ppc_linux_entry_point_addr): Delete.
|
|
|
|
|
(ppc_linux_inferior_created, ppc_linux_displaced_step_location):
|
|
|
|
|
Delete.
|
|
|
|
|
(ppc_linux_init_abi): Install linux_displaced_step_location as
|
|
|
|
|
gdbarch_displaced_step_location hook, even without Cell/B.E..
|
|
|
|
|
(_initialize_ppc_linux_tdep): Don't install
|
|
|
|
|
ppc_linux_inferior_created as inferior_created observer.
|
|
|
|
|
* s390-linux-tdep.c (s390_gdbarch_init): Install
|
|
|
|
|
linux_displaced_step_location as gdbarch_displaced_step_location
|
|
|
|
|
hook.
|
|
|
|
|
|
2015-04-09 15:22:56 +02:00
|
|
|
|
2015-04-09 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-remote-fileio.h: Rename to...
|
|
|
|
|
* common/fileio.h: ...this. Update all references.
|
|
|
|
|
(remote_fileio_to_fio_error): Rename to...
|
|
|
|
|
(host_to_fileio_error): ...this.
|
|
|
|
|
(remote_fileio_to_be): Rename to...
|
|
|
|
|
(host_to_bigendian): ...this. Update all callers.
|
|
|
|
|
(remote_fileio_to_fio_uint): Rename to...
|
|
|
|
|
(host_to_fileio_uint): ...this. Update all callers.
|
|
|
|
|
(remote_fileio_to_fio_time): Rename to...
|
|
|
|
|
(host_to_fileio_time): ...this. Update all callers.
|
|
|
|
|
(remote_fileio_to_fio_stat): Rename to...
|
|
|
|
|
(host_to_fileio_stat): ...this.
|
|
|
|
|
Update all references.
|
|
|
|
|
* common/common-remote-fileio.c: Rename to...
|
|
|
|
|
* common/fileio.c: ...this. Update all references.
|
|
|
|
|
(remote_fileio_to_fio_error): Rename to...
|
|
|
|
|
(host_to_fileio_error): ...this. Update all callers.
|
|
|
|
|
(remote_fileio_mode_to_target): Rename to...
|
|
|
|
|
(fileio_mode_pack): ...this. Update all callers.
|
|
|
|
|
(remote_fileio_to_fio_mode): Rename to...
|
|
|
|
|
(host_to_fileio_mode): ...this. Update all callers.
|
|
|
|
|
(remote_fileio_to_fio_ulong): Rename to...
|
|
|
|
|
(host_to_fileio_ulong): ...this. Update all callers.
|
|
|
|
|
(remote_fileio_to_fio_stat): Rename to...
|
|
|
|
|
(host_to_fileio_stat): ...this. Update all callers.
|
|
|
|
|
|
2015-04-09 14:06:41 +02:00
|
|
|
|
2015-04-09 Andy Wingo <wingo@igalia.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-frame.c (gdbscm_frame_read_register): New function.
|
|
|
|
|
(frame_functions): Bind gdbscm_frame_read_register to
|
|
|
|
|
frame-read-register.
|
|
|
|
|
* guile/lib/gdb.scm (frame-read-register): Export.
|
|
|
|
|
|
2015-04-09 11:28:05 +02:00
|
|
|
|
2015-04-09 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-remote-fileio.h (remote_fileio_to_fio_error):
|
|
|
|
|
New declaration.
|
|
|
|
|
* common/common-remote-fileio.c (remote_fileio_to_fio_error):
|
|
|
|
|
New function, factored out the named functions below.
|
|
|
|
|
* inf-child.c (gdb/fileio.h): Remove include.
|
|
|
|
|
(common-remote-fileio.h): New include.
|
|
|
|
|
(inf_child_errno_to_fileio_error): Remove function. Update
|
|
|
|
|
all callers to use remote_fileio_to_fio_error.
|
|
|
|
|
* remote-fileio.c (remote_fileio_errno_to_target): Likewise.
|
|
|
|
|
|
2015-04-09 11:33:22 +02:00
|
|
|
|
2015-04-09 Andy Wingo <wingo@igalia.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Andy Wingo.
|
|
|
|
|
|
2015-04-09 13:43:57 +02:00
|
|
|
|
2015-04-09 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
* acinclude.m4: (GDB_AC_CHECK_BFD): Set ZLIBDIR with $zlibdir.
|
|
|
|
|
Replace $zlibdir with $ZLIBDIR in LDFLAGS.
|
|
|
|
|
* configure: Regenerated.
|
|
|
|
|
|
2015-04-08 19:10:21 +02:00
|
|
|
|
2015-04-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add strtok_r.
|
|
|
|
|
* gnulib/Makefile.in (aclocal_m4_deps): Add import/m4/strtok_r.m4.
|
|
|
|
|
* gnulib/configure, gnulib/config.in, gnulib/aclocal.m4: Regenerate.
|
|
|
|
|
* gnulib/import/Makefile.am: Update.
|
|
|
|
|
* gnulib/import/Makefile.in: Update.
|
|
|
|
|
* gnulib/import/m4/gnulib-cache.m4: Update.
|
|
|
|
|
* gnulib/import/m4/gnulib-comp.m4: Update.
|
|
|
|
|
* gnulib/import/m4/strtok_r.m4: New file.
|
|
|
|
|
* gnulib/import/strtok_r.c: New file.
|
|
|
|
|
|
2015-04-09 11:35:29 +02:00
|
|
|
|
2015-04-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gnulib/update-gnulib.sh (aclocal version check): Filter out
|
|
|
|
|
"called too early to check prototype".
|
|
|
|
|
|
Fix Python completion when using the "complete" command
This patch is related to PR python/16699, and is an improvement over the
patch posted here:
<https://sourceware.org/ml/gdb-patches/2014-03/msg00301.html>
Keith noticed that, when using the "complete" command on GDB to complete
a Python command, some strange things could happen. In order to
understand what can go wrong, I need to explain how the Python
completion mechanism works.
When the user requests a completion of a Python command by using TAB,
GDB will first try to determine the right set of "brkchars" that will be
used when doing the completion. This is done by actually calling the
"complete" method of the Python class. Then, when we already know the
"brkchars" that will be used, we call the "complete" method again, for
the same values.
If you read the thread mentioned above, you will see that one of the
design decisions was to make the "cmdpy_completer_helper" (which is the
function the does the actual calling of the "complete" method) cache the
first result of the completion, since this result will be used in the
second call, to do the actual completion.
The problem is that the "complete" command does not process the
brkchars, and the current Python completion mechanism (improved by the
patch mentioned above) relies on GDB trying to determine the brkchars,
and then doing the completion itself. Therefore, when we use the
"complete" command instead of doing a TAB-completion on GDB, there is a
scenario where we can use the invalid cache of a previous Python command
that was completed before. For example:
(gdb) A <TAB>
(gdb) complete B
B value1
B value10
B value2
B value3
B value4
B value5
B value6
B value7
B value8
B value9
(gdb) B <TAB>
comp1 comp2 comp4 comp6 comp8
comp10 comp3 comp5 comp7 comp9
Here, we see that "complete B " gave a different result than "B <TAB>".
The reason for that is because "A <TAB>" was called before, and its
completion results were "value*", so when GDB tried to "complete B " it
wrongly answered with the results for A. The problem here is using a
wrong cache (A's cache) for completing B.
We tried to come up with a solution that would preserve the caching
mechanism, but it wasn't really possible. So I decided to completely
remove the cache, and doing the method calling twice for every
completion. This is not optimal, but I do not think it will impact
users noticeably.
It is worth mentioning another small issue that I found. The code was
doing:
wordobj = PyUnicode_Decode (word, sizeof (word), host_charset (), NULL);
which is totally wrong, because using "sizeof" here will lead to always
the same result. So I changed this to use "strlen". The testcase also
catches this problem.
Keith kindly expanded the existing testcase to cover the problem
described above, and everything is passing.
gdb/ChangeLog:
2015-04-08 Sergio Durigan Junior <sergiodj@redhat.com>
PR python/16699
* python/py-cmd.c (cmdpy_completer_helper): Adjust function to not
use a caching mechanism. Adjust comments and code to reflect
that. Replace 'sizeof' by 'strlen' when fetching 'wordobj'.
(cmdpy_completer_handle_brkchars): Adjust call to
cmdpy_completer_helper. Call Py_XDECREF for 'resultobj'.
(cmdpy_completer): Likewise.
gdb/testsuite/ChangeLog:
2015-04-08 Keith Seitz <keiths@redhat.com>
PR python/16699
* gdb.python/py-completion.exp: New tests for completion.
* gdb.python/py-completion.py (CompleteLimit1): New class.
(CompleteLimit2): Likewise.
(CompleteLimit3): Likewise.
(CompleteLimit4): Likewise.
(CompleteLimit5): Likewise.
(CompleteLimit6): Likewise.
(CompleteLimit7): Likewise.
2015-04-09 00:27:10 +02:00
|
|
|
|
2015-04-08 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR python/16699
|
|
|
|
|
* python/py-cmd.c (cmdpy_completer_helper): Adjust function to not
|
|
|
|
|
use a caching mechanism. Adjust comments and code to reflect
|
|
|
|
|
that. Replace 'sizeof' by 'strlen' when fetching 'wordobj'.
|
|
|
|
|
(cmdpy_completer_handle_brkchars): Adjust call to
|
|
|
|
|
cmdpy_completer_helper. Call Py_XDECREF for 'resultobj'.
|
|
|
|
|
(cmdpy_completer): Likewise.
|
|
|
|
|
|
2015-04-08 17:04:07 +02:00
|
|
|
|
2015-04-08 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* spu-tdep.c (spu_gdbarch_init): Don't call
|
|
|
|
|
set_gdbarch_cannot_step_breakpoint.
|
|
|
|
|
|
2015-04-07 21:19:07 +02:00
|
|
|
|
2015-04-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-tdep.c (decode_vmflags): Initialize 'saveptr'.
|
|
|
|
|
|
update thread list, delete exited threads
On GNU/Linux, if the running kernel supports clone events, then
linux-thread-db.c defers thread listing to the target beneath:
static void
thread_db_update_thread_list (struct target_ops *ops)
{
...
if (target_has_execution && !thread_db_use_events ())
ops->beneath->to_update_thread_list (ops->beneath);
else
thread_db_update_thread_list_td_ta_thr_iter (ops);
...
}
However, when live debugging, the target beneath, linux-nat.c, does
not implement the to_update_thread_list method. The result is that if
a thread is marked exited (because it can't be deleted right now,
e.g., it was the selected thread), then it won't ever be deleted,
until the process exits or is killed/detached.
A similar thing happens with the remote.c target. Because its
target_update_thread_list implementation skips exited threads when it
walks the current thread list looking for threads that no longer exits
on the target side, using ALL_NON_EXITED_THREADS_SAFE, stale exited
threads are never deleted.
This is not a big deal -- I can't think of any way this might be user
visible, other than gdb's memory growing a tiny bit whenever a thread
gets stuck in exited state. Still, might as well clean things up
properly.
All other targets use prune_threads, so are unaffected.
The fix adds a ALL_THREADS_SAFE macro, that like
ALL_NON_EXITED_THREADS_SAFE, walks the thread list and allows deleting
the iterated thread, and uses that in places that are walking the
thread list in order to delete threads. Actually, after converting
linux-nat.c and remote.c to use this, we find the only other user of
ALL_NON_EXITED_THREADS_SAFE is also walking the list to delete
threads. So we convert that too, and end up deleting
ALL_NON_EXITED_THREADS_SAFE.
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/ChangeLog
2015-04-07 Pedro Alves <palves@redhat.com>
* gdbthread.h (ALL_NON_EXITED_THREADS_SAFE): Rename to ...
(ALL_THREADS_SAFE): ... this, and don't skip exited threads.
(delete_exited_threads): New declaration.
* infrun.c (follow_exec): Use ALL_THREADS_SAFE.
* linux-nat.c (linux_nat_update_thread_list): New function.
(linux_nat_add_target): Install it.
* remote.c (remote_update_thread_list): Use ALL_THREADS_SAFE.
* thread.c (prune_threads): Use ALL_THREADS_SAFE.
(delete_exited_threads): New function.
2015-04-07 16:47:22 +02:00
|
|
|
|
2015-04-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (ALL_NON_EXITED_THREADS_SAFE): Rename to ...
|
|
|
|
|
(ALL_THREADS_SAFE): ... this, and don't skip exited threads.
|
|
|
|
|
(delete_exited_threads): New declaration.
|
|
|
|
|
* infrun.c (follow_exec): Use ALL_THREADS_SAFE.
|
|
|
|
|
* linux-nat.c (linux_nat_update_thread_list): New function.
|
|
|
|
|
(linux_nat_add_target): Install it.
|
|
|
|
|
* remote.c (remote_update_thread_list): Use ALL_THREADS_SAFE.
|
|
|
|
|
* thread.c (prune_threads): Use ALL_THREADS_SAFE.
|
|
|
|
|
(delete_exited_threads): New function.
|
|
|
|
|
|
2015-04-07 12:42:09 +02:00
|
|
|
|
2015-04-07 Pedro Alves <pedro@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (resume) <displaced stepping debug output>: Get the
|
|
|
|
|
leader thread's regcache, not resume_ptid's.
|
|
|
|
|
|
2015-04-06 17:31:46 +02:00
|
|
|
|
2015-04-06 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (hash_symbol_entry): Hash STRUCT_DOMAIN symbols as
|
|
|
|
|
VAR_DOMAIN.
|
|
|
|
|
(symbol_cache_lookup): Clarify use of bsc_ptr, slot_ptr parameters.
|
|
|
|
|
Include symbol domain in debugging output.
|
|
|
|
|
|
Fallback to stub-termcap.c on all hosts
Currently building gdb is impossible without an installed termcap or
curses library. But, GDB already has a very minimal termcap in the
tree to handle this situation for Windows -- gdb/stub-termcap.c. This
patch makes that the fallback for all hosts.
Testing this on GNU/Linux (by simply hacking away the termcap/curses
detection in gdb/configure.ac), we trip on:
../readline/libreadline.a(terminal.o): In function `_rl_init_terminal_io':
/home/pedro/gdb/mygit/src/readline/terminal.c:527: undefined reference to `PC'
/home/pedro/gdb/mygit/src/readline/terminal.c:528: undefined reference to `BC'
/home/pedro/gdb/mygit/src/readline/terminal.c:529: undefined reference to `UP'
/home/pedro/gdb/mygit/src/readline/terminal.c:538: undefined reference to `PC'
/home/pedro/gdb/mygit/src/readline/terminal.c:539: undefined reference to `BC'
/home/pedro/gdb/mygit/src/readline/terminal.c:540: undefined reference to `UP'
These are globals that are normally defined by termcap (or ncurses'
termcap emulation).
Now, we could just define replacements in stub-termcap.c, but
readline/terminal.c (at least the copy in our tree) has this:
#if !defined (__linux__) && !defined (NCURSES_VERSION)
# if defined (__EMX__) || defined (NEED_EXTERN_PC)
extern
# endif /* __EMX__ || NEED_EXTERN_PC */
char PC, *BC, *UP;
#endif /* !__linux__ && !NCURSES_VERSION */
which can result in readline defining the globals too. That will
usually work out in C, given that "-fcommon" is usually the default
for C compilers, but that won't work for C++, or C with -fno-common
(link fails with "multiple definition" errors)...
Mirroring those #ifdef conditions in the stub termcap screams
"brittle" to me -- I can see them changing in latter readline
versions.
Work around that by simply using __attribute__((weak)).
Windows/PE/COFF's do support weak, but not on gcc 3.4 based toolchains
(4.8.x does work). Given the file never needed the variables while it
was Windows-only, just continue not defining them there. All other
supported hosts should support this.
gdb/ChangeLog:
2015-04-06 Pedro Alves <palves@redhat.com>
Bernd Edlinger <bernd.edlinger@hotmail.de>
* configure.ac: Remove the mingw32-specific stub-termcap.o
fallback, and instead fallback to the stub termcap on all hosts.
* configure: Regenerate.
* stub-termcap.c [!__MINGW32__] (PC, BC, UP): Define as weak
symbols.
2015-04-06 13:35:18 +02:00
|
|
|
|
2015-04-06 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Bernd Edlinger <bernd.edlinger@hotmail.de>
|
|
|
|
|
|
|
|
|
|
* configure.ac: Remove the mingw32-specific stub-termcap.o
|
|
|
|
|
fallback, and instead fallback to the stub termcap on all hosts.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* stub-termcap.c [!__MINGW32__] (PC, BC, UP): Define as weak
|
|
|
|
|
symbols.
|
|
|
|
|
|
2015-04-03 14:53:12 +02:00
|
|
|
|
2015-04-03 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (is_dynamic_type_internal): Remove the unused
|
|
|
|
|
"top_level" parameter.
|
|
|
|
|
(resolve_dynamic_type_internal): Remove the unused "top_level"
|
|
|
|
|
parameter. Update call to is_dynamic_type_internal.
|
|
|
|
|
(is_dynamic_type): Update call to is_dynamic_type_internal.
|
|
|
|
|
(resolve_dynamic_range): Update call to
|
|
|
|
|
resolve_dynamic_type_internal.
|
|
|
|
|
(resolve_dynamic_union): Likewise.
|
|
|
|
|
(resolve_dynamic_struct): Likewise.
|
|
|
|
|
(resolve_dynamic_type): Likewise.
|
|
|
|
|
|
2015-04-03 10:40:52 +02:00
|
|
|
|
2015-04-03 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (is_dynamic_type_internal): Remove special handling of
|
|
|
|
|
TYPE_CODE_REF types so that they are not considered as dynamic
|
|
|
|
|
depending on the referenced type.
|
|
|
|
|
(resolve_dynamic_type_internal): Likewise.
|
|
|
|
|
|
2015-04-02 14:41:50 +02:00
|
|
|
|
2015-04-02 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (top_srcdir): New.
|
|
|
|
|
* configure: Regenerated.
|
|
|
|
|
|
2015-04-02 14:38:29 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Announce the new default sysroot of "target:".
|
|
|
|
|
|
2015-04-02 14:38:29 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* main.c (captured_main): Set gdb_sysroot to "target:"
|
|
|
|
|
if not otherwise set.
|
|
|
|
|
|
2015-04-02 14:38:29 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* exec.c (exec_file_attach): Support "target:" filenames.
|
|
|
|
|
|
2015-04-02 14:38:29 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib.c (solib_find): Strip "target:" prefix from sysroot
|
|
|
|
|
if accessing local files.
|
|
|
|
|
|
2015-04-02 14:38:29 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symfile.c (symfile_bfd_open): Reorder to remove duplicated
|
|
|
|
|
checks and error messages.
|
|
|
|
|
|
2015-04-02 14:38:29 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.h (REMOTE_SYSROOT_PREFIX): Remove definition.
|
|
|
|
|
(remote_filename_p): Remove declaration.
|
|
|
|
|
(remote_bfd_open): Likewise.
|
|
|
|
|
* remote.c (remote_bfd_iovec_open): Remove function.
|
|
|
|
|
(remote_bfd_iovec_close): Likewise.
|
|
|
|
|
(remote_bfd_iovec_pread): Likewise.
|
|
|
|
|
(remote_bfd_iovec_stat): Likewise.
|
|
|
|
|
(remote_filename_p): Likewise.
|
|
|
|
|
(remote_bfd_open): Likewise.
|
|
|
|
|
* symfile.h (gdb_bfd_open_maybe_remote): Remove declaration.
|
|
|
|
|
* symfile.c (separate_debug_file_exists): Use gdb_bfd_open.
|
|
|
|
|
(gdb_bfd_open_maybe_remote): Remove function.
|
|
|
|
|
(symfile_bfd_open): Replace remote filename check with
|
|
|
|
|
target filename check.
|
|
|
|
|
(reread_symbols): Use gdb_bfd_open.
|
|
|
|
|
* build-id.c (gdbcore.h): New include.
|
|
|
|
|
(build_id_to_debug_bfd): Use gdb_bfd_open.
|
|
|
|
|
* infcmd.c (attach_command_post_wait): Remove remote filename
|
|
|
|
|
check.
|
|
|
|
|
* solib.c (solib_find): Replace remote-specific handling with
|
|
|
|
|
target-specific handling. Update comments where necessary.
|
|
|
|
|
(solib_bfd_open): Replace remote-specific handling with
|
|
|
|
|
target-specific handling.
|
|
|
|
|
(gdb_sysroot_changed): New function.
|
|
|
|
|
(_initialize_solib): Call the above when gdb_sysroot changes.
|
|
|
|
|
* windows-tdep.c (gdbcore.h): New include.
|
|
|
|
|
(windows_xfer_shared_library): Use gdb_bfd_open.
|
|
|
|
|
|
2015-04-02 14:38:29 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdb/gdb_bfd.h (TARGET_SYSROOT_PREFIX): New definition.
|
|
|
|
|
(is_target_filename): New declaration.
|
|
|
|
|
(gdb_bfd_has_target_filename): Likewise.
|
|
|
|
|
(gdb_bfd_open): Update documentation comment.
|
|
|
|
|
* gdb_bfd.c (target.h): New include.
|
|
|
|
|
(gdb/fileio.h): Likewise.
|
|
|
|
|
(is_target_filename): New function.
|
|
|
|
|
(gdb_bfd_has_target_filename): Likewise.
|
|
|
|
|
(fileio_errno_to_host): Likewise.
|
|
|
|
|
(gdb_bfd_iovec_fileio_open): Likewise.
|
|
|
|
|
(gdb_bfd_iovec_fileio_pread): Likewise.
|
|
|
|
|
(gdb_bfd_iovec_fileio_close): Likewise.
|
|
|
|
|
(gdb_bfd_iovec_fileio_fstat): Likewise.
|
|
|
|
|
(gdb_bfd_open): Use target fileio to access paths prefixed
|
|
|
|
|
with "target:" where necessary.
|
|
|
|
|
|
2015-04-02 14:38:28 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (struct target_ops) <to_filesystem_is_local>:
|
|
|
|
|
New field.
|
|
|
|
|
(target_filesystem_is_local): New macro.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* remote.c (remote_filesystem_is_local): New function.
|
|
|
|
|
(init_remote_ops): Initialize to_filesystem_is_local.
|
|
|
|
|
|
2015-04-02 14:38:28 +02:00
|
|
|
|
2015-04-02 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (struct target_ops) <to_fileio_fstat>: New field.
|
|
|
|
|
(target_fileio_fstat): New declaration.
|
|
|
|
|
* target.c (target_fileio_fstat): New function.
|
|
|
|
|
* inf-child.c (inf_child_fileio_fstat): Likewise.
|
|
|
|
|
(inf_child_target): Initialize to_fileio_fstat.
|
|
|
|
|
* remote.c (init_remote_ops): Likewise.
|
|
|
|
|
|
2015-04-01 20:49:12 +02:00
|
|
|
|
2015-04-01 Sasha Smundak <asmundak@google.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_PYTHON_OBJS): Add py-unwind.o.
|
|
|
|
|
(SUBDIR_PYTHON_SRCS): Add py-unwind.c.
|
|
|
|
|
(py-unwind.o): New recipe.
|
|
|
|
|
* NEWS: mention Python frame unwinding.
|
|
|
|
|
* data-directory/Makefile.in (PYTHON_FILE_LIST): Add
|
|
|
|
|
gdb/unwinder.py and gdb/command/unwinder.py
|
|
|
|
|
* python/lib/gdb/__init__.py (packages): Add frame_unwinders
|
|
|
|
|
list.
|
|
|
|
|
(execute_unwinders): New function.
|
|
|
|
|
* python/lib/gdb/command/unwinders.py: New file.
|
|
|
|
|
* python/lib/gdb/unwinder.py: New file.
|
|
|
|
|
* python/py-objfile.c (objfile_object): Add frame_unwinders field.
|
|
|
|
|
(objfpy_dealloc): Decrement frame_unwinders reference count.
|
|
|
|
|
(objfpy_initialize): Create frame_unwinders list.
|
|
|
|
|
(objfpy_get_frame_unwinders): New function.
|
|
|
|
|
(objfpy_set_frame_unwinders): Ditto.
|
|
|
|
|
(objfile_getset): Add frame_unwinders attribute to Objfile.
|
|
|
|
|
* python/py-progspace.c (pspace_object): Add frame_unwinders field.
|
|
|
|
|
(pspy_dealloc): Decrement frame_unwinders reference count.
|
|
|
|
|
(pspy_initialize): Create frame_unwinders list.
|
|
|
|
|
(pspy_get_frame_unwinders): New function.
|
|
|
|
|
(pspy_set_frame_unwinders): Ditto.
|
|
|
|
|
(pspy_getset): Add frame_unwinders attribute to gdb.Progspace.
|
|
|
|
|
* python/py-unwind.c: New file.
|
|
|
|
|
* python/python-internal.h (pspy_get_name_unwinders): New prototype.
|
|
|
|
|
(objpy_get_frame_unwinders): New prototype.
|
|
|
|
|
(gdbpy_initialize_unwind): New prototype.
|
|
|
|
|
* python/python.c (gdbpy_apply_type_printers): Call
|
|
|
|
|
gdbpy_initialize_unwind.
|
|
|
|
|
|
2015-03-30 17:39:56 +02:00
|
|
|
|
2015-04-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (resume): Check currently_stepping after clearing
|
|
|
|
|
stepped_breakpoint, not before.
|
|
|
|
|
|
2015-03-30 18:02:01 +02:00
|
|
|
|
2015-04-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (print_target_wait_results): Print all the ptid
|
|
|
|
|
elements.
|
|
|
|
|
|
2015-03-26 20:05:40 +01:00
|
|
|
|
2015-04-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (keep_going): Also discard cleanups if inserting
|
|
|
|
|
breakpoints fails.
|
|
|
|
|
|
2015-04-01 15:58:56 +02:00
|
|
|
|
2015-04-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (wait_for_inferior): Install the
|
|
|
|
|
finish_thread_state_cleanup cleanup across the whole function, not
|
|
|
|
|
just around handle_inferior_event.
|
|
|
|
|
|
2015-04-01 16:24:54 +02:00
|
|
|
|
2015-04-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (resume) <step past permanent breakpoint>: Use
|
|
|
|
|
do_target_resume.
|
|
|
|
|
|
2015-03-24 15:24:53 +01:00
|
|
|
|
2015-04-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_handle_extended_wait): Always call set_running.
|
|
|
|
|
|
2015-04-01 14:53:42 +02:00
|
|
|
|
2015-04-01 Pierre-Marie de Rodat <derodat@adacore.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add "Pierre-Marie de Rodat".
|
|
|
|
|
|
Crash on thread id wrap around
On GNU/Linux, if the target reuses the TID of a thread that GDB still
has in its list marked as THREAD_EXITED, GDB crashes, like:
(gdb) continue
Continuing.
src/gdb/thread.c:789: internal-error: set_running: Assertion `tp->state != THREAD_EXITED' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/tid-reuse.exp: continue to breakpoint: after_reuse_time (GDB internal error)
Here:
(top-gdb) bt
#0 internal_error (file=0x953dd8 "src/gdb/thread.c", line=789, fmt=0x953da0 "%s: Assertion `%s' failed.")
at src/gdb/common/errors.c:54
#1 0x0000000000638514 in set_running (ptid=..., running=1) at src/gdb/thread.c:789
#2 0x00000000004bda42 in linux_handle_extended_wait (lp=0x16f5760, status=0, stopping=0) at src/gdb/linux-nat.c:2114
#3 0x00000000004bfa24 in linux_nat_filter_event (lwpid=20570, status=198015) at src/gdb/linux-nat.c:3127
#4 0x00000000004c070e in linux_nat_wait_1 (ops=0xe193d0, ptid=..., ourstatus=0x7fffffffd2c0, target_options=1) at src/gdb/linux-nat.c:3478
#5 0x00000000004c1015 in linux_nat_wait (ops=0xe193d0, ptid=..., ourstatus=0x7fffffffd2c0, target_options=1) at src/gdb/linux-nat.c:3722
#6 0x00000000004c92d2 in thread_db_wait (ops=0xd80b60 <thread_db_ops>, ptid=..., ourstatus=0x7fffffffd2c0, options=1)
at src/gdb/linux-thread-db.c:1525
#7 0x000000000066db43 in delegate_wait (self=0xd80b60 <thread_db_ops>, arg1=..., arg2=0x7fffffffd2c0, arg3=1) at src/gdb/target-delegates.c:116
#8 0x000000000067e54b in target_wait (ptid=..., status=0x7fffffffd2c0, options=1) at src/gdb/target.c:2206
#9 0x0000000000625111 in fetch_inferior_event (client_data=0x0) at src/gdb/infrun.c:3275
#10 0x0000000000648a3b in inferior_event_handler (event_type=INF_REG_EVENT, client_data=0x0) at src/gdb/inf-loop.c:56
#11 0x00000000004c2ecb in handle_target_event (error=0, client_data=0x0) at src/gdb/linux-nat.c:4655
I managed to come up with a test that reliably reproduces this. It
spawns enough threads for the pid number space to wrap around, so
could potentially take a while. On my box that's 4 seconds; on
gcc110, a PPC box which has max_pid set to 65536, it's over 10
seconds. So I made the test compute how long that would take, and cap
the time waited if it would be unreasonably long.
Tested on x86_64 Fedora 20.
gdb/ChangeLog:
2015-04-01 Pedro Alves <palves@redhat.com>
* linux-thread-db.c (record_thread): Readd the thread to gdb's
list if it was marked exited.
gdb/testsuite/ChangeLog:
2015-04-01 Pedro Alves <palves@redhat.com>
* gdb.threads/tid-reuse.c: New file.
* gdb.threads/tid-reuse.exp: New file.
2015-04-01 14:38:06 +02:00
|
|
|
|
2015-04-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-thread-db.c (record_thread): Readd the thread to gdb's
|
|
|
|
|
list if it was marked exited.
|
|
|
|
|
|
2015-04-01 13:55:48 +02:00
|
|
|
|
2015-04-01 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
* configure: Regenerated.
|
|
|
|
|
|
Implement support for checking /proc/PID/coredump_filter
This patch, as the subject says, extends GDB so that it is able to use
the contents of the file /proc/PID/coredump_filter when generating a
corefile. This file contains a bit mask that is a representation of
the different types of memory mappings in the Linux kernel; the user
can choose to dump or not dump a certain type of memory mapping by
enabling/disabling the respective bit in the bit mask. Currently,
here is what is supported:
bit 0 Dump anonymous private mappings.
bit 1 Dump anonymous shared mappings.
bit 2 Dump file-backed private mappings.
bit 3 Dump file-backed shared mappings.
bit 4 (since Linux 2.6.24)
Dump ELF headers.
bit 5 (since Linux 2.6.28)
Dump private huge pages.
bit 6 (since Linux 2.6.28)
Dump shared huge pages.
(This table has been taken from core(5), but you can also read about it
on Documentation/filesystems/proc.txt inside the Linux kernel source
tree).
The default value for this file, used by the Linux kernel, is 0x33,
which means that bits 0, 1, 4 and 5 are enabled. This is also the
default for GDB implemented in this patch, FWIW.
Well, reading the file is obviously trivial. The hard part, mind you,
is how to determine the types of the memory mappings. For that, I
extended the code of gdb/linux-tdep.c:linux_find_memory_regions_full and
made it rely *much more* on the information gathered from
/proc/<PID>/smaps. This file contains a "verbose dump" of the
inferior's memory mappings, and we were not using as much information as
we could from it. If you want to read more about this file, take a look
at the proc(5) manpage (I will also write a blog post soon about
everything I had to learn to get this patch done, and when I it is ready
I will post it here).
With Oleg Nesterov's help, we could improve the current algorithm for
determining whether a memory mapping is anonymous/file-backed,
private/shared. GDB now also respects the MADV_DONTDUMP flag and does
not dump the memory mapping marked as so, and will always dump
"[vsyscall]" or "[vdso]" mappings (just like the Linux kernel).
In a nutshell, what the new code is doing is:
- If the mapping is associated to a file whose name ends with
" (deleted)", or if the file is "/dev/zero", or if it is "/SYSV%08x"
(shared memory), or if there is no file associated with it, or if
the AnonHugePages: or the Anonymous: fields in the /proc/PID/smaps
have contents, then GDB considers this mapping to be anonymous.
There is a special case in this, though: if the memory mapping is a
file-backed one, but *also* contains "Anonymous:" or
"AnonHugePages:" pages, then GDB considers this mapping to be *both*
anonymous and file-backed, just like the Linux kernel does. What
that means is simple: this mapping will be dumped if the user
requested anonymous mappings *or* if the user requested file-backed
mappings to be present in the corefile.
It is worth mentioning that, from all those checks described above,
the most fragile is the one to see if the file name ends with
" (deleted)". This does not necessarily mean that the mapping is
anonymous, because the deleted file associated with the mapping may
have been a hard link to another file, for example. The Linux
kernel checks to see if "i_nlink == 0", but GDB cannot easily do
this check (as it has been discussed, GDB would need to run as root,
and would need to check the contents of the /proc/PID/map_files/
directory in order to determine whether the deleted was a hardlink
or not). Therefore, we made a compromise here, and we assume that
if the file name ends with " (deleted)", then the mapping is indeed
anonymous. FWIW, this is something the Linux kernel could do
better: expose this information in a more direct way.
- If we see the flag "sh" in the VmFlags: field (in /proc/PID/smaps),
then certainly the memory mapping is shared (VM_SHARED). If we have
access to the VmFlags, and we don't see the "sh" there, then
certainly the mapping is private. However, older Linux kernels (see
the code for more details) do not have the VmFlags field; in that
case, we use another heuristic: if we see 'p' in the permission
flags, then we assume that the mapping is private, even though the
presence of the 's' flag there would mean VM_MAYSHARE, which means
the mapping could still be private. This should work OK enough,
however.
Finally, it is worth mentioning that I added a new command, 'set
use-coredump-filter on/off'. When it is 'on', it will read the
coredump_filter' file (if it exists) and use its value; otherwise, it
will use the default value mentioned above (0x33) to decide which memory
mappings to dump.
gdb/ChangeLog:
2015-03-31 Sergio Durigan Junior <sergiodj@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
Oleg Nesterov <oleg@redhat.com>
PR corefiles/16092
* linux-tdep.c: Include 'gdbcmd.h' and 'gdb_regex.h'.
New enum identifying the various options of the coredump_filter
file.
(struct smaps_vmflags): New struct.
(use_coredump_filter): New variable.
(decode_vmflags): New function.
(mapping_is_anonymous_p): Likewise.
(dump_mapping_p): Likewise.
(linux_find_memory_regions_full): New variables
'coredumpfilter_name', 'coredumpfilterdata', 'pid', 'filterflags'.
Removed variable 'modified'. Read /proc/<PID>/smaps file; improve
parsing of its information. Implement memory mapping filtering
based on its contents.
(show_use_coredump_filter): New function.
(_initialize_linux_tdep): New command 'set use-coredump-filter'.
* NEWS: Mention the possibility of using the
'/proc/PID/coredump_filter' file when generating a corefile.
Mention new command 'set use-coredump-filter'.
gdb/doc/ChangeLog:
2015-03-31 Sergio Durigan Junior <sergiodj@redhat.com>
PR corefiles/16092
* gdb.texinfo (gcore): Mention new command 'set
use-coredump-filter'.
(set use-coredump-filter): Document new command.
gdb/testsuite/ChangeLog:
2015-03-31 Sergio Durigan Junior <sergiodj@redhat.com>
PR corefiles/16092
* gdb.base/coredump-filter.c: New file.
* gdb.base/coredump-filter.exp: Likewise.
2015-04-01 01:32:34 +02:00
|
|
|
|
2015-03-31 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
Oleg Nesterov <oleg@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR corefiles/16092
|
|
|
|
|
* linux-tdep.c: Include 'gdbcmd.h' and 'gdb_regex.h'.
|
|
|
|
|
New enum identifying the various options of the coredump_filter
|
|
|
|
|
file.
|
|
|
|
|
(struct smaps_vmflags): New struct.
|
|
|
|
|
(use_coredump_filter): New variable.
|
|
|
|
|
(decode_vmflags): New function.
|
|
|
|
|
(mapping_is_anonymous_p): Likewise.
|
|
|
|
|
(dump_mapping_p): Likewise.
|
|
|
|
|
(linux_find_memory_regions_full): New variables
|
|
|
|
|
'coredumpfilter_name', 'coredumpfilterdata', 'pid', 'filterflags'.
|
|
|
|
|
Removed variable 'modified'. Read /proc/<PID>/smaps file; improve
|
|
|
|
|
parsing of its information. Implement memory mapping filtering
|
|
|
|
|
based on its contents.
|
|
|
|
|
(show_use_coredump_filter): New function.
|
|
|
|
|
(_initialize_linux_tdep): New command 'set use-coredump-filter'.
|
|
|
|
|
* NEWS: Mention the possibility of using the
|
|
|
|
|
'/proc/PID/coredump_filter' file when generating a corefile.
|
|
|
|
|
Mention new command 'set use-coredump-filter'.
|
|
|
|
|
|
2015-04-01 01:17:23 +02:00
|
|
|
|
2015-03-31 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib-svr4.c (solib_svr4_r_ldsomap): Catch possible exception by
|
|
|
|
|
read_memory_unsigned_integer.
|
|
|
|
|
|
2015-03-31 17:24:02 +02:00
|
|
|
|
2015-03-31 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ZLIB): New.
|
|
|
|
|
(ZLIBINC): Likewise.
|
|
|
|
|
(INTERNAL_CFLAGS_BASE): Add $(ZLIBINC).
|
|
|
|
|
(CLIBS): Add $(ZLIB).
|
|
|
|
|
* acinclude.m4: (GDB_AC_CHECK_BFD): Add $zlibdir to LDFLAGS.
|
|
|
|
|
Add -lz to LIBS.
|
|
|
|
|
* gdb_bfd.c: Don't check HAVE_ZLIB_H to include <zlib.h>.
|
|
|
|
|
* top.c (print_gdb_configuration): Remove --with-zlib and
|
|
|
|
|
--without-zlib.
|
|
|
|
|
* config.in: Regenerated.
|
|
|
|
|
* configure: Likewise.
|
|
|
|
|
|
2015-03-25 16:49:05 +01:00
|
|
|
|
2015-03-31 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention info os cpus support.
|
|
|
|
|
* gdb/nat/linux-osdata.c (linux_xfer_osdata_cpus): New function.
|
|
|
|
|
(struct osdata_type): Add cpus entry, reorder the entries in
|
|
|
|
|
alphabetical order.
|
|
|
|
|
|
2015-03-31 15:15:42 +02:00
|
|
|
|
2015-03-31 Matthias Klose <doko@ubuntu.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (compile_to_object): Allow triplets with or
|
|
|
|
|
without vendor set.
|
|
|
|
|
|
2015-03-31 01:41:05 +02:00
|
|
|
|
2015-03-30 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR c++/18141
|
|
|
|
|
* cp-namespace.c (cp_search_static_and_baseclasses): Always look for
|
|
|
|
|
klass in VAR_DOMAIN.
|
|
|
|
|
|
2015-03-30 15:58:33 +02:00
|
|
|
|
2015-03-30 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_mourn_1): Remove function. Update all callers
|
|
|
|
|
to use remote_mourn.
|
|
|
|
|
(extended_remote_mourn_1): Remove function. Update all callers
|
|
|
|
|
to use extended_remote_mourn.
|
|
|
|
|
(extended_remote_attach_1): Remove function. Update all callers
|
|
|
|
|
to use extended_remote_attach.
|
|
|
|
|
|
2015-03-23 20:15:32 +01:00
|
|
|
|
2015-03-28 James Bowman <james.bowman@ftdichip.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_TARGET_OBS): Add ft32-tdep.o.
|
|
|
|
|
(HFILES_NO_SRCDIR): Add ft32-tdep.h.
|
|
|
|
|
(ALLDEPFILES): Add ft32-tdep.c.
|
|
|
|
|
* configure.tgt: Add FT32 entry.
|
|
|
|
|
* ft32-tdep.c: New file, FT32 target-dependent code.
|
|
|
|
|
* ft32-tdep.h: New file, FT32 target-dependent code.
|
|
|
|
|
|
2015-03-27 20:19:37 +01:00
|
|
|
|
2015-03-27 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Revert:
|
|
|
|
|
2015-03-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
Code cleanup.
|
|
|
|
|
* printcmd.c (print_command_1): Move expr variable scope.
|
|
|
|
|
|
2015-03-27 14:37:34 +01:00
|
|
|
|
2015-03-27 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* dtrace-probe.c (dtrace_process_dof_probe): Initialize expr to NULL.
|
|
|
|
|
|
2015-03-27 13:09:02 +01:00
|
|
|
|
2015-03-27 Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com>
|
|
|
|
|
|
|
|
|
|
* gdb_bfd.c (gdb_bfd_section_index): Fix off-by-one for special
|
|
|
|
|
sections.
|
|
|
|
|
|
2015-03-26 19:14:03 +01:00
|
|
|
|
2015-03-26 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* dtrace-probe.c (dtrace_process_dof_probe): Contain any
|
|
|
|
|
exception raised while parsing the probe arguments.
|
|
|
|
|
Force parsing to be done using the C language parser.
|
|
|
|
|
* expression.h (parse_expression_with_language): Declare.
|
|
|
|
|
* parse.c (parse_expression_with_language): New function.
|
|
|
|
|
|
2015-03-26 21:29:00 +01:00
|
|
|
|
2015-03-26 Jon Turney <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add "Jon Turney".
|
|
|
|
|
|
2015-03-26 19:41:15 +01:00
|
|
|
|
2015-03-26 Andy Wingo <wingo@igalia.com>
|
|
|
|
|
|
|
|
|
|
PR symtab/18148
|
|
|
|
|
* dwarf2read.c (struct partial_die_info): Add has_const_value
|
|
|
|
|
member.
|
|
|
|
|
(add_partial_symbol): Don't punt on symbols that have const_value
|
|
|
|
|
attributes.
|
|
|
|
|
(read_partial_die): Detect DW_AT_const_value.
|
|
|
|
|
|
2015-03-26 18:44:38 +01:00
|
|
|
|
2015-03-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Code cleanup.
|
|
|
|
|
* printcmd.c (print_command_1): Move expr variable scope.
|
|
|
|
|
|
2015-03-26 18:41:24 +01:00
|
|
|
|
2015-03-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Code cleanup.
|
|
|
|
|
* printcmd.c (validate_format): Make the parameter cmdname const.
|
|
|
|
|
|
2015-03-26 18:23:05 +01:00
|
|
|
|
2015-03-26 Don Breazeal <donb@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (_initialize_remote): Update comment.
|
|
|
|
|
|
Don't set breakpoints on import stubs on Windows amd64
On Windows amd64, setting a breakpoint on a symbol imported from a
shared library after that library is loaded creates a breakpoint with
two locations, one on the import stub, and another in the shared
library, while on i386, the breakpoint is only set in the shared
library.
This is due to the minimal symbol for the import stub not being
correctly given the type mst_solib_trampoline on Windows amd64, unlike
Windows i386.
As currently written, coff_symfile_read is always skipping over the
character after the "__imp_" (amd64) or "_imp_" (i386) prefix,
assuming that it is '_'. However, while i386 is an underscored
target, amd64 is not.
On x86_64-pc-cygwin, it fixes:
- FAIL: gdb.base/solib-symbol.exp: foo in libmd
+ PASS: gdb.base/solib-symbol.exp: foo in libmd
Unfortunately, several other tests which passed now fail but that's
because this issue was masking other problems.
No change on i686-pc-cygwin.
gdb/ChangeLog:
2015-03-26 Pedro Alves <palves@redhat.com>
Jon TURNEY <jon.turney@dronecode.org.uk>
* coffread.c (coff_symfile_read): When constructing the name of an
import stub symbol from import symbol for amd64, only skip the
char after _imp_ if the target is underscored (like i386) and the
char is indeed the target's leading char.
2015-03-26 11:21:07 +01:00
|
|
|
|
2015-03-26 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Jon TURNEY <jon.turney@dronecode.org.uk>
|
|
|
|
|
|
|
|
|
|
* coffread.c (coff_symfile_read): When constructing the name of an
|
|
|
|
|
import stub symbol from import symbol for amd64, only skip the
|
|
|
|
|
char after _imp_ if the target is underscored (like i386) and the
|
|
|
|
|
char is indeed the target's leading char.
|
|
|
|
|
|
Simplify target_async hook interface
All callers of target_async pass it the same callback
(inferior_event_handler). Since both common code and target backends
need to be able to put the target in and out of target async mode at
any given time, there's really no way that a different callback could
be passed. This commit simplifies things, and removes the indirection
altogether. Bonus: with this, gdb's target_async method ends up with
the same signature as gdbserver's.
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/ChangeLog:
2015-03-25 Pedro Alves <palves@redhat.com>
* target.h <to_async>: Replace 'callback' and 'context' parameters
with boolean 'enable' parameter.
(target_async): Replace CALLBACK and CONTEXT parameters with
boolean ENABLE parameter.
* inf-loop.c (inferior_event_handler): Adjust.
* linux-nat.c (linux_nat_attach, linux_nat_resume)
(linux_nat_resume): Adjust.
(async_client_callback, async_client_context): Delete.
(handle_target_event): Call inferior_event_handler directly.
(linux_nat_async): Replace 'callback' and 'context' parameters
with boolean 'enable' parameter. Adjust. Remove references to
async_client_callback and async_client_context.
(linux_nat_close): Adjust.
* record-btrace.c (record_btrace_async): Replace 'callback' and
'context' parameters with boolean 'enable' parameter. Adjust.
(record_btrace_resume): Adjust.
* record-full.c (record_full_async): Replace 'callback' and
'context' parameters with boolean 'enable' parameter. Adjust.
(record_full_resume, record_full_core_resume): Adjust.
* remote.c (struct remote_state) <async_client_callback,
async_client_context>: Delete fields.
(remote_start_remote, extended_remote_attach_1, remote_resume)
(extended_remote_create_inferior): Adjust.
(remote_async_serial_handler): Call inferior_event_handler
directly.
(remote_async): Replace 'callback' and 'context' parameters with
boolean 'enable' parameter. Adjust.
* top.c (gdb_readline_wrapper_cleanup, gdb_readline_wrapper):
Adjust.
* target-delegates.c: Regenerate.
2015-03-25 12:28:31 +01:00
|
|
|
|
2015-03-25 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h <to_async>: Replace 'callback' and 'context' parameters
|
|
|
|
|
with boolean 'enable' parameter.
|
|
|
|
|
(target_async): Replace CALLBACK and CONTEXT parameters with
|
|
|
|
|
boolean ENABLE parameter.
|
|
|
|
|
* inf-loop.c (inferior_event_handler): Adjust.
|
|
|
|
|
* linux-nat.c (linux_nat_attach, linux_nat_resume)
|
|
|
|
|
(linux_nat_resume): Adjust.
|
|
|
|
|
(async_client_callback, async_client_context): Delete.
|
|
|
|
|
(handle_target_event): Call inferior_event_handler directly.
|
|
|
|
|
(linux_nat_async): Replace 'callback' and 'context' parameters
|
|
|
|
|
with boolean 'enable' parameter. Adjust. Remove references to
|
|
|
|
|
async_client_callback and async_client_context.
|
|
|
|
|
(linux_nat_close): Adjust.
|
|
|
|
|
* record-btrace.c (record_btrace_async): Replace 'callback' and
|
|
|
|
|
'context' parameters with boolean 'enable' parameter. Adjust.
|
|
|
|
|
(record_btrace_resume): Adjust.
|
|
|
|
|
* record-full.c (record_full_async): Replace 'callback' and
|
|
|
|
|
'context' parameters with boolean 'enable' parameter. Adjust.
|
|
|
|
|
(record_full_resume, record_full_core_resume): Adjust.
|
|
|
|
|
* remote.c (struct remote_state) <async_client_callback,
|
|
|
|
|
async_client_context>: Delete fields.
|
|
|
|
|
(remote_start_remote, extended_remote_attach_1, remote_resume)
|
|
|
|
|
(extended_remote_create_inferior): Adjust.
|
|
|
|
|
(remote_async_serial_handler): Call inferior_event_handler
|
|
|
|
|
directly.
|
|
|
|
|
(remote_async): Replace 'callback' and 'context' parameters with
|
|
|
|
|
boolean 'enable' parameter. Adjust.
|
|
|
|
|
* top.c (gdb_readline_wrapper_cleanup, gdb_readline_wrapper):
|
|
|
|
|
Adjust.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
|
2015-03-25 12:26:43 +01:00
|
|
|
|
2015-03-25 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.c (fileio_ft_t): New typedef, define object vector.
|
|
|
|
|
(fileio_fhandles): New static variable.
|
|
|
|
|
(is_closed_fileio_fh): New macro.
|
|
|
|
|
(lowest_closed_fd): New static variable.
|
|
|
|
|
(acquire_fileio_fd): New function.
|
|
|
|
|
(release_fileio_fd): Likewise.
|
|
|
|
|
(fileio_fd_to_fh): New macro.
|
|
|
|
|
(target_fileio_open): Wrap the file descriptor on success.
|
|
|
|
|
(target_fileio_pwrite): Updated to use wrapped file descriptor.
|
|
|
|
|
(target_fileio_pread): Likewise.
|
|
|
|
|
(target_fileio_close): Likewise.
|
|
|
|
|
|
2015-03-24 22:01:29 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (thread_apply_all_command): Take exited threads into
|
|
|
|
|
account.
|
|
|
|
|
|
2015-03-24 15:24:54 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (resume, proceed): Mention
|
|
|
|
|
switch_back_to_stepped_thread, not switch_back_to_stepping.
|
|
|
|
|
|
2015-03-24 15:24:53 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (user_visible_resume_ptid): Rewrite going from
|
|
|
|
|
most-locked to unlocked instead of the opposite. Move comment ...
|
|
|
|
|
* infrun.h (user_visible_resume_ptid): ... here.
|
|
|
|
|
|
2015-03-24 19:31:51 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_resume): Output debug logs before trying
|
|
|
|
|
to resume the event lwp. Use the lwp's ptid instead of the passed
|
|
|
|
|
in (maybe wildcard) ptid.
|
|
|
|
|
(stop_wait_callback): Tweak debug log output.
|
|
|
|
|
(check_stopped_by_breakpoint): Tweak debug log output. Also dump
|
|
|
|
|
TRAP_TRACE.
|
|
|
|
|
(linux_nat_filter_event): In debug output, distinguish a
|
|
|
|
|
resume_stop SIGSTOP from a delayed SIGSTOP. Output debug logs
|
|
|
|
|
before trying to resume the lwp.
|
|
|
|
|
|
2015-03-24 19:14:13 +01:00
|
|
|
|
2015-03-24 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.h (struct dynamic_prop_list) <prop>: Remove
|
|
|
|
|
pointer indirection.
|
|
|
|
|
* gdbtypes.c (get_dyn_prop): Adjust, following change above.
|
|
|
|
|
(add_dyn_prop, copy_dynamic_prop_list): Likewise.
|
|
|
|
|
|
2015-03-24 19:03:21 +01:00
|
|
|
|
2015-03-24 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.h (enum dynamic_prop_node_kind) <DYN_PROP_DATA_LOCATION>:
|
|
|
|
|
Renames DYN_ATTR_DATA_LOCATION.
|
|
|
|
|
(TYPE_DATA_LOCATION): Use DYN_PROP_DATA_LOCATION instead of
|
|
|
|
|
DYN_ATTR_DATA_LOCATION.
|
|
|
|
|
* dwarf2read.c (set_die_type): Use DYN_PROP_DATA_LOCATION
|
|
|
|
|
instead of DYN_ATTR_DATA_LOCATION.
|
|
|
|
|
|
Remove 'step' parameters from 'proceed' and 'resume'
The "step" parameters of 'proceed' and 'resume' aren't really useful
as indication of whether run control wants to single-step the target,
as that information must already be retrievable from
currently_stepping. In fact, if currently_stepping disagrees with
whether we single-stepped the target, then things break. Thus instead
of having the same information in two places, this patch removes those
parameters.
Setting 'step_start_function' is the only user of proceed's 'step'
argument, other than passing the 'step' argument down to 'resume' and
debug log output. Move that instead to set_step_frame, where we
already set other related fields.
clear_proceed_status keeps its "step" parameter for now because it
needs to know which set of threads should have their state cleared,
and is called before the "stepping_command" flag is set.
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/ChangeLog:
2015-03-24 Pedro Alves <palves@redhat.com>
* breakpoint.c (until_break_command): Adjust call to proceed.
* gdbthread.h (struct thread_control_state) <stepping_command>:
New field.
* infcall.c (run_inferior_call): Adjust call to proceed.
* infcmd.c (run_command_1, proceed_thread_callback, continue_1):
Adjust calls to proceed.
(set_step_frame): Set the current thread's step_start_function
here.
(step_once): Adjust calls to proceed.
(jump_command, signal_command, until_next_command)
(finish_backward, finish_forward, proceed_after_attach_callback)
(attach_command_post_wait): Adjust calls to proceed.
* infrun.c (proceed_after_vfork_done): Adjust call to proceed.
(do_target_resume): New function, factored out from ...
(resume): ... here. Remove 'step' parameter. Instead, check
currently_stepping to determine whether the thread should be
single-stepped.
(proceed): Remove 'step' parameter and don't set the thread's
step_start_function here. Adjust call to 'resume'.
(handle_inferior_event): Adjust calls to 'resume'.
(switch_back_to_stepped_thread): Use do_target_resume instead of
'resume'.
(keep_going): Adjust calls to 'resume'.
* infrun.h (proceed): Remove 'step' parameter.
(resume): Likewise.
* windows-nat.c (do_initial_windows_stuff): Adjust call to
'resume'.
* mi/mi-main.c (proceed_thread): Adjust call to 'proceed'.
2015-03-24 18:50:31 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (until_break_command): Adjust call to proceed.
|
|
|
|
|
* gdbthread.h (struct thread_control_state) <stepping_command>:
|
|
|
|
|
New field.
|
|
|
|
|
* infcall.c (run_inferior_call): Adjust call to proceed.
|
|
|
|
|
* infcmd.c (run_command_1, proceed_thread_callback, continue_1):
|
|
|
|
|
Adjust calls to proceed.
|
|
|
|
|
(set_step_frame): Set the current thread's step_start_function
|
|
|
|
|
here.
|
|
|
|
|
(step_once): Adjust calls to proceed.
|
|
|
|
|
(jump_command, signal_command, until_next_command)
|
|
|
|
|
(finish_backward, finish_forward, proceed_after_attach_callback)
|
|
|
|
|
(attach_command_post_wait): Adjust calls to proceed.
|
|
|
|
|
* infrun.c (proceed_after_vfork_done): Adjust call to proceed.
|
|
|
|
|
(do_target_resume): New function, factored out from ...
|
|
|
|
|
(resume): ... here. Remove 'step' parameter. Instead, check
|
|
|
|
|
currently_stepping to determine whether the thread should be
|
|
|
|
|
single-stepped.
|
|
|
|
|
(proceed): Remove 'step' parameter and don't set the thread's
|
|
|
|
|
step_start_function here. Adjust call to 'resume'.
|
|
|
|
|
(handle_inferior_event): Adjust calls to 'resume'.
|
|
|
|
|
(switch_back_to_stepped_thread): Use do_target_resume instead of
|
|
|
|
|
'resume'.
|
|
|
|
|
(keep_going): Adjust calls to 'resume'.
|
|
|
|
|
* infrun.h (proceed): Remove 'step' parameter.
|
|
|
|
|
(resume): Likewise.
|
|
|
|
|
* windows-nat.c (do_initial_windows_stuff): Adjust call to
|
|
|
|
|
'resume'.
|
|
|
|
|
* mi/mi-main.c (proceed_thread): Adjust call to 'proceed'.
|
|
|
|
|
|
Make "set scheduler-locking step" depend on user intention, only
Currently, "set scheduler-locking step" is a bit odd. The manual
documents it as being optimized for stepping, so that focus of
debugging does not change unexpectedly, but then it says that
sometimes other threads may run, and thus focus may indeed change
unexpectedly... A user can then be excused to get confused and wonder
why does GDB behave like this.
I don't think a user should have to know about details of how "next"
or whatever other run control command is implemented internally to
understand when does the "scheduler-locking step" setting take effect.
This patch completes a transition that the code has been moving
towards for a while. It makes "set scheduler-locking step" hold
threads depending on whether the _command_ the user entered was a
stepping command [step/stepi/next/nexti], or not.
Before, GDB could end up locking threads even on "continue" if for
some reason run control decides a thread needs to be single stepped
(e.g., for a software watchpoint).
After, if a "continue" happens to need to single-step for some reason,
we won't lock threads (unless when stepping over a breakpoint,
naturally). And if a stepping command wants to continue a thread for
bit, like when skipping a function to a step-resume breakpoint, we'll
still lock threads, so focus of debugging doesn't change.
In order to make this work, we need to record in the thread structure
whether what set it running was a stepping command.
(A follow up patch will remove the "step" parameters of 'proceed' and 'resume')
FWIW, Fedora GDB, which defaults to "scheduler-locking step" (mainline
defaults to "off") carries a different patch that goes in this
direction as well.
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/ChangeLog:
2015-03-24 Pedro Alves <palves@redhat.com>
* gdbthread.h (struct thread_control_state) <stepping_command>:
New field.
* infcmd.c (step_once): Pass step=1 to clear_proceed_status. Set
the thread's stepping_command field.
* infrun.c (resume): Check the thread's stepping_command flag to
determine which threads should be resumed. Rename 'entry_step'
local to user_step.
(clear_proceed_status_thread): Clear 'stepping_command'.
(schedlock_applies): Change parameter type to struct thread_info
pointer. Adjust.
(find_thread_needs_step_over): Remove 'step' parameter. Adjust.
(switch_back_to_stepped_thread): Adjust calls to
'schedlock_applies'.
(_initialize_infrun): Adjust "set scheduler-locking step" help.
gdb/testsuite/ChangeLog:
2015-03-24 Pedro Alves <palves@redhat.com>
* gdb.threads/schedlock.exp (test_step): No longer expect that
"set scheduler-locking step" with "next" over a function call runs
threads unlocked.
gdb/doc/ChangeLog:
2015-03-24 Pedro Alves <palves@redhat.com>
* gdb.texinfo (test_step) <set scheduler-locking step>: No longer
mention that threads may sometimes run unlocked.
2015-03-24 18:50:31 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (struct thread_control_state) <stepping_command>:
|
|
|
|
|
New field.
|
|
|
|
|
* infcmd.c (step_once): Pass step=1 to clear_proceed_status. Set
|
|
|
|
|
the thread's stepping_command field.
|
|
|
|
|
* infrun.c (resume): Check the thread's stepping_command flag to
|
|
|
|
|
determine which threads should be resumed. Rename 'entry_step'
|
|
|
|
|
local to user_step.
|
|
|
|
|
(clear_proceed_status_thread): Clear 'stepping_command'.
|
|
|
|
|
(schedlock_applies): Change parameter type to struct thread_info
|
|
|
|
|
pointer. Adjust.
|
|
|
|
|
(find_thread_needs_step_over): Remove 'step' parameter. Adjust.
|
|
|
|
|
(switch_back_to_stepped_thread): Adjust calls to
|
|
|
|
|
'schedlock_applies'.
|
|
|
|
|
(_initialize_infrun): Adjust "set scheduler-locking step" help.
|
|
|
|
|
|
2015-03-24 18:50:30 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (step_start_function): Delete and ...
|
|
|
|
|
* gdbthread.h (struct thread_control_state) <step_start_function>:
|
|
|
|
|
... now a field here.
|
|
|
|
|
* infrun.c (clear_proceed_status_thread): Clear the thread's
|
|
|
|
|
step_start_function.
|
|
|
|
|
(proceed, process_event_stop_test, print_stop_event): Adjust.
|
|
|
|
|
|
2015-03-24 18:50:29 +01:00
|
|
|
|
2015-03-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (proceed): No longer handle negative step.
|
|
|
|
|
|
2015-03-24 15:05:45 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/x86-linux.h (x86_linux_new_thread): New declaration.
|
|
|
|
|
(x86_linux_prepare_to_resume): Likewise.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_new_thread):
|
|
|
|
|
Moved to nat/x86-linux.c.
|
|
|
|
|
(x86_linux_prepare_to_resume): Likewise.
|
|
|
|
|
* nat/x86-linux.c (x86_linux_new_thread): New function.
|
|
|
|
|
(x86_linux_prepare_to_resume): Likewise.
|
|
|
|
|
|
2015-03-24 15:05:45 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/x86-linux-dregs.h: New file.
|
|
|
|
|
* nat/x86-linux-dregs.c: Likewise.
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add nat/x86-linux-dregs.h.
|
|
|
|
|
(x86-linux-dregs.o): New rule.
|
|
|
|
|
* config/i386/linux.mh (NATDEPFILES): Add x86-linux-dregs.o.
|
|
|
|
|
* config/i386/linux64.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* x86-linux-nat.c: Include nat/x86-linux-dregs.h.
|
|
|
|
|
(u_debugreg_offset): Moved to nat/x86-linux-dregs.c.
|
|
|
|
|
(x86_linux_dr_get): Likewise.
|
|
|
|
|
(x86_linux_dr_set): Likewise.
|
|
|
|
|
(x86_linux_dr_get_addr): Likewise.
|
|
|
|
|
(x86_linux_dr_get_control): Likewise.
|
|
|
|
|
(x86_linux_dr_get_status): Likewise.
|
|
|
|
|
(update_debug_registers_callback): Likewise.
|
|
|
|
|
(x86_linux_dr_set_control): Likewise.
|
|
|
|
|
(x86_linux_dr_set_addr): Likewise.
|
|
|
|
|
(x86_linux_update_debug_registers): Likewise.
|
|
|
|
|
|
2015-03-24 15:05:44 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.c (x86_linux_update_debug_registers):
|
|
|
|
|
New function, factored out from...
|
|
|
|
|
(x86_linux_prepare_to_resume): ...this.
|
|
|
|
|
|
2015-03-24 15:05:44 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.c (x86_linux_dr_get): Update comments.
|
|
|
|
|
(x86_linux_dr_set): Likewise.
|
|
|
|
|
(x86_linux_dr_get_addr): Likewise.
|
|
|
|
|
(x86_linux_dr_get_control): Likewise.
|
|
|
|
|
(x86_linux_dr_get_status): Likewise.
|
|
|
|
|
(update_debug_registers_callback): Likewise.
|
|
|
|
|
(x86_linux_dr_set_control): Likewise.
|
|
|
|
|
(x86_linux_dr_set_addr): Likewise.
|
|
|
|
|
(x86_linux_prepare_to_resume): Likewise.
|
|
|
|
|
(x86_linux_new_thread): Likewise.
|
|
|
|
|
|
2015-03-24 15:05:44 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.c (x86_linux_dr_set_addr): Update assertion.
|
|
|
|
|
(x86_linux_new_thread): Rename argument.
|
|
|
|
|
|
2015-03-24 15:05:44 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/x86-linux.h: New file.
|
|
|
|
|
* nat/x86-linux.c: Likewise.
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add nat/x86-linux.h.
|
|
|
|
|
(x86-linux.o): New rule.
|
|
|
|
|
* config/i386/linux.mh (NATDEPFILES): Add x86-linux.o.
|
|
|
|
|
* config/i386/linux64.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* nat/linux-nat.h (struct arch_lwp_info): New forward declaration.
|
|
|
|
|
(lwp_set_arch_private_info): New declaration.
|
|
|
|
|
(lwp_arch_private_info): Likewise.
|
|
|
|
|
* linux-nat.c (lwp_set_arch_private_info): New function.
|
|
|
|
|
(lwp_arch_private_info): Likewise.
|
|
|
|
|
* x86-linux-nat.c: Include nat/x86-linux.h.
|
|
|
|
|
(arch_lwp_info): Removed structure.
|
|
|
|
|
(update_debug_registers_callback):
|
|
|
|
|
Use lwp_set_debug_registers_changed.
|
|
|
|
|
(x86_linux_prepare_to_resume): Use lwp_debug_registers_changed
|
|
|
|
|
and lwp_set_debug_registers_changed.
|
|
|
|
|
(x86_linux_new_thread): Use lwp_set_debug_registers_changed.
|
|
|
|
|
|
2015-03-24 15:05:44 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-nat.h (ptid_of_lwp): New declaration.
|
|
|
|
|
(lwp_is_stopped): Likewise.
|
|
|
|
|
(lwp_stop_reason): Likewise.
|
|
|
|
|
* linux-nat.c (ptid_of_lwp): New function.
|
|
|
|
|
(lwp_is_stopped): Likewise.
|
|
|
|
|
(lwp_is_stopped_by_watchpoint): Likewise.
|
|
|
|
|
* x86-linux-nat.c (update_debug_registers_callback):
|
|
|
|
|
Use lwp_is_stopped.
|
|
|
|
|
(x86_linux_prepare_to_resume): Use ptid_of_lwp and
|
|
|
|
|
lwp_stop_reason.
|
|
|
|
|
|
2015-03-24 15:05:44 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.h (linux_stop_lwp): Move declaration to...
|
|
|
|
|
* nat/linux-nat.h (linux_stop_lwp): New declaration.
|
|
|
|
|
|
2015-03-24 15:05:43 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.h: Include nat/linux-nat.h.
|
|
|
|
|
(iterate_over_lwps): Move declaration to nat/linux-nat.h.
|
|
|
|
|
* nat/linux-nat.h (struct lwp_info): New forward declaration.
|
|
|
|
|
(iterate_over_lwps_ftype): New typedef.
|
|
|
|
|
(iterate_over_lwps): New declaration.
|
|
|
|
|
* linux-nat.h (iterate_over_lwps): Update comment. Use
|
|
|
|
|
iterate_over_lwps_ftype. Update callback return value check.
|
|
|
|
|
|
2015-03-24 15:05:43 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* x86-nat.h (x86_debug_reg_state): Move declaration to...
|
|
|
|
|
* nat/x86-dregs.h (x86_debug_reg_state): New declaration.
|
|
|
|
|
|
2015-03-24 15:05:43 +01:00
|
|
|
|
2015-03-24 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-nat.h (current_lwp_ptid): New declaration.
|
|
|
|
|
* linux-nat.c (current_lwp_ptid): New function.
|
|
|
|
|
* x86-linux-nat.c: Include nat/linux-nat.h.
|
|
|
|
|
(x86_linux_dr_get_addr): Use current_lwp_ptid.
|
|
|
|
|
(x86_linux_dr_get_control): Likewise.
|
|
|
|
|
(x86_linux_dr_get_status): Likewise.
|
|
|
|
|
(x86_linux_dr_set_control): Likewise.
|
|
|
|
|
(x86_linux_dr_set_addr): Likewise.
|
|
|
|
|
|
2015-02-19 21:23:34 +01:00
|
|
|
|
2015-03-24 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
PR breakpoints/16466
|
|
|
|
|
* breakpoint.c (create_breakpoint): Set thread on breakpoint struct.
|
|
|
|
|
|
2015-03-23 23:42:23 +01:00
|
|
|
|
2015-03-23 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ser-mingw.c (ser_windows_setparity): Fix indentation.
|
|
|
|
|
* ser-unix.c (hardwire_setparity): Likewise.
|
|
|
|
|
|
2015-03-23 22:15:42 +01:00
|
|
|
|
2015-03-23 Yurij Grechishhev <yurij.grechishhev@gmail.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention set/show serial parity command.
|
|
|
|
|
* monitor.c (monitor_open): Call serial_setparity.
|
|
|
|
|
* remote.c (remote_open_1): Likewise.
|
|
|
|
|
* ser-base.c (ser_base_serparity): New function.
|
|
|
|
|
* ser-base.h (ser_base_setparity): Add declaration.
|
|
|
|
|
* ser-go32.c (dos_ops): Set "setparity" field.
|
|
|
|
|
* ser-mingw.c (ser_windows_raw): Do not set state.fParity and
|
|
|
|
|
state.Parity.
|
|
|
|
|
(ser_windows_setparity): New function.
|
|
|
|
|
(hardwire_ops): Add ser_windows_setparity.
|
|
|
|
|
(tty_ops): Add NULL for setparity field.
|
|
|
|
|
(pipe_ops): Add ser_base_setparity.
|
|
|
|
|
(tcp_ops): Likewise.
|
|
|
|
|
* ser-pipe.c (pipe_ops): Likewise.
|
|
|
|
|
* ser-tcp.c (tcp_ops): Likewise.
|
|
|
|
|
* ser-unix.c (hardwire_setparity): Add declaration.
|
|
|
|
|
(hardwire_raw): Don't reset PARENB flag.
|
|
|
|
|
(hardwire_setparity): New function.
|
|
|
|
|
(hardwire_ops): Add hardwire_setparity.
|
|
|
|
|
* serial.c (serial_setparity): New function.
|
|
|
|
|
(serial_parity): New global.
|
|
|
|
|
(parity_none, parity_odd, parity_even, parity_enums, parity):
|
|
|
|
|
New static globals.
|
|
|
|
|
(set_parity): New function.
|
|
|
|
|
(_initialize_serial): Add set/show serial parity commands.
|
|
|
|
|
* serial.h (GDBPARITY_NONE): Define.
|
|
|
|
|
(GDBPARITY_ODD): Define.
|
|
|
|
|
(GDBPARITY_EVEN): Define.
|
|
|
|
|
(serial_setparity) Add declaration.
|
|
|
|
|
(struct serial_ops): Add setparity field.
|
|
|
|
|
* target.h (serial_parity): Add declaration.
|
|
|
|
|
|
2015-03-23 21:32:01 +01:00
|
|
|
|
2015-03-23 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linespec.c (linespec_lexer_lex_keyword): Update comment.
|
|
|
|
|
|
2015-03-23 21:29:19 +01:00
|
|
|
|
2015-03-23 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (parse_breakpoint_sals): Use
|
|
|
|
|
linespec_lexer_lex_keyword to ascertain if the user specified
|
|
|
|
|
a NULL location.
|
|
|
|
|
* linespec.c [IF_KEYWORD_INDEX]: Define.
|
|
|
|
|
(linespec_lexer_lex_keyword): Export.
|
|
|
|
|
(struct ls_parser) <keyword_ok>: Remove.
|
|
|
|
|
A keyword is only a keyword if not followed by another keyword.
|
|
|
|
|
(linespec_lexer_lex_one): Remove keyword_ok handling.
|
|
|
|
|
Add comment explaining why the parsing stream is not advanced
|
|
|
|
|
when a keyword is seen.
|
|
|
|
|
(parse_linespec): Remove parser->keyword_ok.
|
|
|
|
|
* linespec.h (linespec_lexer_lex_keyword): Add declaration.
|
|
|
|
|
|
2015-02-27 18:55:07 +01:00
|
|
|
|
2015-03-23 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18021
|
|
|
|
|
* dwarf2read.c (dwarf2_add_member_fn): Issue a complaint
|
|
|
|
|
if we find a static method with DW_AT_vtable_elem_location.
|
|
|
|
|
|
2015-03-21 09:48:34 +01:00
|
|
|
|
2015-03-21 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_expand_tabs): Reinitialize the column counter
|
|
|
|
|
before the second loop, to avoid undefined behavior. Reported by
|
|
|
|
|
Anton Blanchard <anton@samba.org>.
|
|
|
|
|
|
2015-03-20 22:45:20 +01:00
|
|
|
|
2015-03-20 Keven Boell <keven.boell@intel.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (resolve_dynamic_type_internal): Adapt
|
|
|
|
|
data_location usage to linked list.
|
|
|
|
|
(resolve_dynamic_type_internal): Adapt data_location to
|
|
|
|
|
linked list.
|
|
|
|
|
(get_dyn_prop, add_dyn_prop, copy_dynamic_prop_list): New function.
|
|
|
|
|
(copy_type_recursive, copy_type): Add copy of linked list.
|
|
|
|
|
* gdbtypes.h (enum dynamic_prop_node_kind): New enum.
|
|
|
|
|
(struct dynamic_prop_list): New struct.
|
|
|
|
|
* dwarf2read.c (set_die_type): Set data_location data.
|
|
|
|
|
|
2015-03-09 12:58:23 +01:00
|
|
|
|
2015-03-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* i386-sol2-tdep.c (i386_sol2_static_transform_name): Move "p" to
|
|
|
|
|
inner block and make it const.
|
|
|
|
|
* machoread.c (get_archive_prefix_len): Make "lparen" const.
|
|
|
|
|
|
2015-03-09 12:58:21 +01:00
|
|
|
|
2015-03-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (set_breakpoint_condition): Make argument "exp" const.
|
|
|
|
|
* breakpoint.h (set_breakpoint_condition): Update declaration.
|
|
|
|
|
|
2015-03-09 12:58:20 +01:00
|
|
|
|
2015-03-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_expand_tabs): Make "s1" const.
|
|
|
|
|
|
2015-03-09 12:58:20 +01:00
|
|
|
|
2015-03-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xcoffread.c (scan_xcoff_symtab): Make "p" and "q" const.
|
|
|
|
|
|
2015-03-09 12:58:19 +01:00
|
|
|
|
2015-03-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote-m32r-sdi.c (m32r_open): Make "port_str" const.
|
|
|
|
|
|
2015-03-09 12:58:14 +01:00
|
|
|
|
2015-03-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nto-tdep.c (nto_find_and_open_solib): Make "endian" const.
|
|
|
|
|
(nto_init_solib_absolute_prefix): Likewise.
|
|
|
|
|
|
2015-03-09 12:58:17 +01:00
|
|
|
|
2015-03-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* sparc-sol2-tdep.c (sparc_sol2_static_transform_name): Make "p" const.
|
|
|
|
|
* spu-tdep.c (spu_gdbarch_init): Make "name" const.
|
|
|
|
|
|
2015-03-20 17:15:15 +01:00
|
|
|
|
2015-03-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* config/djgpp/README: Remove gdb.hp.
|
|
|
|
|
|
Don't call set_gdbarch_cannot_step_breakpoint in aarch64_gdbarch_init
Hi,
I am looking at the following fails in aarch64-linux,
stepi^M
47 NOP; /* after permanent bp */^M
(gdb) FAIL: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: stepi signal with handler: single-step to handler
the test expects GDB single step into signal handler, but GDB doesn't.
The code in infrun.c:resume
/* Most targets can step a breakpoint instruction, thus
executing it normally. But if this one cannot, just
continue and we will hit it anyway. */
if (gdbarch_cannot_step_breakpoint (gdbarch))
step = 0;
change the intended action from "step" to "continue". The gdbarch method
cannot_step_breakpoint isn't documented well, and I don't get much clue
after explore the history. However, from the comments above,
aarch64-linux can step a breakpoint instruction, so don't need to call
set_gdbarch_cannot_step_breakpoint.
gdb:
2015-03-20 Yao Qi <yao.qi@linaro.org>
* aarch64-tdep.c (aarch64_gdbarch_init): Don't call
set_gdbarch_cannot_step_breakpoint.
2015-03-20 11:15:21 +01:00
|
|
|
|
2015-03-20 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_gdbarch_init): Don't call
|
|
|
|
|
set_gdbarch_cannot_step_breakpoint.
|
|
|
|
|
|
Fix race exposed by gdb.threads/killed.exp
On GNU/Linux, this test sometimes FAILs like this:
(gdb) run
Starting program: /home/pedro/gdb/mygit/build/gdb/testsuite/gdb.threads/killed
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
ptrace: No such process.
(gdb)
Program terminated with signal SIGKILL, Killed.
The program no longer exists.
FAIL: gdb.threads/killed.exp: run program to completion (timeout)
Note the suspicious "No such process" line (that's errno==ESRCH).
Adding debug output we see:
linux_nat_wait: [process -1], [TARGET_WNOHANG]
LLW: enter
LNW: waitpid(-1, ...) returned 18465, ERRNO-OK
LLW: waitpid 18465 received Stopped (signal) (stopped)
LNW: waitpid(-1, ...) returned 18461, ERRNO-OK
LLW: waitpid 18461 received Trace/breakpoint trap (stopped)
LLW: Handling extended status 0x03057f
LHEW: Got clone event from LWP 18461, new child is LWP 18465
LNW: waitpid(-1, ...) returned 0, ERRNO-OK
RSRL: resuming stopped-resumed LWP LWP 18465 at 0x3b36af4b51: step=0
RSRL: resuming stopped-resumed LWP LWP 18461 at 0x3b36af4b51: step=0
sigchld
ptrace: No such process.
(gdb) linux_nat_wait: [process -1], [TARGET_WNOHANG]
LLW: enter
LNW: waitpid(-1, ...) returned 18465, ERRNO-OK
LLW: waitpid 18465 received Killed (terminated)
LLW: LWP 18465 exited.
LNW: waitpid(-1, ...) returned 18461, No child processes
LLW: waitpid 18461 received Killed (terminated)
Process 18461 exited
LNW: waitpid(-1, ...) returned -1, No child processes
LLW: exit
sigchld
infrun: target_wait (-1, status) =
infrun: 18461 [process 18461],
infrun: status->kind = signalled, signal = GDB_SIGNAL_KILL
infrun: TARGET_WAITKIND_SIGNALLED
Program terminated with signal SIGKILL, Killed.
The program no longer exists.
infrun: stop_waiting
FAIL: gdb.threads/killed.exp: run program to completion (timeout)
The issue is that here:
RSRL: resuming stopped-resumed LWP LWP 18465 at 0x3b36af4b51: step=0
RSRL: resuming stopped-resumed LWP LWP 18461 at 0x3b36af4b51: step=0
The first line shows we had just resumed LWP 18465, which does:
void *
child_func (void *dummy)
{
kill (pid, SIGKILL);
exit (1);
}
So if the kernel manages to schedule that thread fast enough, the
process may be killed before GDB has a chance to resume LWP 18461.
GDBserver has code at the tail end of linux_resume_one_lwp to cope
with this:
~~~
ptrace (step ? PTRACE_SINGLESTEP : PTRACE_CONT, lwpid_of (thread),
(PTRACE_TYPE_ARG3) 0,
/* Coerce to a uintptr_t first to avoid potential gcc warning
of coercing an 8 byte integer to a 4 byte pointer. */
(PTRACE_TYPE_ARG4) (uintptr_t) signal);
current_thread = saved_thread;
if (errno)
{
/* ESRCH from ptrace either means that the thread was already
running (an error) or that it is gone (a race condition). If
it's gone, we will get a notification the next time we wait,
so we can ignore the error. We could differentiate these
two, but it's tricky without waiting; the thread still exists
as a zombie, so sending it signal 0 would succeed. So just
ignore ESRCH. */
if (errno == ESRCH)
return;
perror_with_name ("ptrace");
}
~~~
However, that's not a complete fix, because between starting to handle
the resume request and getting that PTRACE_CONTINUE, we run other
ptrace calls that can also fail with ESRCH, and that end up throwing
an error (with perror_with_name).
In the case above, I indeed sometimes see resume_stopped_resumed_lwps
fail in the registers read:
resume_stopped_resumed_lwps (struct lwp_info *lp, void *data)
{
...
CORE_ADDR pc = regcache_read_pc (regcache);
Or e.g., in 32-bit mode, i386_linux_resume has several calls that can
throw too.
Whether to ignore ptrace errors or not depends on context that is only
available somewhere up the call chain. So the fix is to let ptrace
errors throw as they do today, and wrap the resume request in a
TRY/CATCH that swallows it iff the lwp that we were trying to resume
is no longer ptrace-stopped.
gdb/gdbserver/ChangeLog:
2015-03-19 Pedro Alves <palves@redhat.com>
* linux-low.c (linux_resume_one_lwp): Rename to ...
(linux_resume_one_lwp_throw): ... this. Don't handle ESRCH here,
instead call perror_with_name.
(check_ptrace_stopped_lwp_gone): New function.
(linux_resume_one_lwp): Reimplement as wrapper around
linux_resume_one_lwp_throw that swallows errors if the LWP is
gone.
gdb/ChangeLog:
2015-03-19 Pedro Alves <palves@redhat.com>
* linux-nat.c (linux_resume_one_lwp): Rename to ...
(linux_resume_one_lwp_throw): ... this. Don't handle ESRCH here,
instead call perror_with_name.
(check_ptrace_stopped_lwp_gone): New function.
(linux_resume_one_lwp): Reimplement as wrapper around
linux_resume_one_lwp_throw that swallows errors if the LWP is
gone.
(resume_stopped_resumed_lwps): Try register reads in TRY/CATCH and
swallows errors if the LWP is gone. Use
linux_resume_one_lwp_throw instead of linux_resume_one_lwp.
2015-03-19 16:12:33 +01:00
|
|
|
|
2015-03-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_resume_one_lwp): Rename to ...
|
|
|
|
|
(linux_resume_one_lwp_throw): ... this. Don't handle ESRCH here,
|
|
|
|
|
instead call perror_with_name.
|
|
|
|
|
(check_ptrace_stopped_lwp_gone): New function.
|
|
|
|
|
(linux_resume_one_lwp): Reimplement as wrapper around
|
|
|
|
|
linux_resume_one_lwp_throw that swallows errors if the LWP is
|
|
|
|
|
gone.
|
|
|
|
|
(resume_stopped_resumed_lwps): Try register reads in TRY/CATCH and
|
|
|
|
|
swallows errors if the LWP is gone. Use
|
|
|
|
|
linux_resume_one_lwp_throw instead of linux_resume_one_lwp.
|
|
|
|
|
|
2015-03-19 13:20:25 +01:00
|
|
|
|
2015-03-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (status_callback): Return early if the LWP has no
|
|
|
|
|
status pending.
|
|
|
|
|
|
2015-03-19 13:24:06 +01:00
|
|
|
|
2015-03-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (select_event_lwp_callback): Update comment to no
|
|
|
|
|
longer mention SIGTRAP.
|
|
|
|
|
|
2015-03-05 14:36:32 +01:00
|
|
|
|
2015-03-18 Tristan Gingold <gingold@adacore.com>
|
|
|
|
|
|
2015-07-24 13:08:12 +02:00
|
|
|
|
* amd64-windows-tdep.c (amd64_windows_find_unwind_info): Move
|
|
|
|
|
redirection code to ...
|
|
|
|
|
(amd64_windows_frame_decode_insns): ... Here. Fix in prologue
|
|
|
|
|
checks. Fix SAVE_NONVOL operations. Add debug code and comments.
|
2015-03-05 14:36:32 +01:00
|
|
|
|
|
2015-03-18 12:19:02 +01:00
|
|
|
|
2015-03-18 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
(remote_protocol_features): Remove the "vFile:fstat" feature.
|
|
|
|
|
(remote_hostio_fstat): Probe for "vFile:fstat" support.
|
|
|
|
|
|
Support catch syscall on aarch64 linux
Hi,
This patch is to support catch syscall on aarch64 linux. We
implement gdbarch method get_syscall_number for aarch64-linux,
and add aarch64-linux.xml file, which looks straightforward, however
the changes to test case doesn't.
First of all, we enable catch-syscall.exp on aarch64-linux target,
but skip the multi_arch testing on current stage. I plan to touch
multi arch debugging on aarch64-linux later.
Then, when I run catch-syscall.exp on aarch64-linux, gcc errors that
SYS_pipe isn't defined. We find that aarch64 kernel only has pipe2
syscall and libc already convert pipe to pipe2. As a result, I change
catch-syscall.c to use SYS_pipe if it is defined, otherwise use
SYS_pipe2 instead. The vector all_syscalls in catch-syscall.exp can't
be pre-determined, so I add a new proc setup_all_syscalls to fill it,
according to the availability of SYS_pipe.
Regression tested on {x86_64, aarch64}-linux x {native, gdbserver}.
gdb:
2015-03-18 Yao Qi <yao.qi@linaro.org>
PR tdep/18107
* aarch64-linux-tdep.c: Include xml-syscall.h
(aarch64_linux_get_syscall_number): New function.
(aarch64_linux_init_abi): Call
set_gdbarch_get_syscall_number.
* syscalls/aarch64-linux.xml: New file.
gdb/testsuite:
2015-03-18 Yao Qi <yao.qi@linaro.org>
PR tdep/18107
* gdb.base/catch-syscall.c [!SYS_pipe] (pipe2_syscall): New
variable.
* gdb.base/catch-syscall.exp: Don't skip it on
aarch64*-*-linux* target. Remove elements in all_syscalls.
(test_catch_syscall_multi_arch): Skip it on aarch64*-linux*
target.
(setup_all_syscalls): New proc.
2015-03-18 11:47:45 +01:00
|
|
|
|
2015-03-11 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR tdep/18107
|
|
|
|
|
* aarch64-linux-tdep.c: Include xml-syscall.h
|
|
|
|
|
(aarch64_linux_get_syscall_number): New function.
|
|
|
|
|
(aarch64_linux_init_abi): Call
|
|
|
|
|
set_gdbarch_get_syscall_number.
|
|
|
|
|
* syscalls/aarch64-linux.xml: New file.
|
|
|
|
|
|
2015-03-17 15:11:20 +01:00
|
|
|
|
2015-03-17 Yurij Grechishhev <yurij.grechishhev@gmail.com>
|
|
|
|
|
|
|
|
|
|
* ser-base.h (ser_base_setstopbits): Change second argument name
|
|
|
|
|
from "rate" to "num".
|
|
|
|
|
|
2015-03-17 12:26:09 +01:00
|
|
|
|
2015-03-17 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
Luke Allardyce <lukeallardyce@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18131
|
|
|
|
|
* common/common-remote-fileio.h (sys/stat.h): New include.
|
|
|
|
|
(stuct stat): Remove forward declaration.
|
|
|
|
|
|
2015-03-14 18:47:20 +01:00
|
|
|
|
2015-03-16 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-tdep.c (fbsd_make_corefile_notes): Fetch all target registers
|
|
|
|
|
before writing core register notes.
|
|
|
|
|
|
2015-03-16 12:28:24 +01:00
|
|
|
|
2015-03-16 Yuanhui Zhang <asmwarrior@gmail.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdb_curses.h (tgetnum): Mark with EXTERN_C.
|
|
|
|
|
* stub-termcap.c (tgetent, tgetnum, tgetflag, tgetstr, tputs)
|
|
|
|
|
(tgoto): Wrap with extern "C".
|
|
|
|
|
|
2015-03-16 12:28:23 +01:00
|
|
|
|
2015-03-16 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Yuanhui Zhang <asmwarrior@gmail.com>
|
|
|
|
|
|
|
|
|
|
* stub-termcap.c (tputs): Change prototype.
|
|
|
|
|
|
2015-03-16 12:31:31 +01:00
|
|
|
|
2015-03-16 Yuanhui Zhang <asmwarrior@gmail.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (struct thread_info_struct): Rename to ...
|
|
|
|
|
(struct windows_thread_info_struct): ... this.
|
|
|
|
|
(thread_info): Rename to ...
|
|
|
|
|
(windows_thread_info): ... this.
|
|
|
|
|
All users updated.
|
|
|
|
|
|
2015-03-14 11:01:17 +01:00
|
|
|
|
2015-03-14 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: New Removed targets and native configurations.
|
|
|
|
|
|
|
|
|
|
2015-03-13 Jan Kratochvil <jan.kratochvil@redhat.com>
|
Remove HPUX
IIUC it is a pre-requisite for IPv6 support, some UNICes do not support
getaddrinfo required for IPv6. But coincidentally such UNICes are no longer
really supported by GDB. Therefore it was concluded we can remove all such
UNICes and then we can implement IPv6 easily with getaddrinfo.
In mail
Re: getaddrinfo available on all GDB hosts? [Re: [PATCH v2] Add IPv6 support for remote TCP connections]
Message-ID: <20140211034157.GG5485@adacore.com>
https://sourceware.org/ml/gdb-patches/2014-02/msg00333.html
Joel said:
So I chose HP-UX first for this patch.
gdb/ChangeLog
2014-10-16 Jan Kratochvil <jan.kratochvil@redhat.com>
Remove HPUX.
* Makefile.in (ALL_64_TARGET_OBS): Remove ia64-hpux-tdep.o.
(ALL_TARGET_OBS): Remove hppa-hpux-tdep.o, solib-som.o and solib-pa64.o.
(HFILES_NO_SRCDIR): Remove solib-som.h, inf-ttrace.h, solib-pa64.h and
ia64-hpux-tdep.h, solib-ia64-hpux.h.
(ALLDEPFILES): Remove hppa-hpux-tdep.c, hppa-hpux-nat.c,
ia64-hpux-nat.c, ia64-hpux-tdep.c, somread.c and solib-som.c.
* config/djgpp/fnchange.lst: Remove hppa-hpux-nat.c and
hppa-hpux-tdep.c.
* config/ia64/hpux.mh: Remove file.
* config/pa/hpux.mh: Remove file.
* configure: Rebuilt.
* configure.ac (dlgetmodinfo, somread.o): Remove.
* configure.host (hppa*-*-hpux*, ia64-*-hpux*): Make them obsolete.
(ia64-*-hpux*): Remove its float format exception.
* configure.tgt (hppa*-*-hpux*, ia64-*-hpux*): Make them obsolete.
* hppa-hpux-nat.c: Remove file.
* hppa-hpux-tdep.c: Remove file.
* hppa-tdep.c (struct hppa_unwind_info, struct hppa_objfile_private):
Move them here from hppa-tdep.h
(hppa_objfile_priv_data, hppa_init_objfile_priv_data): Make it static.
(hppa_frame_prev_register_helper): Remove HPPA_FLAGS_REGNUM exception.
* hppa-tdep.h (struct hppa_unwind_info, struct hppa_objfile_private):
Move them to hppa-tdep.c.
(hppa_objfile_priv_data, hppa_init_objfile_priv_data): Remove
declarations.
* ia64-hpux-nat.c: Remove file.
* ia64-hpux-tdep.c: Remove file.
* ia64-hpux-tdep.h: Remove file.
* inf-ttrace.c: Remove file.
* inf-ttrace.h: Remove file.
* solib-ia64-hpux.c: Remove file.
* solib-ia64-hpux.h: Remove file.
* solib-pa64.c: Remove file.
* solib-pa64.h: Remove file.
* solib-som.c: Remove file.
* solib-som.h: Remove file.
* somread.c: Remove file.
2015-03-13 20:24:22 +01:00
|
|
|
|
|
|
|
|
|
Remove HPUX.
|
|
|
|
|
* Makefile.in (ALL_64_TARGET_OBS): Remove ia64-hpux-tdep.o.
|
|
|
|
|
(ALL_TARGET_OBS): Remove hppa-hpux-tdep.o, solib-som.o and solib-pa64.o.
|
|
|
|
|
(HFILES_NO_SRCDIR): Remove solib-som.h, inf-ttrace.h, solib-pa64.h and
|
|
|
|
|
ia64-hpux-tdep.h, solib-ia64-hpux.h.
|
|
|
|
|
(ALLDEPFILES): Remove hppa-hpux-tdep.c, hppa-hpux-nat.c,
|
|
|
|
|
ia64-hpux-nat.c, ia64-hpux-tdep.c, somread.c and solib-som.c.
|
|
|
|
|
* config/djgpp/fnchange.lst: Remove hppa-hpux-nat.c and
|
|
|
|
|
hppa-hpux-tdep.c.
|
|
|
|
|
* config/ia64/hpux.mh: Remove file.
|
|
|
|
|
* config/pa/hpux.mh: Remove file.
|
|
|
|
|
* configure: Rebuilt.
|
|
|
|
|
* configure.ac (dlgetmodinfo, somread.o): Remove.
|
|
|
|
|
* configure.host (hppa*-*-hpux*, ia64-*-hpux*): Make them obsolete.
|
|
|
|
|
(ia64-*-hpux*): Remove its float format exception.
|
|
|
|
|
* configure.tgt (hppa*-*-hpux*, ia64-*-hpux*): Make them obsolete.
|
|
|
|
|
* hppa-hpux-nat.c: Remove file.
|
|
|
|
|
* hppa-hpux-tdep.c: Remove file.
|
|
|
|
|
* hppa-tdep.c (struct hppa_unwind_info, struct hppa_objfile_private):
|
|
|
|
|
Move them here from hppa-tdep.h
|
|
|
|
|
(hppa_objfile_priv_data, hppa_init_objfile_priv_data): Make it static.
|
|
|
|
|
(hppa_frame_prev_register_helper): Remove HPPA_FLAGS_REGNUM exception.
|
|
|
|
|
* hppa-tdep.h (struct hppa_unwind_info, struct hppa_objfile_private):
|
|
|
|
|
Move them to hppa-tdep.c.
|
|
|
|
|
(hppa_objfile_priv_data, hppa_init_objfile_priv_data): Remove
|
|
|
|
|
declarations.
|
|
|
|
|
* ia64-hpux-nat.c: Remove file.
|
|
|
|
|
* ia64-hpux-tdep.c: Remove file.
|
|
|
|
|
* ia64-hpux-tdep.h: Remove file.
|
|
|
|
|
* inf-ttrace.c: Remove file.
|
|
|
|
|
* inf-ttrace.h: Remove file.
|
|
|
|
|
* solib-ia64-hpux.c: Remove file.
|
|
|
|
|
* solib-ia64-hpux.h: Remove file.
|
|
|
|
|
* solib-pa64.c: Remove file.
|
|
|
|
|
* solib-pa64.h: Remove file.
|
|
|
|
|
* solib-som.c: Remove file.
|
|
|
|
|
* solib-som.h: Remove file.
|
|
|
|
|
* somread.c: Remove file.
|
|
|
|
|
|
2015-02-18 01:15:45 +01:00
|
|
|
|
2015-03-13 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* configure.ac: AC_SEARCH_LIBS(kinfo_getvmmap, util).
|
|
|
|
|
* config.in: Regenerate.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* fbsd-nat.c [!HAVE_KINFO_GETVMMAP] (fbsd_read_mapping): Don't
|
2015-07-24 13:08:12 +02:00
|
|
|
|
define.
|
2015-02-18 01:15:45 +01:00
|
|
|
|
(fbsd_find_memory_regions): Use kinfo_getvmmap to
|
|
|
|
|
enumerate memory regions if present.
|
|
|
|
|
|
2015-02-27 19:17:43 +01:00
|
|
|
|
2015-03-13 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64fbsd-tdep.c (amd64fbsd_sigtramp_p): Style fixes.
|
|
|
|
|
* i386fbsd-tdep.c: Fix style in various gdb_static_assert
|
|
|
|
|
expressions.
|
|
|
|
|
(i386fbsd_sigtramp_p): Likewise.
|
|
|
|
|
|
2015-03-06 21:18:34 +01:00
|
|
|
|
2015-03-12 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add John Baldwin.
|
|
|
|
|
|
2015-03-12 12:44:16 +01:00
|
|
|
|
2015-03-12 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* solib.c (_initialize_solib): Make "set/show sysroot" use
|
|
|
|
|
add_setshow_optional_filename_cmd so it can be restored to
|
|
|
|
|
empty after being set.
|
|
|
|
|
|
2015-03-11 19:12:07 +01:00
|
|
|
|
2015-03-11 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): New source break-catch-syscall.c.
|
|
|
|
|
(COMMON_OBS): New object break-catch-syscall.o.
|
|
|
|
|
* break-catch-syscall.c: New file.
|
|
|
|
|
* breakpoint.c: Remove inclusion of "xml-syscall.h".
|
|
|
|
|
(syscall_catchpoint_p): Move declaration to break-catch-syscall.c
|
|
|
|
|
(struct syscall_catchpoint): Likewise.
|
|
|
|
|
(dtor_catch_syscall): Likewise.
|
|
|
|
|
(catch_syscall_inferior_data): Likewise.
|
|
|
|
|
(struct catch_syscall_inferior_data): Likewise.
|
|
|
|
|
(get_catch_syscall_inferior_data): Likewise.
|
|
|
|
|
(catch_syscall_inferior_data_cleanup): Likewise.
|
|
|
|
|
(insert_catch_syscall): Likewise.
|
|
|
|
|
(remove_catch_syscall): Likewise.
|
|
|
|
|
(breakpoint_hit_catch_syscall): Likewise.
|
|
|
|
|
(print_it_catch_syscall): Likewise.
|
|
|
|
|
(print_one_catch_syscall): Likewise.
|
|
|
|
|
(print_mention_catch_syscall): Likewise.
|
|
|
|
|
(print_recreate_catch_syscall): Likewise.
|
|
|
|
|
(catch_syscall_breakpoint_ops): Likewise.
|
|
|
|
|
(syscall_catchpoint_p): Likewise.
|
|
|
|
|
(create_syscall_event_catchpoint): Likewise.
|
|
|
|
|
(catch_syscall_split_args): Likewise.
|
|
|
|
|
(catch_syscall_command_1): Likewise.
|
|
|
|
|
(is_syscall_catchpoint_enabled): Likewise.
|
|
|
|
|
(catch_syscall_enabled): Likewise.
|
|
|
|
|
(catching_syscall_number): Likewise.
|
|
|
|
|
(catch_syscall_completer): Likewise.
|
|
|
|
|
(clear_syscall_counts): Likewise.
|
|
|
|
|
(initialize_breakpoint_ops): Move initialization of syscall
|
|
|
|
|
catchpoints to break-catch-syscall.c.
|
|
|
|
|
(_initialize_breakpoint): Move code related to syscall catchpoints
|
|
|
|
|
to break-catch-syscall.c.
|
|
|
|
|
|
2015-03-11 19:09:51 +01:00
|
|
|
|
2015-03-11 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (breakpoint_find_if): New function.
|
|
|
|
|
* breakpoint.h (breakpoint_find_if): New prototype.
|
|
|
|
|
|
2015-03-11 18:53:57 +01:00
|
|
|
|
2015-03-11 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote-fileio.h (remote_fileio_to_host_stat): New declaration.
|
|
|
|
|
* remote-fileio.c (remote_fileio_to_host_uint): New function.
|
|
|
|
|
(remote_fileio_to_host_ulong): Likewise.
|
|
|
|
|
(remote_fileio_to_host_mode): Likewise.
|
|
|
|
|
(remote_fileio_to_host_time): Likewise.
|
|
|
|
|
(remote_fileio_to_host_stat): Likewise.
|
|
|
|
|
* remote.c (PACKET_vFile_fstat): New enum value.
|
|
|
|
|
(remote_protocol_features): Register the "vFile:fstat" feature.
|
|
|
|
|
(remote_hostio_fstat): New function.
|
|
|
|
|
(remote_bfd_iovec_stat): Use the above.
|
|
|
|
|
(_initialize_remote): Register new "set/show remote
|
|
|
|
|
hostio-fstat-packet" command.
|
|
|
|
|
* symfile.c (separate_debug_file_exists): Update comment.
|
|
|
|
|
* NEWS: Announce new vFile:fstat packet.
|
|
|
|
|
|
2015-03-11 18:53:57 +01:00
|
|
|
|
2015-03-11 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-remote-fileio.h: New file.
|
|
|
|
|
* common/common-remote-fileio.c: Likewise.
|
|
|
|
|
* Makefile.in (SFILES): Add common/common-remote-fileio.c.
|
|
|
|
|
(HFILES_NO_SRCDIR): Add common/common-remote-fileio.h.
|
|
|
|
|
(COMMON_OBS): Add common-remote-fileio.o.
|
|
|
|
|
(common-remote-fileio.o): New rule.
|
|
|
|
|
* remote-fileio.h (common-remote-fileio.h): New include.
|
|
|
|
|
* remote-fileio.c (gdb/fileio.h): Do not include.
|
|
|
|
|
(remote_fileio_to_be): Moved to common-remote-fileio.h.
|
|
|
|
|
(remote_fileio_to_fio_uint): Likewise.
|
|
|
|
|
(remote_fileio_to_fio_time): Likewise.
|
|
|
|
|
(remote_fileio_mode_to_target): Moved to common-remote-fileio.c.
|
|
|
|
|
(remote_fileio_to_fio_mode): Likewise.
|
|
|
|
|
(remote_fileio_to_fio_ulong): Likewise.
|
|
|
|
|
(remote_fileio_to_fio_stat): Likewise.
|
|
|
|
|
|
2015-03-11 14:32:23 +01:00
|
|
|
|
2015-03-11 Andy Wingo <wingo@igalia.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_dynamic_type): Fix typo in which
|
|
|
|
|
we were checking the cached type, not the cached dynamic type.
|
|
|
|
|
|
2015-03-11 14:25:29 +01:00
|
|
|
|
2015-03-11 Andy Wingo <wingo@igalia.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-cmd.c (cmdscm_destroyer): Don't xfree the name and
|
|
|
|
|
other strings, as these are on the GC'd heap, and will be
|
|
|
|
|
collected along with the smob.
|
|
|
|
|
|
2015-03-11 14:20:06 +01:00
|
|
|
|
2015-03-11 Andy Wingo <wingo@igalia.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-objfile.c (gdbscm_objfile_progspace): New function.
|
|
|
|
|
(objfile_functions): Bind gdbscm_objfile_progspace to
|
|
|
|
|
objfile-progspace.
|
|
|
|
|
* guile/lib/gdb.scm: Add objfile-progspace to exports.
|
|
|
|
|
|
2015-03-11 13:07:53 +01:00
|
|
|
|
2015-03-11 Andy Wingo <wingo@igalia.com>
|
|
|
|
|
|
|
|
|
|
* guile/guile.c (_initialize_guile): Disable automatic
|
|
|
|
|
finalization, if Guile offers us that possibility.
|
|
|
|
|
* guile/guile.c (call_initialize_gdb_module):
|
|
|
|
|
* guile/scm-safe-call.c (gdbscm_with_catch): Arrange to run
|
|
|
|
|
finalizers in appropriate places.
|
|
|
|
|
* configure.ac (AC_TRY_LIBGUILE): Add a check for
|
|
|
|
|
scm_set_automatic_finalization_enabled.
|
|
|
|
|
* configure: Regenerated.
|
|
|
|
|
|
2015-03-11 11:11:45 +01:00
|
|
|
|
2015-03-11 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (s390_skip_prologue): Skip the prologue using
|
|
|
|
|
SAL, if possible.
|
|
|
|
|
|
2015-03-11 11:11:44 +01:00
|
|
|
|
2015-03-11 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-nat.c (struct arch_lwp_info): New.
|
|
|
|
|
(s390_fix_watch_points): Rename to...
|
|
|
|
|
(s390_prepare_to_resume): ...this. Skip the PER info update
|
|
|
|
|
unless the watch points have changed.
|
|
|
|
|
(s390_refresh_per_info, s390_new_thread): New functions.
|
|
|
|
|
(s390_insert_watchpoint): Call s390_refresh_per_info instead of
|
|
|
|
|
s390_fix_watch_points.
|
|
|
|
|
(s390_remove_watchpoint): Likewise.
|
|
|
|
|
(_initialize_s390_nat): Reflect renaming of s390_fix_watch_points.
|
|
|
|
|
Register s390_prepare_to_resume.
|
|
|
|
|
|
2015-03-09 12:27:05 +01:00
|
|
|
|
2015-03-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
Revert:
|
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
* common/gdb_socket.h: New file.
|
|
|
|
|
* ser-tcp.c: Include gdb_socket.h. Don't include netinet/in.h nor
|
|
|
|
|
sys/socket.h.
|
|
|
|
|
(net_open): Use union gdb_sockaddr_u.
|
|
|
|
|
|
2015-02-28 20:11:10 +01:00
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac (build_warnings): Move -Wmissing-prototypes
|
|
|
|
|
-Wdeclaration-after-statement -Wmissing-parameter-type
|
|
|
|
|
-Wold-style-declaration -Wold-style-definition to the C-specific
|
|
|
|
|
set.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
Fix struct sockaddr/sockaddr_in/sockaddr_un strict aliasing violations
Building gdbserver in C++ mode shows:
gdb/gdbserver/tracepoint.c: In function ‘void* gdb_agent_helper_thread(void*)’:
gdb/gdbserver/tracepoint.c:7190:47: error: cannot convert ‘sockaddr_un*’ to ‘sockaddr*’ for argument ‘2’ to ‘int accept(int, sockaddr*, socklen_t*)’
fd = accept (listen_fd, &sockaddr, &tmp);
A few places in the tree already have an explicit cast to struct
sockaddr *, but that's a strict aliasing violation. Instead of
propagating invalid code, fix this by using a union instead.
gdb/ChangeLog:
2015-03-07 Pedro Alves <palves@redhat.com>
* common/gdb_socket.h: New file.
* ser-tcp.c: Include gdb_socket.h. Don't include netinet/in.h nor
sys/socket.h.
(net_open): Use union gdb_sockaddr_u.
gdb/gdbserver/ChangeLog:
2015-03-07 Pedro Alves <palves@redhat.com>
* gdbreplay.c: No longer include <netinet/in.h>, <sys/socket.h>,
or <winsock2.h> here. Instead include "gdb_socket.h".
(remote_open): Use union gdb_sockaddr_u.
* remote-utils.c: No longer include <netinet/in.h>, <sys/socket.h>
or <winsock2.h> here. Instead include "gdb_socket.h".
(handle_accept_event, remote_prepare): Use union gdb_sockaddr_u.
* tracepoint.c: Include "gdb_socket.h" instead of <sys/socket.h>
or <sys/un.h>.
(init_named_socket, gdb_agent_helper_thread): Use union
gdb_sockaddr_u.
2015-03-07 18:30:46 +01:00
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_socket.h: New file.
|
|
|
|
|
* ser-tcp.c: Include gdb_socket.h. Don't include netinet/in.h nor
|
|
|
|
|
sys/socket.h.
|
|
|
|
|
(net_open): Use union gdb_sockaddr_u.
|
|
|
|
|
|
Make TRY/CATCH use real C++ try/catch in C++ mode
Although the current TRY/CATCH implementation works in C++ mode too,
it relies on setjmp/longjmp, and longjmp bypasses calling the
destructors of objects on the stack, which is obviously bad for C++.
This patch fixes this by makes TRY/CATCH use real try/catch in C++
mode behind the scenes. The way this is done allows RAII and cleanups
to coexist while we phase out cleanups, instead of requiring a flag
day.
This patch is not strictly necessary until we require a C++ compiler
and start actually using RAII, though I'm all for baby steps, and it
shows my proposed way forward. Putting it in now, allows for easier
experimentation and exposure of potential problems with real C++
exceptions.
gdb/ChangeLog:
2015-03-07 Pedro Alves <palves@redhat.com>
* common/common-exceptions.c [!__cplusplus] (enum catcher_state)
(exceptions_state_mc_action_iter)
(exceptions_state_mc_action_iter_1, exceptions_state_mc_catch):
Don't define.
[__cplusplus] (try_scope_depth): New global.
[__cplusplus] (exception_try_scope_entry)
(exception_try_scope_exit, gdb_exception_sliced_copy)
(exception_rethrow): New functions.
(throw_exception): In C++ mode, throw
gdb_exception_RETURN_MASK_QUIT for RETURN_QUIT and
gdb_exception_RETURN_MASK_ERROR for RETURN_ERROR.
(throw_it): In C++ mode, use try_scope_depth.
* common/common-exceptions.h [!__cplusplus]
(exceptions_state_mc_action_iter)
(exceptions_state_mc_action_iter_1, exceptions_state_mc_catch):
Don't declare.
[__cplusplus] (exception_try_scope_entry)
(exception_try_scope_exit, exception_rethrow): Declare.
[__cplusplus] (struct exception_try_scope): New struct.
[__cplusplus] (TRY, CATCH, END_CATCH): Reimplement on top of real
C++ exceptions.
(struct gdb_exception_RETURN_MASK_ALL)
(struct gdb_exception_RETURN_MASK_ERROR)
(struct gdb_exception_RETURN_MASK_QUIT): New types.
2015-03-07 15:50:03 +01:00
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-exceptions.c [!__cplusplus] (enum catcher_state)
|
|
|
|
|
(exceptions_state_mc_action_iter)
|
|
|
|
|
(exceptions_state_mc_action_iter_1, exceptions_state_mc_catch):
|
|
|
|
|
Don't define.
|
|
|
|
|
[__cplusplus] (try_scope_depth): New global.
|
|
|
|
|
[__cplusplus] (exception_try_scope_entry)
|
|
|
|
|
(exception_try_scope_exit, gdb_exception_sliced_copy)
|
|
|
|
|
(exception_rethrow): New functions.
|
|
|
|
|
(throw_exception): In C++ mode, throw
|
|
|
|
|
gdb_exception_RETURN_MASK_QUIT for RETURN_QUIT and
|
|
|
|
|
gdb_exception_RETURN_MASK_ERROR for RETURN_ERROR.
|
|
|
|
|
(throw_it): In C++ mode, use try_scope_depth.
|
|
|
|
|
* common/common-exceptions.h [!__cplusplus]
|
|
|
|
|
(exceptions_state_mc_action_iter)
|
|
|
|
|
(exceptions_state_mc_action_iter_1, exceptions_state_mc_catch):
|
|
|
|
|
Don't declare.
|
|
|
|
|
[__cplusplus] (exception_try_scope_entry)
|
|
|
|
|
(exception_try_scope_exit, exception_rethrow): Declare.
|
|
|
|
|
[__cplusplus] (struct exception_try_scope): New struct.
|
|
|
|
|
[__cplusplus] (TRY, CATCH, END_CATCH): Reimplement on top of real
|
|
|
|
|
C++ exceptions.
|
|
|
|
|
(struct gdb_exception_RETURN_MASK_ALL)
|
|
|
|
|
(struct gdb_exception_RETURN_MASK_ERROR)
|
|
|
|
|
(struct gdb_exception_RETURN_MASK_QUIT): New types.
|
|
|
|
|
|
2015-03-07 15:50:03 +01:00
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* main.c (handle_command_errors): Remove volatile qualifier from
|
|
|
|
|
parameter.
|
|
|
|
|
|
2015-03-07 15:50:05 +01:00
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (save_breakpoints): Adjust to avoid code between
|
|
|
|
|
TRY and CATCH.
|
|
|
|
|
* gdbtypes.c (safe_parse_type): Remove empty line.
|
|
|
|
|
(types_deeply_equal):
|
|
|
|
|
* guile/scm-frame.c (gdbscm_frame_name):
|
|
|
|
|
* linux-thread-db.c (find_new_threads_once):
|
|
|
|
|
* python/py-breakpoint.c (bppy_get_commands):
|
|
|
|
|
* record-btrace.c (record_btrace_insert_breakpoint)
|
|
|
|
|
(record_btrace_remove_breakpoint, record_btrace_start_replaying)
|
|
|
|
|
(record_btrace_start_replaying): Adjust to avoid code between TRY
|
|
|
|
|
and CATCH.
|
|
|
|
|
|
Split TRY_CATCH into TRY + CATCH
This patch splits the TRY_CATCH macro into three, so that we go from
this:
~~~
volatile gdb_exception ex;
TRY_CATCH (ex, RETURN_MASK_ERROR)
{
}
if (ex.reason < 0)
{
}
~~~
to this:
~~~
TRY
{
}
CATCH (ex, RETURN_MASK_ERROR)
{
}
END_CATCH
~~~
Thus, we'll be getting rid of the local volatile exception object, and
declaring the caught exception in the catch block.
This allows reimplementing TRY/CATCH in terms of C++ exceptions when
building in C++ mode, while still allowing to build GDB in C mode
(using setjmp/longjmp), as a transition step.
TBC, after this patch, is it _not_ valid to have code between the TRY
and the CATCH blocks, like:
TRY
{
}
// some code here.
CATCH (ex, RETURN_MASK_ERROR)
{
}
END_CATCH
Just like it isn't valid to do that with C++'s native try/catch.
By switching to creating the exception object inside the CATCH block
scope, we can get rid of all the explicitly allocated volatile
exception objects all over the tree, and map the CATCH block more
directly to C++'s catch blocks.
The majority of the TRY_CATCH -> TRY+CATCH+END_CATCH conversion was
done with a script, rerun from scratch at every rebase, no manual
editing involved. After the mechanical conversion, a few places
needed manual intervention, to fix preexisting cases where we were
using the exception object outside of the TRY_CATCH block, and cases
where we were using "else" after a 'if (ex.reason) < 0)' [a CATCH
after this patch]. The result was folded into this patch so that GDB
still builds at each incremental step.
END_CATCH is necessary for two reasons:
First, because we name the exception object in the CATCH block, which
requires creating a scope, which in turn must be closed somewhere.
Declaring the exception variable in the initializer field of a for
block, like:
#define CATCH(EXCEPTION, mask) \
for (struct gdb_exception EXCEPTION; \
exceptions_state_mc_catch (&EXCEPTION, MASK); \
EXCEPTION = exception_none)
would avoid needing END_CATCH, but alas, in C mode, we build with C90,
which doesn't allow mixed declarations and code.
Second, because when TRY/CATCH are wired to real C++ try/catch, as
long as we need to handle cleanup chains, even if there's no CATCH
block that wants to catch the exception, we need for stop at every
frame in the unwind chain and run cleanups, then rethrow. That will
be done in END_CATCH.
After we require C++, we'll still need TRY/CATCH/END_CATCH until
cleanups are completely phased out -- TRY/CATCH in C++ mode will
save/restore the current cleanup chain, like in C mode, and END_CATCH
catches otherwise uncaugh exceptions, runs cleanups and rethrows, so
that C++ cleanups and exceptions can coexist.
IMO, this still makes the TRY/CATCH code look a bit more like a
newcomer would expect, so IMO worth it even if we weren't considering
C++.
gdb/ChangeLog.
2015-03-07 Pedro Alves <palves@redhat.com>
* common/common-exceptions.c (struct catcher) <exception>: No
longer a pointer to volatile exception. Now an exception value.
<mask>: Delete field.
(exceptions_state_mc_init): Remove all parameters. Adjust.
(exceptions_state_mc): No longer pop the catcher here.
(exceptions_state_mc_catch): New function.
(throw_exception): Adjust.
* common/common-exceptions.h (exceptions_state_mc_init): Remove
all parameters.
(exceptions_state_mc_catch): Declare.
(TRY_CATCH): Rename to ...
(TRY): ... this. Remove EXCEPTION and MASK parameters.
(CATCH, END_CATCH): New.
All callers adjusted.
gdb/gdbserver/ChangeLog:
2015-03-07 Pedro Alves <palves@redhat.com>
Adjust all callers of TRY_CATCH to use TRY/CATCH/END_CATCH
instead.
2015-03-07 16:14:14 +01:00
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-exceptions.c (struct catcher) <exception>: No
|
|
|
|
|
longer a pointer to volatile exception. Now an exception value.
|
|
|
|
|
<mask>: Delete field.
|
|
|
|
|
(exceptions_state_mc_init): Remove all parameters. Adjust.
|
|
|
|
|
(exceptions_state_mc): No longer pop the catcher here.
|
|
|
|
|
(exceptions_state_mc_catch): New function.
|
|
|
|
|
(throw_exception): Adjust.
|
|
|
|
|
* common/common-exceptions.h (exceptions_state_mc_init): Remove
|
|
|
|
|
all parameters.
|
|
|
|
|
(exceptions_state_mc_catch): Declare.
|
|
|
|
|
(TRY_CATCH): Rename to ...
|
|
|
|
|
(TRY): ... this. Remove EXCEPTION and MASK parameters.
|
|
|
|
|
(CATCH, END_CATCH): New.
|
|
|
|
|
All callers adjusted.
|
|
|
|
|
|
2015-03-07 15:50:04 +01:00
|
|
|
|
2015-03-07 Tom Tromey <tromey@redhat.com>
|
|
|
|
|
|
|
|
|
|
* top.c (quit_force): Inline and delete DO_TRY, DO_PRINT_EX.
|
|
|
|
|
|
2015-03-07 15:50:04 +01:00
|
|
|
|
2015-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c (amd64_frame_cache, amd64_sigtramp_frame_cache)
|
|
|
|
|
(amd64_epilogue_frame_cache): Normal exception handling code.
|
|
|
|
|
* break-catch-throw.c (check_status_exception_catchpoint)
|
|
|
|
|
(re_set_exception_catchpoint): Ditto.
|
|
|
|
|
* cli/cli-interp.c (safe_execute_command):
|
|
|
|
|
* cli/cli-script.c (script_from_file): Ditto.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_c_for_for_one_variable):
|
|
|
|
|
Ditto.
|
|
|
|
|
* compile/compile-object-run.c (compile_object_run): Ditto.
|
|
|
|
|
* cp-abi.c (baseclass_offset): Ditto.
|
|
|
|
|
* cp-valprint.c (cp_print_value): Ditto.
|
|
|
|
|
* exceptions.c (catch_exceptions_with_msg):
|
|
|
|
|
* frame-unwind.c (frame_unwind_try_unwinder): Ditto.
|
|
|
|
|
* frame.c (get_frame_address_in_block_if_available): Ditto.
|
|
|
|
|
* i386-tdep.c (i386_frame_cache, i386_epilogue_frame_cache)
|
|
|
|
|
(i386_sigtramp_frame_cache): Ditto.
|
|
|
|
|
* infcmd.c (post_create_inferior): Ditto.
|
|
|
|
|
* linespec.c (parse_linespec, find_linespec_symbols):
|
|
|
|
|
* p-valprint.c (pascal_object_print_value): Ditto.
|
|
|
|
|
* parse.c (parse_expression_for_completion): Ditto.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Ditto.
|
|
|
|
|
* remote.c (remote_get_noisy_reply): Ditto.
|
|
|
|
|
* s390-linux-tdep.c (s390_frame_unwind_cache): Ditto.
|
|
|
|
|
* solib-svr4.c (solib_svr4_r_map): Ditto.
|
|
|
|
|
|
2015-03-07 15:52:22 +01:00
|
|
|
|
2015-03-06 Gary Benson <gbenson@redhat.com>
|
2015-03-06 10:42:06 +01:00
|
|
|
|
|
|
|
|
|
* common/common-utils.h (startswith): New inline function.
|
|
|
|
|
All places where this logic was used updated to use the above.
|
|
|
|
|
|
PR gdb/18002: Fix reinsert of a permanent breakpoints
When we find out that a breakpoint is set on top of a program
breakpoint, we mark it as "permanent". E.g.,:
...
if (bp_loc_is_permanent (loc))
{
loc->inserted = 1;
loc->permanent = 1;
}
...
Note we didn't fill in the breakpoint's shadow (shadow_len remains 0).
In case the target claims support for evaluating breakpoint
conditions, GDB sometimes reinserts breakpoints that are already
inserted (to update the conditions on the target side). Since GDB
doesn't know whether the target supports evaluating conditions _of_
software breakpoints (vs hardware breakpoints, etc.) until it actually
tries it, if the target doesn't actually support z0 breakpoints, GDB
ends up reinserting a GDB-managed software/memory breakpoint
(mem-break.c).
And that is the case that is buggy: breakpoints that are marked
inserted contribute their shadows (if any) to the memory returned by
target_read_memory, to mask out breakpoints. Permanent breakpoints
are always marked as inserted. So if the permanent breakpoint doesn't
have a shadow yet in its shadow buffer, but we set shadow_len before
calling target_read_memory, then the still clear shadow_contents
buffer will be used by the breakpoint masking code... And then from
there on, the permanent breakpoint has a broken shadow buffer, and
thus any memory read out of that address will read bogus code, and
many random bad things fall out from that.
The fix is just to set shadow_len at the same time shadow_contents is
set, not one before and another after...
Fixes all gdb.base/bp-permanent.exp FAILs on PPC64 GNU/Linux gdbserver
and probably any other gdbserver port that doesn't do z0 breakpoints.
gdb/ChangeLog:
2015-03-05 Pedro Alves <palves@redhat.com>
PR gdb/18002
* mem-break.c (default_memory_insert_breakpoint): Set shadow_len
after reading the breakpoint's shadow memory.
2015-03-06 00:39:45 +01:00
|
|
|
|
2015-03-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18002
|
|
|
|
|
* mem-break.c (default_memory_insert_breakpoint): Set shadow_len
|
|
|
|
|
after reading the breakpoint's shadow memory.
|
|
|
|
|
|
2015-03-05 17:12:42 +01:00
|
|
|
|
2015-03-05 Mark Kettenis <kettenis@gnu.org>
|
|
|
|
|
|
|
|
|
|
* hppabsd-nat.c: Remove file.
|
|
|
|
|
* hppaobsd-nat.c: New file.
|
|
|
|
|
* Makefile.in (ALLDEPFILES): Remove hppabsd-nat.c. Add
|
|
|
|
|
hppaobsd-nat.c.
|
|
|
|
|
* config/pa/obsd.mh (NATDEPFILES): Replace hppabsd-nat.o with
|
|
|
|
|
hppaobsd-nat.o.
|
|
|
|
|
|
2015-03-04 21:41:17 +01:00
|
|
|
|
2015-03-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (struct target_ops) <to_decr_pc_after_break>: Delete.
|
|
|
|
|
(target_decr_pc_after_break): Delete declaration.
|
|
|
|
|
* target.c (default_target_decr_pc_after_break)
|
|
|
|
|
(target_decr_pc_after_break): Delete.
|
|
|
|
|
* linux-nat.c (check_stopped_by_breakpoint, linux_nat_wait_1): Use
|
|
|
|
|
gdbarch_decr_pc_after_break instead of target_decr_pc_after_break.
|
|
|
|
|
* linux-thread-db.c (check_event): Likewise.
|
|
|
|
|
* infrun.c (adjust_pc_after_break): Likewise.
|
|
|
|
|
* darwin-nat.c (cancel_breakpoint): Likewise.
|
|
|
|
|
* aix-thread.c (aix_thread_wait): Likewise.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
|
2015-03-04 21:41:16 +01:00
|
|
|
|
2015-03-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (save_sigtrap): Check for breakpoints before
|
|
|
|
|
checking watchpoints.
|
|
|
|
|
(status_callback) [USE_SIGTRAP_SIGINFO]: Don't check whether a
|
|
|
|
|
breakpoint is inserted if relying on SIGTRAP's siginfo.si_code.
|
|
|
|
|
(check_stopped_by_breakpoint) [USE_SIGTRAP_SIGINFO]: Decide whether
|
|
|
|
|
a breakpoint triggered based on the SIGTRAP's siginfo.si_code.
|
|
|
|
|
(linux_nat_stopped_by_sw_breakpoint)
|
|
|
|
|
(linux_nat_supports_stopped_by_sw_breakpoint)
|
|
|
|
|
(linux_nat_stopped_by_hw_breakpoint)
|
|
|
|
|
(linux_nat_supports_stopped_by_hw_breakpoint): New functions.
|
|
|
|
|
(linux_nat_wait_1): Don't re-increment the PC if relying on
|
|
|
|
|
SIGTRAP's siginfo->si_code.
|
|
|
|
|
(linux_nat_add_target): Install new target methods.
|
|
|
|
|
* linux-thread-db.c (check_event): Don't account for breakpoint PC
|
|
|
|
|
offset if the target already adjusted the PC.
|
|
|
|
|
* nat/linux-ptrace.h (USE_SIGTRAP_SIGINFO): New.
|
|
|
|
|
(GDB_ARCH_TRAP_BRKPT): New.
|
|
|
|
|
(TRAP_HWBKPT): Define if not already defined.
|
|
|
|
|
|
remote+docs: software/hardware breakpoint traps
This adjusts target remote to tell the core whether a trap was caused
by a breakpoint.
To that end, the patch teaches GDB about new RSP stop reasons "T05
swbreak" and "T05 hwbreak", that remote targets report back to GDB,
similarly to how "T05 watch" indicates a stop caused by a watchpoint.
Because targets that can report these events are expected to
themselves adjust the PC after a software breakpoint, these new stop
reasons must only be reported if the stub is talking to a GDB that
understands them. Because of that, the use of the new stop reasons
needs to be handshaked on initial connection, using the qSupported
mechanism. GDB simply sends "swbreak+" in its qSupports query, and
the stub reports back "swbreak+" too.
Because these new stop reasons are required to fix a fundamental
non-stop mode problem, this commit extends the remote non-stop intro
section in the manual, documenting the events as required.
To be clear, GDB will still cope with remote targets that don't
support these new stop reasons; it will behave just like today.
Tested on x86-64 Fedora 20, native and gdbserver.
gdb/ChangeLog:
2015-03-04 Pedro Alves <palves@redhat.com>
* NEWS: Mention the new "swbreak" and "hwbreak" stop reasons.
* remote.c (struct remote_state) <remote_stopped_by_watchpoint_p>:
Delete field.
<stop_reason>: New field.
(PACKET_swbreak_feature, PACKET_hwbreak_feature): New enum values.
(packet_set_cmd_state): New function.
(remote_protocol_features): Register the "swbreak" and "hwbreak"
features.
(remote_query_supported): If not disabled with the corresponding
"set remote foo-packet" command, report support for the swbreak
and hwbreak features.
(struct stop_reply) <remote_stopped_by_watchpoint_p>: Delete
field.
<stop_reason>: New field.
(remote_parse_stop_reply): Handle "swbreak" and "hwbreak".
(remote_wait_as): Adjust.
(remote_stopped_by_sw_breakpoint)
(remote_supports_stopped_by_sw_breakpoint)
(remote_stopped_by_hw_breakpoint)
(remote_supports_stopped_by_hw_breakpoint): New functions.
(remote_stopped_by_watchpoint): New function.
(init_remote_ops): Install them.
(_initialize_remote): Register new "set/show remote
swbreak-feature-packet" and "set/show remote
swbreak-feature-packet" commands.
gdb/doc/ChangeLog:
2015-03-04 Pedro Alves <palves@redhat.com>
* gdb.texinfo (Remote Configuration): Document the "set/show
remote swbreak-feature-packet" and "set/show remote
hwbreak-feature-packet" commands.
(Packets) <Z0>: Add cross link to the "swbreak" stop reason's
decription.
(Stop Reply Packets): Document the swbreak and hwbreak stop
reasons.
(General Query Packets): Document the swbreak and hwbreak
qSupported features.
(Remote Non-Stop): Explain that swbreak and hwbreak are required.
2015-03-04 21:41:16 +01:00
|
|
|
|
2015-03-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention the new "swbreak" and "hwbreak" stop reasons.
|
|
|
|
|
* remote.c (struct remote_state) <remote_stopped_by_watchpoint_p>:
|
|
|
|
|
Delete field.
|
|
|
|
|
<stop_reason>: New field.
|
|
|
|
|
(PACKET_swbreak_feature, PACKET_hwbreak_feature): New enum values.
|
|
|
|
|
(packet_set_cmd_state): New function.
|
|
|
|
|
(remote_protocol_features): Register the "swbreak" and "hwbreak"
|
|
|
|
|
features.
|
|
|
|
|
(remote_query_supported): If not disabled with the corresponding
|
|
|
|
|
"set remote foo-packet" command, report support for the swbreak
|
|
|
|
|
and hwbreak features.
|
|
|
|
|
(struct stop_reply) <remote_stopped_by_watchpoint_p>: Delete
|
|
|
|
|
field.
|
|
|
|
|
<stop_reason>: New field.
|
|
|
|
|
(remote_parse_stop_reply): Handle "swbreak" and "hwbreak".
|
|
|
|
|
(remote_wait_as): Adjust.
|
|
|
|
|
(remote_stopped_by_sw_breakpoint)
|
|
|
|
|
(remote_supports_stopped_by_sw_breakpoint)
|
|
|
|
|
(remote_stopped_by_hw_breakpoint)
|
|
|
|
|
(remote_supports_stopped_by_hw_breakpoint): New functions.
|
|
|
|
|
(remote_stopped_by_watchpoint): New function.
|
|
|
|
|
(init_remote_ops): Install them.
|
|
|
|
|
(_initialize_remote): Register new "set/show remote
|
|
|
|
|
swbreak-feature-packet" and "set/show remote
|
|
|
|
|
swbreak-feature-packet" commands.
|
|
|
|
|
|
2015-03-04 21:41:15 +01:00
|
|
|
|
2015-03-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* btrace.h: Include target/waitstatus.h.
|
|
|
|
|
(struct btrace_thread_info) <stop_reason>: New field.
|
|
|
|
|
* record-btrace.c (record_btrace_step_thread): Use
|
|
|
|
|
record_check_stopped_by_breakpoint instead of breakpoint_here_p.
|
|
|
|
|
(record_btrace_decr_pc_after_break): Delete.
|
|
|
|
|
(record_btrace_stopped_by_sw_breakpoint)
|
|
|
|
|
(record_btrace_supports_stopped_by_sw_breakpoint)
|
|
|
|
|
(record_btrace_stopped_by_hw_breakpoint)
|
|
|
|
|
(record_btrace_supports_stopped_by_hw_breakpoint): New functions.
|
|
|
|
|
(init_record_btrace_ops): Install them.
|
|
|
|
|
* record-full.c (record_full_hw_watchpoint): Delete and replace
|
|
|
|
|
with ...
|
|
|
|
|
(record_full_stop_reason): ... this throughout.
|
|
|
|
|
(record_full_exec_insn): Adjust.
|
|
|
|
|
(record_full_wait_1): Adjust. No longer re-increment the PC.
|
|
|
|
|
(record_full_wait_1): Adjust. Use
|
|
|
|
|
record_check_stopped_by_breakpoint instead of breakpoint_here_p.
|
|
|
|
|
(record_full_stopped_by_watchpoint): Adjust.
|
|
|
|
|
(record_full_stopped_by_sw_breakpoint)
|
|
|
|
|
(record_full_supports_stopped_by_sw_breakpoint)
|
|
|
|
|
(record_full_supports_stopped_by_sw_breakpoint)
|
|
|
|
|
(record_full_stopped_by_hw_breakpoint)
|
|
|
|
|
(record_full_supports_stopped_by_hw_breakpoint): New functions.
|
|
|
|
|
(init_record_full_ops, init_record_full_core_ops): Install them.
|
|
|
|
|
* record.c (record_check_stopped_by_breakpoint): New function.
|
|
|
|
|
* record.h: Include target/waitstatus.h.
|
|
|
|
|
(record_check_stopped_by_breakpoint): New declaration.
|
|
|
|
|
|
2015-03-04 21:41:15 +01:00
|
|
|
|
2015-03-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
enum lwp_stop_reason -> enum target_stop_reason
|
|
|
|
|
* linux-nat.c (linux_resume_one_lwp, check_stopped_by_watchpoint)
|
|
|
|
|
(linux_nat_stopped_by_watchpoint, status_callback)
|
|
|
|
|
(linux_nat_wait_1): Adjust.
|
|
|
|
|
* linux-nat.h (enum lwp_stop_reason): Delete.
|
|
|
|
|
(struct lwp_info) <stop_reason>: Now an enum target_stop_reason.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_prepare_to_resume): Adjust.
|
|
|
|
|
* target/waitstatus.h (enum target_stop_reason): New.
|
|
|
|
|
|
Teach GDB about targets that can tell whether a trap is a breakpoint event
The moribund locations heuristics are problematic. This patch teaches
GDB about targets that can reliably tell whether a trap was caused by
a software or hardware breakpoint, and thus don't need moribund
locations, thus bypassing all the problems that mechanism has.
The non-stop-fair-events.exp test is frequently failing currently.
E.g., see https://sourceware.org/ml/gdb-testers/2015-q1/msg03148.html.
The root cause is a fundamental problem with moribund locations. For
example, the stepped_breakpoint logic added by af48d08f breaks in this
case (which is what happens with that test):
- Step thread A, no breakpoint is set at PC.
- The kernel doesn't schedule thread A yet.
- Insert breakpoint at A's PC, for some reason (e.g., a step-resume
breakpoint for thread B).
- Kernel finally schedules thread A.
- thread A's stepped_breakpoint flag is not set, even though it now
stepped a breakpoint instruction.
- adjust_pc_after_break gets the PC wrong, because PC == PREV_PC, but
stepped_breakpoint is not set.
We needed the stepped_breakpoint logic to workaround moribund
locations, because otherwise adjust_pc_after_break could apply an
adjustment when it shouldn't just because there _used_ to be a
breakpoint at PC (a moribund breakpoint location). For example, on
x86, that's wrong if the thread really hasn't executed an int3, but
instead executed some other 1-byte long instruction. Getting the PC
adjustment wrong of course leads to the inferior executing the wrong
instruction.
Other problems with moribund locations are:
- if a true SIGTRAP happens to be raised when the program is
executing the PC that used to have a breakpoint, GDB will assume
that is a trap for a breakpoint that has recently been removed, and
thus we miss reporting the random signal to the user.
- to minimize that, we get rid of moribund location after a while.
That while is defined as just a certain number of events being
processed. That number of events sometimes passes by before a
delayed breakpoint is processed, and GDB confuses the trap for a
random signal, thus reporting the random trap. Once the user
resumes the thread, the program crashes because the PC was not
adjusted...
The fix for all this is to bite the bullet and get rid of heuristics
and instead rely on the target knowing accurately what caused the
SIGTRAP. The target/kernel/stub is in the best position to know what
that, because it can e.g. consult priviledged CPU flags GDB has no
access to, or by knowing which exception vector entry was called when
the instruction trapped, etc. Most debug APIs I've seen to date
report breakpoint hits as a distinct event in some fashion. For
example, on the Linux kernel, whether a breakpoint was executed is
exposed to userspace in the si_code field of the SIGTRAP's siginfo.
On Windows, the debug API reports a EXCEPTION_BREAKPOINT exception
code.
We needed to keep around deleted breakpoints in an on-the-side list
(the moribund locations) for two main reasons:
- Know that a SIGTRAP actually is a delayed event for a hit of a
breakpoint that was removed before the event was processed, and
thus should not be reported as a random signal.
- So we still do the decr_pc_after_break adjustment in that case, so
that the thread is resumed at the correct address.
In the new model, if GDB processes an event the target tells is a
breakpoint trap, and GDB doesn't find the corresponding breakpoint in
its breakpoint tables, it means that event is a delayed event for a
breakpoint that has since been removed, and thus the event should be
ignored.
For the decr_pc_after_after issue, it ends up being much simpler that
on targets that can reliably tell whether a breakpoint trapped, for
the breakpoint trap to present the PC already adjusted. Proper
multi-threading support already implies that targets needs to be doing
decr_pc_after_break adjustment themselves, otherwise for example, in
all-stop if two threads hit a breakpoint simultaneously, and the user
does "info threads", he'll see the non-event thread that hit the
breakpoint stopped at the wrong PC.
This way (target adjusts) also ends up eliminating the need for some
awkward re-incrementing of the PC in the record-full and Linux targets
that we do today, and the need for the target_decr_pc_after_break
hook.
If the target always adjusts, then there's a case where GDB needs to
re-increment the PC. Say, on x86, an "int3" instruction that was
explicitly written in the program traps. In this case, GDB should
report a random SIGTRAP signal to the user, with the PC pointing at
the instruction past the int3, just like if GDB was not debugging the
program. The user may well decide to pass the SIGTRAP to the program
because the program being debugged has a SIGTRAP handler that handles
its own breakpoints, and expects the PC to be unadjusted.
Tested on x86-64 Fedora 20.
gdb/ChangeLog:
2015-03-04 Pedro Alves <palves@redhat.com>
* breakpoint.c (need_moribund_for_location_type): New function.
(bpstat_stop_status): Don't skipping checking moribund locations
of breakpoint types which the target tell caused a stop.
(program_breakpoint_here_p): New function, factored out from ...
(bp_loc_is_permanent): ... this.
(update_global_location_list): Don't create a moribund location if
the target supports reporting stops of the type of the removed
breakpoint.
* breakpoint.h (program_breakpoint_here_p): New declaration.
* infrun.c (adjust_pc_after_break): Return early if the target has
already adjusted the PC. Add comments.
(handle_signal_stop): If nothing explains a signal, and the target
tells us the stop was caused by a software breakpoint, check if
there's a breakpoint instruction in the memory. If so, adjust the
PC before presenting the stop to the user. Otherwise, ignore the
trap. If nothing explains a signal, and the target tells us the
stop was caused by a hardware breakpoint, ignore the trap.
* target.h (struct target_ops) <to_stopped_by_sw_breakpoint,
to_supports_stopped_by_sw_breakpoint, to_stopped_by_hw_breakpoint,
to_supports_stopped_by_hw_breakpoint>: New fields.
(target_stopped_by_sw_breakpoint)
(target_supports_stopped_by_sw_breakpoint)
(target_stopped_by_hw_breakpoint)
(target_supports_stopped_by_hw_breakpoint): Define.
* target-delegates.c: Regenerate.
2015-03-04 21:41:15 +01:00
|
|
|
|
2015-03-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (need_moribund_for_location_type): New function.
|
|
|
|
|
(bpstat_stop_status): Don't skipping checking moribund locations
|
|
|
|
|
of breakpoint types which the target tell caused a stop.
|
|
|
|
|
(program_breakpoint_here_p): New function, factored out from ...
|
|
|
|
|
(bp_loc_is_permanent): ... this.
|
|
|
|
|
(update_global_location_list): Don't create a moribund location if
|
|
|
|
|
the target supports reporting stops of the type of the removed
|
|
|
|
|
breakpoint.
|
|
|
|
|
* breakpoint.h (program_breakpoint_here_p): New declaration.
|
|
|
|
|
* infrun.c (adjust_pc_after_break): Return early if the target has
|
|
|
|
|
already adjusted the PC. Add comments.
|
|
|
|
|
(handle_signal_stop): If nothing explains a signal, and the target
|
|
|
|
|
tells us the stop was caused by a software breakpoint, check if
|
|
|
|
|
there's a breakpoint instruction in the memory. If so, adjust the
|
|
|
|
|
PC before presenting the stop to the user. Otherwise, ignore the
|
|
|
|
|
trap. If nothing explains a signal, and the target tells us the
|
|
|
|
|
stop was caused by a hardware breakpoint, ignore the trap.
|
|
|
|
|
* target.h (struct target_ops) <to_stopped_by_sw_breakpoint,
|
|
|
|
|
to_supports_stopped_by_sw_breakpoint, to_stopped_by_hw_breakpoint,
|
|
|
|
|
to_supports_stopped_by_hw_breakpoint>: New fields.
|
|
|
|
|
(target_stopped_by_sw_breakpoint)
|
|
|
|
|
(target_supports_stopped_by_sw_breakpoint)
|
|
|
|
|
(target_stopped_by_hw_breakpoint)
|
|
|
|
|
(target_supports_stopped_by_hw_breakpoint): Define.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
|
2015-03-04 16:03:33 +01:00
|
|
|
|
2015-03-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_fork_inferior): Use the whole of the
|
|
|
|
|
inferior_ptid and pending_follow.related_pid ptids instead of
|
|
|
|
|
building ptids from the process components. Adjust verbose output
|
|
|
|
|
to use target_pid_to_str.
|
|
|
|
|
* linux-nat.c (linux_child_follow_fork): Use the whole of the
|
|
|
|
|
inferior_ptid and pending_follow.related_pid ptids instead of
|
|
|
|
|
building ptids from the process components.
|
|
|
|
|
|
2015-03-04 14:22:42 +01:00
|
|
|
|
2015-03-04 Mark Kettenis <kettenis@gnu.org>
|
|
|
|
|
|
|
|
|
|
* inf-ptrace.c [PT_GET_PROCESS_STATE]
|
|
|
|
|
(inf_ptrace_insert_fork_catchpoint): New function.
|
|
|
|
|
(inf_ptrace_remove_fork_catchpoint): New function.
|
|
|
|
|
(inf_ptrace_target) [PT_GET_PROCESS_STATE]: Install them.
|
|
|
|
|
|
2015-03-04 10:40:41 +01:00
|
|
|
|
2015-03-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (s390_register_name): Return empty string
|
|
|
|
|
instead of NULL for registers that shouldn't be visible.
|
|
|
|
|
|
2015-03-04 10:40:40 +01:00
|
|
|
|
2015-03-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (s390_gdbarch_init): Use the correct syscall
|
|
|
|
|
XML file for 64-bit targets.
|
|
|
|
|
|
2015-03-03 18:45:11 +01:00
|
|
|
|
2015-03-03 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* target.h (find_default_create_inferior): Remove declaration.
|
|
|
|
|
(find_default_attach): Likewise.
|
|
|
|
|
|
2015-03-03 17:28:15 +01:00
|
|
|
|
2015-03-03 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_resume): Remove spurious whitespace.
|
|
|
|
|
Use ptid_get_pid to get the overall process id when resuming all
|
|
|
|
|
threads.
|
|
|
|
|
|
Linux/ptrace: don't convert ptids when asking inf-ptrace layer to resume LWP
Ref: https://sourceware.org/ml/gdb-patches/2015-03/msg00060.html
The record-btrace target can hit an assertion here:
Breakpoint 1, record_btrace_fetch_registers (ops=0x974bfc0 <record_btrace_ops>,
regcache=0x9a0a798, regno=8) at gdb/record-btrace.c:1202
1202 gdb_assert (tp != NULL);
(gdb) p regcache->ptid
$3 = {pid = 23856, lwp = 0, tid = 0}
The problem is that the linux-nat layer converts the ptid to a
single-process ptid before passing the request down to the inf-ptrace
layer, which loses information, and then record-btrace can't find the
corresponding thread in GDB's thread list:
(gdb) bt
#0 record_btrace_fetch_registers (ops=0x974bfc0 <record_btrace_ops>, regcache=0x9a0a798, regno=8)
at gdb/record-btrace.c:1202
#1 0x083f4ee2 in delegate_fetch_registers (self=0x974bfc0 <record_btrace_ops>, arg1=0x9a0a798,
arg2=8) at gdb/target-delegates.c:149
#2 0x08406562 in target_fetch_registers (regcache=0x9a0a798, regno=8)
at gdb/target.c:3279
#3 0x08355255 in regcache_raw_read (regcache=0x9a0a798, regnum=8,
buf=0xbfffe6c0 "¨\003\222\tÀ8kIøæÿ¿HO5\b\035]")
at gdb/regcache.c:643
#4 0x083558a7 in regcache_cooked_read (regcache=0x9a0a798, regnum=8,
buf=0xbfffe6c0 "¨\003\222\tÀ8kIøæÿ¿HO5\b\035]")
at gdb/regcache.c:734
#5 0x08355de3 in regcache_cooked_read_unsigned (regcache=0x9a0a798, regnum=8, val=0xbfffe738)
at gdb/regcache.c:838
#6 0x0827a106 in i386_linux_resume (ops=0x9737ca0 <linux_ops_saved>, ptid=..., step=1,
signal=GDB_SIGNAL_0) at gdb/i386-linux-nat.c:670
#7 0x08280c12 in linux_resume_one_lwp (lp=0x9a0a5b8, step=1, signo=GDB_SIGNAL_0)
at gdb/linux-nat.c:1529
#8 0x08281281 in linux_nat_resume (ops=0x98da608, ptid=..., step=1, signo=GDB_SIGNAL_0)
at gdb/linux-nat.c:1708
#9 0x0850738e in record_btrace_resume (ops=0x98da608, ptid=..., step=1, signal=GDB_SIGNAL_0)
at gdb/record-btrace.c:1760
...
The fix is just to not lose information, and let the intact ptid reach
record-btrace.c.
Tested on x86-64 Fedora 20, -m32.
gdb/ChangeLog:
2015-03-03 Pedro Alves <palves@redhat.com>
* i386-linux-nat.c (i386_linux_resume): Get the ptrace PID out of
the lwp field of ptid. Pass the full ptid to get_thread_regcache.
* inf-ptrace.c (get_ptrace_pid): New function.
(inf_ptrace_resume): Use it.
* linux-nat.c (linux_resume_one_lwp): Pass the LWP's ptid ummodified
to the lower layer.
2015-03-03 14:33:44 +01:00
|
|
|
|
2015-03-03 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* i386-linux-nat.c (i386_linux_resume): Get the ptrace PID out of
|
|
|
|
|
the lwp field of ptid. Pass the full ptid to get_thread_regcache.
|
|
|
|
|
* inf-ptrace.c (get_ptrace_pid): New function.
|
|
|
|
|
(inf_ptrace_resume): Use it.
|
|
|
|
|
* linux-nat.c (linux_resume_one_lwp): Pass the LWP's ptid ummodified
|
|
|
|
|
to the lower layer.
|
|
|
|
|
|
2015-01-29 10:43:05 +01:00
|
|
|
|
2015-03-03 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-btrace.c: Include sys/utsname.h.
|
|
|
|
|
(linux_determine_kernel_ptr_bits): New.
|
|
|
|
|
(linux_enable_bts): Call linux_determine_kernel_ptr_bits.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_enable_btrace): Do not overwrite non-zero
|
|
|
|
|
ptr_bits.
|
|
|
|
|
|
2015-01-23 13:32:12 +01:00
|
|
|
|
2015-03-03 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_update_function): Treat return as tailcall for
|
|
|
|
|
"_dl_runtime_resolve".
|
|
|
|
|
|
2014-06-24 14:25:50 +02:00
|
|
|
|
2015-03-03 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.h (btrace_function) <lbegin, lend>: Remove.
|
|
|
|
|
* btrace.c (ftrace_debug): Do not print the line range.
|
|
|
|
|
(ftrace_skip_file, ftrace_update_lines): Remove.
|
|
|
|
|
(ftrace_new_function): Remove lbegin and lend initialization.
|
|
|
|
|
(btrace_compute_ftrace_bts): Remove call to ftrace_update_lines.
|
|
|
|
|
* record-btrace.c (btrace_compute_src_line_range): New.
|
|
|
|
|
(btrace_call_history_src_line): Call btrace_compute_src_line_range.
|
|
|
|
|
|
follow-exec: delete all non-execing threads
This fixes invalid reads Valgrind first caught when debugging against
a GDBserver patched with a series that adds exec events to the remote
protocol. Like these, using the gdb.threads/thread-execl.exp test:
$ valgrind ./gdb -data-directory=data-directory ./testsuite/gdb.threads/thread-execl -ex "tar extended-remote :9999" -ex "b thread_execler" -ex "c" -ex "set scheduler-locking on"
...
Breakpoint 1, thread_execler (arg=0x0) at src/gdb/testsuite/gdb.threads/thread-execl.c:29
29 if (execl (image, image, NULL) == -1)
(gdb) n
Thread 32509.32509 is executing new program: build/gdb/testsuite/gdb.threads/thread-execl
[New Thread 32509.32532]
==32510== Invalid read of size 4
==32510== at 0x5AA7D8: delete_breakpoint (breakpoint.c:13989)
==32510== by 0x6285D3: delete_thread_breakpoint (thread.c:100)
==32510== by 0x628603: delete_step_resume_breakpoint (thread.c:109)
==32510== by 0x61622B: delete_thread_infrun_breakpoints (infrun.c:2928)
==32510== by 0x6162EF: for_each_just_stopped_thread (infrun.c:2958)
==32510== by 0x616311: delete_just_stopped_threads_infrun_breakpoints (infrun.c:2969)
==32510== by 0x616C96: fetch_inferior_event (infrun.c:3267)
==32510== by 0x63A2DE: inferior_event_handler (inf-loop.c:57)
==32510== by 0x4E0E56: remote_async_serial_handler (remote.c:11877)
==32510== by 0x4AF620: run_async_handler_and_reschedule (ser-base.c:137)
==32510== by 0x4AF6F0: fd_event (ser-base.c:182)
==32510== by 0x63806D: handle_file_event (event-loop.c:762)
==32510== Address 0xcf333e0 is 16 bytes inside a block of size 200 free'd
==32510== at 0x4A07577: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==32510== by 0x77CB74: xfree (common-utils.c:98)
==32510== by 0x5AA954: delete_breakpoint (breakpoint.c:14056)
==32510== by 0x5988BD: update_breakpoints_after_exec (breakpoint.c:3765)
==32510== by 0x61360F: follow_exec (infrun.c:1091)
==32510== by 0x6186FA: handle_inferior_event (infrun.c:4061)
==32510== by 0x616C55: fetch_inferior_event (infrun.c:3261)
==32510== by 0x63A2DE: inferior_event_handler (inf-loop.c:57)
==32510== by 0x4E0E56: remote_async_serial_handler (remote.c:11877)
==32510== by 0x4AF620: run_async_handler_and_reschedule (ser-base.c:137)
==32510== by 0x4AF6F0: fd_event (ser-base.c:182)
==32510== by 0x63806D: handle_file_event (event-loop.c:762)
==32510==
[Switching to Thread 32509.32532]
Breakpoint 1, thread_execler (arg=0x0) at src/gdb/testsuite/gdb.threads/thread-execl.c:29
29 if (execl (image, image, NULL) == -1)
(gdb)
The breakpoint in question is the step-resume breakpoint of the
non-main thread, the one that was "next"ed.
The exact same issue can be seen on mainline with native debugging, by
running the thread-execl.exp test in non-stop mode, because the kernel
doesn't report a thread exit event for the execing thread.
Tested on x86_64 Fedora 20.
gdb/ChangeLog:
2015-03-02 Pedro Alves <palves@redhat.com>
* infrun.c (follow_exec): Delete all threads of the process except
the event thread. Extended comments.
gdb/testsuite/ChangeLog:
2015-03-02 Pedro Alves <palves@redhat.com>
* gdb.threads/thread-execl.exp (do_test): Handle non-stop.
(top level): Call do_test with non-stop as well.
2015-03-03 02:25:17 +01:00
|
|
|
|
2015-03-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_exec): Delete all threads of the process except
|
|
|
|
|
the event thread. Extended comments.
|
|
|
|
|
|
2015-03-02 15:05:01 +01:00
|
|
|
|
2015-03-02 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* contrib/ari/gdb_ari.sh: Reinstate checks for "true" and "false".
|
|
|
|
|
|
Remove use of stdbool.h in GDB sources.
Using type bool from stdbool unfortunately causes problems trying
to build GDB on AiX and Solaris:
In file included from ../../src/gdb/utils.h:24:0,
from ../../src/gdb/defs.h:707,
from ../../src/gdb/utils.c:20:
/[...]/curses.h:96:14: error: two or more data types in declaration
specifiers
typedef char bool;
^
make[2]: *** [utils.o] Error 1
In theory, the problem is in curses.h which, in both cases, do
something similar. On Solaris:
#if !defined(__cplusplus) && !defined(_BOOL)
typedef char bool;
#endif /* !defined(__cplusplus) && !defined(_BOOL) */
On AiX:
#if !defined(__cplusplus) || (defined(__IBMCPP__) &&(__IBMCPP__<400))
#ifndef _BOOL
#define _BOOL
typedef int bool;
#endif
#endif
You can reproduce the same problem by trying to compile:
% cat toto.c
#include <stdbool.h>
#include <curses.h>
% gcc -c toto.c
In file included from toto.c:1:0:
/[...]/curses.h:159:13: error: two or more data types in declaration
specifiers
typedef int bool;
^
This specific issue wouldn't occur if we included curses.h before
including stdbool.h, and I looked at that just to be complete.
Here is a small schematic representation of the include logic:
* utils.c:
-> defs.h -> utils.h -> stdbool.h
-> gdb_curses.h -> curses.h
Because defs.h should always be first on the list, it means that
stdbool.h will always necessarily be included ahead of curses.h.
But, thinking beyond this very specific issue, it shows that using
stdbool.h is going to cause problems on these systems until either
GCC fixes those includes in a way that makes them work; or we switch
to C++.
In the meantime, I think the path of least resistance is to revert
the use of stdbool.h, and use integers, the way we've done up until
now. The benefits of using type "bool" are modest, IMO, so not
a great loss, and a temporary one.
gdb/ChangeLog:
* utils.h: Remove <stdbool.h> #include.
(producer_is_gcc): Change return type to "int".
* utils.c (producer_is_gcc): Change return type to int.
Return 1 instead of true, and 0 instead of false.
Adjust function documentation accordingly.
2015-03-02 15:01:23 +01:00
|
|
|
|
2015-03-02 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* utils.h: Remove <stdbool.h> #include.
|
|
|
|
|
(producer_is_gcc): Change return type to "int".
|
|
|
|
|
* utils.c (producer_is_gcc): Change return type to int.
|
|
|
|
|
Return 1 instead of true, and 0 instead of false.
|
|
|
|
|
Adjust function documentation accordingly.
|
|
|
|
|
|
S390: Add vector register support to gdb
Recognize S/390 targets with the new vector feature and present their
vector registers appropriately: as 32 new 128-bit wide registers
v0-v31, where the first 16 embed the floating point registers f0-f15.
Each of the full registers v0-v15 is modelled as a pseudo register.
gdb/ChangeLog:
* s390-linux-nat.c (have_regset_vxrs): New static variable.
(s390_linux_fetch_inferior_registers): Handle vector registers, if
present.
(s390_linux_store_inferior_registers): Likewise.
(s390_get_hwcap): Remove function. Embed its logic...
(s390_read_description): ...here. Yield a target description with
vector registers if applicable.
* s390-linux-tdep.c: Include "features/s390-vx-linux64.c",
"features/s390-tevx-linux64.c", "features/s390x-vx-linux64.c", and
"features/s390x-tevx-linux64.c".
(struct gdbarch_tdep) <v0_full_regnum>: New field.
(s390_dwarf_regmap): Add vector registers. Remove bogus entries
for "GNU/Linux-specific registers".
(s390_dwarf_reg_r0l): New enum value.
(s390_dwarf_reg_to_regnum): Support vector registers.
(s390_adjust_frame_regnum): Adjust pseudo DWARF register numbers
of GPR lower halves.
(regnum_is_vxr_full): New function.
(s390_register_name): New function.
(s390_pseudo_register_name): Handle v0-v15, which are composed of
f0-f15 and v0l-v15l.
(s390_pseudo_register_type): Likewise.
(s390_pseudo_register_read): Likewise.
(s390_pseudo_register_write): Likewise.
(s390_value_from_register): Account for the fact that values are
placed left-justified in vector registers.
(s390_pseudo_register_reggroup_p): Add pseudo registers v0-v15 to
the vector reggroup and omit them from the general reggroup.
(s390_regmap_vxrs_low, s390_regmap_vxrs_high): New register maps.
(s390_vxrs_low_regset, s390_vxrs_high_regset): New regsets.
(s390_iterate_over_regset_sections): Add iterations for the two
new vector regsets.
(s390_core_read_description): Yield a target description with
vector registers if applicable.
(s390_gdbarch_init): Handle target descriptions with vector
registers. Add "register_name" gdbarch method.
(_initialize_s390_tdep): Call new tdesc initialization functions.
* s390-linux-tdep.h (HWCAP_S390_VX): New macro.
(S390_V0_LOWER_REGNUM, S390_V1_LOWER_REGNUM, S390_V2_LOWER_REGNUM)
(S390_V3_LOWER_REGNUM, S390_V4_LOWER_REGNUM, S390_V5_LOWER_REGNUM)
(S390_V6_LOWER_REGNUM, S390_V7_LOWER_REGNUM, S390_V8_LOWER_REGNUM)
(S390_V9_LOWER_REGNUM, S390_V10_LOWER_REGNUM)
(S390_V11_LOWER_REGNUM, S390_V12_LOWER_REGNUM)
(S390_V13_LOWER_REGNUM, S390_V14_LOWER_REGNUM)
(S390_V15_LOWER_REGNUM, S390_V16_REGNUM, S390_V17_REGNUM)
(S390_V18_REGNUM, S390_V19_REGNUM, S390_V20_REGNUM)
(S390_V21_REGNUM, S390_V22_REGNUM, S390_V23_REGNUM)
(S390_V24_REGNUM, S390_V25_REGNUM, S390_V26_REGNUM)
(S390_V27_REGNUM, S390_V28_REGNUM, S390_V29_REGNUM)
(S390_V30_REGNUM, S390_V31_REGNUM): New macros.
(S390_NUM_REGS): Adjust value.
(s390_vxrs_low_regset, s390_vxrs_high_regset): Declare.
(tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64)
(tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): Likewise.
* NEWS: Announce S/390 vector register support.
2015-03-02 10:57:39 +01:00
|
|
|
|
2015-03-02 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-nat.c (have_regset_vxrs): New static variable.
|
|
|
|
|
(s390_linux_fetch_inferior_registers): Handle vector registers, if
|
|
|
|
|
present.
|
|
|
|
|
(s390_linux_store_inferior_registers): Likewise.
|
|
|
|
|
(s390_get_hwcap): Remove function. Embed its logic...
|
|
|
|
|
(s390_read_description): ...here. Yield a target description with
|
|
|
|
|
vector registers if applicable.
|
|
|
|
|
* s390-linux-tdep.c: Include "features/s390-vx-linux64.c",
|
|
|
|
|
"features/s390-tevx-linux64.c", "features/s390x-vx-linux64.c", and
|
|
|
|
|
"features/s390x-tevx-linux64.c".
|
|
|
|
|
(struct gdbarch_tdep) <v0_full_regnum>: New field.
|
|
|
|
|
(s390_dwarf_regmap): Add vector registers. Remove bogus entries
|
|
|
|
|
for "GNU/Linux-specific registers".
|
|
|
|
|
(s390_dwarf_reg_r0l): New enum value.
|
|
|
|
|
(s390_dwarf_reg_to_regnum): Support vector registers.
|
|
|
|
|
(s390_adjust_frame_regnum): Adjust pseudo DWARF register numbers
|
|
|
|
|
of GPR lower halves.
|
|
|
|
|
(regnum_is_vxr_full): New function.
|
|
|
|
|
(s390_register_name): New function.
|
|
|
|
|
(s390_pseudo_register_name): Handle v0-v15, which are composed of
|
|
|
|
|
f0-f15 and v0l-v15l.
|
|
|
|
|
(s390_pseudo_register_type): Likewise.
|
|
|
|
|
(s390_pseudo_register_read): Likewise.
|
|
|
|
|
(s390_pseudo_register_write): Likewise.
|
|
|
|
|
(s390_value_from_register): Account for the fact that values are
|
|
|
|
|
placed left-justified in vector registers.
|
|
|
|
|
(s390_pseudo_register_reggroup_p): Add pseudo registers v0-v15 to
|
|
|
|
|
the vector reggroup and omit them from the general reggroup.
|
|
|
|
|
(s390_regmap_vxrs_low, s390_regmap_vxrs_high): New register maps.
|
|
|
|
|
(s390_vxrs_low_regset, s390_vxrs_high_regset): New regsets.
|
|
|
|
|
(s390_iterate_over_regset_sections): Add iterations for the two
|
|
|
|
|
new vector regsets.
|
|
|
|
|
(s390_core_read_description): Yield a target description with
|
|
|
|
|
vector registers if applicable.
|
|
|
|
|
(s390_gdbarch_init): Handle target descriptions with vector
|
|
|
|
|
registers. Add "register_name" gdbarch method.
|
|
|
|
|
(_initialize_s390_tdep): Call new tdesc initialization functions.
|
|
|
|
|
* s390-linux-tdep.h (HWCAP_S390_VX): New macro.
|
|
|
|
|
(S390_V0_LOWER_REGNUM, S390_V1_LOWER_REGNUM, S390_V2_LOWER_REGNUM)
|
|
|
|
|
(S390_V3_LOWER_REGNUM, S390_V4_LOWER_REGNUM, S390_V5_LOWER_REGNUM)
|
|
|
|
|
(S390_V6_LOWER_REGNUM, S390_V7_LOWER_REGNUM, S390_V8_LOWER_REGNUM)
|
|
|
|
|
(S390_V9_LOWER_REGNUM, S390_V10_LOWER_REGNUM)
|
|
|
|
|
(S390_V11_LOWER_REGNUM, S390_V12_LOWER_REGNUM)
|
|
|
|
|
(S390_V13_LOWER_REGNUM, S390_V14_LOWER_REGNUM)
|
|
|
|
|
(S390_V15_LOWER_REGNUM, S390_V16_REGNUM, S390_V17_REGNUM)
|
|
|
|
|
(S390_V18_REGNUM, S390_V19_REGNUM, S390_V20_REGNUM)
|
|
|
|
|
(S390_V21_REGNUM, S390_V22_REGNUM, S390_V23_REGNUM)
|
|
|
|
|
(S390_V24_REGNUM, S390_V25_REGNUM, S390_V26_REGNUM)
|
|
|
|
|
(S390_V27_REGNUM, S390_V28_REGNUM, S390_V29_REGNUM)
|
|
|
|
|
(S390_V30_REGNUM, S390_V31_REGNUM): New macros.
|
|
|
|
|
(S390_NUM_REGS): Adjust value.
|
|
|
|
|
(s390_vxrs_low_regset, s390_vxrs_high_regset): Declare.
|
|
|
|
|
(tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64)
|
|
|
|
|
(tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): Likewise.
|
|
|
|
|
* NEWS: Announce S/390 vector register support.
|
|
|
|
|
|
2015-03-02 10:57:39 +01:00
|
|
|
|
2015-03-02 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* features/s390-tevx-linux64.xml: New file.
|
|
|
|
|
* features/s390-vx-linux64.xml: New file.
|
|
|
|
|
* features/s390-vx.xml: New file.
|
|
|
|
|
* features/s390x-tevx-linux64.xml: New file.
|
|
|
|
|
* features/s390x-vx-linux64.xml: New file.
|
|
|
|
|
* features/Makefile (WHICH): Add s390-vx-linux64,
|
|
|
|
|
s390x-vx-linux64, s390-tevx-linux64, and s390x-tevx-linux64.
|
|
|
|
|
(s390-vx-linux64-expedite, s390-tevx-linux64-expedite)
|
|
|
|
|
(s390x-vx-linux64-expedite, s390x-tevx-linux64-expedite): New
|
|
|
|
|
macros.
|
|
|
|
|
* features/s390-tevx-linux64.c: New generated file.
|
|
|
|
|
* features/s390-vx-linux64.c: Likewise.
|
|
|
|
|
* features/s390x-tevx-linux64.c: Likewise.
|
|
|
|
|
* features/s390x-vx-linux64.c: Likewise.
|
|
|
|
|
* regformats/s390-tevx-linux64.dat: Likewise.
|
|
|
|
|
* regformats/s390-vx-linux64.dat: Likewise.
|
|
|
|
|
* regformats/s390x-tevx-linux64.dat: Likewise.
|
|
|
|
|
* regformats/s390x-vx-linux64.dat: Likewise.
|
|
|
|
|
|
2015-02-28 21:05:27 +01:00
|
|
|
|
2015-02-28 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* symtab.h (struct symtab) <next>: Fix comment.
|
|
|
|
|
|
2015-02-27 23:40:36 +01:00
|
|
|
|
2015-02-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_GdbModuleDef): Rename GdbMethods to
|
|
|
|
|
python_GdbMethods.
|
|
|
|
|
|
2015-02-26 15:03:47 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dtrace-probe.c (dtrace_probe_ops): Make extern.
|
|
|
|
|
|
2015-02-09 15:59:12 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-exceptions.h (exception_none): Declare.
|
|
|
|
|
* common/common-exceptions.c (exception_none): Moved from
|
|
|
|
|
exceptions.c.
|
|
|
|
|
(exceptions_state_mc_init): Use exception_none.
|
|
|
|
|
* exceptions.c (exception_none): Move to
|
|
|
|
|
common/common-exceptions.c.
|
|
|
|
|
* exceptions.h (exception_none): Move to
|
|
|
|
|
common/common-exceptions.h.
|
|
|
|
|
|
2015-02-09 15:59:10 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* main.c (catch_command_errors, catch_command_errors_const):
|
|
|
|
|
Remove 'mask' argument. Adjust.
|
|
|
|
|
(captured_main): Adjust callers.
|
|
|
|
|
|
2014-10-22 13:27:50 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h: Include "extension-priv.h".
|
|
|
|
|
|
2014-10-22 13:26:06 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.h (enum print_stop_action): Move further up in the
|
|
|
|
|
file.
|
|
|
|
|
|
2014-10-22 13:16:56 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh: Include regcache.h.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
|
2014-10-22 06:58:23 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (decode_insn) <arm_handle_insn, thumb_handle_insn>:
|
|
|
|
|
Remove duplicate const.
|
|
|
|
|
* sparc-sol2-tdep.c (sparc_sol2_static_transform_name): Remove
|
|
|
|
|
duplicate const.
|
|
|
|
|
|
2015-02-09 14:22:27 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-valprint.c (vtbl_ptr_name): Use EXPORTED_CONST.
|
|
|
|
|
* guile/guile.c (extension_language_guile): Use EXPORTED_CONST.
|
|
|
|
|
* features/feature_to_c.sh: Tag the generated xml_builtin array
|
|
|
|
|
with extern const in C++ mode.
|
|
|
|
|
|
2014-06-05 22:36:27 +02:00
|
|
|
|
2015-02-27 Tom Tromey <tromey@redhat.com>
|
|
|
|
|
|
|
|
|
|
* minidebug.c (struct lzma_stream): Rename to ...
|
|
|
|
|
(struct gdb_lzma_stream): ... this.
|
|
|
|
|
(lzma_open, lzma_pread, lzma_close, lzma_stat): Adjust.
|
|
|
|
|
|
2014-10-22 06:09:07 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-stack.c (mi_apply_ext_lang_frame_filter): New
|
|
|
|
|
function.
|
|
|
|
|
(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
|
|
|
|
|
(mi_cmd_stack_list_variables): Use it.
|
|
|
|
|
|
2014-10-22 14:51:07 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.c (u_debugreg_offset): New function.
|
|
|
|
|
(x86_linux_dr_get, x86_linux_dr_set): Use it.
|
|
|
|
|
|
2014-10-20 01:06:55 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/x86-dregs.h (enum target_hw_bp_type): Remove forward
|
|
|
|
|
declaration.
|
|
|
|
|
Include break-common.h.
|
|
|
|
|
|
2014-10-22 07:08:20 +02:00
|
|
|
|
2015-02-27 Tom Tromey <tromey@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (set_fp_model_sfunc, arm_set_abi): Use 'int' for
|
|
|
|
|
local used to iterate over enums.
|
|
|
|
|
* completer.c (signal_completer): Likewise.
|
|
|
|
|
* i386-tdep.c (i386_stap_parse_special_token): Likewise.
|
|
|
|
|
* rs6000-tdep.c (powerpc_set_vector_abi): Likewise.
|
|
|
|
|
* tui/tui-data.c (tui_next_win, tui_prev_win): Likewise.
|
|
|
|
|
* tui/tui-layout.c (next_layout, prev_layout): Likewise.
|
|
|
|
|
* tui/tui-win.c (tui_refresh_all_win, tui_rehighlight_all)
|
|
|
|
|
(tui_resize_all, tui_set_focus_command, tui_all_windows_info): Likewise.
|
|
|
|
|
* tui-wingeneral.c (tui_refresh_all): Likewise.
|
|
|
|
|
|
2014-10-22 05:35:38 +02:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h: Include "infrun.h".
|
|
|
|
|
|
proc-service, extern "C"
libthread_db.so calls symbols in the client (GDB), through the
proc-service interface. These routines must have extern "C" linkage
so their symbol names are not mangled when GDB is built as a C++
program. On the GDBserver side, we were missing fallback declarations for
all these symbols.
gdb/ChangeLog:
2015-02-27 Pedro Alves <palves@redhat.com>
* gdb_proc_service.h: Wrap with EXTERN_C_PUSH/EXTERN_C_POP.
gdb/gdbserver/ChangeLog:
2015-02-27 Pedro Alves <palves@redhat.com>
* gdb_proc_service.h: Wrap with EXTERN_C_PUSH/EXTERN_C_POP.
[!HAVE_PROC_SERVICE_H] (struct ps_prochandle): Forward declare.
[!HAVE_PROC_SERVICE_H] (ps_pdread, ps_pdwrite, ps_ptread)
ps_ptwrite, ps_lgetregs, ps_lsetregs, ps_lgetfpregs)
(ps_lsetfpregs, ps_getpid)
(ps_get_thread_area, ps_pglobal_lookup, ps_pstop, ps_pcontinue)
(ps_lstop, ps_lcontinue, ps_lgetxregsize, ps_lgetxregs)
(ps_lsetxregs, ps_plog): Declare.
2015-02-09 15:59:09 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdb_proc_service.h: Wrap with EXTERN_C_PUSH/EXTERN_C_POP.
|
|
|
|
|
|
Make functions and variables exported by the IPA be extern "C"
Functions and variables that are exported by the IPA DSO (that
GDBserver needs to look up) should have "C" mangling, thus be declared
with extern "C".
Function and variable declarations need the extern "C" marker, but
variable definitions can't be marked extern, so the patch splits
IP_AGENT_EXPORT into three.
Building in C++ mode revealed that a few variables were missing
IP_AGENT_EXPORT, thus the IPA has been broken when stripped, even in C
mode... So this ends being a bug fix as well.
gdb/ChangeLog:
2015-02-27 Pedro Alves <palves@redhat.com>
* common/agent.h (IPA_SYM_EXPORTED_NAME): New.
(IPA_SYM): Use it.
* common/common-defs.h (EXTERN_C_PUSH, EXTERN_C_POP): New macros.
gdb/gdbserver/ChangeLog:
2015-02-27 Pedro Alves <palves@redhat.com>
* linux-amd64-ipa.c (gdb_agent_get_raw_reg): Use
IP_AGENT_EXPORT_FUNC.
* linux-i386-ipa.c (gdb_agent_get_raw_reg): Use
IP_AGENT_EXPORT_FUNC.
* tracepoint.c (ATTR_USED, ATTR_NOINLINE, ATTR_CONSTRUCTOR)
(IP_AGENT_EXPORT): Delete.
(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
(gdb_trampoline_buffer, gdb_trampoline_buffer_end)
(gdb_trampoline_buffer_error, collecting, gdb_collect)
(stop_tracing, flush_trace_buffer, about_to_request_buffer_space)
(trace_buffer_is_full, stopping_tracepoint, expr_eval_result)
(error_tracepoint, tracepoints, tracing, trace_buffer_ctrl)
(trace_buffer_ctrl_curr, trace_buffer_lo, trace_buffer_hi)
(traceframe_read_count, traceframe_write_count)
(traceframes_created, trace_state_variables, get_raw_reg)
(get_trace_state_variable_value, set_trace_state_variable_value)
(ust_loaded, helper_thread_id, cmd_buf): Use
IPA_SYM_EXPORTED_NAME.
(stop_tracing, flush_trace_buffer): Use IP_AGENT_EXPORT_FUNC.
(tracepoints) Use IP_AGENT_EXPORT_VAR.
(stopping_tracepoint, trace_buffer_is_full, expr_eval_result): Use
IP_AGENT_EXPORT_VAR and wrap in EXTERN_C_PUSH/EXTERN_C_POP.
(last_tracepoint): Move into !IN_PROCESS_AGENT block.
(error_tracepoint): Use IP_AGENT_EXPORT_VAR and wrap in
EXTERN_C_PUSH/EXTERN_C_POP.
(trace_state_variables): Use IP_AGENT_EXPORT_VAR.
(trace_buffer_lo, trace_buffer_hi): Use IP_AGENT_EXPORT_VAR and
wrap in EXTERN_C_PUSH/EXTERN_C_POP.
(trace_buffer_ctrl, trace_buffer_ctrl_curr)
(traceframe_write_count, traceframe_read_count)
(traceframes_created, tracing): Use IP_AGENT_EXPORT_VAR.
(about_to_request_buffer_space, get_trace_state_variable_value)
(set_trace_state_variable_value): Use IP_AGENT_EXPORT_FUNC.
(collecting): Use IP_AGENT_EXPORT_VAR and wrap in
EXTERN_C_PUSH/EXTERN_C_POP.
(gdb_collect): Use IP_AGENT_EXPORT_FUNC.
(ust_loaded, cmd_buf): Use IP_AGENT_EXPORT_VAR.
(helper_thread_id, gdb_agent_capability): Use IP_AGENT_EXPORT_VAR
and wrap in EXTERN_C_PUSH/EXTERN_C_POP.
(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
(gdb_trampoline_buffer, gdb_trampoline_buffer_end)
(gdb_trampoline_buffer_error): Use IP_AGENT_EXPORT_VAR.
* tracepoint.h (ATTR_USED, ATTR_NOINLINE, EXPORTED_SYMBOL):
Define.
(IP_AGENT_EXPORT_FUNC, IP_AGENT_EXPORT_VAR)
(IP_AGENT_EXPORT_VAR_DECL): Define.
(tracing): Declare.
(gdb_agent_get_raw_reg): Declare.
2015-02-09 15:59:08 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/agent.h (IPA_SYM_EXPORTED_NAME): New.
|
|
|
|
|
(IPA_SYM): Use it.
|
|
|
|
|
* common/common-defs.h (EXTERN_C_PUSH, EXTERN_C_POP): New macros.
|
|
|
|
|
|
2015-02-09 15:59:08 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli-out.c (_rl_erase_entire_line): Move declaration out of
|
|
|
|
|
cli_mld_erase_entire_line, and make it extern "C".
|
|
|
|
|
* common/common-defs.h (EXTERN_C): New.
|
|
|
|
|
* completer.c (_rl_completion_prefix_display_length)
|
|
|
|
|
(_rl_print_completions_horizontally, QSFUNC): Move declarations
|
|
|
|
|
out of gdb_display_match_list_1.
|
|
|
|
|
(_rl_qsort_string_compare): Move declaration out of
|
|
|
|
|
gdb_display_match_list_1, and make it extern "C".
|
|
|
|
|
* defs.h (re_comp): Use EXTERN_C.
|
|
|
|
|
* maint.c (_mcleanup): Move declaration out of mcleanup_wrapper,
|
|
|
|
|
and make it extern "C".
|
|
|
|
|
(monstartup): Move declaration out of maintenance_set_profile_cmd,
|
|
|
|
|
and make it extern "C".
|
|
|
|
|
(main): Move declaration out of maintenance_set_profile_cmd.
|
|
|
|
|
* nat/linux-ptrace.c (linux_ptrace_attach_fail_reason_string): Use
|
|
|
|
|
EXTERN_C.
|
|
|
|
|
|
2015-02-09 15:59:06 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (GdbMethods): Rename to ...
|
|
|
|
|
(python_GdbMethods): ... this and make extern.
|
|
|
|
|
(GdbModuleDef): Rename to ...
|
|
|
|
|
(python_GdbModuleDef): ... this and make extern.
|
|
|
|
|
|
2015-02-09 18:13:39 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (set_record_btrace_cmdlist)
|
|
|
|
|
(show_record_btrace_cmdlist): Remove redefinitions.
|
|
|
|
|
|
Fix struct, union, and enum nesting in C++
In C, an enum or structure defined inside other structure has global
scope just like it had been defined outside the struct in the first
place. However, in C++, such a nested structure is given a name that
is nested inside the structure. This patch moves such affected
structures/enums out to global scope, so that code using them works
the same in C++ as it works today in C.
gdb/ChangeLog:
2015-02-27 Tom Tromey <tromey@redhat.com>
Pedro Alves <palves@redhat.com>
* dwarf2-frame.c (enum cfa_how_kind, struct
dwarf2_frame_state_reg_info): Move out of struct
dwarf2_frame_state.
* dwarf2read.c (struct tu_stats): Move out of struct
dwarf2_per_objfile.
(struct file_entry): Move out of struct line_header.
(struct nextfield, struct nextfnfield, struct fnfieldlist, struct
typedef_field_list): Move out of struct field_info.
* gdbtypes.h (enum dynamic_prop_kind, union dynamic_prop_data):
Move out of struct dynamic_prop.
(union type_owner, union field_location, struct field, struct
range_bounds, union type_specific): Move out of struct main_type.
(struct fn_fieldlist, struct fn_field, struct typedef_field)
(VOFFSET_STATIC): Move out of struct cplus_struct_type.
(struct call_site_target, union call_site_parameter_u, struct
call_site_parameter): Move out of struct call_site.
* m32c-tdep.c (enum m32c_prologue_kind): Move out of struct
m32c_prologue.
(enum srcdest_kind): Move out of struct srcdest.
* main.c (enum cmdarg_kind): Move out of struct cmdarg.
* prologue-value.h (enum prologue_value_kind): Move out of struct
prologue_value.
* s390-linux-tdep.c (enum s390_abi_kind): Move out of struct
gdbarch_tdep.
* stabsread.c (struct nextfield, struct next_fnfieldlist): Move
out of struct field_info.
* symfile.h (struct other_sections): Move out of struct
section_addr_info.
* symtab.c (struct symbol_cache_slot): Move out struct
block_symbol_cache.
* target-descriptions.c (enum tdesc_type_kind): Move out of
typedef struct tdesc_type.
* tui/tui-data.h (enum tui_line_or_address_kind): Move out of
struct tui_line_or_address.
* value.c (enum internalvar_kind, union internalvar_data): Move
out of struct internalvar.
* xtensa-tdep.h (struct ctype_cache): Move out of struct
gdbarch_tdep.
2015-02-09 15:59:05 +01:00
|
|
|
|
2015-02-27 Tom Tromey <tromey@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2-frame.c (enum cfa_how_kind, struct
|
|
|
|
|
dwarf2_frame_state_reg_info): Move out of struct
|
|
|
|
|
dwarf2_frame_state.
|
|
|
|
|
* dwarf2read.c (struct tu_stats): Move out of struct
|
|
|
|
|
dwarf2_per_objfile.
|
|
|
|
|
(struct file_entry): Move out of struct line_header.
|
|
|
|
|
(struct nextfield, struct nextfnfield, struct fnfieldlist, struct
|
|
|
|
|
typedef_field_list): Move out of struct field_info.
|
|
|
|
|
* gdbtypes.h (enum dynamic_prop_kind, union dynamic_prop_data):
|
|
|
|
|
Move out of struct dynamic_prop.
|
|
|
|
|
(union type_owner, union field_location, struct field, struct
|
|
|
|
|
range_bounds, union type_specific): Move out of struct main_type.
|
|
|
|
|
(struct fn_fieldlist, struct fn_field, struct typedef_field)
|
|
|
|
|
(VOFFSET_STATIC): Move out of struct cplus_struct_type.
|
|
|
|
|
(struct call_site_target, union call_site_parameter_u, struct
|
|
|
|
|
call_site_parameter): Move out of struct call_site.
|
|
|
|
|
* m32c-tdep.c (enum m32c_prologue_kind): Move out of struct
|
|
|
|
|
m32c_prologue.
|
|
|
|
|
(enum srcdest_kind): Move out of struct srcdest.
|
|
|
|
|
* main.c (enum cmdarg_kind): Move out of struct cmdarg.
|
|
|
|
|
* prologue-value.h (enum prologue_value_kind): Move out of struct
|
|
|
|
|
prologue_value.
|
|
|
|
|
* s390-linux-tdep.c (enum s390_abi_kind): Move out of struct
|
|
|
|
|
gdbarch_tdep.
|
|
|
|
|
* stabsread.c (struct nextfield, struct next_fnfieldlist): Move
|
|
|
|
|
out of struct field_info.
|
|
|
|
|
* symfile.h (struct other_sections): Move out of struct
|
|
|
|
|
section_addr_info.
|
|
|
|
|
* symtab.c (struct symbol_cache_slot): Move out struct
|
|
|
|
|
block_symbol_cache.
|
|
|
|
|
* target-descriptions.c (enum tdesc_type_kind): Move out of
|
|
|
|
|
typedef struct tdesc_type.
|
|
|
|
|
* tui/tui-data.h (enum tui_line_or_address_kind): Move out of
|
|
|
|
|
struct tui_line_or_address.
|
|
|
|
|
* value.c (enum internalvar_kind, union internalvar_data): Move
|
|
|
|
|
out of struct internalvar.
|
|
|
|
|
* xtensa-tdep.h (struct ctype_cache): Move out of struct
|
|
|
|
|
gdbarch_tdep.
|
|
|
|
|
|
2015-02-27 17:33:07 +01:00
|
|
|
|
2015-02-27 Tom Tromey <tromey@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
Rename symbols whose names are reserved C++ keywords throughout.
|
|
|
|
|
|
Add --enable-build-with-cxx configure switch
This new option, disabled by default for now, allows specifying
whether to build GDB, GDBserver, and friends with a C++ (98/03)
compiler.
The name of the switch should be familiar to those who followed GCC's
own C++ conversion process.
. Adding -fpermissive to COMPILER in C++ mode (see the new
build-with-cxx.m4 file) makes errors like these be warnings instead:
gdb/infrun.c:6597:1: error: initializing argument 1 of ‘void sig_print_info(gdb_signal)’ [-fpermissive]
sig_print_info (enum gdb_signal oursig)
^
gdb/infrun.c: In function ‘void do_restore_infcall_suspend_state_cleanup(void*)’:
gdb/infrun.c:7164:39: error: invalid conversion from ‘void*’ to ‘infcall_suspend_state*’ [-fpermissive]
restore_infcall_suspend_state (state);
^
so that the compiler carries on compiling the file. -Werror still
catches the warnings, so nothing is lost, only our lifes are made
easier by concentrating on getting other more important things out of
the way first.
There's no way to quiet those warnings. Until they're all fixed, when
building in C++ mode, -Werror is disabled by default.
. Adding -Wno-narrowing suppresses thousands of instances of this warning:
gdb/arm-linux-tdep.c:439:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘ULONGEST {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Werror=narrowing]
gdb/arm-linux-tdep.c:439:1: error: narrowing conversion of ‘-1l’ from ‘LONGEST {aka long int}’ to ‘ULONGEST {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Werror=narrowing]
gdb/arm-linux-tdep.c:450:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘ULONGEST {aka long unsigned int}’ inside { } is ill-formed in C++11 [-Werror=narrowing]
We can defer handling those until we target C++11.
. Adding -Wno-sign-compare suppresses thousands of instances of this warning:
gdb/linux-record.c:1763:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (tmpulongest == tdep->fcntl_F_GETLK64)
^
. Adding -Wno-write-strings suppresses thousands of instances of this warning:
gdb/mi/mi-cmd-var.c: In function ‘void mi_cmd_var_show_attributes(char*, char**, int)’:
gdb/mi/mi-cmd-var.c:514:12: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
attstr = "editable";
^
gdb/mi/mi-cmd-var.c:516:12: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
attstr = "noneditable";
^
For now, it's best to hide these warnings from view until we're
'-fpermissive'-clean, and can thus start building with -Werror.
The C compiler has always managed to build working GDBs with these
issues in the code, so a C++ compiler should too.
gdb/ChangeLog:
2015-02-27 Pedro Alves <palves@redhat.com>
* Makefile.in (COMPILER): New, get it from autoconf.
(COMPILE.pre, CC_LD): Use COMPILER.
(CXX): Get from autoconf instead.
(CXX_FOR_TARGET): Default to g++ instead of gcc.
* acinclude.m4: Include build-with-cxx.m4.
* build-with-cxx.m4: New file.
* configure.ac: Call AC_PROG_CXX and GDB_AC_BUILD_WITH_CXX.
Disable -Werror by default if building in C++ mode.
(build_warnings): Add -Wno-sign-compare, -Wno-write-strings and
-Wno-narrowing in C++ mode. Only enable -Wpointer-sign in C mode.
Run supported-warning-flags tests with the C++ compiler.
Save/restore CXXFLAGS too.
* configure: Regenerate.
gdb/gdbserver/ChangeLog:
2015-02-27 Pedro Alves <palves@redhat.com>
* Makefile.in (COMPILER): New, get it from autoconf.
(CXX): Get from autoconf instead.
(COMPILE.pre): Use COMPILER.
(CC-LD): Rename to ...
(CC_LD): ... this. Use COMPILER.
(gdbserver$(EXEEXT), gdbreplay$(EXEEXT), $(IPA_LIB)): Adjust.
(CXX_FOR_TARGET): Default to g++ instead of gcc.
* acinclude.m4: Include build-with-cxx.m4.
* configure.ac: Call AC_PROG_CXX and GDB_AC_BUILD_WITH_CXX.
Disable -Werror by default if building in C++ mode.
(build_warnings): Add -Wno-sign-compare, -Wno-write-strings and
-Wno-narrowing in C++ mode. Run supported-warning-flags tests with
the C++ compiler. Save/restore CXXFLAGS too.
* configure: Regenerate.
2015-02-27 14:11:25 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (COMPILER): New, get it from autoconf.
|
|
|
|
|
(COMPILE.pre, CC_LD): Use COMPILER.
|
|
|
|
|
(CXX): Get from autoconf instead.
|
|
|
|
|
(CXX_FOR_TARGET): Default to g++ instead of gcc.
|
|
|
|
|
* acinclude.m4: Include build-with-cxx.m4.
|
|
|
|
|
* build-with-cxx.m4: New file.
|
|
|
|
|
* configure.ac: Call AC_PROG_CXX and GDB_AC_BUILD_WITH_CXX.
|
|
|
|
|
Disable -Werror by default if building in C++ mode.
|
|
|
|
|
(build_warnings): Add -Wno-sign-compare, -Wno-write-strings and
|
|
|
|
|
-Wno-narrowing in C++ mode. Only enable -Wpointer-sign in C mode.
|
|
|
|
|
Run supported-warning-flags tests with the C++ compiler.
|
|
|
|
|
Save/restore CXXFLAGS too.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
Create libiberty.m4, have GDB and GDBserver use it
Converting GDB to be a C++ program, I stumbled on 'basename' issues,
like:
src/gdb/../include/ansidecl.h:169:64: error: new declaration ‘char* basename(const char*)’
/usr/include/string.h:597:26: error: ambiguates old declaration ‘const char* basename(const char*)’
which I believe led to this bit in gold's configure.ac:
dnl We have to check these in C, not C++, because autoconf generates
dnl tests which have no type information, and current glibc provides
dnl multiple declarations of functions like basename when compiling
dnl with C++.
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
These checks IIUC intend to generate all the HAVE_DECL_FOO symbols
that libiberty.h and ansidecl.h check.
GDB is missing these checks currently, which results in the conflict
shown above.
This adds an m4 file that both GDB and GDBserver's configury use to
pull in the autoconf checks that libiberty clients needs done in order
to use these libiberty.h/ansidecl.h.
gdb/ChangeLog:
2015-02-27 Pedro Alves <palves@redhat.com>
* libiberty.m4: New file.
* acinclude.m4: Include libiberty.m4.
* configure.ac: Call libiberty_INIT.
* config.in, configure: Regenerate.
gdb/gdbserver/
2015-02-27 Pedro Alves <palves@redhat.com>
* acinclude.m4: Include libiberty.m4.
* configure.ac: Call libiberty_INIT.
* config.in, configure: Regenerate.
2015-02-27 16:52:02 +01:00
|
|
|
|
2015-02-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* libiberty.m4: New file.
|
|
|
|
|
* acinclude.m4: Include libiberty.m4.
|
|
|
|
|
* configure.ac: Call libiberty_INIT.
|
|
|
|
|
* config.in, configure: Regenerate.
|
|
|
|
|
|
2015-02-27 10:47:54 +01:00
|
|
|
|
2015-02-27 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (s390_gcc_target_options): Not just handle
|
|
|
|
|
31-bit targets, but 64-bit targets as well.
|
|
|
|
|
(s390_gnu_triplet_regexp): New function.
|
|
|
|
|
(s390_gdbarch_init): Set the gcc_target_options gdbarch method for
|
|
|
|
|
64-bit targets as well. Set the gnu_triplet_regexp gdbarch
|
|
|
|
|
method.
|
|
|
|
|
|
2015-02-27 09:49:59 +01:00
|
|
|
|
2015-02-27 Jon TURNEY <jon.turney@dronecode.org.uk> (tiny patch)
|
2015-02-19 00:13:47 +01:00
|
|
|
|
|
|
|
|
|
* windows-nat.c (CONTEXT_DEBUGGER): Remove.
|
|
|
|
|
(CONTEXT_DEBUGGER_DR): Add CONTEXT_SEGMENTS. Incorporate flags
|
|
|
|
|
from CONTEXT_DEBUGGER.
|
|
|
|
|
|
2015-02-27 02:31:29 +01:00
|
|
|
|
2015-02-26 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (internal_type_vptr_fieldno): Add missing call to
|
|
|
|
|
CHECK_TYPEDEF.
|
|
|
|
|
(set_type_vptr_fieldno): Ditto.
|
|
|
|
|
(internal_type_vptr_basetype, set_type_vptr_basetype): Ditto.
|
|
|
|
|
* gnu-v3-abi.c (gnuv3_dynamic_class): Ditto.
|
|
|
|
|
|
2015-02-26 19:29:12 +01:00
|
|
|
|
2015-02-26 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* auto-load.h (file_is_auto_load_safe): Add ATTRIBUTE_PRINTF.
|
|
|
|
|
* complaints.c (vcomplaint): Pass argument FMT directly to
|
|
|
|
|
printf-like functions instead of complaint->fmt.
|
|
|
|
|
* ctf.c (ctf_save_write_metadata): Add ATTRIBUTE_PRINTF.
|
|
|
|
|
* darwin-nat.c (inferior_debug): Add ATTRIBUTE_PRINTF.
|
|
|
|
|
* compile/compile-loc2c.c (pushf, unary, binary): Add
|
|
|
|
|
ATTRIBUTE_PRINTF.
|
|
|
|
|
(do_compile_dwarf_expr_to_c): Pass string literal as format string
|
|
|
|
|
to pushf.
|
|
|
|
|
(BINARY): Pass string literal as format string to 'binary'.
|
|
|
|
|
* compile/compile-object-load.c (link_callbacks_einfo): Add
|
|
|
|
|
ATTRIBUTE_PRINTF.
|
|
|
|
|
* guile/guile-internal.h (gdbscm_printf): Add ATTRIBUTE_PRINTF.
|
|
|
|
|
|
2015-02-26 18:13:58 +01:00
|
|
|
|
2015-02-26 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* windows-termcap.c: Rename to ...
|
|
|
|
|
* stub-termcap.c: ... this. Adjust header line.
|
|
|
|
|
* Makefile.in (SFILES): Refer to stub-termcap.c instead of
|
|
|
|
|
windows-termcap.c.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* configure.ac: Refer to stub-termcap.o instead of
|
|
|
|
|
windows-termcap.o.
|
|
|
|
|
* gdb_curses.h: Mention stub-termcap.c instead of
|
|
|
|
|
windows-termcap.c.
|
|
|
|
|
|
2015-02-26 17:40:57 +01:00
|
|
|
|
2015-02-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-c-symbols.c (convert_one_symbol, convert_symbol_bmsym)
|
|
|
|
|
(gcc_symbol_address): Call gnu_ifunc_resolve_addr.
|
|
|
|
|
|
2015-02-25 17:00:01 +01:00
|
|
|
|
2015-02-26 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* gdb/infcmd.c (print_return_value): use type_to_string to print type.
|
|
|
|
|
|
2015-02-26 14:08:01 +01:00
|
|
|
|
2015-02-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* elfread.c (elf_read_minimal_symbols): Use bfd_alloc for
|
|
|
|
|
bfd_canonicalize_symtab.
|
|
|
|
|
|
2015-02-25 15:51:42 +01:00
|
|
|
|
2015-02-25 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64fbsd-nat.c: Include sys/user.h.
|
|
|
|
|
(_initialize_amd64fbsd_nat): Use the KERN_PROC_SIGTRAMP sysctl
|
|
|
|
|
instead of KERN_PS_STRINGS to locate the signal trampoline.
|
|
|
|
|
* i386fbsd-nat.c: Include sys/user.h.
|
|
|
|
|
(_initialize_i386fbsd_nat): Use the KERN_PROC_SIGTRAMP sysctl
|
|
|
|
|
instead of KERN_PS_STRINGS to locate the signal trampoline.
|
|
|
|
|
* amd64fbsd-tdep.c (amd64fbsd_sigtramp_code): New.
|
|
|
|
|
(amd64fbsd_sigtramp_p): New.
|
|
|
|
|
(amd64fbsd_sigtramp_start_addr, amd64fbsd_sigtramp_end_addr): No
|
|
|
|
|
longer set default values.
|
|
|
|
|
(amd64fbsd_init_abi): Set "sigtramp_p" to "amd64fbsd_sigtramp_p".
|
|
|
|
|
* i386fbsd-tdep.c (i386fbsd_sigtramp_start)
|
|
|
|
|
(i386fbsd_sigtramp_middle, i386fbsd_sigtramp_end)
|
|
|
|
|
(i386fbsd_freebsd4_sigtramp_start)
|
|
|
|
|
(i386fbsd_freebsd4_sigtramp_middle)
|
|
|
|
|
(i386fbsd_freebsd4_sigtramp_end, i386fbsd_osigtramp_start)
|
|
|
|
|
(i386fbsd_osigtramp_middle, i386fbsd_osigtramp_end): New.
|
|
|
|
|
(i386fbsd_sigtramp_p): New.
|
|
|
|
|
(i386fbsd_sigtramp_start_addr, i386fbsd_sigtramp_end_addr): No
|
|
|
|
|
longer set default values.
|
|
|
|
|
(i386fbsd_init_abi): Set "sigtramp_p" to "i386fbsd_sigtramp_p".
|
|
|
|
|
|
2015-02-26 12:07:57 +01:00
|
|
|
|
2015-02-25 John Baldwin <jhb@freebsd.org>
|
|
|
|
|
|
|
|
|
|
* amd64fbsd-tdep.c (amd64fbsd_sigcontext_addr): Use
|
|
|
|
|
get_frame_register instead of frame_unwind_register_unsigned.
|
|
|
|
|
|
2015-02-26 11:50:08 +01:00
|
|
|
|
2015-02-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR build/18033
|
|
|
|
|
* compile/compile-c-support.c (c_compute_program): Change // comment.
|
|
|
|
|
* compile/compile-object-load.c (setup_sections): Change // comment.
|
|
|
|
|
|
2015-02-26 10:42:04 +01:00
|
|
|
|
2015-02-26 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
PR build/18033:
|
|
|
|
|
* iq2000-tdep.c (iq2000_frame_cache): Delete C++-style comment.
|
|
|
|
|
|
remote.c: simplify parsing stop reasons in T stop replies
We need to be careful with parsing optional stop reasons that start
with an hex character ("awatch", "core"), as GDBs that aren't aware of
them parse them as real numbers. That's silly of course, given that
there should be a colon after those magic "numbers". So if strtol on
"abbz:" doesn't return "first invalid char" pointing to the colon, we
know that "abbz" isn't really a register number. It must be optional
stop info we don't know about. This adjusts GDB to work that way,
removing the need for the special casing done upfront:
/* If this packet is an awatch packet, don't parse the 'a'
as a register number. */
if (strncmp (p, "awatch", strlen("awatch")) != 0
&& strncmp (p, "core", strlen ("core") != 0))
For as long as we care about compatibility with GDB 7.9, we'll need to
continue to be careful about this, so I added a comment.
Tested on x86_64 Fedora 20, native gdbserver.
gdb/ChangeLog:
2015-02-23 Pedro Alves <palves@redhat.com>
* remote.c (skip_to_semicolon): New function.
(remote_parse_stop_reply) <T stop reply>: Use it. Don't
special case the stop reasons that look like hex numbers
upfront. Instead handle real register numbers after matching
all the known stop reasons.
2015-02-23 17:45:39 +01:00
|
|
|
|
2015-02-23 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (skip_to_semicolon): New function.
|
|
|
|
|
(remote_parse_stop_reply) <T stop reply>: Use it. Don't
|
|
|
|
|
special case the stop reasons that look like hex numbers
|
|
|
|
|
upfront. Instead handle real register numbers after matching
|
|
|
|
|
all the known stop reasons.
|
|
|
|
|
|
2015-02-22 06:58:31 +01:00
|
|
|
|
2015-02-21 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR c++/17976, symtab/17821
|
|
|
|
|
* cp-namespace.c (cp_search_static_and_baseclasses): New parameter
|
|
|
|
|
is_in_anonymous. All callers updated.
|
|
|
|
|
(find_symbol_in_baseclass): Ditto.
|
|
|
|
|
(cp_lookup_nested_symbol_1): Ditto. Don't search all static blocks
|
|
|
|
|
for symbols in an anonymous namespace.
|
|
|
|
|
* dwarf2read.c (namespace_name): Don't call dwarf2_name, fetch
|
|
|
|
|
DW_AT_name directly.
|
|
|
|
|
(dwarf2_name): Convert missing namespace name to
|
|
|
|
|
CP_ANONYMOUS_NAMESPACE_STR.
|
|
|
|
|
|
GNU/Linux: Stop using libthread_db/td_ta_thr_iter
TL;DR - GDB can hang if something refreshes the thread list out of the
target while the target is running. GDB hangs inside td_ta_thr_iter.
The fix is to not use that libthread_db function anymore.
Long version:
Running the testsuite against my all-stop-on-top-of-non-stop series is
still exposing latent non-stop bugs.
I was originally seeing this with the multi-create.exp test, back when
we were still using libthread_db thread event breakpoints. The
all-stop-on-top-of-non-stop series forces a thread list refresh each
time GDB needs to start stepping over a breakpoint (to pause all
threads). That test hits the thread event breakpoint often, resulting
in a bunch of step-over operations, thus a bunch of thread list
refreshes while some threads in the target are running.
The commit adds a real non-stop mode test that triggers the issue,
based on multi-create.exp, that does an explicit "info threads" when a
breakpoint is hit. IOW, it does the same things the as-ns series was
doing when testing multi-create.exp.
The bug is a race, so it unfortunately takes several runs for the test
to trigger it. In fact, even when setting the test running in a loop,
it sometimes takes several minutes for it to trigger for me.
The race is related to libthread_db's td_ta_thr_iter. This is
libthread_db's entry point for walking the thread list of the
inferior.
Sometimes, when GDB refreshes the thread list from the target,
libthread_db's td_ta_thr_iter can somehow see glibc's thread list as a
cycle, and get stuck in an infinite loop.
The issue is that when a thread exits, its thread control structure in
glibc is moved from a "used" list to a "cache" list. These lists are
simply circular linked lists where the "next/prev" pointers are
embedded in the thread control structure itself. The "next" pointer
of the last element of the list points back to the list's sentinel
"head". There's only one set of "next/prev" pointers for both lists;
thus a thread can only be in one of the lists at a time, not in both
simultaneously.
So when thread C exits, simplifying, the following happens. A-C are
threads. stack_used and stack_cache are the list's heads.
Before:
stack_used -> A -> B -> C -> (&stack_used)
stack_cache -> (&stack_cache)
After:
stack_used -> A -> B -> (&stack_used)
stack_cache -> C -> (&stack_cache)
td_ta_thr_iter starts by iterating at the list's head's next, and
iterates until it sees a thread whose next pointer points to the
list's head again. Thus in the before case above, C's next points to
stack_used, indicating end of list. In the same case, the stack_cache
list is empty.
For each thread being iterated, td_ta_thr_iter reads the whole thread
object out of the inferior. This includes the thread's "next"
pointer.
In the scenario above, it may happen that td_ta_thr_iter is iterating
thread B and has already read B's thread structure just before thread
C exits and its control structure moves to the cached list.
Now, recall that td_ta_thr_iter is running in the context of GDB, and
there's no locking between GDB and the inferior. From it's local copy
of B, td_ta_thr_iter believes that the next thread after B is thread
C, so it happilly continues iterating to C, a thread that has already
exited, and is now in the stack cache list.
After iterating C, td_ta_thr_iter finds the stack_cache head, which
because it is not stack_used, td_ta_thr_iter assumes it's just another
thread. After this, unless the reverse race triggers, GDB gets stuck
in td_ta_thr_iter forever walking the stack_cache list, as no thread
in thatlist has a next pointer that points back to stack_used (the
terminating condition).
Before fully understanding the issue, I tried adding cycle detection
to GDB's td_ta_thr_iter callback. However, td_ta_thr_iter skips
calling the callback in some cases, which means that it's possible
that the callback isn't called at all, making it impossible for GDB to
break the loop. I did manage to get GDB stuck in that state more than
once.
Fortunately, we can avoid the issue altogether. We don't really need
td_ta_thr_iter for live debugging nowadays, given PTRACE_EVENT_CLONE.
We already know how to map and lwp id to a thread id without iterating
(thread_from_lwp), so use that more.
gdb/ChangeLog:
2015-02-20 Pedro Alves <palves@redhat.com>
* linux-nat.c (linux_handle_extended_wait): Call
thread_db_notice_clone whenever a new clone LWP is detected.
(linux_stop_and_wait_all_lwps, linux_unstop_all_lwps): New
functions.
* linux-nat.h (thread_db_attach_lwp): Delete declaration.
(thread_db_notice_clone, linux_stop_and_wait_all_lwps)
(linux_unstop_all_lwps): Declare.
* linux-thread-db.c (struct thread_get_info_inout): Delete.
(thread_get_info_callback): Delete.
(thread_from_lwp): Use td_thr_get_info and record_thread.
(thread_db_attach_lwp): Delete.
(thread_db_notice_clone): New function.
(try_thread_db_load_1): If /proc is mounted and shows the
process'es task list, walk over all LWPs and call thread_from_lwp
instead of relying on td_ta_thr_iter.
(attach_thread): Don't call check_thread_signals here. Split the
tail part of the function (which adds the thread to the core GDB
thread list) to ...
(record_thread): ... this function. Call check_thread_signals
here.
(thread_db_wait): Don't call thread_db_find_new_threads_1. Always
call thread_from_lwp.
(thread_db_update_thread_list): Rename to ...
(thread_db_update_thread_list_org): ... this.
(thread_db_update_thread_list): New function.
(thread_db_find_thread_from_tid): Delete.
(thread_db_get_ada_task_ptid): Simplify.
* nat/linux-procfs.c: Include <sys/stat.h>.
(linux_proc_task_list_dir_exists): New function.
* nat/linux-procfs.h (linux_proc_task_list_dir_exists): Declare.
gdb/gdbserver/ChangeLog:
2015-02-20 Pedro Alves <palves@redhat.com>
* thread-db.c: Include "nat/linux-procfs.h".
(thread_db_init): Skip listing new threads if the kernel supports
PTRACE_EVENT_CLONE and /proc/PID/task/ is accessible.
gdb/testsuite/ChangeLog:
2015-02-20 Pedro Alves <palves@redhat.com>
* gdb.threads/multi-create-ns-info-thr.exp: New file.
2015-02-20 21:21:59 +01:00
|
|
|
|
2015-02-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_handle_extended_wait): Call
|
|
|
|
|
thread_db_notice_clone whenever a new clone LWP is detected.
|
|
|
|
|
(linux_stop_and_wait_all_lwps, linux_unstop_all_lwps): New
|
|
|
|
|
functions.
|
|
|
|
|
* linux-nat.h (thread_db_attach_lwp): Delete declaration.
|
|
|
|
|
(thread_db_notice_clone, linux_stop_and_wait_all_lwps)
|
|
|
|
|
(linux_unstop_all_lwps): Declare.
|
|
|
|
|
* linux-thread-db.c (struct thread_get_info_inout): Delete.
|
|
|
|
|
(thread_get_info_callback): Delete.
|
|
|
|
|
(thread_from_lwp): Use td_thr_get_info and record_thread.
|
|
|
|
|
(thread_db_attach_lwp): Delete.
|
|
|
|
|
(thread_db_notice_clone): New function.
|
|
|
|
|
(try_thread_db_load_1): If /proc is mounted and shows the
|
|
|
|
|
process'es task list, walk over all LWPs and call thread_from_lwp
|
|
|
|
|
instead of relying on td_ta_thr_iter.
|
|
|
|
|
(attach_thread): Don't call check_thread_signals here. Split the
|
|
|
|
|
tail part of the function (which adds the thread to the core GDB
|
|
|
|
|
thread list) to ...
|
|
|
|
|
(record_thread): ... this function. Call check_thread_signals
|
|
|
|
|
here.
|
|
|
|
|
(thread_db_wait): Don't call thread_db_find_new_threads_1. Always
|
|
|
|
|
call thread_from_lwp.
|
|
|
|
|
(thread_db_update_thread_list): Rename to ...
|
|
|
|
|
(thread_db_update_thread_list_org): ... this.
|
|
|
|
|
(thread_db_update_thread_list): New function.
|
|
|
|
|
(thread_db_find_thread_from_tid): Delete.
|
|
|
|
|
(thread_db_get_ada_task_ptid): Simplify.
|
|
|
|
|
* nat/linux-procfs.c: Include <sys/stat.h>.
|
|
|
|
|
(linux_proc_task_list_dir_exists): New function.
|
|
|
|
|
* nat/linux-procfs.h (linux_proc_task_list_dir_exists): Declare.
|
|
|
|
|
|
linux-nat.c: fix a few lin_lwp_attach_lwp issues
This function has a few latent bugs that are triggered by a non-stop
mode test that will be added in a subsequent patch.
First, as described in the function's intro comment, the function is
supposed to return 1 if we're already auto attached to the thread, but
haven't processed the PTRACE_EVENT_CLONE event of its parent thread
yet.
Then, we may find that we're trying to attach to a clone child that
hasn't yet stopped for its initial stop, and therefore 'waitpid(...,
WNOHANG)' returns 0. In that case, we're currently adding the LWP to
the stopped_pids list, which results in linux_handle_extended_wait
skipping the waitpid call on the child, and thus confusing things
later on when the child eventually reports the stop.
Then, the tail end of lin_lwp_attach_lwp always sets the
last_resume_kind of the LWP to resume_stop, which is wrong given that
the user may be doing "info threads" while some threads are running.
And then, the else branch of lin_lwp_attach_lwp always sets the
stopped flag of the LWP. This branch is reached if the LWP is the
main LWP, which may well be running at this point (to it's wrong to
set its 'stopped' flag).
AFAICS, there's no reason anymore for special-casing the main/leader
LWP here:
- For the "attach" case, linux_nat_attach already adds the main LWP to
the lwp list, and sets its 'stopped' flag.
- For the "run" case, after linux_nat_create_inferior, end up in
linux_nat_wait_1 here:
/* The first time we get here after starting a new inferior, we may
not have added it to the LWP list yet - this is the earliest
moment at which we know its PID. */
if (ptid_is_pid (inferior_ptid))
{
/* Upgrade the main thread's ptid. */
thread_change_ptid (inferior_ptid,
ptid_build (ptid_get_pid (inferior_ptid),
ptid_get_pid (inferior_ptid), 0));
lp = add_initial_lwp (inferior_ptid);
lp->resumed = 1;
}
... which adds the LWP to the LWP list already, before
lin_lwp_attach_lwp can ever be reached.
gdb/ChangeLog:
2015-02-20 Pedro Alves <palves@redhat.com>
* linux-nat.c (lin_lwp_attach_lwp): No longer special case the
main LWP. Handle the case of waitpid returning 0 if we're already
attached to the LWP. Don't set the LWP's last_resume_kind to
resume_stop if we already knew about the LWP.
(linux_nat_filter_event): Add debug logs.
2015-02-20 21:21:59 +01:00
|
|
|
|
2015-02-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (lin_lwp_attach_lwp): No longer special case the
|
|
|
|
|
main LWP. Handle the case of waitpid returning 0 if we're already
|
|
|
|
|
attached to the LWP. Don't set the LWP's last_resume_kind to
|
|
|
|
|
resume_stop if we already knew about the LWP.
|
|
|
|
|
(linux_nat_filter_event): Add debug logs.
|
|
|
|
|
|
2015-02-19 21:48:49 +01:00
|
|
|
|
2015-02-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (forward_target_decr_pc_after_break): Delete
|
|
|
|
|
declaration.
|
|
|
|
|
|
PR18006: internal error if threaded program calls clone(CLONE_VM)
On GNU/Linux, if a pthreaded program has a thread call clone(CLONE_VM)
directly, and then that clone LWP hits a debug event (breakpoint,
etc.) GDB internal errors. Threaded programs shouldn't really be
calling clone directly, but GDB shouldn't crash either.
The crash looks like this:
(gdb) break clone_fn
Breakpoint 2 at 0x4007d8: file clone-thread_db.c, line 35.
(gdb) r
...
[Thread debugging using libthread_db enabled]
...
src/gdb/linux-nat.c:1030: internal-error: lin_lwp_attach_lwp: Assertion `lwpid > 0' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
The problem is that 'clone' ends up clearing the parent thread's tid
field in glibc's thread data structure. For x86_64, the glibc code in
question is here:
sysdeps/unix/sysv/linux/x86_64/clone.S:
...
testq $CLONE_THREAD, %rdi
jne 1f
testq $CLONE_VM, %rdi
movl $-1, %eax <----
jne 2f
movl $SYS_ify(getpid), %eax
syscall
2: movl %eax, %fs:PID
movl %eax, %fs:TID <----
1:
When GDB refreshes the thread list out of libthread_db, it finds a
thread with LWP with pid -1 (the clone's parent), which naturally
isn't yet on the thread list. GDB then tries to attach to that bogus
LWP id, which is caught by that assertion.
The fix is to detect the bad PID early.
Tested on x86-64 Fedora 20. GDBserver doesn't need any fix.
gdb/ChangeLog:
2015-02-20 Pedro Alves <palves@redhat.com>
PR threads/18006
* linux-thread-db.c (thread_get_info_callback): Return early if
the thread's lwp id is -1.
gdb/testsuite/ChangeLog:
2015-02-20 Pedro Alves <palves@redhat.com>
PR threads/18006
* gdb.threads/clone-thread_db.c: New file.
* gdb.threads/clone-thread_db.exp: New file.
2015-02-20 20:00:21 +01:00
|
|
|
|
2015-02-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR threads/18006
|
|
|
|
|
* linux-thread-db.c (thread_get_info_callback): Return early if
|
|
|
|
|
the thread's lwp id is -1.
|
|
|
|
|
|
2015-02-20 18:20:23 +01:00
|
|
|
|
2015-02-20 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.9 released.
|
|
|
|
|
|
2015-02-19 23:42:37 +01:00
|
|
|
|
2015-02-19 Steve Ellcey <sellcey@imgtec.com>
|
|
|
|
|
|
|
|
|
|
* dtrace-probe.c (dtrace_process_dof_probe): Initialize arg.expr.
|
|
|
|
|
(dtrace_get_probes) Change type of variable 'dof'.
|
|
|
|
|
|
2015-02-12 20:55:08 +01:00
|
|
|
|
2015-02-19 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
PR breakpoints/16812
|
|
|
|
|
* linux-nat.c (linux_nat_filter_event): Report SIGTRAP,SIGILL,SIGSEGV.
|
|
|
|
|
* nat/linux-ptrace.c (linux_wstatus_maybe_breakpoint): Add.
|
|
|
|
|
* nat/linux-ptrace.h: Add linux_wstatus_maybe_breakpoint.
|
|
|
|
|
|
[gdb/ax] small "setv" fix and documentation's adjustment.
gdb/doc/agentexpr.texi documents the "setv" opcode as follow:
@item @code{setv} (0x2d) @var{n}: @result{} @var{v}
Set trace state variable number @var{n} to the value found on the top
of the stack. The stack is unchanged, so that the value is readily
available if the assignment is part of a larger expression. The
handling of @var{n} is as described for @code{getv}.
The @item line is incorrect (and does not match with its
description), so this patch fixes it.
Additionally, in gdb/common/ax.def we find the line:
DEFOP (setv, 2, 0, 0, 1, 0x2d)
From the comment earlier in the file:
Each line is of the form:
DEFOP (name, size, data_size, consumed, produced, opcode)
[...]
CONSUMED is the number of stack elements consumed.
PRODUCED is the number of stack elements produced.
which is saying that nothing is consumed and one item is produced.
Both should be 0 or both should be 1.
This patch sets them both to 1, which seems better since if nothing
is on the stack an error will occur.
gdb/ChangeLog:
* common/ax.def (setv): Fix consumed entry in setv DEFOP.
gdb/doc/ChangeLog:
* agentexpr.texi (Bytecode Descriptions): Fix summary line for setv.
Tested on x86_64-linux.
2015-02-19 15:53:50 +01:00
|
|
|
|
2015-02-19 David Taylor <dtaylor@emc.com>
|
|
|
|
|
|
|
|
|
|
* common/ax.def (setv): Fix consumed entry in setv DEFOP.
|
|
|
|
|
|
2015-02-19 00:50:51 +01:00
|
|
|
|
2015-02-18 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_handle_resize_during_io): Remove this
|
|
|
|
|
function.
|
|
|
|
|
(tui_putc): Don't call tui_handle_resize_during_io.
|
|
|
|
|
(tui_getc): Likewise.
|
|
|
|
|
(tui_mld_getc): Likewise.
|
|
|
|
|
* tui/tui-win.c: Include event-loop.h and tui/tui-io.h.
|
|
|
|
|
(tui_sigwinch_token): New static variable.
|
|
|
|
|
(tui_initialize_win): Adjust documentation. Set
|
|
|
|
|
tui_sigwinch_token.
|
|
|
|
|
(tui_async_resize_screen): New asynchronous callback.
|
|
|
|
|
(tui_sigwinch_handler): Adjust documentation. Asynchronously
|
|
|
|
|
invoke tui_async_resize_screen.
|
|
|
|
|
|
2015-02-18 13:52:53 +01:00
|
|
|
|
2015-02-18 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* configure: Regenerated.
|
|
|
|
|
* configure.ac: Use GDB_AC_TRANSFORM.
|
|
|
|
|
* Makefile.in (aclocal_m4_deps): Added transform.m4.
|
|
|
|
|
* acinclude.m4: sinclude transform.m4.
|
|
|
|
|
* transform.m4: New file.
|
|
|
|
|
(GDB_AC_TRANSFORM): New macro.
|
|
|
|
|
|
2015-02-17 16:43:48 +01:00
|
|
|
|
2015-02-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Announce the support for DTrace SDT probes.
|
|
|
|
|
|
2015-02-17 16:04:01 +01:00
|
|
|
|
2015-02-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.c: Include "parser-defs.h" and "user-regs.h".
|
|
|
|
|
(amd64_dtrace_parse_probe_argument): New function.
|
|
|
|
|
(amd64_dtrace_probe_is_enabled): Likewise.
|
|
|
|
|
(amd64_dtrace_enable_probe): Likewise.
|
|
|
|
|
(amd64_dtrace_disable_probe): Likewise.
|
|
|
|
|
(amd64_linux_init_abi): Register the
|
|
|
|
|
`gdbarch_dtrace_probe_argument', `gdbarch_dtrace_enable_probe',
|
|
|
|
|
`gdbarch_dtrace_disable_probe' and
|
|
|
|
|
`gdbarch_dtrace_probe_is_enabled' hooks.
|
|
|
|
|
(amd64_dtrace_disabled_probe_sequence_1): New constant.
|
|
|
|
|
(amd64_dtrace_disabled_probe_sequence_2): Likewise.
|
|
|
|
|
(amd64_dtrace_enable_probe_sequence): Likewise.
|
|
|
|
|
(amd64_dtrace_disable_probe_sequence): Likewise.
|
|
|
|
|
|
2015-02-17 16:03:22 +01:00
|
|
|
|
2015-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (BREAK_ARGS_HELP): Help string updated to mention
|
|
|
|
|
the -probe-dtrace new vpossible value for PROBE_MODIFIER.
|
|
|
|
|
* configure.ac (CONFIG_OBS): dtrace-probe.o added if BFD can
|
|
|
|
|
handle ELF files.
|
|
|
|
|
* Makefile.in (SFILES): dtrace-probe.c added.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* dtrace-probe.c: New file.
|
|
|
|
|
(SHT_SUNW_dof): New constant.
|
|
|
|
|
(dtrace_probe_type): New enum.
|
|
|
|
|
(dtrace_probe_arg): New struct.
|
|
|
|
|
(dtrace_probe_arg_s): New typedef.
|
|
|
|
|
(struct dtrace_probe_enabler): New struct.
|
|
|
|
|
(dtrace_probe_enabler_s): New typedef.
|
|
|
|
|
(dtrace_probe): New struct.
|
|
|
|
|
(dtrace_probe_is_linespec): New function.
|
|
|
|
|
(dtrace_dof_sect_type): New enum.
|
|
|
|
|
(dtrace_dof_dofh_ident): Likewise.
|
|
|
|
|
(dtrace_dof_encoding): Likewise.
|
|
|
|
|
(DTRACE_DOF_ENCODE_LSB): Likewise.
|
|
|
|
|
(DTRACE_DOF_ENCODE_MSB): Likewise.
|
|
|
|
|
(dtrace_dof_hdr): New struct.
|
|
|
|
|
(dtrace_dof_sect): Likewise.
|
|
|
|
|
(dtrace_dof_provider): Likewise.
|
|
|
|
|
(dtrace_dof_probe): Likewise.
|
|
|
|
|
(DOF_UINT): New macro.
|
|
|
|
|
(DTRACE_DOF_PTR): Likewise.
|
|
|
|
|
(DTRACE_DOF_SECT): Likewise.
|
|
|
|
|
(dtrace_process_dof_probe): New function.
|
|
|
|
|
(dtrace_process_dof): Likewise.
|
|
|
|
|
(dtrace_build_arg_exprs): Likewise.
|
|
|
|
|
(dtrace_get_arg): Likewise.
|
|
|
|
|
(dtrace_get_probes): Likewise.
|
|
|
|
|
(dtrace_get_probe_argument_count): Likewise.
|
|
|
|
|
(dtrace_can_evaluate_probe_arguments): Likewise.
|
|
|
|
|
(dtrace_evaluate_probe_argument): Likewise.
|
|
|
|
|
(dtrace_compile_to_ax): Likewise.
|
|
|
|
|
(dtrace_probe_destroy): Likewise.
|
|
|
|
|
(dtrace_gen_info_probes_table_header): Likewise.
|
|
|
|
|
(dtrace_gen_info_probes_table_values): Likewise.
|
|
|
|
|
(dtrace_probe_is_enabled): Likewise.
|
|
|
|
|
(dtrace_probe_ops): New variable.
|
|
|
|
|
(info_probes_dtrace_command): New function.
|
|
|
|
|
(_initialize_dtrace_probe): Likewise.
|
|
|
|
|
(dtrace_type_name): Likewise.
|
|
|
|
|
|
2015-02-17 15:54:44 +01:00
|
|
|
|
2015-02-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh (dtrace_parse_probe_argument): New.
|
|
|
|
|
(dtrace_probe_is_enabled): Likewise.
|
|
|
|
|
(dtrace_enable_probe): Likewise.
|
|
|
|
|
(dtrace_disable_probe): Likewise.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
|
2015-02-17 15:51:07 +01:00
|
|
|
|
2015-02-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* stap-probe.c (stap_probe_ops): Add NULLs in the static
|
|
|
|
|
stap_probe_ops for `enable_probe' and `disable_probe'.
|
|
|
|
|
* probe.c (enable_probes_command): New function.
|
|
|
|
|
(disable_probes_command): Likewise.
|
|
|
|
|
(_initialize_probe): Define the cli commands `enable probe' and
|
|
|
|
|
`disable probe'.
|
|
|
|
|
(parse_probe_linespec): New function.
|
|
|
|
|
(info_probes_for_ops): Use parse_probe_linespec.
|
|
|
|
|
* probe.h (probe_ops): New hooks `enable_probe' and
|
|
|
|
|
`disable_probe'.
|
|
|
|
|
|
2015-02-17 15:50:19 +01:00
|
|
|
|
2015-02-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* probe.c (compute_probe_arg): Moved from stap-probe.c
|
|
|
|
|
(compile_probe_arg): Likewise.
|
|
|
|
|
(probe_funcs): Likewise.
|
|
|
|
|
* stap-probe.c (compute_probe_arg): Moved to probe.c.
|
|
|
|
|
(compile_probe_arg): Likewise.
|
|
|
|
|
(probe_funcs): Likewise.
|
|
|
|
|
|
2015-02-17 15:49:12 +01:00
|
|
|
|
2015-02-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* probe.c (print_ui_out_not_applicables): New function.
|
|
|
|
|
(exists_probe_with_pops): Likewise.
|
|
|
|
|
(info_probes_for_ops): Do not include column headers for probe
|
|
|
|
|
types for which no probe has been actually found on any object.
|
|
|
|
|
Also invoke `print_ui_out_not_applicables' in order to match the
|
|
|
|
|
column rows with the header when probes of several types are
|
|
|
|
|
listed.
|
|
|
|
|
Print the "Type" column.
|
|
|
|
|
* probe.h (probe_ops): Added a new probe operation `type_name'.
|
|
|
|
|
* stap-probe.c (stap_probe_ops): Add `stap_type_name'.
|
|
|
|
|
(stap_type_name): New function.
|
|
|
|
|
|
2015-02-17 14:06:10 +01:00
|
|
|
|
2015-02-17 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_getc): Don't call key_is_command_char.
|
|
|
|
|
(key_is_command_char): Delete.
|
|
|
|
|
|
TUI: resize windows to new terminal size before displaying them
If the user:
#1 - disables the TUI
#2 - resizes the terminal
#3 - and then re-enables the TUI
the next wgetch() returns KEY_RESIZE. This indicates to the ncurses
client that ncurses detected that the terminal has been resized. We
don't handle KEY_RESIZE anywhere, so it gets passed on to readline
which interprets it as a multibyte character, and then the end result
is that the first key press after enabling the TUI is misinterpreted.
We shouldn't really need to handle KEY_RESIZE (and not all ncurses
implementations have that). We have our own SIGWINCH handler, and,
when we re-enable the TUI, we explicitly detect terminal resizes and
resize all windows. The reason ncurses currently does detects a
resize is that something within tui_enable forces a refresh/display of
some window before we get to do the actual resizing. Setting a break
on ncurses' 'resizeterm' function helps find the culprit(s):
(top-gdb) bt
#0 resizeterm (ToLines=28, ToCols=114) at ../../ncurses/base/resizeterm.c:462
#1 0x0000003b42812f3f in _nc_update_screensize (sp=0x2674730) at ../../ncurses/tinfo/lib_setup.c:443
#2 0x0000003b0821cbe0 in doupdate () at ../../ncurses/tty/tty_update.c:726
#3 0x0000003b08215539 in wrefresh (win=0x2a7bc00) at ../../ncurses/base/lib_refresh.c:65
#4 0x00000000005257cb in tui_refresh_win (win_info=0xd73d60 <_locator>) at /home/pedro/gdb/mygit/src/gdb/tui/tui-wingeneral.c:60
#5 0x000000000052265b in tui_show_locator_content () at /home/pedro/gdb/mygit/src/gdb/tui/tui-stack.c:269
#6 0x00000000005273a6 in tui_set_key_mode (mode=TUI_COMMAND_MODE) at /home/pedro/gdb/mygit/src/gdb/tui/tui.c:321
#7 0x00000000005278c7 in tui_enable () at /home/pedro/gdb/mygit/src/gdb/tui/tui.c:494
#8 0x0000000000527011 in tui_rl_switch_mode (notused1=1, notused2=1) at /home/pedro/gdb/mygit/src/gdb/tui/tui.c:108
That is, tui_enable calls tui_set_key_mode before we've resized all
windows, and that refreshes a window as side effect.
And if we're already debugging something (there's a frame), then we'll
instead show a window from within tui_show_frame_info:
(top-gdb) bt
#0 resizeterm (ToLines=28, ToCols=114) at ../../ncurses/base/resizeterm.c:462
#1 0x0000003b42812f3f in _nc_update_screensize (sp=0x202e6c0) at ../../ncurses/tinfo/lib_setup.c:443
#2 0x0000003b0821cbe0 in doupdate () at ../../ncurses/tty/tty_update.c:726
#3 0x0000003b08215539 in wrefresh (win=0x2042890) at ../../ncurses/base/lib_refresh.c:65
#4 0x00000000005257cb in tui_refresh_win (win_info=0xd73d60 <_locator>) at /home/pedro/gdb/mygit/src/gdb/tui/tui-wingeneral.c:60
#5 0x000000000052265b in tui_show_locator_content () at /home/pedro/gdb/mygit/src/gdb/tui/tui-stack.c:269
#6 0x0000000000522931 in tui_show_frame_info (fi=0x16b9cc0) at /home/pedro/gdb/mygit/src/gdb/tui/tui-stack.c:364
#7 0x00000000005278ba in tui_enable () at /home/pedro/gdb/mygit/src/gdb/tui/tui.c:491
#8 0x0000000000527011 in tui_rl_switch_mode (notused1=1, notused2=1) at /home/pedro/gdb/mygit/src/gdb/tui/tui.c:108
The fix is to resize windows earlier.
gdb/ChangeLog:
2015-02-17 Pedro Alves <palves@redhat.com>
* tui/tui.c (tui_enable): Resize windows before anything
might show a window.
2015-02-17 11:05:52 +01:00
|
|
|
|
2015-02-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui.c (tui_enable): Resize windows before anything
|
|
|
|
|
might show a window.
|
|
|
|
|
|
2015-02-16 17:24:53 +01:00
|
|
|
|
2015-02-17 Max Ostapenko <m.ostapenko@partner.samsung.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/17984
|
|
|
|
|
* aarch64-linux-nat.c: Don't include features/aarch64.c anymore.
|
|
|
|
|
(aarch64_linux_read_description): Remove initialize_tdesc_aarch64
|
|
|
|
|
call.
|
|
|
|
|
* aarch64-tdep.h (tdesc_aarch64): Declare.
|
|
|
|
|
|
2015-02-12 16:51:53 +01:00
|
|
|
|
2015-02-12 Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
* contrib/ari/gdb_ari.sh: Remove checks for "true" and "false".
|
|
|
|
|
|
2015-02-13 21:03:50 +01:00
|
|
|
|
2015-02-13 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* cp-namespace.c (cp_basic_lookup_symbol): Rename parameter
|
|
|
|
|
anonymous_namespace to is_in_anonymous for consistency with the rest
|
|
|
|
|
of the file.
|
|
|
|
|
(cp_lookup_bare_symbol): Fix typo in comment.
|
|
|
|
|
(cp_search_static_and_baseclasses): Ditto.
|
|
|
|
|
(search_symbol_list): Use vertical space in comment better.
|
|
|
|
|
(reset_directive_searched): Ditto. Fix typo.
|
|
|
|
|
(cp_lookup_nested_symbol_1): Clarify contents of NESTED_NAME parameter.
|
|
|
|
|
|
2015-02-13 11:23:16 +01:00
|
|
|
|
2015-02-13 Yao Qi <yao.qi@arm.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS: Update my email address.
|
|
|
|
|
|
2015-02-12 22:32:36 +01:00
|
|
|
|
2015-02-12 Doug Evans <dje@google.com>
|
|
|
|
|
|
2015-02-23 22:39:45 +01:00
|
|
|
|
* symtab.c (completion_list_add_name): Fix memory leak.
|
2015-02-12 22:32:36 +01:00
|
|
|
|
|
2015-02-12 21:19:31 +01:00
|
|
|
|
2015-02-12 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* completer.c (complete_line): Remove incorrect comment.
|
|
|
|
|
|
2015-02-11 14:50:09 +01:00
|
|
|
|
2015-02-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_single_arg, enumerate_locals)
|
|
|
|
|
(py_print_frame): Use RETURN_MASK_ERROR.
|
|
|
|
|
|
2015-02-11 14:44:00 +01:00
|
|
|
|
2015-02-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Mention RETURN_QUIT in
|
|
|
|
|
function comment. Wrap all function that can throw in cleanups.
|
|
|
|
|
(gdbpy_apply_frame_filter): Wrap all function that can throw in
|
|
|
|
|
cleanups.
|
|
|
|
|
|
2015-02-11 14:40:14 +01:00
|
|
|
|
2015-02-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Substitute goto error.
|
|
|
|
|
Remove the error label.
|
|
|
|
|
|
2015-02-11 14:37:40 +01:00
|
|
|
|
2015-02-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Put conditional code paths
|
|
|
|
|
with goto first, indent the former else codepath left. Put variable
|
|
|
|
|
'elided' to a new inner block.
|
|
|
|
|
|
2015-02-11 14:33:48 +01:00
|
|
|
|
2015-02-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Whitespacing fixes.
|
|
|
|
|
|
2015-02-10 12:01:21 +01:00
|
|
|
|
2015-02-11 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xcoffread.c (within_function): Delete.
|
|
|
|
|
|
Fix redefinition errors in C++ mode
In C, we can forward declare static structure instances. That doesn't
work in C++ though. C++ treats these as definitions. So then the
compiler complains about symbol redefinition, like:
src/gdb/elfread.c:1569:29: error: redefinition of ‘const sym_fns elf_sym_fns_lazy_psyms’
src/gdb/elfread.c:53:29: error: ‘const sym_fns elf_sym_fns_lazy_psyms’ previously declared here
The intent of static here is naturally to avoid making these objects
visible outside the compilation unit. The equivalent in C++ would be
to instead define the objects in the anonymous namespace. But given
that it's desirable to leave the codebase compiling as both C and C++
for a while, this just makes the objects extern.
(base_breakpoint_ops is already declared in breakpoint.h, so we can
just remove the forward declare from breakpoint.c)
gdb/ChangeLog:
2015-02-11 Tom Tromey <tromey@redhat.com>
Pedro Alves <palves@redhat.com>
* breakpoint.c (base_breakpoint_ops): Delete.
* dwarf2loc.c (dwarf_expr_ctx_funcs): Make extern.
* elfread.c (elf_sym_fns_gdb_index, elf_sym_fns_lazy_psyms): Make extern.
* guile/guile.c (guile_extension_script_ops, guile_extension_ops): Make extern.
* ppcnbsd-tdep.c (ppcnbsd2_sigtramp): Make extern.
* python/py-arch.c (arch_object_type): Make extern.
* python/py-block.c (block_syms_iterator_object_type): Make extern.
* python/py-bpevent.c (breakpoint_event_object_type): Make extern.
* python/py-cmd.c (cmdpy_object_type): Make extern.
* python/py-continueevent.c (continue_event_object_type)
* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Remove 'qual'
parameter. Update all callers.
* python/py-evtregistry.c (eventregistry_object_type): Make extern.
* python/py-exitedevent.c (exited_event_object_type): Make extern.
* python/py-finishbreakpoint.c (finish_breakpoint_object_type): Make extern.
* python/py-function.c (fnpy_object_type): Make extern.
* python/py-inferior.c (inferior_object_type, membuf_object_type): Make extern.
* python/py-infevents.c (call_pre_event_object_type)
(inferior_call_post_event_object_type).
(memory_changed_event_object_type): Make extern.
* python/py-infthread.c (thread_object_type): Make extern.
* python/py-lazy-string.c (lazy_string_object_type): Make extern.
* python/py-linetable.c (linetable_entry_object_type)
(linetable_object_type, ltpy_iterator_object_type): Make extern.
* python/py-newobjfileevent.c (new_objfile_event_object_type)
(clear_objfiles_event_object_type): Make extern.
* python/py-objfile.c (objfile_object_type): Make extern.
* python/py-param.c (parmpy_object_type): Make extern.
* python/py-progspace.c (pspace_object_type): Make extern.
* python/py-signalevent.c (signal_event_object_type): Make extern.
* python/py-symtab.c (symtab_object_type, sal_object_type): Make extern.
* python/py-type.c (type_object_type, field_object_type)
(type_iterator_object_type): Make extern.
* python/python.c (python_extension_script_ops)
(python_extension_ops): Make extern.
* stap-probe.c (stap_probe_ops): Make extern.
2015-02-11 12:20:21 +01:00
|
|
|
|
2015-02-11 Tom Tromey <tromey@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (base_breakpoint_ops): Delete.
|
|
|
|
|
* dwarf2loc.c (dwarf_expr_ctx_funcs): Make extern.
|
|
|
|
|
* elfread.c (elf_sym_fns_gdb_index, elf_sym_fns_lazy_psyms): Make extern.
|
|
|
|
|
* guile/guile.c (guile_extension_script_ops, guile_extension_ops): Make extern.
|
|
|
|
|
* ppcnbsd-tdep.c (ppcnbsd2_sigtramp): Make extern.
|
|
|
|
|
* python/py-arch.c (arch_object_type): Make extern.
|
|
|
|
|
* python/py-block.c (block_syms_iterator_object_type): Make extern.
|
|
|
|
|
* python/py-bpevent.c (breakpoint_event_object_type): Make extern.
|
|
|
|
|
* python/py-cmd.c (cmdpy_object_type): Make extern.
|
|
|
|
|
* python/py-continueevent.c (continue_event_object_type)
|
|
|
|
|
* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Remove 'qual'
|
|
|
|
|
parameter. Update all callers.
|
|
|
|
|
* python/py-evtregistry.c (eventregistry_object_type): Make extern.
|
|
|
|
|
* python/py-exitedevent.c (exited_event_object_type): Make extern.
|
|
|
|
|
* python/py-finishbreakpoint.c (finish_breakpoint_object_type): Make extern.
|
|
|
|
|
* python/py-function.c (fnpy_object_type): Make extern.
|
|
|
|
|
* python/py-inferior.c (inferior_object_type, membuf_object_type): Make extern.
|
|
|
|
|
* python/py-infevents.c (call_pre_event_object_type)
|
|
|
|
|
(inferior_call_post_event_object_type).
|
|
|
|
|
(memory_changed_event_object_type): Make extern.
|
|
|
|
|
* python/py-infthread.c (thread_object_type): Make extern.
|
|
|
|
|
* python/py-lazy-string.c (lazy_string_object_type): Make extern.
|
|
|
|
|
* python/py-linetable.c (linetable_entry_object_type)
|
|
|
|
|
(linetable_object_type, ltpy_iterator_object_type): Make extern.
|
|
|
|
|
* python/py-newobjfileevent.c (new_objfile_event_object_type)
|
|
|
|
|
(clear_objfiles_event_object_type): Make extern.
|
|
|
|
|
* python/py-objfile.c (objfile_object_type): Make extern.
|
|
|
|
|
* python/py-param.c (parmpy_object_type): Make extern.
|
|
|
|
|
* python/py-progspace.c (pspace_object_type): Make extern.
|
|
|
|
|
* python/py-signalevent.c (signal_event_object_type): Make extern.
|
|
|
|
|
* python/py-symtab.c (symtab_object_type, sal_object_type): Make extern.
|
|
|
|
|
* python/py-type.c (type_object_type, field_object_type)
|
|
|
|
|
(type_iterator_object_type): Make extern.
|
|
|
|
|
* python/python.c (python_extension_script_ops)
|
|
|
|
|
(python_extension_ops): Make extern.
|
|
|
|
|
* stap-probe.c (stap_probe_ops): Make extern.
|
|
|
|
|
|
Fix adjust_pc_after_break, remove still current thread check
On decr_pc_after_break targets, GDB adjusts the PC incorrectly if a
background single-step stops somewhere where PC-$decr_pc has a
breakpoint, and the thread that finishes the step is not the current
thread, like:
ADDR1 nop <-- breakpoint here
ADDR2 jmp PC
IOW, say thread A is stepping ADDR2's line in the background (an
infinite loop), and the user switches focus to thread B. GDB's
adjust_pc_after_break logic confuses the single-step stop of thread A
for a hit of the breakpoint at ADDR1, and thus adjusts thread A's PC
to point at ADDR1 when it should not, and reports a breakpoint hit,
when thread A did not execute the instruction at ADDR1 at all.
The test added by this patch exercises exactly that.
I can't find any reason we'd need the "thread to be examined is still
the current thread" condition in adjust_pc_after_break, at least
nowadays; it might have made sense in the past. Best just remove it,
and rely on currently_stepping().
Here's the test's log of a run with an unpatched GDB:
35 while (1);
(gdb) PASS: gdb.threads/step-bg-decr-pc-switch-thread.exp: next over nop
next&
(gdb) PASS: gdb.threads/step-bg-decr-pc-switch-thread.exp: next& over inf loop
thread 1
[Switching to thread 1 (Thread 0x7ffff7fc2740 (LWP 29027))](running)
(gdb)
PASS: gdb.threads/step-bg-decr-pc-switch-thread.exp: switch to main thread
Breakpoint 2, thread_function (arg=0x0) at ...src/gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.c:34
34 NOP; /* set breakpoint here */
FAIL: gdb.threads/step-bg-decr-pc-switch-thread.exp: no output while stepping
gdb/ChangeLog:
2015-02-11 Pedro Alves <pedro@codesourcery.com>
* infrun.c (adjust_pc_after_break): Don't adjust the PC just
because the event thread is not the current thread.
gdb/testsuite/ChangeLog:
2015-02-11 Pedro Alves <pedro@codesourcery.com>
* gdb.threads/step-bg-decr-pc-switch-thread.c: New file.
* gdb.threads/step-bg-decr-pc-switch-thread.exp: New file.
2015-02-11 10:45:41 +01:00
|
|
|
|
2015-02-11 Pedro Alves <pedro@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (adjust_pc_after_break): Don't adjust the PC just
|
|
|
|
|
because the event thread is not the current thread.
|
|
|
|
|
|
2015-02-11 06:18:59 +01:00
|
|
|
|
2015-02-11 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (internal_type_self_type): If TYPE_SPECIFIC_FIELD hasn't
|
|
|
|
|
been initialized yet, return NULL.
|
|
|
|
|
|
2015-02-11 02:01:37 +01:00
|
|
|
|
2015-02-11 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* symfile.h (new_symfile_objfile): Delete.
|
|
|
|
|
* symfile.c (finish_new_objfile): Renamed from new_symfile_objfile.
|
|
|
|
|
All callers updated.
|
|
|
|
|
|
2015-02-11 00:45:10 +01:00
|
|
|
|
2015-02-11 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_handle_resize_during_io): Call
|
|
|
|
|
tui_update_gdb_sizes() after resizing the screen.
|
|
|
|
|
* tui/tui.c (tui_enable): Resize the terminal before
|
|
|
|
|
calling tui_update_gdb_sizes().
|
|
|
|
|
|
2015-02-11 00:44:56 +01:00
|
|
|
|
2015-02-11 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_getc): Move cursor to the end of the command
|
|
|
|
|
line before printing a newline.
|
|
|
|
|
|
2015-02-11 00:45:31 +01:00
|
|
|
|
2015-02-11 Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (producer_is_gcc): Return true or false.
|
|
|
|
|
|
2015-02-11 00:44:56 +01:00
|
|
|
|
2015-02-10 Mark Wielaard <mjw@redhat.com>
|
2015-02-04 18:14:33 +01:00
|
|
|
|
|
|
|
|
|
* utils.h (producer_is_gcc): Change return type to bool. Add major
|
|
|
|
|
argument.
|
|
|
|
|
* utils.c (producer_is_gcc): Likewise.
|
|
|
|
|
(producer_is_gcc_ge_4): Adjust producer_is_gcc call.
|
|
|
|
|
* dwarf2read.c (check_producer): Likewise.
|
|
|
|
|
|
2015-02-10 20:13:31 +01:00
|
|
|
|
2015-02-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (displaced_step_fixup): Switch to the event thread
|
|
|
|
|
before calling gdbarch_displaced_step_fixup.
|
|
|
|
|
|
2015-02-10 19:29:36 +01:00
|
|
|
|
2015-02-10 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Antoine Tremblay.
|
|
|
|
|
|
2015-02-10 16:46:12 +01:00
|
|
|
|
2015-02-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ada-varobj.c (ada_name_of_child): Constify parent.
|
|
|
|
|
(ada_path_expr_of_child): Same.
|
|
|
|
|
(ada_value_of_child): Same.
|
|
|
|
|
(ada_type_of_child): Same.
|
|
|
|
|
* c-varobj.c (c_is_path_expr_parent): Same.
|
|
|
|
|
(c_describe_child): Same.
|
|
|
|
|
(c_name_of_child): Same.
|
|
|
|
|
(c_value_of_child): Same.
|
|
|
|
|
(c_type_of_child): Same.
|
|
|
|
|
(cplus_number_of_children): Same.
|
|
|
|
|
(cplus_describe_child): Constify var.
|
|
|
|
|
(cplus_name_of_child): Constify parent.
|
|
|
|
|
(cplus_value_of_child): Same.
|
|
|
|
|
(cplus_type_of_child): Same.
|
|
|
|
|
* jv-varobj.c (java_name_of_child): Same.
|
|
|
|
|
(java_value_of_child): Same.
|
|
|
|
|
(java_type_of_child): Same.
|
|
|
|
|
* varobj.c (value_of_child): Same.
|
|
|
|
|
(varobj_default_is_path_expr_parent): Constify var, parent and return
|
|
|
|
|
value.
|
|
|
|
|
(varobj_get_path_expr): Constify var, modify path_expr through
|
|
|
|
|
mutable_var.
|
|
|
|
|
(install_new_value): Constify parent.
|
|
|
|
|
(value_of_child): Constify parent.
|
|
|
|
|
* varobj.h (struct varobj): Constify parent.
|
|
|
|
|
(struct lang_varobj_ops): Constify name_of_child, value_of_child and
|
|
|
|
|
type_of_child.
|
|
|
|
|
(varobj_get_path_expr): Constify var.
|
|
|
|
|
(varobj_get_path_expr_parent): Constify var and return value.
|
|
|
|
|
|
2015-02-10 12:46:11 +01:00
|
|
|
|
2015-02-10 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (arm_prologue_unwind_stop_reason): New function.
|
|
|
|
|
(arm_prologue_this_id): Move PC and SP limit checks to
|
|
|
|
|
arm_prologue_unwind_stop_reason.
|
|
|
|
|
(arm_prologue_unwind) <stop_reason> : Set to
|
|
|
|
|
arm_prologue_unwind_stop_reason.
|
|
|
|
|
|
2015-02-09 23:14:38 +01:00
|
|
|
|
2015-02-09 Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (set_cu_language): Recognize DW_LANG_Fortran03 and
|
|
|
|
|
DW_LANG_Fortran08 as language_fortran.
|
|
|
|
|
|
2015-02-10 00:58:12 +01:00
|
|
|
|
2015-02-09 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR remote/17946
|
|
|
|
|
* gdb/remote.c (remote_parse_stop_reply): Fix wrong comparison
|
|
|
|
|
of pointer against char.
|
|
|
|
|
|
2015-02-09 14:58:25 +01:00
|
|
|
|
2015-02-09 Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
* c-typeprint.c (cp_type_print_method_args): Handle '_Atomic'.
|
|
|
|
|
(c_type_print_modifier): Likewise.
|
|
|
|
|
* dwarf2read.c (read_tag_atomic_type): New function.
|
|
|
|
|
(read_type_die_1): Handle DW_TAG_atomic_type.
|
|
|
|
|
* gdbtypes.c (make_atomic_type): New function.
|
|
|
|
|
(recursive_dump_type): Handle TYPE_ATOMIC.
|
|
|
|
|
* gdbtypes.h (enum type_flag_values): Renumber.
|
|
|
|
|
(enum type_instance_flag_value): Add TYPE_INSTANCE_FLAG_ATOMIC.
|
|
|
|
|
(TYPE_ATOMIC): New macro.
|
|
|
|
|
(make_atomic_type): Declare.
|
|
|
|
|
|
record-btrace: indicate gaps
Indicate gaps in the trace due to decode errors. Internally, a gap is
represented as a btrace function segment without instructions and with a
non-zero format-specific error code.
Show the gap when traversing the instruction or function call history.
Also indicate gaps in "info record".
It looks like this:
(gdb) info record
Active record target: record-btrace
Recording format: Branch Trace Store.
Buffer size: 64KB.
Recorded 32 instructions in 5 functions (1 gaps) for thread 1 (process 7182).
(gdb) record function-call-history /cli
1 fib inst 1,9 at src/fib.c:9,14
2 fib inst 10,20 at src/fib.c:6,14
3 [decode error (1): instruction overflow]
4 fib inst 21,28 at src/fib.c:11,14
5 fib inst 29,33 at src/fib.c:6,9
(gdb) record instruction-history 20,22
20 0x000000000040062f <fib+47>: sub $0x1,%rax
[decode error (1): instruction overflow]
21 0x0000000000400613 <fib+19>: add $0x1,%rax
22 0x0000000000400617 <fib+23>: mov %rax,0x200a3a(%rip)
(gdb)
Gaps are ignored during reverse execution and replay.
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
* btrace.c (ftrace_find_call): Skip gaps.
(ftrace_new_function): Initialize level.
(ftrace_new_call, ftrace_new_tailcall, ftrace_new_return)
(ftrace_new_switch): Update
level computation.
(ftrace_new_gap): New.
(ftrace_update_function): Create new function after gap.
(btrace_compute_ftrace_bts): Create gap on error.
(btrace_stitch_bts): Update parameters. Clear trace if it
becomes empty.
(btrace_stitch_trace): Update parameters. Update callers.
(btrace_clear): Reset the number of gaps.
(btrace_insn_get): Return NULL if the iterator points to a gap.
(btrace_insn_number): Return zero if the iterator points to a gap.
(btrace_insn_end): Allow gaps at the end.
(btrace_insn_next, btrace_insn_prev, btrace_insn_cmp): Handle gaps.
(btrace_find_insn_by_number): Assert that the found iterator does
not point to a gap.
(btrace_call_next, btrace_call_prev): Assert that the last function
is not a gap.
* btrace.h (btrace_bts_error): New.
(btrace_function): Update comment.
(btrace_function) <insn, insn_offset, number>: Update comment.
(btrace_function) <errcode>: New.
(btrace_thread_info) <ngaps>: New.
(btrace_thread_info) <replay>: Update comment.
(btrace_insn_get): Update comment.
* record-btrace.c (btrace_ui_out_decode_error): New.
(record_btrace_info): Print number of gaps.
(btrace_insn_history, btrace_call_history): Call
btrace_ui_out_decode_error for gaps.
(record_btrace_step_thread, record_btrace_start_replaying): Skip gaps.
testsuite/
* gdb.btrace/buffer-size.exp: Update "info record" output.
* gdb.btrace/delta.exp: Update "info record" output.
* gdb.btrace/enable.exp: Update "info record" output.
* gdb.btrace/finish.exp: Update "info record" output.
* gdb.btrace/instruction_history.exp: Update "info record" output.
* gdb.btrace/next.exp: Update "info record" output.
* gdb.btrace/nexti.exp: Update "info record" output.
* gdb.btrace/step.exp: Update "info record" output.
* gdb.btrace/stepi.exp: Update "info record" output.
* gdb.btrace/nohist.exp: Update "info record" output.
2014-01-30 09:51:10 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_find_call): Skip gaps.
|
|
|
|
|
(ftrace_new_function): Initialize level.
|
|
|
|
|
(ftrace_new_call, ftrace_new_tailcall, ftrace_new_return)
|
|
|
|
|
(ftrace_new_switch): Update
|
|
|
|
|
level computation.
|
|
|
|
|
(ftrace_new_gap): New.
|
|
|
|
|
(ftrace_update_function): Create new function after gap.
|
|
|
|
|
(btrace_compute_ftrace_bts): Create gap on error.
|
|
|
|
|
(btrace_stitch_bts): Update parameters. Clear trace if it
|
|
|
|
|
becomes empty.
|
|
|
|
|
(btrace_stitch_trace): Update parameters. Update callers.
|
|
|
|
|
(btrace_clear): Reset the number of gaps.
|
|
|
|
|
(btrace_insn_get): Return NULL if the iterator points to a gap.
|
|
|
|
|
(btrace_insn_number): Return zero if the iterator points to a gap.
|
|
|
|
|
(btrace_insn_end): Allow gaps at the end.
|
|
|
|
|
(btrace_insn_next, btrace_insn_prev, btrace_insn_cmp): Handle gaps.
|
|
|
|
|
(btrace_find_insn_by_number): Assert that the found iterator does
|
|
|
|
|
not point to a gap.
|
|
|
|
|
(btrace_call_next, btrace_call_prev): Assert that the last function
|
|
|
|
|
is not a gap.
|
|
|
|
|
* btrace.h (btrace_bts_error): New.
|
|
|
|
|
(btrace_function): Update comment.
|
|
|
|
|
(btrace_function) <insn, insn_offset, number>: Update comment.
|
|
|
|
|
(btrace_function) <errcode>: New.
|
|
|
|
|
(btrace_thread_info) <ngaps>: New.
|
|
|
|
|
(btrace_thread_info) <replay>: Update comment.
|
|
|
|
|
(btrace_insn_get): Update comment.
|
|
|
|
|
* record-btrace.c (btrace_ui_out_decode_error): New.
|
|
|
|
|
(record_btrace_info): Print number of gaps.
|
|
|
|
|
(btrace_insn_history, btrace_call_history): Call
|
|
|
|
|
btrace_ui_out_decode_error for gaps.
|
|
|
|
|
(record_btrace_step_thread, record_btrace_start_replaying): Skip gaps.
|
|
|
|
|
|
2014-02-14 09:25:40 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* common/btrace-common.h (btrace_cpu_vendor, btrace_cpu): New.
|
|
|
|
|
* nat/linux-btrace.c: (btrace_this_cpu): New.
|
|
|
|
|
(cpu_supports_bts): Call btrace_this_cpu.
|
|
|
|
|
(intel_supports_bts): Add cpu parameter.
|
|
|
|
|
|
2014-01-29 12:56:09 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.h (btrace_insn_class): New.
|
|
|
|
|
(btrace_insn) <size, iclass>: New.
|
|
|
|
|
* btrace.c (ftrace_find_call): Update parameters. Update users.
|
|
|
|
|
Use instruction classification.
|
|
|
|
|
(ftrace_new_return): Update parameters. Update users.
|
|
|
|
|
(ftrace_update_function): Update parameters. Update users. Use
|
|
|
|
|
instruction classification.
|
|
|
|
|
(ftrace_update_insns): Update parameters. Update users.
|
|
|
|
|
(ftrace_classify_insn): New.
|
|
|
|
|
(btrace_compute_ftrace_bts): Fill in new btrace_insn fields. Add
|
|
|
|
|
TRY_CATCH around call to gdb_insn_length.
|
|
|
|
|
|
2014-01-29 11:12:06 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_compute_ftrace_bts, btrace_compute_ftrace):
|
|
|
|
|
Update parameters. Update users.
|
|
|
|
|
|
2013-11-28 16:39:12 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (parse_xml_btrace_conf_bts): Add size.
|
|
|
|
|
(btrace_conf_bts_attributes): New.
|
|
|
|
|
(btrace_conf_children): Add attributes.
|
|
|
|
|
* common/btrace-common.h (btrace_config_bts): New.
|
|
|
|
|
(btrace_config)<bts>: New.
|
|
|
|
|
(btrace_config): Update comment.
|
|
|
|
|
* nat/linux-btrace.c (linux_enable_btrace, linux_enable_bts):
|
|
|
|
|
Use config.
|
|
|
|
|
* features/btrace-conf.dtd: Increment version. Add size
|
|
|
|
|
attribute to bts element.
|
|
|
|
|
* record-btrace.c (set_record_btrace_bts_cmdlist,
|
|
|
|
|
show_record_btrace_bts_cmdlist): New.
|
|
|
|
|
(record_btrace_adjust_size, record_btrace_print_bts_conf,
|
|
|
|
|
record_btrace_print_conf, cmd_set_record_btrace_bts,
|
|
|
|
|
cmd_show_record_btrace_bts): New.
|
|
|
|
|
(record_btrace_info): Call record_btrace_print_conf.
|
|
|
|
|
(_initialize_record_btrace): Add commands.
|
|
|
|
|
* remote.c: Add PACKET_Qbtrace_conf_bts_size enum.
|
|
|
|
|
(remote_protocol_features): Add Qbtrace-conf:bts:size packet.
|
|
|
|
|
(btrace_sync_conf): Synchronize bts size.
|
|
|
|
|
(_initialize_remote): Add Qbtrace-conf:bts:size packet.
|
|
|
|
|
* NEWS: Announce new commands and new packets.
|
|
|
|
|
|
2013-11-28 15:44:13 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (XMLFILES): Add btrace-conf.dtd.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_enable_btrace): Update parameters.
|
|
|
|
|
(x86_linux_btrace_conf): New.
|
|
|
|
|
(x86_linux_create_target): Initialize to_btrace_conf.
|
|
|
|
|
* nat/linux-btrace.c (linux_enable_btrace): Update parameters.
|
|
|
|
|
Check format. Split into this and ...
|
|
|
|
|
(linux_enable_bts): ... this.
|
|
|
|
|
(linux_btrace_conf): New.
|
|
|
|
|
(perf_event_skip_record): Renamed into ...
|
|
|
|
|
(perf_event_skip_bts_record): ... this. Updated users.
|
|
|
|
|
(linux_disable_btrace): Split into this and ...
|
|
|
|
|
(linux_disable_bts): ... this.
|
|
|
|
|
(linux_read_btrace): Check format.
|
|
|
|
|
* nat/linux-btrace.h (linux_enable_btrace): Update parameters.
|
|
|
|
|
(linux_btrace_conf): New.
|
|
|
|
|
(btrace_target_info)<ptid>: Moved.
|
|
|
|
|
(btrace_target_info)<conf>: New.
|
|
|
|
|
(btrace_target_info): Split into this and ...
|
|
|
|
|
(btrace_tinfo_bts): ... this. Updated users.
|
|
|
|
|
* btrace.c (btrace_enable): Update parameters.
|
|
|
|
|
(btrace_conf, parse_xml_btrace_conf_bts, parse_xml_btrace_conf)
|
|
|
|
|
(btrace_conf_children, btrace_conf_attributes)
|
|
|
|
|
(btrace_conf_elements): New.
|
|
|
|
|
* btrace.h (btrace_enable): Update parameters.
|
|
|
|
|
(btrace_conf, parse_xml_btrace_conf): New.
|
|
|
|
|
* common/btrace-common.h (btrace_config): New.
|
|
|
|
|
* feature/btrace-conf.dtd: New.
|
|
|
|
|
* record-btrace.c (record_btrace_conf): New.
|
|
|
|
|
(record_btrace_cmdlist): New.
|
|
|
|
|
(record_btrace_enable_warn, record_btrace_open): Pass
|
|
|
|
|
&record_btrace_conf.
|
|
|
|
|
(record_btrace_info): Print recording format.
|
|
|
|
|
(cmd_record_btrace_bts_start): New.
|
|
|
|
|
(cmd_record_btrace_start): Call cmd_record_btrace_bts_start.
|
|
|
|
|
(_initialize_record_btrace): Add "record btrace bts" subcommand.
|
|
|
|
|
Add "record bts" alias command.
|
|
|
|
|
* remote.c (remote_state)<btrace_config>: New.
|
|
|
|
|
(remote_btrace_reset, PACKET_qXfer_btrace_conf): New.
|
|
|
|
|
(remote_protocol_features): Add qXfer:btrace-conf:read.
|
|
|
|
|
(remote_open_1): Call remote_btrace_reset.
|
|
|
|
|
(remote_xfer_partial): Handle TARGET_OBJECT_BTRACE_CONF.
|
|
|
|
|
(btrace_target_info)<conf>: New.
|
|
|
|
|
(btrace_sync_conf, btrace_read_config): New.
|
|
|
|
|
(remote_enable_btrace): Update parameters. Call btrace_sync_conf and
|
|
|
|
|
btrace_read_conf.
|
|
|
|
|
(remote_btrace_conf): New.
|
|
|
|
|
(init_remote_ops): Initialize to_btrace_conf.
|
|
|
|
|
(_initialize_remote): Add qXfer:btrace-conf packet.
|
|
|
|
|
* target.c (target_enable_btrace): Update parameters.
|
|
|
|
|
(target_btrace_conf): New.
|
|
|
|
|
* target.h (target_enable_btrace): Update parameters.
|
|
|
|
|
(target_btrace_conf): New.
|
|
|
|
|
(target_object)<TARGET_OBJECT_BTRACE_CONF>: New.
|
|
|
|
|
(target_ops)<to_enable_btrace>: Update parameters and comment.
|
|
|
|
|
(target_ops)<to_btrace_conf>: New.
|
|
|
|
|
* target-delegates: Regenerate.
|
|
|
|
|
* target-debug.h (target_debug_print_const_struct_btrace_config_p)
|
|
|
|
|
(target_debug_print_const_struct_btrace_target_info_p): New.
|
|
|
|
|
* NEWS: Announce new command and new packet.
|
|
|
|
|
|
2014-01-17 14:40:02 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-btrace.h (perf_event_buffer): New.
|
|
|
|
|
(btrace_target_info) <buffer, size, data_head>: Replace with ...
|
|
|
|
|
<bts>: ... this.
|
|
|
|
|
* nat/linux-btrace.c (perf_event_header, perf_event_mmap_size)
|
|
|
|
|
(perf_event_buffer_size, perf_event_buffer_begin)
|
|
|
|
|
(perf_event_buffer_end, linux_btrace_has_changed): Removed.
|
|
|
|
|
Updated users.
|
|
|
|
|
(perf_event_new_data): New.
|
|
|
|
|
|
2014-01-17 13:29:19 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_enable): Pass BTRACE_FORMAT_BTS.
|
|
|
|
|
* record-btrace.c (record_btrace_open): Remove call to
|
|
|
|
|
target_supports_btrace.
|
|
|
|
|
* remote.c (remote_supports_btrace): Update parameters.
|
|
|
|
|
* target.c (target_supports_btrace): Update parameters.
|
|
|
|
|
* target.h (to_supports_btrace, target_supports_btrace): Update
|
|
|
|
|
parameters.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* target-debug.h (target_debug_print_enum_btrace_format): New.
|
|
|
|
|
* nat/linux-btrace.c
|
|
|
|
|
(kernel_supports_btrace): Rename into ...
|
|
|
|
|
(kernel_supports_bts): ... this. Update users. Update warning text.
|
|
|
|
|
(intel_supports_btrace): Rename into ...
|
|
|
|
|
(intel_supports_bts): ... this. Update users.
|
|
|
|
|
(cpu_supports_btrace): Rename into ...
|
|
|
|
|
(cpu_supports_bts): ... this. Update users.
|
|
|
|
|
(linux_supports_btrace): Update parameters. Split into this and ...
|
|
|
|
|
(linux_supports_bts): ... this.
|
|
|
|
|
* nat/linux-btrace.h (linux_supports_btrace): Update parameters.
|
|
|
|
|
|
2013-11-13 15:31:07 +01:00
|
|
|
|
2015-02-09 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add common/btrace-common.c.
|
|
|
|
|
(COMMON_OBS): Add common/btrace-common.o.
|
|
|
|
|
(btrace-common.o): Add build rules.
|
|
|
|
|
* btrace.c (parse_xml_btrace): Update parameters.
|
|
|
|
|
(parse_xml_btrace_block): Set format field.
|
|
|
|
|
(btrace_add_pc, btrace_fetch): Use struct btrace_data.
|
|
|
|
|
(do_btrace_data_cleanup, make_cleanup_btrace_data): New.
|
|
|
|
|
(btrace_compute_ftrace): Split into this and...
|
|
|
|
|
(btrace_compute_ftrace_bts): ...this.
|
|
|
|
|
(btrace_stitch_trace): Split into this and...
|
|
|
|
|
(btrace_stitch_bts): ...this.
|
|
|
|
|
* btrace.h (parse_xml_btrace): Update parameters.
|
|
|
|
|
(make_cleanup_btrace_data): New.
|
|
|
|
|
* common/btrace-common.c: New.
|
|
|
|
|
* common/btrace-common.h: Include common-defs.h.
|
|
|
|
|
(btrace_block_s): Update comment.
|
|
|
|
|
(btrace_format): New.
|
|
|
|
|
(btrace_format_string): New.
|
|
|
|
|
(btrace_data_bts): New.
|
|
|
|
|
(btrace_data): New.
|
|
|
|
|
(btrace_data_init, btrace_data_fini, btrace_data_empty): New.
|
|
|
|
|
* remote.c (remote_read_btrace): Update parameters.
|
|
|
|
|
* target.c (target_read_btrace): Update parameters.
|
|
|
|
|
* target.h (target_read_btrace): Update parameters.
|
|
|
|
|
(target_ops)<to_read_btrace>: Update parameters.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_read_btrace): Update parameters.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* target-debug (target_debug_print_struct_btrace_data_p): New.
|
|
|
|
|
* nat/linux-btrace.c (linux_read_btrace): Split into this and...
|
|
|
|
|
(linux_read_bts): ...this.
|
|
|
|
|
* nat/linux-btrace.h (linux_read_btrace): Update parameters.
|
|
|
|
|
|
2015-02-06 21:17:21 +01:00
|
|
|
|
2015-02-06 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* remote-m32r-sdi.c: Include symfile.h.
|
|
|
|
|
|
2015-02-06 20:32:01 +01:00
|
|
|
|
2015-02-06 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* symtab.h (clear_symtab_users, deduce_language_from_filename): Move
|
|
|
|
|
* symfile.h (clear_symtab_users, deduce_language_from_filename): ...
|
|
|
|
|
to here.
|
|
|
|
|
|
2015-01-26 18:52:25 +01:00
|
|
|
|
2015-02-06 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-thread-db.c (find_new_threads_callback): Add debug output.
|
|
|
|
|
|
2015-02-02 20:57:31 +01:00
|
|
|
|
2015-02-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/15678
|
|
|
|
|
* breakpoint.c (map_breakpoint_numbers): Check for empty args string.
|
|
|
|
|
(enable_count_command): Check args for NULL value.
|
|
|
|
|
|
2015-02-06 08:31:05 +01:00
|
|
|
|
2015-02-05 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-frame.c: Fix spelling errors in a comment.
|
|
|
|
|
|
2015-02-04 20:31:17 +01:00
|
|
|
|
2015-02-04 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (Py_hash_t): Define it for Python <3.2.
|
|
|
|
|
* python/py-value.c (valpy_fetch_lazy): Use it. Remove cast to the
|
|
|
|
|
return type.
|
|
|
|
|
|
2015-02-04 19:13:28 +01:00
|
|
|
|
2015-02-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (handle_extended_wait): Don't resume LWPs here.
|
|
|
|
|
(wait_lwp): Don't call wait_lwp if linux_handle_extended_wait
|
|
|
|
|
returns true.
|
|
|
|
|
(resume_stopped_resumed_lwps): Don't check whether the thread is
|
|
|
|
|
marked as executing.
|
|
|
|
|
(linux_nat_wait_1): Use resume_stopped_resumed_lwps.
|
|
|
|
|
|
2015-01-15 11:20:45 +01:00
|
|
|
|
2015-02-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* regset.h (struct regset): Add flags field.
|
|
|
|
|
(REGSET_VARIABLE_SIZE): New value for a regset's flags field.
|
|
|
|
|
* corelow.c (get_core_register_section): Add warning if the size
|
|
|
|
|
exceeds the requested size and the regset does not have the
|
|
|
|
|
REGSET_VARIABLE_SIZE flag set.
|
|
|
|
|
* alphanbsd-tdep.c (alphanbsd_gregset): Add REGSET_VARIABLE_SIZE
|
|
|
|
|
flag.
|
|
|
|
|
* armbsd-tdep.c (armbsd_gregset): Likewise.
|
|
|
|
|
* hppa-hpux-tdep.c (hppa_hpux_regset): Likewise.
|
|
|
|
|
* hppaobsd-tdep.c (hppaobsd_gregset): Likewise.
|
|
|
|
|
* m68kbsd-tdep.c (m68kbsd_gregset): Likewise.
|
|
|
|
|
* mipsnbsd-tdep.c (mipsnbsd_gregset): Likewise.
|
|
|
|
|
|
2015-01-14 18:53:23 +01:00
|
|
|
|
2015-02-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_iterate_over_regset_sections):
|
|
|
|
|
For ".reg-xstate", explicitly specify the requested section size
|
|
|
|
|
via X86_XSTATE_SIZE instead of just 0 on input and
|
|
|
|
|
X86_XSTATE_MAX_SIZE on output.
|
|
|
|
|
* i386-linux-tdep.c (i386_linux_iterate_over_regset_sections):
|
|
|
|
|
Likewise.
|
|
|
|
|
|
2015-01-14 13:01:38 +01:00
|
|
|
|
2015-02-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
PR corefiles/17808:
|
|
|
|
|
* gdbarch.sh (iterate_over_regset_sections_cb): Document this
|
|
|
|
|
function type, particularly its SIZE parameter.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
* amd64-tdep.c (amd64_supply_fpregset): In gdb_assert, compare
|
|
|
|
|
actual against required size using ">=" instead of "==".
|
|
|
|
|
(amd64_collect_fpregset): Likewise.
|
|
|
|
|
* i386-tdep.c (i386_supply_gregset): Likewise.
|
|
|
|
|
(i386_collect_gregset): Likewise.
|
|
|
|
|
(i386_supply_fpregset): Likewise.
|
|
|
|
|
(i386_collect_fpregset): Likewise.
|
|
|
|
|
* mips-linux-tdep.c (mips_supply_gregset_wrapper): Likewise.
|
|
|
|
|
(mips_fill_gregset_wrapper): Likewise.
|
|
|
|
|
(mips_supply_fpregset_wrapper): Likewise.
|
|
|
|
|
(mips_fill_fpregset_wrapper): Likewise.
|
|
|
|
|
(mips64_supply_gregset_wrapper): Likewise.
|
|
|
|
|
(mips64_fill_gregset_wrapper): Likewise.
|
|
|
|
|
(mips64_supply_fpregset_wrapper): Likewise.
|
|
|
|
|
(mips64_fill_fpregset_wrapper): Likewise.
|
|
|
|
|
* mn10300-linux-tdep.c (am33_supply_gregset_method): Likewise.
|
|
|
|
|
(am33_supply_fpregset_method): Likewise.
|
|
|
|
|
(am33_collect_gregset_method): Likewise.
|
|
|
|
|
(am33_collect_fpregset_method): Likewise.
|
|
|
|
|
|
2015-02-04 12:27:28 +01:00
|
|
|
|
2015-02-04 Doug Evans <dje@google.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
PR tui/17810
|
|
|
|
|
* tui/tui-command.c (tui_refresh_cmd_win): New function.
|
|
|
|
|
* tui/tui-command.c (tui_refresh_cmd_win): Declare.
|
|
|
|
|
* tui/tui-file.c: #include tui/tui-command.h.
|
|
|
|
|
(tui_file_fputs): Refresh command window if stream is not gdb_stdout.
|
|
|
|
|
(tui_file_flush): Refresh command window if stream is gdb_stdout.
|
|
|
|
|
* tui/tui-io.c (tui_puts): Remove calls to wrefresh, fflush.
|
|
|
|
|
|
2015-02-04 11:05:58 +01:00
|
|
|
|
2015-02-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
Fix build breakage.
|
|
|
|
|
* event-loop.c (gdb_do_one_event): Add default switch case.
|
|
|
|
|
|
2015-02-03 18:17:02 +01:00
|
|
|
|
2015-02-03 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Filter out inferior gcc option -fpreprocessed.
|
|
|
|
|
* compile/compile.c (filter_args): New function.
|
|
|
|
|
(get_args): Use it.
|
|
|
|
|
|
Simplify event-loop core, remove two-step event processing
Even with the previous patch installed, we'll still see
sigall-reverse.exp occasionally fail. The problem is that the event
loop's event handling processing is done in two steps:
#1 - poll all event sources, and push new event objects to the event
queue, until all event sources are drained.
#2 - go through the event queue, processing each event object at a
time. For each event, call the associated callback, and deletes the
event object from the queue.
and then bad things happen if between #1 and #2 something decides that
events from an event source that has already queued events shouldn't
be processed yet. To do that, we either remove the event source from
the list of event sources, or clear its "have events" flag. However,
if an event for that source has meanwhile already been pushed in the
event queue, #2 will still process it and call the associated
callback...
One way to fix it that I considered was to do something to the event
objects already in the event queue when an event source is no longer
interesting. But then I couldn't find any good reason for the
two-step process in the first place. It's much simpler (and less
code) to call the event source callbacks as we poll the sources and
find events.
Tested on x86-64 Fedora 20, native and gdbserver.
gdb/
2015-02-03 Pedro Alves <palves@redhat.com>
* event-loop.c: Don't declare nor define a queue type for
gdb_event_p.
(event_queue): Delete.
(create_event, create_file_event, gdb_event_xfree)
(initialize_event_loop, process_event): Delete.
(gdb_do_one_event): Return as soon as one event is handled.
(handle_file_event): Change prototype. Used the passed in
file_handler pointer and ready_mask instead of looping over all
file handlers.
(gdb_wait_for_event): Update the poll/select timeouts before
blocking. Run event handlers directly instead of queueing events.
Return as soon as one event is handled.
(struct async_event_handler_data): Delete.
(invoke_async_event_handler): Delete.
(check_async_event_handlers): Change return type to int. Run
event handlers directly instead of queueing events. Return as
soon as one event is handled.
(handle_timer_event): Delete.
(update_wait_timeout): New function, factored out from
poll_timers.
(poll_timers): Reimplement.
* event-loop.h (initialize_event_loop): Delete declaration.
* top.c (gdb_init): Don't call initialize_event_loop.
2015-02-03 16:07:54 +01:00
|
|
|
|
2015-02-03 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* event-loop.c: Don't declare nor define a queue type for
|
|
|
|
|
gdb_event_p.
|
|
|
|
|
(event_queue): Delete.
|
|
|
|
|
(create_event, create_file_event, gdb_event_xfree)
|
|
|
|
|
(initialize_event_loop, process_event): Delete.
|
|
|
|
|
(gdb_do_one_event): Return as soon as one event is handled.
|
|
|
|
|
(handle_file_event): Change prototype. Used the passed in
|
|
|
|
|
file_handler pointer and ready_mask instead of looping over all
|
|
|
|
|
file handlers.
|
|
|
|
|
(gdb_wait_for_event): Update the poll/select timeouts before
|
|
|
|
|
blocking. Run event handlers directly instead of queueing events.
|
|
|
|
|
Return as soon as one event is handled.
|
|
|
|
|
(struct async_event_handler_data): Delete.
|
|
|
|
|
(invoke_async_event_handler): Delete.
|
|
|
|
|
(check_async_event_handlers): Change return type to int. Run
|
|
|
|
|
event handlers directly instead of queueing events. Return as
|
|
|
|
|
soon as one event is handled.
|
|
|
|
|
(handle_timer_event): Delete.
|
|
|
|
|
(update_wait_timeout): New function, factored out from
|
|
|
|
|
poll_timers.
|
|
|
|
|
(poll_timers): Reimplement.
|
|
|
|
|
* event-loop.h (initialize_event_loop): Delete declaration.
|
|
|
|
|
* top.c (gdb_init): Don't call initialize_event_loop.
|
|
|
|
|
|
When disabling target async, remove all target event sources from the event loop
The sigall-reverse.exp test occasionally fails with something like this:
(gdb) PASS: gdb.reverse/sigall-reverse.exp: send signal TERM
continue
Continuing.
The next instruction is syscall exit_group. It will make the program exit. Do you want to stop the program?([y] or n) FAIL: gdb.reverse/sigall-reverse.exp: continue to signal exit (timeout)
FAIL: gdb.reverse/sigall-reverse.exp: reverse to handler of TERM (timeout)
FAIL: gdb.reverse/sigall-reverse.exp: reverse to gen_TERM (timeout)
This is another event-loop/async related problem exposed by the patch
that made 'query' use gdb_readline_wrapper (588dcc3edbde19f9).
The problem is that even though gdb_readline_wrapper disables
target-async while the secondary prompt is in progress, the record
target's async event source is left marked. So when
gdb_readline_wrapper nests an event loop to process input, it may
happen that that event loop ends up processing a target event while
GDB is not really ready for it. Here's the relevant part of the
backtrace showing the root issue in action:
...
#14 0x000000000061cb48 in fetch_inferior_event (client_data=0x0) at src/gdb/infrun.c:4158
#15 0x0000000000642917 in inferior_event_handler (event_type=INF_REG_EVENT, client_data=0x0) at src/gdb/inf-loop.c:57
#16 0x000000000077ca5c in record_full_async_inferior_event_handler (data=0x0) at src/gdb/record-full.c:791
#17 0x0000000000640fdf in invoke_async_event_handler (data=...) at src/gdb/event-loop.c:1067
#18 0x000000000063fb01 in process_event () at src/gdb/event-loop.c:339
#19 0x000000000063fb2a in gdb_do_one_event () at src/gdb/event-loop.c:360
#20 0x000000000074d607 in gdb_readline_wrapper (prompt=0x3588f40 "The next instruction is syscall exit_group. It will make the program exit. Do you want to stop the program?([y] or n) ") at src/gdb/top.c:842
#21 0x0000000000750bd9 in defaulted_query (ctlstr=0x8c6588 "The next instruction is syscall exit_group. It will make the program exit. Do you want to stop the program?", defchar=121 'y', args=0x7fff70524410) at src/gdb/utils.c:1279
#22 0x0000000000750e4c in yquery (ctlstr=0x8c6588 "The next instruction is syscall exit_group. It will make the program exit. Do you want to stop the program?") at src/gdb/utils.c:1358
#23 0x00000000004b020e in record_linux_system_call (syscall=gdb_sys_exit_group, regcache=0x3529450, tdep=0xd6c840 <amd64_linux_record_tdep>) at src/gdb/linux-record.c:1933
With my all-stop-on-top-of-non-stop series, I'm also seeing
gdb.server/ext-attach.exp fail occasionally due to the same issue.
The first part of the fix is for target_async implementations to make
sure to remove/unmark all target-related event sources from the event
loop.
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/
2015-02-03 Pedro Alves <palves@redhat.com>
* event-loop.c (clear_async_event_handler): New function.
* event-loop.h (clear_async_event_handler): New declaration.
* record-btrace.c (record_btrace_async): New function.
(init_record_btrace_ops): Install record_btrace_async.
* record-full.c (record_full_async): New function.
(record_full_resume): Don't mark the async event source here.
(init_record_full_ops): Install record_full_async.
(record_full_core_resume): Don't mark the async event source here.
(init_record_full_core_ops): Install record_full_async.
* remote.c (remote_async): Mark and clear the async stop reply
queue event-loop token as appropriate.
2015-02-03 16:07:54 +01:00
|
|
|
|
2015-02-03 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* event-loop.c (clear_async_event_handler): New function.
|
|
|
|
|
* event-loop.h (clear_async_event_handler): New declaration.
|
|
|
|
|
* record-btrace.c (record_btrace_async): New function.
|
|
|
|
|
(init_record_btrace_ops): Install record_btrace_async.
|
|
|
|
|
* record-full.c (record_full_async): New function.
|
|
|
|
|
(record_full_resume): Don't mark the async event source here.
|
|
|
|
|
(init_record_full_ops): Install record_full_async.
|
|
|
|
|
(record_full_core_resume): Don't mark the async event source here.
|
|
|
|
|
(init_record_full_core_ops): Install record_full_async.
|
|
|
|
|
* remote.c (remote_async): Mark and clear the async stop reply
|
|
|
|
|
queue event-loop token as appropriate.
|
|
|
|
|
|
2015-02-03 16:07:53 +01:00
|
|
|
|
2015-02-03 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_child_follow_fork, linux_nat_wait_1): Use
|
|
|
|
|
target_is_async_p instead of target_can_async.
|
|
|
|
|
(linux_nat_wait): Use target_is_async_p instead of
|
|
|
|
|
target_can_async. Don't enable async here.
|
|
|
|
|
* remote.c (interrupt_query, remote_wait, putpkt_binary): Use
|
|
|
|
|
target_is_async_p instead of target_can_async.
|
|
|
|
|
|
2015-02-02 19:17:08 +01:00
|
|
|
|
2015-02-02 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* varobj.h (lang_varobj_ops): Mention which return values need
|
|
|
|
|
to be freed.
|
|
|
|
|
|
2015-02-02 04:54:02 +01:00
|
|
|
|
2015-02-02 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_property): Add i18n marker.
|
|
|
|
|
|
2015-02-02 04:28:12 +01:00
|
|
|
|
2015-02-02 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/17856:
|
|
|
|
|
* ada-lang.c (ada_lookup_symbol_list_worker): Do not re-cache
|
|
|
|
|
results found in the cache.
|
|
|
|
|
|
2015-02-02 04:20:58 +01:00
|
|
|
|
2015-02-02 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/17854:
|
|
|
|
|
* ada-lang.c (ada_get_symbol_cache): Set pspace_data->sym_cache
|
|
|
|
|
when allocating a new one.
|
|
|
|
|
|
2015-02-01 19:59:27 +01:00
|
|
|
|
2015-02-01 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS: Remove myself.
|
|
|
|
|
|
Move vptr_{fieldno,basetype} out of main_type, and update everything accordingly.
Every type has to pay the price in memory usage for their presence.
The proper place for them is in the type_specific field which exists
for this purpose.
gdb/ChangeLog:
* dwarf2read.c (process_structure_scope): Update setting of
TYPE_VPTR_BASETYPE, TYPE_VPTR_FIELDNO.
* gdbtypes.c (internal_type_vptr_fieldno): New function.
(set_type_vptr_fieldno): New function.
(internal_type_vptr_basetype): New function.
(set_type_vptr_basetype): New function.
(get_vptr_fieldno): Update setting of TYPE_VPTR_FIELDNO,
TYPE_VPTR_BASETYPE.
(allocate_cplus_struct_type): Initialize vptr_fieldno.
(recursive_dump_type): Printing of vptr_fieldno, vptr_basetype ...
(print_cplus_stuff): ... moved here.
(copy_type_recursive): Don't copy TYPE_VPTR_BASETYPE.
* gdbtypes.h (struct main_type): Members vptr_fieldno, vptr_basetype
moved to ...
(struct cplus_struct_type): ... here. All uses updated.
(TYPE_VPTR_FIELDNO, TYPE_VPTR_BASETYPE): Rewrite.
(internal_type_vptr_fieldno, set_type_vptr_fieldno): Declare.
(internal_type_vptr_basetype, set_type_vptr_basetype): Declare.
* stabsread.c (read_tilde_fields): Update setting of
TYPE_VPTR_FIELDNO, TYPE_VPTR_BASETYPE.
gdb/testsuite/ChangeLog:
* gdb.base/maint.exp <maint print type argc>: Update expected output.
2015-02-01 06:40:57 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (process_structure_scope): Update setting of
|
|
|
|
|
TYPE_VPTR_BASETYPE, TYPE_VPTR_FIELDNO.
|
|
|
|
|
* gdbtypes.c (internal_type_vptr_fieldno): New function.
|
|
|
|
|
(set_type_vptr_fieldno): New function.
|
|
|
|
|
(internal_type_vptr_basetype): New function.
|
|
|
|
|
(set_type_vptr_basetype): New function.
|
|
|
|
|
(get_vptr_fieldno): Update setting of TYPE_VPTR_FIELDNO,
|
|
|
|
|
TYPE_VPTR_BASETYPE.
|
|
|
|
|
(allocate_cplus_struct_type): Initialize vptr_fieldno.
|
|
|
|
|
(recursive_dump_type): Printing of vptr_fieldno, vptr_basetype ...
|
|
|
|
|
(print_cplus_stuff): ... moved here.
|
|
|
|
|
(copy_type_recursive): Don't copy TYPE_VPTR_BASETYPE.
|
|
|
|
|
* gdbtypes.h (struct main_type): Members vptr_fieldno, vptr_basetype
|
|
|
|
|
moved to ...
|
|
|
|
|
(struct cplus_struct_type): ... here. All uses updated.
|
|
|
|
|
(TYPE_VPTR_FIELDNO, TYPE_VPTR_BASETYPE): Rewrite.
|
|
|
|
|
(internal_type_vptr_fieldno, set_type_vptr_fieldno): Declare.
|
|
|
|
|
(internal_type_vptr_basetype, set_type_vptr_basetype): Declare.
|
|
|
|
|
* stabsread.c (read_tilde_fields): Update setting of
|
|
|
|
|
TYPE_VPTR_FIELDNO, TYPE_VPTR_BASETYPE.
|
|
|
|
|
|
Move TYPE_SELF_TYPE into new field type_specific.
This patch moves TYPE_SELF_TYPE into new field type_specific.self_type
for MEMBERPTR,METHODPTR types, and into type_specific.func_stuff
for METHODs, and then updates everything to use that.
TYPE_CODE_METHOD could share some things with TYPE_CODE_FUNC
(e.g. TYPE_NO_RETURN) and it seemed simplest to keep them together.
Moving TYPE_SELF_TYPE into type_specific.func_stuff for TYPE_CODE_METHOD
is also nice because when we allocate space for function types we assume
they're TYPE_CODE_FUNCs. If TYPE_CODE_METHODs don't need or use that
space then that space would be wasted, and cleaning that up would involve
more invasive changes.
In order to catch errant uses I've added accessor functions
that do some checking.
One can no longer assign to TYPE_SELF_TYPE like this:
TYPE_SELF_TYPE (foo) = bar;
One instead has to do:
set_type_self_type (foo, bar);
But I've left reading of the type to the macro:
bar = TYPE_SELF_TYPE (foo);
In order to discourage bypassing the TYPE_SELF_TYPE macro
I've named the underlying function that implements it
internal_type_self_type.
While testing this I found the stabs reader leaving methods
as TYPE_CODE_FUNCs, hitting my newly added asserts.
Since the dwarf reader smashes functions to methods (via
smash_to_method) I've done a similar thing for stabs.
gdb/ChangeLog:
* cp-valprint.c (cp_find_class_member): Rename parameter domain_p
to self_p.
(cp_print_class_member): Rename local domain to self_type.
* dwarf2read.c (quirk_gcc_member_function_pointer): Rename local
domain_type to self_type.
(set_die_type) <need_gnat_info>: Handle
TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, TYPE_CODE_METHOD.
* gdb-gdb.py (StructMainTypePrettyPrinter): Handle
TYPE_SPECIFIC_SELF_TYPE.
* gdbtypes.c (internal_type_self_type): New function.
(set_type_self_type): New function.
(smash_to_memberptr_type): Rename parameter domain to self_type.
Update setting of TYPE_SELF_TYPE.
(smash_to_methodptr_type): Update setting of TYPE_SELF_TYPE.
(smash_to_method_type): Rename parameter domain to self_type.
Update setting of TYPE_SELF_TYPE.
(check_stub_method): Call smash_to_method_type.
(recursive_dump_type): Handle TYPE_SPECIFIC_SELF_TYPE.
(copy_type_recursive): Ditto.
* gdbtypes.h (enum type_specific_kind): New value
TYPE_SPECIFIC_SELF_TYPE.
(struct main_type) <type_specific>: New member self_type.
(struct cplus_struct_type) <fn_field.type>: Update comment.
(TYPE_SELF_TYPE): Rewrite.
(internal_type_self_type, set_type_self_type): Declare.
* gnu-v3-abi.c (gnuv3_print_method_ptr): Rename local domain to
self_type.
(gnuv3_method_ptr_to_value): Rename local domain_type to self_type.
* m2-typeprint.c (m2_range): Replace TYPE_SELF_TYPE with
TYPE_TARGET_TYPE.
* stabsread.c (read_member_functions): Mark methods with
TYPE_CODE_METHOD, not TYPE_CODE_FUNC. Update setting of
TYPE_SELF_TYPE.
2015-02-01 06:21:01 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* cp-valprint.c (cp_find_class_member): Rename parameter domain_p
|
|
|
|
|
to self_p.
|
|
|
|
|
(cp_print_class_member): Rename local domain to self_type.
|
|
|
|
|
* dwarf2read.c (quirk_gcc_member_function_pointer): Rename local
|
|
|
|
|
domain_type to self_type.
|
|
|
|
|
(set_die_type) <need_gnat_info>: Handle
|
|
|
|
|
TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR, TYPE_CODE_METHOD.
|
|
|
|
|
* gdb-gdb.py (StructMainTypePrettyPrinter): Handle
|
|
|
|
|
TYPE_SPECIFIC_SELF_TYPE.
|
|
|
|
|
* gdbtypes.c (internal_type_self_type): New function.
|
|
|
|
|
(set_type_self_type): New function.
|
|
|
|
|
(smash_to_memberptr_type): Rename parameter domain to self_type.
|
|
|
|
|
Update setting of TYPE_SELF_TYPE.
|
|
|
|
|
(smash_to_methodptr_type): Update setting of TYPE_SELF_TYPE.
|
|
|
|
|
(smash_to_method_type): Rename parameter domain to self_type.
|
|
|
|
|
Update setting of TYPE_SELF_TYPE.
|
|
|
|
|
(check_stub_method): Call smash_to_method_type.
|
|
|
|
|
(recursive_dump_type): Handle TYPE_SPECIFIC_SELF_TYPE.
|
|
|
|
|
(copy_type_recursive): Ditto.
|
|
|
|
|
* gdbtypes.h (enum type_specific_kind): New value
|
|
|
|
|
TYPE_SPECIFIC_SELF_TYPE.
|
|
|
|
|
(struct main_type) <type_specific>: New member self_type.
|
|
|
|
|
(struct cplus_struct_type) <fn_field.type>: Update comment.
|
|
|
|
|
(TYPE_SELF_TYPE): Rewrite.
|
|
|
|
|
(internal_type_self_type, set_type_self_type): Declare.
|
|
|
|
|
* gnu-v3-abi.c (gnuv3_print_method_ptr): Rename local domain to
|
|
|
|
|
self_type.
|
|
|
|
|
(gnuv3_method_ptr_to_value): Rename local domain_type to self_type.
|
|
|
|
|
* m2-typeprint.c (m2_range): Replace TYPE_SELF_TYPE with
|
|
|
|
|
TYPE_TARGET_TYPE.
|
|
|
|
|
* stabsread.c (read_member_functions): Mark methods with
|
|
|
|
|
TYPE_CODE_METHOD, not TYPE_CODE_FUNC. Update setting of
|
|
|
|
|
TYPE_SELF_TYPE.
|
|
|
|
|
|
2015-02-01 06:17:05 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.h (TYPE_SELF_TYPE): Renamed from TYPE_DOMAIN_TYPE.
|
|
|
|
|
All uses updated.
|
|
|
|
|
|
2015-02-01 06:14:17 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* gnu-v3-abi.c (gnuv3_dynamic_class): Assert only passed structs
|
|
|
|
|
or unions. Return zero if union.
|
|
|
|
|
(gnuv3_get_vtable): Call check_typedef. Assert only passed structs.
|
|
|
|
|
(gnuv3_rtti_type): Pass already-check_typedef'd value to
|
|
|
|
|
gnuv3_get_vtable.
|
|
|
|
|
(compute_vtable_size): Assert only passed structs.
|
|
|
|
|
(gnuv3_print_vtable): Don't call gnuv3_get_vtable for non-structs.
|
|
|
|
|
|
2015-02-01 06:13:02 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (copy_type_recursive): Handle all TYPE_SPECIFIC_FIELD
|
|
|
|
|
kinds.
|
|
|
|
|
|
2015-02-01 00:24:26 +01:00
|
|
|
|
2015-01-31 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR cli/9007
|
|
|
|
|
PR cli/11920
|
|
|
|
|
PR cli/15548
|
|
|
|
|
* cli/cli-cmds.c (complete_command): Notify user if max-completions
|
|
|
|
|
reached.
|
|
|
|
|
* common/common-exceptions.h (enum errors)
|
|
|
|
|
<MAX_COMPLETIONS_REACHED_ERROR>: New value.
|
|
|
|
|
* completer.h (get_max_completions_reached_message): New declaration.
|
|
|
|
|
(max_completions): Likewise.
|
|
|
|
|
(completion_tracker_t): New typedef.
|
|
|
|
|
(new_completion_tracker): New declaration.
|
|
|
|
|
(make_cleanup_free_completion_tracker): Likewise.
|
|
|
|
|
(maybe_add_completion_enum): New enum.
|
|
|
|
|
(maybe_add_completion): New declaration.
|
|
|
|
|
(throw_max_completions_reached_error): Likewise.
|
|
|
|
|
* completer.c (max_completions): New global variable.
|
|
|
|
|
(new_completion_tracker): New function.
|
|
|
|
|
(free_completion_tracker): Likewise.
|
|
|
|
|
(make_cleanup_free_completion_tracker): Likewise.
|
|
|
|
|
(maybe_add_completions): Likewise.
|
|
|
|
|
(throw_max_completions_reached_error): Likewise.
|
|
|
|
|
(complete_line): Remove duplicates and limit result to max_completions
|
|
|
|
|
entries.
|
|
|
|
|
(get_max_completions_reached_message): New function.
|
|
|
|
|
(gdb_display_match_list): Handle max_completions.
|
|
|
|
|
(_initialize_completer): New declaration and function.
|
|
|
|
|
* symtab.c: Include completer.h.
|
|
|
|
|
(completion_tracker): New static variable.
|
|
|
|
|
(completion_list_add_name): Call maybe_add_completion.
|
|
|
|
|
(default_make_symbol_completion_list_break_on_1): Renamed from
|
|
|
|
|
default_make_symbol_completion_list_break_on. Maintain
|
|
|
|
|
completion_tracker across calls to completion_list_add_name.
|
|
|
|
|
(default_make_symbol_completion_list_break_on): New function.
|
|
|
|
|
* top.c (init_main): Set rl_completion_display_matches_hook.
|
|
|
|
|
* tui/tui-io.c: Include completer.h.
|
|
|
|
|
(tui_old_rl_display_matches_hook): New static global.
|
|
|
|
|
(tui_rl_display_match_list): Notify user if max-completions reached.
|
|
|
|
|
(tui_setup_io): Save/restore rl_completion_display_matches_hook.
|
|
|
|
|
* NEWS (New Options): Mention set/show max-completions.
|
|
|
|
|
|
2015-01-31 23:48:29 +01:00
|
|
|
|
2015-01-31 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (struct add_name_data) <code>: New field.
|
|
|
|
|
Updated comments.
|
|
|
|
|
(add_symtab_completions): New function.
|
|
|
|
|
(symtab_expansion_callback): Likewise.
|
|
|
|
|
(default_make_symbol_completion_list_break_on): Set datum.code.
|
|
|
|
|
Move minimal symbol scan before calling expand_symtabs_matching.
|
|
|
|
|
Scan known primary symtabs for externs and statics before calling
|
|
|
|
|
expand_symtabs_matching. Pass symtab_expansion_callback as
|
|
|
|
|
expansion_notify argument to expand_symtabs_matching. Do not scan
|
|
|
|
|
primary symtabs for externs and statics after calling
|
|
|
|
|
expand_symtabs_matching.
|
|
|
|
|
|
2015-01-31 23:45:26 +01:00
|
|
|
|
2015-01-31 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symfile.h (expand_symtabs_exp_notify_ftype): New typedef.
|
|
|
|
|
(struct quick_symbol_functions) <expand_symtabs_matching>:
|
|
|
|
|
New argument expansion_notify. All uses updated.
|
|
|
|
|
(expand_symtabs_matching): New argument expansion_notify.
|
|
|
|
|
All uses updated.
|
|
|
|
|
* symfile-debug.c (debug_qf_expand_symtabs_matching):
|
|
|
|
|
Also print expansion notify.
|
|
|
|
|
* symtab.c (expand_symtabs_matching_via_partial): Call
|
|
|
|
|
expansion_notify whenever a partial symbol table is expanded.
|
|
|
|
|
* dwarf2read.c (dw2_expand_symtabs_matching): Call
|
|
|
|
|
expansion_notify whenever a symbol table is instantiated.
|
|
|
|
|
|
Unify CLI/TUI interface to readline tab completion.
This copies a lot of code from readline, but this is temporary.
Readline currently doesn't export what we need.
The plan is to have something that has been working for awhile,
and then we'll have a complete story to present to the readline
maintainers.
gdb/ChangeLog:
* cli-out.c: #include completer.h, readline/readline.h.
(cli_mld_crlf, cli_mld_putch, cli_mld_puts): New functions.
(cli_mld_flush, cld_mld_erase_entire_line): Ditto.
(cli_mld_beep, cli_mld_read_key, cli_display_match_list): Ditto.
* cli-out.h (cli_display_match_list): Declare.
* completer.c (MB_INVALIDCH, MB_NULLWCH): New macros.
(ELLIPSIS_LEN): Ditto.
(gdb_get_y_or_n, gdb_display_match_list_pager): New functions.
(gdb_path_isdir, gdb_printable_part, gdb_fnwidth): Ditto.
(gdb_fnprint, gdb_print_filename): Ditto.
(gdb_complete_get_screenwidth, gdb_display_match_list_1): Ditto.
(gdb_display_match_list): Ditto.
* completer.h (mld_crlf_ftype, mld_putch_ftype): New typedefs.
(mld_puts_ftype, mld_flush_ftype, mld_erase_entire_line_ftype): Ditto.
(mld_beep_ftype, mld_read_key_ftype): Ditto.
(match_list_displayer): New struct.
(gdb_display_match_list): Declare.
* top.c (init_main): Set rl_completion_display_matches_hook.
* tui/tui-io.c: #include completer.h.
(printable_part, PUTX, print_filename, get_y_or_n): Delete.
(tui_mld_crlf, tui_mld_putch, tui_mld_puts): New functions.
(tui_mld_flush, tui_mld_erase_entire_line, tui_mld_beep): Ditto.
(tui_mld_getc, tui_mld_read_key): Ditto.
(tui_rl_display_match_list): Rewrite.
(tui_handle_resize_during_io): New arg for_completion. All callers
updated.
2015-01-31 23:11:54 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* cli-out.c: #include completer.h, readline/readline.h.
|
|
|
|
|
(cli_mld_crlf, cli_mld_putch, cli_mld_puts): New functions.
|
|
|
|
|
(cli_mld_flush, cld_mld_erase_entire_line): Ditto.
|
|
|
|
|
(cli_mld_beep, cli_mld_read_key, cli_display_match_list): Ditto.
|
|
|
|
|
* cli-out.h (cli_display_match_list): Declare.
|
|
|
|
|
* completer.c (MB_INVALIDCH, MB_NULLWCH): New macros.
|
|
|
|
|
(ELLIPSIS_LEN): Ditto.
|
|
|
|
|
(gdb_get_y_or_n, gdb_display_match_list_pager): New functions.
|
|
|
|
|
(gdb_path_isdir, gdb_printable_part, gdb_fnwidth): Ditto.
|
|
|
|
|
(gdb_fnprint, gdb_print_filename): Ditto.
|
|
|
|
|
(gdb_complete_get_screenwidth, gdb_display_match_list_1): Ditto.
|
|
|
|
|
(gdb_display_match_list): Ditto.
|
|
|
|
|
* completer.h (mld_crlf_ftype, mld_putch_ftype): New typedefs.
|
|
|
|
|
(mld_puts_ftype, mld_flush_ftype, mld_erase_entire_line_ftype): Ditto.
|
|
|
|
|
(mld_beep_ftype, mld_read_key_ftype): Ditto.
|
|
|
|
|
(match_list_displayer): New struct.
|
|
|
|
|
(gdb_display_match_list): Declare.
|
|
|
|
|
* top.c (init_main): Set rl_completion_display_matches_hook.
|
|
|
|
|
* tui/tui-io.c: #include completer.h.
|
|
|
|
|
(printable_part, PUTX, print_filename, get_y_or_n): Delete.
|
|
|
|
|
(tui_mld_crlf, tui_mld_putch, tui_mld_puts): New functions.
|
|
|
|
|
(tui_mld_flush, tui_mld_erase_entire_line, tui_mld_beep): Ditto.
|
|
|
|
|
(tui_mld_getc, tui_mld_read_key): Ditto.
|
|
|
|
|
(tui_rl_display_match_list): Rewrite.
|
|
|
|
|
(tui_handle_resize_during_io): New arg for_completion. All callers
|
|
|
|
|
updated.
|
|
|
|
|
|
Add symbol lookup cache.
gdb/ChangeLog:
Add symbol lookup cache.
* NEWS: Document new options and commands.
* symtab.c (symbol_cache_key): New static global.
(DEFAULT_SYMBOL_CACHE_SIZE, MAX_SYMBOL_CACHE_SIZE): New macros.
(SYMBOL_LOOKUP_FAILED): New macro.
(symbol_cache_slot_state): New enum.
(block_symbol_cache): New struct.
(symbol_cache): New struct.
(new_symbol_cache_size, symbol_cache_size): New static globals.
(hash_symbol_entry, eq_symbol_entry): New functions.
(symbol_cache_byte_size, resize_symbol_cache): New functions.
(make_symbol_cache, free_symbol_cache): New functions.
(get_symbol_cache, symbol_cache_cleanup): New function.
(set_symbol_cache_size, set_symbol_cache_size_handler): New functions.
(symbol_cache_lookup, symbol_cache_clear_slot): New function.
(symbol_cache_mark_found, symbol_cache_mark_not_found): New functions.
(symbol_cache_flush, symbol_cache_dump): New functions.
(maintenance_print_symbol_cache): New function.
(maintenance_flush_symbol_cache): New function.
(symbol_cache_stats): New function.
(maintenance_print_symbol_cache_statistics): New function.
(symtab_new_objfile_observer): New function.
(symtab_free_objfile_observer): New function.
(lookup_static_symbol, lookup_global_symbol): Use symbol cache.
(_initialize_symtab): Init symbol_cache_key. New parameter
maint symbol-cache-size. New maint commands print symbol-cache,
print symbol-cache-statistics, flush-symbol-cache.
Install new_objfile, free_objfile observers.
gdb/doc/ChangeLog:
* gdb.texinfo (Symbols): Document new commands
"maint print symbol-cache", "maint print symbol-cache-statistics",
"maint flush-symbol-cache". Document new option
"maint set symbol-cache-size".
2015-01-31 22:29:33 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
Add symbol lookup cache.
|
|
|
|
|
* NEWS: Document new options and commands.
|
|
|
|
|
* symtab.c (symbol_cache_key): New static global.
|
|
|
|
|
(DEFAULT_SYMBOL_CACHE_SIZE, MAX_SYMBOL_CACHE_SIZE): New macros.
|
|
|
|
|
(SYMBOL_LOOKUP_FAILED): New macro.
|
|
|
|
|
(symbol_cache_slot_state): New enum.
|
|
|
|
|
(block_symbol_cache): New struct.
|
|
|
|
|
(symbol_cache): New struct.
|
|
|
|
|
(new_symbol_cache_size, symbol_cache_size): New static globals.
|
|
|
|
|
(hash_symbol_entry, eq_symbol_entry): New functions.
|
|
|
|
|
(symbol_cache_byte_size, resize_symbol_cache): New functions.
|
|
|
|
|
(make_symbol_cache, free_symbol_cache): New functions.
|
|
|
|
|
(get_symbol_cache, symbol_cache_cleanup): New function.
|
|
|
|
|
(set_symbol_cache_size, set_symbol_cache_size_handler): New functions.
|
|
|
|
|
(symbol_cache_lookup, symbol_cache_clear_slot): New function.
|
|
|
|
|
(symbol_cache_mark_found, symbol_cache_mark_not_found): New functions.
|
|
|
|
|
(symbol_cache_flush, symbol_cache_dump): New functions.
|
|
|
|
|
(maintenance_print_symbol_cache): New function.
|
|
|
|
|
(maintenance_flush_symbol_cache): New function.
|
|
|
|
|
(symbol_cache_stats): New function.
|
|
|
|
|
(maintenance_print_symbol_cache_statistics): New function.
|
|
|
|
|
(symtab_new_objfile_observer): New function.
|
|
|
|
|
(symtab_free_objfile_observer): New function.
|
|
|
|
|
(lookup_static_symbol, lookup_global_symbol): Use symbol cache.
|
|
|
|
|
(_initialize_symtab): Init symbol_cache_key. New parameter
|
|
|
|
|
maint symbol-cache-size. New maint commands print symbol-cache,
|
|
|
|
|
print symbol-cache-statistics, flush-symbol-cache.
|
|
|
|
|
Install new_objfile, free_objfile observers.
|
|
|
|
|
|
2015-01-31 21:43:02 +01:00
|
|
|
|
2015-01-31 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
PR symtab/17855
|
|
|
|
|
* symfile.c (clear_symtab_users): Move call to breakpoint_re_set
|
|
|
|
|
to end.
|
|
|
|
|
|
2015-01-31 21:01:13 +01:00
|
|
|
|
2015-01-31 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention inlined scripts in .debug_gdb_scripts section.
|
|
|
|
|
* auto-load.c: #include ctype.h.
|
|
|
|
|
(struct auto_load_pspace_info): Replace member loaded_scripts with
|
|
|
|
|
new members loaded_script_files, loaded_script_texts.
|
|
|
|
|
(auto_load_pspace_data_cleanup): Update.
|
|
|
|
|
(init_loaded_scripts_info): Update.
|
|
|
|
|
(get_auto_load_pspace_data_for_loading): Update.
|
|
|
|
|
(maybe_add_script_file): Renamed from maybe_add_script. All callers
|
|
|
|
|
updated.
|
|
|
|
|
(maybe_add_script_text): New function.
|
|
|
|
|
(clear_section_scripts): Update.
|
|
|
|
|
(source_script_file, execute_script_contents): New functions.
|
|
|
|
|
(source_section_scripts): Add support for
|
|
|
|
|
SECTION_SCRIPT_ID_PYTHON_TEXT, SECTION_SCRIPT_ID_GUILE_TEXT.
|
|
|
|
|
(print_scripts): New function.
|
|
|
|
|
(auto_load_info_scripts): Also print inlined scripts.
|
|
|
|
|
(maybe_print_unsupported_script_warning): Renamed from
|
|
|
|
|
unsupported_script_warning_print. All callers updated.
|
|
|
|
|
(maybe_print_script_not_found_warning): Renamed from
|
|
|
|
|
script_not_found_warning_print. All callers updated.
|
|
|
|
|
* extension-priv.h (struct extension_language_script_ops): New member
|
|
|
|
|
objfile_script_executor.
|
|
|
|
|
* extension.c (ext_lang_objfile_script_executor): New function.
|
|
|
|
|
* extension.h (objfile_script_executor_func): New typedef.
|
|
|
|
|
(ext_lang_objfile_script_executor): Declare.
|
|
|
|
|
* guile/guile-internal.h (gdbscm_execute_objfile_script): Declare.
|
|
|
|
|
* guile/guile.c (guile_extension_script_ops): Update.
|
|
|
|
|
* guile/scm-objfile.c (gdbscm_execute_objfile_script): New function.
|
|
|
|
|
* python/python.c (python_extension_script_ops): Update.
|
|
|
|
|
(gdbpy_execute_objfile_script): New function.
|
|
|
|
|
|
2015-01-31 09:47:14 +01:00
|
|
|
|
2015-01-31 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
* tui/tui-io.c (tui_expand_tabs): New function.
|
|
|
|
|
(tui_puts, tui_redisplay_readline): Expand TABs into the
|
|
|
|
|
appropriate number of spaces.
|
|
|
|
|
* tui/tui-regs.c: Include tui-io.h.
|
|
|
|
|
(tui_register_format): Call tui_expand_tabs to expand TABs into
|
|
|
|
|
the appropriate number of spaces.
|
|
|
|
|
* tui/tui-io.h: Add prototype for tui_expand_tabs.
|
|
|
|
|
|
2015-01-31 05:49:51 +01:00
|
|
|
|
2015-01-30 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: "info source" command now display producer string if present.
|
|
|
|
|
* source.c (source_info): Print producer string if present.
|
|
|
|
|
|
2015-01-30 21:16:43 +01:00
|
|
|
|
2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_delete): Fix comment.
|
|
|
|
|
|
2015-01-30 21:14:46 +01:00
|
|
|
|
2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (create_child): Modify comment.
|
|
|
|
|
|
2015-01-30 21:07:15 +01:00
|
|
|
|
2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ada-varobj.c (ada_number_of_children): Constify struct varobj *
|
|
|
|
|
parameter.
|
|
|
|
|
(ada_name_of_variable): Same.
|
|
|
|
|
(ada_path_expr_of_child): Same.
|
|
|
|
|
(ada_value_of_variable): Same.
|
|
|
|
|
(ada_value_is_changeable_p): Same.
|
|
|
|
|
(ada_value_has_mutated): Same.
|
|
|
|
|
* c-varobj.c (varobj_is_anonymous_child): Same.
|
|
|
|
|
(c_is_path_expr_parent): Same.
|
|
|
|
|
(c_number_of_children): Same.
|
|
|
|
|
(c_name_of_variable): Same.
|
|
|
|
|
(c_path_expr_of_child): Same.
|
|
|
|
|
(get_type): Same.
|
|
|
|
|
(c_value_of_variable): Same.
|
|
|
|
|
(cplus_number_of_children): Same.
|
|
|
|
|
(cplus_name_of_variable): Same.
|
|
|
|
|
(cplus_path_expr_of_child): Same.
|
|
|
|
|
(cplus_value_of_variable): Same.
|
|
|
|
|
* jv-varobj.c (java_number_of_children): Same.
|
|
|
|
|
(java_name_of_variable): Same.
|
|
|
|
|
(java_path_expr_of_child): Same.
|
|
|
|
|
(java_value_of_variable): Same.
|
|
|
|
|
* varobj.c (number_of_children): Same.
|
|
|
|
|
(name_of_variable): Same.
|
|
|
|
|
(is_root_p): Same.
|
|
|
|
|
(varobj_ensure_python_env): Same.
|
|
|
|
|
(varobj_get_objname): Same.
|
|
|
|
|
(varobj_get_expression): Same.
|
|
|
|
|
(varobj_get_display_format): Same.
|
|
|
|
|
(varobj_get_display_hint): Same.
|
|
|
|
|
(varobj_has_more): Same.
|
|
|
|
|
(varobj_get_thread_id): Same.
|
|
|
|
|
(varobj_get_frozen): Same.
|
|
|
|
|
(dynamic_varobj_has_child_method): Same.
|
|
|
|
|
(varobj_get_gdb_type): Same.
|
|
|
|
|
(is_path_expr_parent): Same.
|
|
|
|
|
(varobj_default_is_path_expr_parent): Same.
|
|
|
|
|
(varobj_get_language): Same.
|
|
|
|
|
(varobj_get_attributes): Same.
|
|
|
|
|
(varobj_is_dynamic_p): Same.
|
|
|
|
|
(varobj_get_child_range): Same.
|
|
|
|
|
(varobj_value_has_mutated): Same.
|
|
|
|
|
(varobj_get_value_type): Same.
|
|
|
|
|
(number_of_children): Same.
|
|
|
|
|
(name_of_variable): Same.
|
|
|
|
|
(check_scope): Same.
|
|
|
|
|
(varobj_editable_p): Same.
|
|
|
|
|
(varobj_value_is_changeable_p): Same.
|
|
|
|
|
(varobj_floating_p): Same.
|
|
|
|
|
(varobj_default_value_is_changeable_p): Same.
|
|
|
|
|
|
2015-01-30 20:43:59 +01:00
|
|
|
|
2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_get_path_expr): Set var->path_expr.
|
|
|
|
|
* c-varobj.c (c_path_expr_of_child): Set local var instead of
|
|
|
|
|
child->path_expr.
|
|
|
|
|
(cplus_path_expr_of_child): Same.
|
|
|
|
|
|
2015-01-30 19:56:56 +01:00
|
|
|
|
2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* mi-cmd-var.c (print_varobj): Free varobj_get_expression
|
|
|
|
|
result.
|
|
|
|
|
(mi_cmd_var_info_expression): Same.
|
|
|
|
|
* varobj.c (varobj_get_expression): Mention in the comment that
|
|
|
|
|
the result must by freed by the caller.
|
|
|
|
|
|
2015-01-30 19:54:50 +01:00
|
|
|
|
2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_info_type): Free result of
|
|
|
|
|
varobj_get_type.
|
|
|
|
|
(varobj_update_one): Same.
|
|
|
|
|
* varobj.c (update_type_if_necessary): Free curr_type_str and
|
|
|
|
|
new_type_str.
|
|
|
|
|
(varobj_get_type): Specify in comment that the result needs to be
|
|
|
|
|
freed by the caller.
|
|
|
|
|
|
2015-01-29 19:26:38 +01:00
|
|
|
|
2015-01-29 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
PR symtab/17890
|
|
|
|
|
* dwarf2read.c (dwarf_decode_line_header): Punt if version > 4.
|
|
|
|
|
|
2015-01-25 11:20:39 +01:00
|
|
|
|
2015-01-25 Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (checkproducer): Call producer_is_gcc.
|
|
|
|
|
* utils.c (producer_is_gcc_ge_4): Likewise.
|
|
|
|
|
(producer_is_gcc): New function.
|
|
|
|
|
* utils.h (producer_is_gcc): New declaration.
|
|
|
|
|
|
gdb/DWARF: Support for arrays whose bound is a discriminant.
Consider the following declarations:
type Array_Type is array (Integer range <>) of Integer;
type Record_Type (N : Integer) is record
A : Array_Type (1 .. N);
end record;
R : Record_Type := Get (10);
It defines what Ada programers call a "discriminated record", where
"N" is a component of that record called a "discriminant", and where
"A" is a component defined as an array type whose upper bound is
equal to the value of the discriminant.
So far, we rely on a number of fairly complex GNAT-specific encodings
to handle this situation. This patch is to enhance GDB to be able to
print this record in the case where the compiler has been modified
to replace those encodings by pure DWARF constructs.
In particular, the debugging information generated for the record above
looks like the following. "R" is a record..
.uleb128 0x10 # (DIE (0x13e) DW_TAG_structure_type)
.long .LASF17 # DW_AT_name: "foo__record_type"
... whose is is of course dynamic (not our concern here)...
.uleb128 0xd # DW_AT_byte_size
.byte 0x97 # DW_OP_push_object_address
.byte 0x94 # DW_OP_deref_size
.byte 0x4
.byte 0x99 # DW_OP_call4
.long 0x19b
.byte 0x23 # DW_OP_plus_uconst
.uleb128 0x7
.byte 0x9 # DW_OP_const1s
.byte 0xfc
.byte 0x1a # DW_OP_and
.byte 0x1 # DW_AT_decl_file (foo.adb)
.byte 0x6 # DW_AT_decl_line
... and then has 2 members, fist "n" (our discriminant);
.uleb128 0x11 # (DIE (0x153) DW_TAG_member)
.ascii "n\0" # DW_AT_name
.byte 0x1 # DW_AT_decl_file (foo.adb)
.byte 0x6 # DW_AT_decl_line
.long 0x194 # DW_AT_type
.byte 0 # DW_AT_data_member_location
... and "A"...
.uleb128 0x11 # (DIE (0x181) DW_TAG_member)
.ascii "a\0" # DW_AT_name
.long 0x15d # DW_AT_type
.byte 0x4 # DW_AT_data_member_location
... which is an array ...
.uleb128 0x12 # (DIE (0x15d) DW_TAG_array_type)
.long .LASF18 # DW_AT_name: "foo__record_type__T4b"
.long 0x194 # DW_AT_type
... whose lower bound is implicitly 1, and the upper bound
a reference to DIE 0x153 = "N":
.uleb128 0x13 # (DIE (0x16a) DW_TAG_subrange_type)
.long 0x174 # DW_AT_type
.long 0x153 # DW_AT_upper_bound
This patch enhanced GDB to understand references to other DIEs
where the DIE's address is at an offset of its enclosing type.
The difficulty was that the address used to resolve the array's
type (R's address + 4 bytes) is different from the address used
as the base to compute N's address (an offset to R's address).
We're solving this issue by using a stack of addresses rather
than a single address when trying to resolve a type. Each address
in the stack corresponds to each containing level. For instance,
if resolving the field of a struct, the stack should contain
the address of the field at the top, and then the address of
the struct. That way, if the field makes a reference to an object
of the struct, we can retrieve the address of that struct, and
properly resolve the dynamic property references that struct.
gdb/ChangeLog:
* gdbtypes.h (struct dynamic_prop): New PROP_ADDR_OFFSET enum
kind.
* gdbtypes.c (resolve_dynamic_type_internal): Replace "addr"
parameter by "addr_stack" parameter.
(resolve_dynamic_range): Replace "addr" parameter by
"stack_addr" parameter. Update function documentation.
Update code accordingly.
(resolve_dynamic_array, resolve_dynamic_union)
(resolve_dynamic_struct, resolve_dynamic_type_internal): Likewise.
(resolve_dynamic_type): Update code, following the changes made
to resolve_dynamic_type_internal's interface.
* dwarf2loc.h (struct property_addr_info): New.
(dwarf2_evaluate_property): Replace "address" parameter
by "addr_stack" parameter. Adjust function documentation.
(struct dwarf2_offset_baton): New.
(struct dwarf2_property_baton): Update documentation of
field "referenced_type" to be more general. New field
"offset_info" in union data field.
* dwarf2loc.c (dwarf2_evaluate_property): Replace "address"
parameter by "addr_stack" parameter. Adjust code accordingly.
Add support for PROP_ADDR_OFFSET properties.
* dwarf2read.c (attr_to_dynamic_prop): Add support for
DW_AT_data_member_location attributes as well. Use case
statements instead of if/else condition.
gdb/testsuite/ChangeLog:
* gdb.ada/disc_arr_bound: New testcase.
Tested on x86_64-linux, no regression.
2015-01-05 11:32:36 +01:00
|
|
|
|
2015-01-29 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.h (struct dynamic_prop): New PROP_ADDR_OFFSET enum
|
|
|
|
|
kind.
|
|
|
|
|
* gdbtypes.c (resolve_dynamic_type_internal): Replace "addr"
|
|
|
|
|
parameter by "addr_stack" parameter.
|
|
|
|
|
(resolve_dynamic_range): Replace "addr" parameter by
|
|
|
|
|
"stack_addr" parameter. Update function documentation.
|
|
|
|
|
Update code accordingly.
|
|
|
|
|
(resolve_dynamic_array, resolve_dynamic_union)
|
|
|
|
|
(resolve_dynamic_struct, resolve_dynamic_type_internal): Likewise.
|
|
|
|
|
(resolve_dynamic_type): Update code, following the changes made
|
|
|
|
|
to resolve_dynamic_type_internal's interface.
|
|
|
|
|
* dwarf2loc.h (struct property_addr_info): New.
|
|
|
|
|
(dwarf2_evaluate_property): Replace "address" parameter
|
|
|
|
|
by "addr_stack" parameter. Adjust function documentation.
|
|
|
|
|
(struct dwarf2_offset_baton): New.
|
|
|
|
|
(struct dwarf2_property_baton): Update documentation of
|
|
|
|
|
field "referenced_type" to be more general. New field
|
|
|
|
|
"offset_info" in union data field.
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_property): Replace "address"
|
|
|
|
|
parameter by "addr_stack" parameter. Adjust code accordingly.
|
|
|
|
|
Add support for PROP_ADDR_OFFSET properties.
|
|
|
|
|
* dwarf2read.c (attr_to_dynamic_prop): Add support for
|
|
|
|
|
DW_AT_data_member_location attributes as well. Use case
|
|
|
|
|
statements instead of if/else condition.
|
|
|
|
|
|
[Ada/varobj] number of children of null pointer to dynamic array.
This is preparation work to avoid a regression in the Ada/varobj.
An upcoming patch is going to add support for types in DWARF
which have dynamic properties whose value is a reference to another
DIE.
Consider for instance the following declaration:
type Variant_Type (N : Int := 0) is record
F : String(1 .. N) := (others => 'x');
end record;
type Variant_Type_Access is access all Variant_Type;
VTA : Variant_Type_Access := null;
This declares a variable "VTA" which is an access (=pointer)
to a variant record Variant_Type. This record contains two
components, the first being "N" (the discriminant), and the
second being "F", an array whose lower bound is 1, and whose
upper bound depends on the value of "N" (the discriminant).
Of interest to us, here, is that second component ("F"), and
in particular its bounds. The debugging info, and in particular
the info for the array looks like the following...
.uleb128 0x9 # (DIE (0x91) DW_TAG_array_type)
.long .LASF16 # DW_AT_name: "bar__variant_type__T2b"
.long 0xac # DW_AT_GNAT_descriptive_type
.long 0x2cb # DW_AT_type
.long 0xac # DW_AT_sibling
.uleb128 0xa # (DIE (0xa2) DW_TAG_subrange_type)
.long 0xc4 # DW_AT_type
.long 0x87 # DW_AT_upper_bound
.byte 0 # end of children of DIE 0x91
... where the upper bound of the array's subrange type is a reference
to "n"'s DIE (0x87):
.uleb128 0x8 # (DIE (0x87) DW_TAG_member)
.ascii "n\0" # DW_AT_name
[...]
Once the patch to handle this dynamic property gets applied,
this is what happens when creating a varobj for variable "VTA"
(whose value is null), and then trying to list its children:
(gdb)
-var-create vta * vta
^done,name="vta",numchild="2",value="0x0",
type="bar.variant_type_access",has_more="0"
(gdb)
-var-list-children 1 vta
^done,numchild="2",
children=[child={name="vta.n",[...]},
child={name="vta.f",exp="f",
numchild="43877616", <<<<-----
value="[43877616]", <<<<-----
type="array (1 .. n) of character"}],
has_more="0"
It has an odd number of children.
In this case, we cannot really determine the number of children,
since that number depends on the value of a field in a record
for which we do not have a value. Up to now, the value we've been
displaying is zero - meaning we have an empty array.
What happens in this case, is that, because the VTA is a null pointer,
we're not able to resolve the pointer's target type, and therefore
end up asking ada_varobj_get_array_number_of_children to return
the number of elements in that array; for that, it relies blindly
on get_array_bounds, which assumes the type is no longer dynamic,
and therefore the reads the bound without seeing that it's value
is actually a reference rather than a resolved constant.
This patch prevents the issue by explicitly handling the case of
dynamic arrays, and returning zero child in that case.
gdb/ChangeLog:
* ada-varobj.c (ada_varobj_get_array_number_of_children):
Return zero if PARENT_VALUE is NULL and parent_type's
range type is dynamic.
gdb/testsuite/ChangeLog:
* gdb.ada/mi_var_array: New testcase.
Tested on x86_64-linux.
2015-01-14 15:39:24 +01:00
|
|
|
|
2015-01-29 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-varobj.c (ada_varobj_get_array_number_of_children):
|
|
|
|
|
Return zero if PARENT_VALUE is NULL and parent_type's
|
|
|
|
|
range type is dynamic.
|
|
|
|
|
|
gdb/DWARF: dynamic subrange type of dynamic subrange type.
Consider the following code:
type Record_Type (N : Integer) is record
A : Array_Type (1 .. N);
end record;
[...]
R : Record_Type := Get (10);
Trying to print the bounds of the array R.A yielded:
(gdb) p r.a'last
$4 = cannot find reference address for offset property
A slightly different example, but from the same cause:
(gdb) ptype r
type = <ref> record
n: integer;
a: array (cannot find reference address for offset property
Looking at the debugging info, "A" is described as...
.uleb128 0x11 # (DIE (0x181) DW_TAG_member)
.ascii "a\0" # DW_AT_name
.long 0x15d # DW_AT_type
[...]
... which is an array...
.uleb128 0x12 # (DIE (0x15d) DW_TAG_array_type)
.long .LASF18 # DW_AT_name: "foo__record_type__T4b"
.long 0x194 # DW_AT_type
.long 0x174 # DW_AT_sibling
... whose bounds are described as:
.uleb128 0x13 # (DIE (0x16a) DW_TAG_subrange_type)
.long 0x174 # DW_AT_type
.long 0x153 # DW_AT_upper_bound
.byte 0 # end of children of DIE 0x15d
We can see above that the range has an implict lower value of
1, and an upper value which is a reference 0x153="n". All Good.
But looking at the array's subrange subtype, we see...
.uleb128 0x14 # (DIE (0x174) DW_TAG_subrange_type)
.long 0x153 # DW_AT_upper_bound
.long .LASF19 # DW_AT_name: "foo__record_type__T3b"
.long 0x18d # DW_AT_type
... another subrange type whose bounds are exactly described
the same way. So we have a subrange of a subrange, both with
one bound that's dynamic.
What happens in the case above is that GDB's resolution of "R.A"
yields a array whose index type has static bounds. However, the
subtype of the array's index type was left untouched, so, when
taking the subtype of the array's subrange type, we were left
with the unresolved subrange type, triggering the error above.
gdb/ChangeLog:
* gdbtypes.c (is_dynamic_type_internal) <TYPE_CODE_RANGE>: Return
nonzero if the type's subtype is dynamic.
(resolve_dynamic_range): Also resolve the range's subtype.
Tested on x86_64-linux, no regression.
2015-01-05 15:39:02 +01:00
|
|
|
|
2015-01-29 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (is_dynamic_type_internal) <TYPE_CODE_RANGE>: Return
|
|
|
|
|
nonzero if the type's subtype is dynamic.
|
|
|
|
|
(resolve_dynamic_range): Also resolve the range's subtype.
|
|
|
|
|
|
2015-01-29 09:10:12 +01:00
|
|
|
|
2015-01-29 Alexander Klimov <alserkli@inbox.ru> (tiny patch)
|
2015-01-27 18:56:45 +01:00
|
|
|
|
|
2015-01-29 09:10:12 +01:00
|
|
|
|
Pushed by Joel Brobecker <brobecker@adacore.com>.
|
2015-01-27 18:56:45 +01:00
|
|
|
|
* symfile.c (unmap_overlay_command): Initialize sec to NULL.
|
|
|
|
|
|
2015-01-27 19:13:52 +01:00
|
|
|
|
2015-01-27 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention gdb.Objfile.username.
|
|
|
|
|
* python/py-objfile.c (objfpy_get_username): New function.
|
|
|
|
|
(objfile_getset): Add "username".
|
|
|
|
|
|
2015-01-24 15:08:32 +01:00
|
|
|
|
2015-01-24 Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (return_command): Markup warning message with _.
|
|
|
|
|
|
2015-01-24 20:17:08 +01:00
|
|
|
|
2015-01-24 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.h (TYPE_TYPE_SPECIFIC): Delete.
|
|
|
|
|
|
Fix 100x slowdown regression on DWZ files
Since Fedora started to use DWZ DWARF compressor:
http://fedoraproject.org/wiki/Features/DwarfCompressor
GDB has slowed down a lot. To make it clear - DWZ is DWARF structure
rearrangement, "compressor" does not mean any zlib style data compression.
This patch reduces LibreOffice backtrace from 5 minutes to 3 seconds (100x)
and it also reduces memory consumption 20x.
[ benchmark is at the bottom of this mail ]
Example of DWZ output:
------------------------------------------------------------------------------
Compilation Unit @ offset 0xc4:
<0><cf>: Abbrev Number: 17 (DW_TAG_partial_unit)
<d0> DW_AT_stmt_list : 0x0
<d4> DW_AT_comp_dir : (indirect string, offset: 0x6f): /usr/src/debug/gdb-7.7.1/build-x86_64-redhat-linux-gnu/gdb
<1><d8>: Abbrev Number: 9 (DW_TAG_typedef)
<d9> DW_AT_name : (indirect string, offset: 0x827dc): size_t
<dd> DW_AT_decl_file : 4
<de> DW_AT_decl_line : 212
<df> DW_AT_type : <0xae>
Compilation Unit @ offset 0xe4:
<0><ef>: Abbrev Number: 13 (DW_TAG_partial_unit)
<f0> DW_AT_stmt_list : 0x0
<f4> DW_AT_comp_dir : (indirect string, offset: 0x6f): /usr/src/debug/gdb-7.7.1/build-x86_64-redhat-linux-gnu/gdb
<1><f8>: Abbrev Number: 45 (DW_TAG_typedef)
<f9> DW_AT_name : (indirect string, offset: 0x251): __off_t
<fd> DW_AT_decl_file : 3
<fe> DW_AT_decl_line : 131
<ff> DW_AT_type : <0x68>
Compilation Unit @ offset 0x62d9f9:
<0><62da04>: Abbrev Number: 20 (DW_TAG_compile_unit)
[...]
<62da12> DW_AT_low_pc : 0x807e10
<62da1a> DW_AT_high_pc : 134
<62da1c> DW_AT_stmt_list : 0xf557e
<1><62da20>: Abbrev Number: 7 (DW_TAG_imported_unit)
<62da21> DW_AT_import : <0xcf> [Abbrev Number: 17]
------------------------------------------------------------------------------
One can see all DW_TAG_partial_unit have DW_AT_stmt_list 0x0 which causes
repeated decoding of that .debug_line unit on each DW_TAG_imported_unit.
This was OK before as each DW_TAG_compile_unit has its own .debug_line unit.
But since the introduction of DW_TAG_partial_unit by DWZ one should cache
read-in DW_AT_stmt_list .debug_line units.
Fortunately one does not need to cache whole
struct linetable *symtab->linetable
and other data from .debug_line mapping PC<->lines
------------------------------------------------------------------------------
Line Number Statements:
Extended opcode 2: set Address to 0x45c880
Advance Line by 25 to 26
Copy
------------------------------------------------------------------------------
as the only part of .debug_line which GDB needs for DW_TAG_partial_unit is:
------------------------------------------------------------------------------
The Directory Table:
../../gdb
/usr/include/bits
[...]
The File Name Table:
Entry Dir Time Size Name
1 1 0 0 gdb.c
2 2 0 0 string3.h
[...]
------------------------------------------------------------------------------
specifically referenced in GDB for DW_AT_decl_file at a single place:
------------------------------------------------------------------------------
fe = &cu->line_header->file_names[file_index - 1];
SYMBOL_SYMTAB (sym) = fe->symtab;
------------------------------------------------------------------------------
This is because for some reason DW_TAG_partial_unit never contains PC-related
DWARF information. I do not know exactly why, the compression ratio is a bit
lower due to it but thanksfully currently it is that way:
dwz.c:
------------------------------------------------------------------------------
/* These attributes reference code, prevent moving
DIEs with them. */
case DW_AT_low_pc:
case DW_AT_high_pc:
case DW_AT_entry_pc:
case DW_AT_ranges:
die->die_ck_state = CK_BAD;
+
/* State of checksum computation. Not computed yet, computed and
suitable for moving into partial units, currently being computed
and finally determined unsuitable for moving into partial units. */
enum { CK_UNKNOWN, CK_KNOWN, CK_BEING_COMPUTED, CK_BAD } die_ck_state : 2;
------------------------------------------------------------------------------
I have also verified also real-world Fedora debuginfo files really comply with
that assumption with dwgrep
https://github.com/pmachata/dwgrep
using:
------------------------------------------------------------------------------
dwgrep -e 'entry ?DW_TAG_partial_unit child* ( ?DW_AT_low_pc , ?DW_AT_high_pc , ?DW_AT_ranges )' /usr/lib/debug/**
------------------------------------------------------------------------------
BTW I think GDB already does not support the whole DW_TAG_imported_unit and
DW_TAG_partial_unit usage possibilities as specified by the DWARF standard.
I think GDB would not work if DW_TAG_imported_unit was used in some inner
level and not at the CU level (readelf -wi level <1>) - this is how DWZ is
using DW_TAG_imported_unit. Therefore I do not think further assumptions
about DW_TAG_imported_unit and DW_TAG_partial_unit usage by DWZ are a problem
for GDB.
One could save the whole .debug_line decoded PC<->lines mapping (and not just
the DW_AT_decl_file table) but:
* there are some problematic corner cases so one could do it incorrectly
* there are no real world data to really test such patch extension
* such extension could be done perfectly incrementally on top of this patch
------------------------------------------------------------------------------
benchmark - on Fedora 20 x86_64 and FSF GDB HEAD:
echo -e 'thread apply all bt\nset confirm no\nq'|./gdb -p `pidof soffice.bin` -ex 'set pagination off' -ex 'maintenance set per-command
space' -ex 'maintenance set per-command symtab' -ex 'maintenance set per-command time'
FSF GDB HEAD ("thread apply all bt"):
Command execution time: 333.693000 (cpu), 335.587539 (wall)
---sec
Space used: 1736404992 (+1477189632 for this command)
----MB
vs.
THIS PATCH ("thread apply all bt"):
Command execution time: 2.595000 (cpu), 2.607573 (wall)
-sec
Space used: 340058112 (+85917696 for this command)
--MB
FSF GDB HEAD ("thread apply all bt full"):
Command execution time: 466.751000 (cpu), 468.345837 (wall)
---sec
Space used: 2330132480 (+2070974464 for this command)
----MB
vs.
THIS PATCH ("thread apply all bt full"):
Command execution time: 18.907000 (cpu), 18.964125 (wall)
--sec
Space used: 364462080 (+110325760 for this command)
---MB
------------------------------------------------------------------------------
gdb/ChangeLog
2015-01-24 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix 100x slowdown regression on DWZ files.
* dwarf2read.c (struct dwarf2_per_objfile): Add line_header_hash.
(struct line_header): Add offset and offset_in_dwz.
(dwarf_decode_lines): Add parameter decode_mapping to the declaration.
(free_line_header_voidp): New declaration.
(line_header_hash, line_header_hash_voidp, line_header_eq_voidp): New
functions.
(dwarf2_build_include_psymtabs): Update dwarf_decode_lines caller.
(handle_DW_AT_stmt_list): Use line_header_hash.
(free_line_header_voidp): New function.
(dwarf_decode_line_header): Initialize offset and offset_in_dwz.
(dwarf_decode_lines): New parameter decode_mapping, use it.
(dwarf2_free_objfile): Free line_header_hash.
2015-01-24 15:44:52 +01:00
|
|
|
|
2015-01-24 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Fix 100x slowdown regression on DWZ files.
|
|
|
|
|
* dwarf2read.c (struct dwarf2_per_objfile): Add line_header_hash.
|
|
|
|
|
(struct line_header): Add offset and offset_in_dwz.
|
|
|
|
|
(dwarf_decode_lines): Add parameter decode_mapping to the declaration.
|
|
|
|
|
(free_line_header_voidp): New declaration.
|
|
|
|
|
(line_header_hash, line_header_hash_voidp, line_header_eq_voidp): New
|
|
|
|
|
functions.
|
|
|
|
|
(dwarf2_build_include_psymtabs): Update dwarf_decode_lines caller.
|
|
|
|
|
(handle_DW_AT_stmt_list): Use line_header_hash.
|
|
|
|
|
(free_line_header_voidp): New function.
|
|
|
|
|
(dwarf_decode_line_header): Initialize offset and offset_in_dwz.
|
|
|
|
|
(dwarf_decode_lines): New parameter decode_mapping, use it.
|
|
|
|
|
(dwarf2_free_objfile): Free line_header_hash.
|
|
|
|
|
|
2015-01-23 18:59:24 +01:00
|
|
|
|
2015-01-23 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/17416
|
|
|
|
|
* valops.c (value_rtti_indirect_type): Catch exception thrown by
|
|
|
|
|
value_ind.
|
|
|
|
|
|
2014-12-09 11:45:41 +01:00
|
|
|
|
2015-01-15 Mark Wielaard <mjw@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (read_subroutine_type): Set TYPE_NO_RETURN from
|
|
|
|
|
DW_AT_noreturn.
|
|
|
|
|
* gdbtypes.h (struct func_type): Add is_noreturn field flag. Make
|
|
|
|
|
calling_convention an 8 bit bit field.
|
|
|
|
|
(TYPE_NO_RETURN): New macro.
|
|
|
|
|
* infcmd.c (finish_command): Query if function does not return
|
|
|
|
|
normally.
|
|
|
|
|
* stack.c (return_command): Likewise.
|
|
|
|
|
|
2015-01-23 12:12:39 +01:00
|
|
|
|
2015-01-23 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_is_async_p): New macro.
|
|
|
|
|
(linux_nat_is_async_p):
|
|
|
|
|
(linux_nat_terminal_inferior): Check whether the target can async
|
|
|
|
|
instead of whether it is already async.
|
|
|
|
|
(linux_nat_terminal_ours): Don't check whether the target is
|
|
|
|
|
async.
|
|
|
|
|
(linux_async_pipe): Use linux_is_async_p.
|
|
|
|
|
|
2015-01-22 21:04:53 +01:00
|
|
|
|
2015-01-22 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 7.9): Add 'thread apply all' option
|
|
|
|
|
'-ascending'.
|
|
|
|
|
* thread.c (tp_array_compar_ascending, tp_array_compar): New.
|
|
|
|
|
(thread_apply_all_command): Parse CMD for tp_array_compar_ascending.
|
|
|
|
|
Sort tp_array using tp_array_compar.
|
|
|
|
|
(_initialize_thread): Extend thread_apply_all_command help.
|
|
|
|
|
|
2015-01-22 21:02:24 +01:00
|
|
|
|
2015-01-22 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* corelow.c (core_open): Call also thread_command.
|
|
|
|
|
* gdbthread.h (thread_command): New prototype moved from ...
|
|
|
|
|
* thread.c (thread_command): ... here.
|
|
|
|
|
(thread_command): Make it global.
|
|
|
|
|
|
2015-01-22 19:30:01 +01:00
|
|
|
|
2015-01-22 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac [*mingw32*]: Check $curses_found instead of
|
|
|
|
|
$prefer_curses.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* windows-termcap.c: Remove HAVE_CURSES_H, HAVE_NCURSES_H and
|
|
|
|
|
HAVE_NCURSES_NCURSES_H checks.
|
|
|
|
|
|
2015-01-22 19:23:12 +01:00
|
|
|
|
2015-01-22 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
2015-01-23 08:13:49 +01:00
|
|
|
|
* tui/tui.c (tui_enable) [__MINGW32__]: If the call to 'newterm'
|
2015-01-22 19:23:12 +01:00
|
|
|
|
fails with the 1st arg NULL, try again with "unknown". Don't test
|
|
|
|
|
the "cup" capability: it isn't supported by the Windows port of
|
|
|
|
|
ncurses, but the Windows console driver is still capable of
|
|
|
|
|
supporting TUI.
|
|
|
|
|
|
2015-01-22 19:18:16 +01:00
|
|
|
|
2015-01-22 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (_initialize_compile): Use -fPIE for compile_args.
|
|
|
|
|
|
2015-01-22 19:05:59 +01:00
|
|
|
|
2015-01-22 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Remove ada-varobj.h.
|
|
|
|
|
(ALLDEPFILES): Remove irix5-nat.c. These two are part of the
|
|
|
|
|
reason that "make TAGS" is broken.
|
|
|
|
|
|
2015-01-22 13:47:10 +01:00
|
|
|
|
2015-01-22 Chen Gang <gang.chen.5i5j@gmail.com>
|
|
|
|
|
|
|
|
|
|
* hppa-tdep.c (inst_saves_gr): Fix logical working flow issues
|
|
|
|
|
and check additional store instructions.
|
|
|
|
|
|
2015-01-20 17:07:50 +01:00
|
|
|
|
2015-01-21 Wei-cheng Wang <cole945@gmail.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add "Wei-cheng Wang".
|
|
|
|
|
|
Add missing comments in rs6000-tdep.c, ppc64-tdep.c and ppc-linux-tdep.c.
gdb/ChangeLog:
* ppc-linux-tdep.c (ppc_skip_trampoline_code,
ppc_canonicalize_syscall, ppc_linux_syscall_record,
ppc_linux_record_signal, ppc_init_linux_record_tdep): Add comments.
* ppc64-tdep.c (ppc64_skip_trampoline_code): Likewise.
* rs6000-tdep.c (rs6000_epilogue_frame_cache,
rs6000_epilogue_frame_this_id, rs6000_epilogue_frame_prev_register,
rs6000_epilogue_frame_sniffer, ppc_record_vsr, ppc_process_record_op4,
ppc_process_record_op19, ppc_process_record_op31,
ppc_process_record_op59, ppc_process_record_op60,
ppc_process_record_op63): Likewise.
2015-01-19 16:34:07 +01:00
|
|
|
|
2015-01-21 Wei-cheng Wang <cole945@gmail.com>
|
|
|
|
|
|
|
|
|
|
* ppc-linux-tdep.c (ppc_skip_trampoline_code,
|
|
|
|
|
ppc_canonicalize_syscall, ppc_linux_syscall_record,
|
|
|
|
|
ppc_linux_record_signal, ppc_init_linux_record_tdep): Add comments.
|
|
|
|
|
* ppc64-tdep.c (ppc64_skip_trampoline_code): Likewise.
|
|
|
|
|
* rs6000-tdep.c (rs6000_epilogue_frame_cache,
|
|
|
|
|
rs6000_epilogue_frame_this_id, rs6000_epilogue_frame_prev_register,
|
|
|
|
|
rs6000_epilogue_frame_sniffer, ppc_record_vsr, ppc_process_record_op4,
|
|
|
|
|
ppc_process_record_op19, ppc_process_record_op31,
|
|
|
|
|
ppc_process_record_op59, ppc_process_record_op60,
|
|
|
|
|
ppc_process_record_op63): Likewise.
|
|
|
|
|
|
2015-01-20 18:38:23 +01:00
|
|
|
|
2015-01-20 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-ptrace.c (linux_ptrace_attach_fail_reason_string)
|
|
|
|
|
(linux_ptrace_test_ret_to_nx): Use safe_strerror instead of
|
|
|
|
|
strerror.
|
|
|
|
|
|
2015-01-20 19:04:26 +01:00
|
|
|
|
2015-01-20 Wei-cheng Wang <cole945@gmail.com>
|
2015-01-18 08:20:46 +01:00
|
|
|
|
|
|
|
|
|
* rs6000-tdep.c (ppc_process_record_op4, ppc_process_record_op19,
|
|
|
|
|
ppc_process_record_op31, ppc_process_record_op59,
|
|
|
|
|
ppc_process_record_op60, ppc_process_record_op63,
|
|
|
|
|
ppc_process_record): Fix -Wformat warning.
|
|
|
|
|
* rs6000-tdep.c (rs6000_epilogue_frame_cache, ppc_process_record_op60):
|
|
|
|
|
Remove unused variables.
|
|
|
|
|
|
2015-01-20 15:17:09 +01:00
|
|
|
|
2015-01-20 Chen Gang <gang.chen.5i5j@gmail.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add "Chen Gang".
|
|
|
|
|
|
2015-01-19 16:34:29 +01:00
|
|
|
|
2015-01-19 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
* configure.ac [*mingw32*]: Only add windows-termcap.o to
|
|
|
|
|
CONFIG_OBS if not building with a curses library.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
|
|
|
|
* windows-termcap.c: Include defs.h. Make the whole body empty if
|
|
|
|
|
either one of HAVE_CURSES_H or HAVE_NCURSES_H or
|
|
|
|
|
HAVE_NCURSES_NCURSES_H is defined.
|
|
|
|
|
|
2015-01-19 08:51:05 +01:00
|
|
|
|
2015-01-19 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* rs6000-tdep.c (rs6000_gdbarch_init): Move divide operator
|
|
|
|
|
from end of line to start of next line.
|
|
|
|
|
|
2015-01-17 07:30:59 +01:00
|
|
|
|
2015-01-17 Wei-cheng Wang <cole945@gmail.com>
|
|
|
|
|
|
|
|
|
|
* ppc-linux-tdep.c (ppc_skip_trampoline_code):
|
|
|
|
|
Scan PLT stub backward for reverse debugging.
|
|
|
|
|
* ppc64-tdep.c (ppc64_skip_trampoline_code): Likewise.
|
|
|
|
|
|
2015-01-17 07:30:33 +01:00
|
|
|
|
2015-01-17 Wei-cheng Wang <cole945@gmail.com>
|
|
|
|
|
Ulrich Weigand <uweigand@de.ibm.com>
|
|
|
|
|
|
|
|
|
|
* configure.tgt (powerpc*-*-linux): Add linux-record.o to
|
|
|
|
|
gdb_target_obs.
|
|
|
|
|
(ppc_linux_record_tdep, ppc64_linux_record_tdep): New for linux syscall
|
|
|
|
|
record.
|
|
|
|
|
(ppc_canonicalize_syscall, ppc_linux_syscall_record,
|
|
|
|
|
ppc_linux_record_signal, ppc_init_linux_record_tdep): New functions.
|
|
|
|
|
(ppc_linux_init_abi): Set process_record, process_record_signal.
|
|
|
|
|
* ppc-tdep.h (struct gdbarch_tdep): Add ppc_syscall_record and
|
|
|
|
|
ppc_linux_record_tdep to gdbarch_tdep.
|
|
|
|
|
(ppc_process_record): New declaration.
|
|
|
|
|
* rs6000-tdep.c (ppc_record_vsr, ppc_process_record_op4,
|
|
|
|
|
ppc_process_record_op19, ppc_process_record_op31,
|
|
|
|
|
ppc_process_record_op59, ppc_process_record_op60,
|
|
|
|
|
ppc_process_record_op63, ppc_process_record): New functions.
|
|
|
|
|
|
2015-01-17 07:29:16 +01:00
|
|
|
|
2015-01-17 Wei-cheng Wang <cole945@gmail.com>
|
|
|
|
|
|
|
|
|
|
* rs6000-tdep.c (rs6000_in_function_epilogue_p): Rename to
|
|
|
|
|
rs6000_in_function_epilogue_frame_p and add an argument
|
|
|
|
|
for frame_info.
|
|
|
|
|
(rs6000_epilogue_frame_cache, rs6000_epilogue_frame_this_id,
|
|
|
|
|
rs6000_epilogue_frame_prev_register, rs6000_epilogue_frame_sniffer):
|
|
|
|
|
New functions.
|
|
|
|
|
(rs6000_epilogue_frame_unwind): New.
|
|
|
|
|
(rs6000_gdbarch_init): Append epilogue unwinder.
|
|
|
|
|
|
2015-01-16 17:42:28 +01:00
|
|
|
|
2015-01-16 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-personality.c: Replace "#ifndef
|
|
|
|
|
HAVE_DECL_ADDR_NO_RANDOMIZE" by "#if
|
|
|
|
|
!HAVE_DECL_ADDR_NO_RANDOMIZE", fixing a regression in RHEL-5
|
|
|
|
|
systems.
|
|
|
|
|
|
2015-01-16 12:24:20 +01:00
|
|
|
|
2015-01-16 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
2015-01-16 17:24:16 +01:00
|
|
|
|
* tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New
|
|
|
|
|
functions.
|
|
|
|
|
(_initialize_tui_win) <border-kind, border-mode>:
|
|
|
|
|
<active-border-mode>: Use tui_set_var_cmd as the "set" function.
|
2015-01-16 17:32:42 +01:00
|
|
|
|
(tui_set_tab_width_command): Fix the commentary.
|
|
|
|
|
|
2015-01-16 17:24:16 +01:00
|
|
|
|
* tui/tui-win.h: Add prototype for tui_rehighlight_all.
|
|
|
|
|
|
2015-01-16 12:31:36 +01:00
|
|
|
|
* tui/tui-win.c (tui_scroll_left_command, tui_scroll_right_command):
|
|
|
|
|
Doc fix.
|
2015-01-16 16:46:12 +01:00
|
|
|
|
(tui_set_tab_width_command): Delete and recreate the source and
|
|
|
|
|
the disassembly windows, to show the effect of the changed tab
|
|
|
|
|
size immediately.
|
2015-01-16 12:31:36 +01:00
|
|
|
|
|
2015-01-16 12:24:20 +01:00
|
|
|
|
* tui/tui-data.h (LINE_PREFIX): Make shorter
|
|
|
|
|
(MAX_PID_WIDTH): Enlarge from 14 to 19, to leave enough space for
|
|
|
|
|
"Thread NNNNN.XXXX" thread ID notation on Windows.
|
|
|
|
|
|
2015-01-16 06:39:47 +01:00
|
|
|
|
2015-01-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Fix gcc-5 compilation.
|
|
|
|
|
* hppa-tdep.c (inst_saves_gr): Fix parentheses typo.
|
|
|
|
|
|
2015-01-15 21:10:49 +01:00
|
|
|
|
2015-01-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add nat/linux-personality.h.
|
|
|
|
|
(linux-personality.o): New rule.
|
|
|
|
|
* common/common-defs.h: Include <stdint.h>.
|
|
|
|
|
* config/aarch64/linux.mh (NATDEPFILES): Include
|
|
|
|
|
linux-personality.o.
|
|
|
|
|
* config/alpha/alpha-linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/arm/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/i386/linux64.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/i386/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/ia64/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/m32r/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/m68k/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/mips/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/pa/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/powerpc/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/powerpc/spu-linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/s390/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/sparc/linux64.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/sparc/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/tilegx/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* config/xtensa/linux.mh (NATDEPFILES): Likewise.
|
|
|
|
|
* defs.h: Remove #include <stdint.h> (moved to
|
|
|
|
|
common/common-defs.h).
|
|
|
|
|
* linux-nat.c: Include nat/linux-personality.h. Remove #include
|
|
|
|
|
<sys/personality.h>; do not define ADDR_NO_RANDOMIZE (moved to
|
|
|
|
|
nat/linux-personality.c).
|
|
|
|
|
(linux_nat_create_inferior): Remove code to disable address space
|
|
|
|
|
randomization (moved to nat/linux-personality.c). Create cleanup
|
|
|
|
|
to disable address space randomization.
|
|
|
|
|
* nat/linux-personality.c: New file.
|
|
|
|
|
* nat/linux-personality.h: Likewise.
|
|
|
|
|
|
2015-01-15 21:09:15 +01:00
|
|
|
|
2015-01-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALLDEPFILES): Including common/mingw-strerror.c and
|
|
|
|
|
common/posix-strerror.c.
|
|
|
|
|
(posix-strerror.o): New rule.
|
|
|
|
|
(mingw-strerror.o): Likewise.
|
|
|
|
|
* common/common-utils.h (safe_strerror): Move prototype to here,
|
|
|
|
|
from utils.h.
|
|
|
|
|
* common/common.host: New file.
|
|
|
|
|
* common/mingw-strerror.c: Likewise.
|
|
|
|
|
* common/posix-strerror.c: Likewise.
|
|
|
|
|
* configure: Regenerated.
|
|
|
|
|
* configure.ac: Source common/common.host. Add variable
|
|
|
|
|
common_host_obs to gdb_host_obs.
|
|
|
|
|
* contrib/ari/gdb_ari.sh: Mention gdb/common/mingw-strerror.c and
|
|
|
|
|
gdb/common/posix-strerror.c when warning about the use of
|
|
|
|
|
strerror.
|
|
|
|
|
* mingw-hdep.c (safe_strerror): Remove definition; move it to
|
|
|
|
|
common/mingw-strerror.c.
|
|
|
|
|
* posix-hdep.c (safe_strerror): Remove definition; move it to
|
|
|
|
|
common/posix-hdep.c.
|
|
|
|
|
* utils.h (safe_strerror): Remove prototype; move to
|
|
|
|
|
common/common-utils.h.
|
|
|
|
|
|
2015-01-15 12:10:36 +01:00
|
|
|
|
2015-01-15 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.8.2 released.
|
|
|
|
|
|
[Ada] 'first/'last/'length of array whose bound is a discriminant
Consider the following code:
type Table is array (Positive range <>) of Integer;
type Object (N : Integer) is record
Data : Table (1 .. N);
end record;
My_Object : Object := (N => 3, Data => (3, 5, 8));
Trying to print the range and length of the My_Object.Data array yields:
(gdb) print my_object.data'first
$1 = 1
(gdb) print my_object.data'last
$2 = 0
(gdb) print my_object.data'length
$3 = 0
The first one is correct, and that is thanks to the fact that
the lower bound is statically known. However, for the upper
bound, and consequently the array's length, the values are incorrect.
It should be:
(gdb) print my_object.data'last
$2 = 3
(gdb) print my_object.data'length
$3 = 3
What happens here is that ada_array_bound_from_type sees that
our array has a parallel "___XA" type, and therefore tries to
use it. In particular, it described our array's index type as:
[...]___XDLU_1__n, which means lower bound = 1, and upper bound
is value of "n". Unfortunately, ada_array_bound_from_type does
not have access to the discriminant, and is therefore unable to
compute the bound correctly.
Fortunately, at this stage, the bound has already been computed
a while ago, and therefore doesn't need to be re-computed here.
This patch fixes the issue by ignoring that ___XA type if the array
is marked as already fixed.
This also fixes the same issue with packed arrays.
gdb/ChangeLog:
* ada-lang.c (ada_array_bound_from_type): Ignore array's parallel
___XA type if the array has already been fixed.
gdb/testsuite/ChangeLog:
* gdb.ada/var_arr_attrs: New testcase.
2015-01-15 07:09:32 +01:00
|
|
|
|
2015-01-15 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_array_bound_from_type): Ignore array's parallel
|
|
|
|
|
___XA type if the array has already been fixed.
|
|
|
|
|
|
2014-11-28 02:18:26 +01:00
|
|
|
|
2015-01-14 Yao Qi <yao@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ppc-linux.o): New rule.
|
|
|
|
|
* config/powerpc/ppc64-linux.mh (NATDEPFILES): Add ppc-linux.o.
|
|
|
|
|
* configure.ac: AC_CHECK_FUNCS(getauxval).
|
|
|
|
|
* config.in: Re-generated.
|
|
|
|
|
* configure: Re-generated.
|
|
|
|
|
* nat/ppc-linux.h [__powerpc64__] (ppc64_64bit_inferior_p):
|
|
|
|
|
Declare.
|
|
|
|
|
* nat/ppc-linux.c: New file.
|
|
|
|
|
* ppc-linux-nat.c (ppc_linux_target_wordsize) [__powerpc64__]:
|
|
|
|
|
Call ppc64_64bit_inferior_p.
|
|
|
|
|
|
Move some ppc macros to nat/ppc-linux.h
When I use PPC_FEATURE_BOOKE in GDBserver, I find it is defined in GDB
but not in GDBserver. After taking a further look, I find some macros
are duplicated between ppc-linux-nat.c and linux-ppc-low.c, so this
patch is to move them into nat/ppc-linux.h.
gdb/gdbserver:
2015-01-14 Yao Qi <yao@codesourcery.com>
* linux-ppc-low.c: Include "nat/ppc-linux.h".
(PPC_FEATURE_HAS_VSX): Move to nat/ppc-linux.h.
(PPC_FEATURE_HAS_ALTIVEC, PPC_FEATURE_HAS_SPE): Likewise.
(PT_ORIG_R3, PT_TRAP): Likewise.
(PTRACE_GETVSXREGS, PTRACE_SETVSXREGS): Likewise.
(PTRACE_GETVRREGS, PTRACE_SETVRREGS): Likewise.
(PTRACE_GETEVRREGS, PTRACE_SETEVRREGS): Likewise.
gdb:
2015-01-14 Yao Qi <yao@codesourcery.com>
* ppc-linux-nat.c (PT_ORIG_R3, PT_TRAP): Move to
nat/ppc-linux.h.
(PPC_FEATURE_CELL, PPC_FEATURE_BOOKE): Likewise.
(PPC_FEATURE_HAS_DFP): Likewise.
(PTRACE_GETVRREGS, PTRACE_SETVRREGS): Likewise.
(PTRACE_GETVSXREGS, PTRACE_SETVSXREGS): Likewise.
(PTRACE_GETEVRREGS, PTRACE_SETEVRREGS): Likewise.
Include "nat/ppc-linux.h".
* nat/ppc-linux.h: New file.
* Makefile.in (HFILES_NO_SRCDIR): Add nat/ppc-linux.h.
2015-01-08 10:23:55 +01:00
|
|
|
|
2015-01-14 Yao Qi <yao@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* ppc-linux-nat.c (PT_ORIG_R3, PT_TRAP): Move to
|
|
|
|
|
nat/ppc-linux.h.
|
|
|
|
|
(PPC_FEATURE_CELL, PPC_FEATURE_BOOKE): Likewise.
|
|
|
|
|
(PPC_FEATURE_HAS_DFP): Likewise.
|
|
|
|
|
(PTRACE_GETVRREGS, PTRACE_SETVRREGS): Likewise.
|
|
|
|
|
(PTRACE_GETVSXREGS, PTRACE_SETVSXREGS): Likewise.
|
|
|
|
|
(PTRACE_GETEVRREGS, PTRACE_SETEVRREGS): Likewise.
|
|
|
|
|
Include "nat/ppc-linux.h".
|
|
|
|
|
* nat/ppc-linux.h: New file.
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add nat/ppc-linux.h.
|
|
|
|
|
|
PR17525 - breakpoint commands not executed when program run from -x script
Executing a gdb script that runs the inferior (from the command line
with -x), and has it hit breakpoints with breakpoint commands that
themselves run the target, is currently broken on async targets
(Linux, remote).
While we're executing a command list or a script, we force the
interpreter to be sync, which results in some functions nesting an
event loop and waiting for the target to stop, instead of returning
immediately and having the top level event loop handle the stop.
The issue with this bug is simply that bpstat_do_actions misses
checking whether the interpreter is sync. When we get here, in the
case of executing a script (or, when the interpreter is sync), the
program has already advanced to the next breakpoint, through
maybe_wait_sync_command_done. We need to process its breakpoints
immediately, just like with a sync target.
Tested on x86_64 Fedora 20.
gdb/
2015-01-14 Pedro Alves <palves@redhat.com>
PR gdb/17525
* breakpoint.c: Include "interps.h".
(bpstat_do_actions_1): Also check whether the interpreter is
async.
gdb/testsuite/
2015-01-14 Pedro Alves <palves@redhat.com>
Joel Brobecker <brobecker@adacore.com>
PR gdb/17525
* gdb.base/bp-cmds-execution-x-script.c: New file.
* gdb.base/bp-cmds-execution-x-script.exp: New file.
* gdb.base/bp-cmds-execution-x-script.gdb: New file.
2015-01-12 20:30:08 +01:00
|
|
|
|
2015-01-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/17525
|
|
|
|
|
* breakpoint.c: Include "interps.h".
|
|
|
|
|
(bpstat_do_actions_1): Also check whether the interpreter is
|
|
|
|
|
async.
|
|
|
|
|
|
PR cli/17828: -batch -ex r breaks terminal
Commit d3d4baed (PR python/17372 - Python hangs when displaying
help()) had the side effect of causing 'gdb -batch' to leave the
terminal in the wrong state if the program was run. E.g,.
$ echo 'main(){*(int*)0=0;}' | gcc -x c -; ./gdb/gdb -batch -ex r ./a.out
Program received signal SIGSEGV, Segmentation fault.
0x00000000004004ff in main ()
$
If you start typing the next command, seemingly nothing happens - GDB
left the terminal with echo disabled.
The issue is that that "r" ends up in fetch_inferior_event, which
calls reinstall_readline_callback_handler_cleanup, which causes
readline to prep the terminal (raw, echo disabled). But "-batch"
causes GDB to exit before the top level event loop is first started,
and then nothing de-preps the terminal.
The reinstall_readline_callback_handler_cleanup function's intro
comment mentions:
"Need to do this as we go back to the event loop, ready to process
further input."
but the implementation forgets the case of when the interpreter is
sync, which indicates we won't return to the event loop yet, or as in
the case of -batch, we have not started it yet.
The fix is to not install the readline callback in that case.
For the test, in this case, checking that command echo still works is
sufficient. Comparing stty output before/after running GDB is even
better. Because stty may not be available, the test tries both ways.
In any case, since expect's spawn (what we use to start gdb) creates a
new pseudo tty, another expect spawn or tcl exec after GDB exits would
not see the wrong terminal settings. So instead, the test spawns a
shell and runs stty and GDB in it.
Tested on x86_64 Fedora 20.
gdb/
2015-01-14 Pedro Alves <palves@redhat.com>
PR cli/17828
* infrun.c (reinstall_readline_callback_handler_cleanup): Don't
reinstall if the interpreter is sync.
gdb/testsuite/
2015-01-14 Pedro Alves <palves@redhat.com>
PR cli/17828
* gdb.base/batch-preserve-term-settings.c: New file.
* gdb.base/batch-preserve-term-settings.exp: New file.
2015-01-14 12:51:06 +01:00
|
|
|
|
2015-01-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR cli/17828
|
|
|
|
|
* infrun.c (reinstall_readline_callback_handler_cleanup): Don't
|
|
|
|
|
reinstall if the interpreter is sync.
|
|
|
|
|
|
2015-01-14 02:00:31 +01:00
|
|
|
|
2015-01-13 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* objfiles.c (objfile_filename): New function.
|
|
|
|
|
* objfiles.h (objfile_filename): Declare it.
|
|
|
|
|
(objfile_name): Add function comment.
|
|
|
|
|
* python/py-objfile.c (objfpy_lookup_objfile_by_name): Try both the
|
|
|
|
|
bfd file name (which may be realpath'd), and the original name.
|
|
|
|
|
|
2015-01-13 13:24:45 +01:00
|
|
|
|
2015-01-13 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Create a new section for the next release branch.
|
|
|
|
|
Rename the section of the current branch, now that it has
|
|
|
|
|
been cut.
|
|
|
|
|
|
2015-01-13 13:16:07 +01:00
|
|
|
|
2015-01-13 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.9 branch created (92fc2e6978d9a7c8324c7e851dbee59e22ec7a37):
|
|
|
|
|
* version.in: Bump version to 7.9.50.DATE-cvs.
|
|
|
|
|
|
2015-01-13 11:36:34 +01:00
|
|
|
|
2015-01-13 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-procfs.c (linux_proc_attach_tgid_threads):
|
|
|
|
|
Remove trailing new-line in argument of call to warning.
|
|
|
|
|
|
2015-01-13 11:35:49 +01:00
|
|
|
|
2015-01-13 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (attach_proc_task_lwp_callback): Remove trailing
|
|
|
|
|
new-line in argument of call to "warning".
|
|
|
|
|
|
2015-01-12 12:46:34 +01:00
|
|
|
|
2015-01-13 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_lookup_symbol_nonlocal): If name not found
|
|
|
|
|
in static block, then try searching for primitive types.
|
|
|
|
|
|
2015-01-12 23:51:33 +01:00
|
|
|
|
2015-01-12 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* top.h (gdb_add_history): Declare.
|
|
|
|
|
* top.c (command_count): New variable.
|
|
|
|
|
(gdb_add_history): New function.
|
|
|
|
|
(gdb_safe_append_history): New static function.
|
|
|
|
|
(quit_force): Call it.
|
|
|
|
|
(command_line_input): Use gdb_add_history instead of
|
|
|
|
|
add_history.
|
|
|
|
|
* event-top.c (command_line_handler): Likewise.
|
|
|
|
|
|
2015-01-12 18:13:54 +01:00
|
|
|
|
2015-01-12 James Clarke <jrtc27@jrtc27.com> (tiny patch)
|
|
|
|
|
|
|
|
|
|
PR gdb/17046
|
|
|
|
|
* darwin-nat.c: Replace <machine/setjmp.h> #include by
|
|
|
|
|
<setjmp.h> #include.
|
|
|
|
|
|
2015-01-12 01:39:46 +01:00
|
|
|
|
2015-01-11 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (compute_delayed_physnames): Use TYPE_FN_FIELD_PHYSNAME.
|
|
|
|
|
|
2015-01-11 23:06:34 +01:00
|
|
|
|
2015-01-11 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/15830
|
|
|
|
|
* NEWS: The "maint demangle" command is renamed as "demangle".
|
|
|
|
|
* demangle.c: #include cli/cli-utils.h, language.h.
|
|
|
|
|
(demangle_command): New function.
|
|
|
|
|
(_initialize_demangle): Add new command "demangle".
|
|
|
|
|
* maint.c (maintenance_demangle): Stub out.
|
|
|
|
|
(_initialize_maint_cmds): Update help text for "maint demangle",
|
|
|
|
|
and mark as deprecated.
|
|
|
|
|
|
2015-01-11 22:16:11 +01:00
|
|
|
|
2015-01-11 Mark Kettenis <kettenis@gnu.org>
|
|
|
|
|
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_follow_fork): Adjust now that
|
|
|
|
|
inferior_thread is a function.
|
|
|
|
|
|
2014-11-30 17:47:16 +01:00
|
|
|
|
2015-01-09 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (.y.c): Don't munge yacc's #line
|
|
|
|
|
directives.
|
|
|
|
|
|
2015-01-09 19:27:56 +01:00
|
|
|
|
2015-01-09 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* utils.c (defaulted_query): Rewrite to use gdb_readline_wrapper
|
|
|
|
|
to prompt for input.
|
|
|
|
|
* tui/tui-hooks.c (tui_query_hook): Remove.
|
|
|
|
|
(tui_install_hooks): Don't set deprecated_query_hook.
|
|
|
|
|
* tui/tui-io.c (tui_redisplay_readline): Fix off-by-one error in
|
|
|
|
|
height calculation. Always update the command window's cur_line.
|
|
|
|
|
|
linux-nat.c: better starvation avoidance, handle non-stop mode too
Running the testsuite with a series that reimplements user-visible
all-stop behavior on top of a target running in non-stop mode revealed
problems related to event starvation avoidance.
For example, I see
gdb.threads/signal-while-stepping-over-bp-other-thread.exp failing.
What happens is that GDB core never gets to see the signal event. It
ends up processing the events for the same threads over an over,
because Linux's waitpid(-1, ...) returns that first task in the task
list that has an event, starving threads on the tail of the task list.
So I wrote a non-stop mode test originally inspired by
signal-while-stepping-over-bp-other-thread.exp, to stress this
independently of all-stop on top of non-stop. Fixing it required the
changes described below. The test will be added in a following
commit.
1) linux-nat.c has code in place that picks an event LWP at random out
of all that have had events. This is because on the kernel side,
"waitpid(-1, ...)" just walks the task list linearly looking for the
first that had an event. But, this code is currently only used in
all-stop mode. So with a multi-threaded program that has multiple
events triggering debug events in parallel, GDB ends up starving some
threads.
To make the event randomization work in non-stop mode too, the patch
makes us pull out all the already pending events on the kernel side,
with waitpid, before deciding which LWP to report to the core.
There's some code in linux_wait that takes care of leaving events
pending if they were for LWPs the caller is not interested in. The
patch moves that to linux_nat_filter_event, so that we only have one
place that leaves events pending. With that in place, conceptually,
the flow is simpler and more normalized:
#1 - walk the LWP list looking for an LWP with a pending event to report.
#2 - if no pending event, pull events out of the kernel, and store
them in the LWP structures as pending.
#3- goto #1.
2) Then, currently the event randomization code only considers SIGTRAP
(or trap-like) events. That means that if e.g., have have multiple
threads stepping in parallel that hit a breakpoint that needs stepping
over, and one gets a signal, the signal may end up never getting
processed, because GDB will always be giving priority to the SIGTRAPs.
The patch fixes this by making the randomization code consider all
kinds of pending events.
3) If multiple threads hit a breakpoint, we report one of those, and
"cancel" the others. Cancelling means decrementing the PC, and
discarding the event. If the next time the LWP is resumed the
breakpoint is still installed, the LWP should hit it again, and we'll
report the hit then. The problem I found is that this delays threads
from advancing too much, with the kernel potentially ending up
scheduling the same threads over and over, and others not advancing.
So the patch switches away from cancelling the breakpoints, and
instead remembering that the LWP had stopped for a breakpoint. If on
resume the breakpoint is still installed, we report it. If it's no
longer installed, we discard the pending event then. This is actually
how GDBserver used to handle this before d50171e4 (Teach linux
gdbserver to step-over-breakpoints), but with the difference that back
then we'd delay adjusting the PC until resuming, which made it so that
"info threads" could wrongly see threads with unadjusted PCs.
gdb/
2015-01-09 Pedro Alves <palves@redhat.com>
* breakpoint.c (hardware_breakpoint_inserted_here_p): New
function.
* breakpoint.h (hardware_breakpoint_inserted_here_p): New
declaration.
* linux-nat.c (linux_nat_status_is_event): Move higher up in file.
(linux_resume_one_lwp): Store the thread's PC. Adjust to clear
stop_reason.
(check_stopped_by_watchpoint): New function.
(save_sigtrap): Reimplement.
(linux_nat_stopped_by_watchpoint): Adjust.
(linux_nat_lp_status_is_event): Delete.
(stop_wait_callback): Only call save_sigtrap after storing the
pending status.
(status_callback): If the thread had been stopped for a breakpoint
that has since been removed, discard the event and resume the LWP.
(count_events_callback, select_event_lwp_callback): Use
lwp_status_pending_p instead of linux_nat_lp_status_is_event.
(cancel_breakpoint): Rename to ...
(check_stopped_by_breakpoint): ... this. Record whether the LWP
stopped for a software breakpoint or hardware breakpoint.
(select_event_lwp): Only give preference to the stepping LWP in
all-stop mode. Adjust comments.
(stop_and_resume_callback): Remove references to new_pending_p.
(linux_nat_filter_event): Likewise. Leave exit events of the
leader thread pending here. Handle signal short circuiting here.
Only call save_sigtrap after storing the pending waitstatus.
(linux_nat_wait_1): Remove 'retry' label. Remove references to
new_pending. Don't handle leaving events the caller is not
interested in pending here, nor handle signal short-circuiting
here. Also give equal priority to all LWPs that have had events
in non-stop mode. If reporting a software breakpoint event,
unadjust the LWP's PC.
* linux-nat.h (enum lwp_stop_reason): New.
(struct lwp_info) <stop_pc>: New field.
(struct lwp_info) <stopped_by_watchpoint>: Delete field.
(struct lwp_info) <stop_reason>: New field.
* x86-linux-nat.c (x86_linux_prepare_to_resume): Adjust.
2015-01-07 13:48:32 +01:00
|
|
|
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (hardware_breakpoint_inserted_here_p): New
|
|
|
|
|
function.
|
|
|
|
|
* breakpoint.h (hardware_breakpoint_inserted_here_p): New
|
|
|
|
|
declaration.
|
|
|
|
|
* linux-nat.c (linux_nat_status_is_event): Move higher up in file.
|
|
|
|
|
(linux_resume_one_lwp): Store the thread's PC. Adjust to clear
|
|
|
|
|
stop_reason.
|
|
|
|
|
(check_stopped_by_watchpoint): New function.
|
|
|
|
|
(save_sigtrap): Reimplement.
|
|
|
|
|
(linux_nat_stopped_by_watchpoint): Adjust.
|
|
|
|
|
(linux_nat_lp_status_is_event): Delete.
|
|
|
|
|
(stop_wait_callback): Only call save_sigtrap after storing the
|
|
|
|
|
pending status.
|
|
|
|
|
(status_callback): If the thread had been stopped for a breakpoint
|
|
|
|
|
that has since been removed, discard the event and resume the LWP.
|
|
|
|
|
(count_events_callback, select_event_lwp_callback): Use
|
|
|
|
|
lwp_status_pending_p instead of linux_nat_lp_status_is_event.
|
|
|
|
|
(cancel_breakpoint): Rename to ...
|
|
|
|
|
(check_stopped_by_breakpoint): ... this. Record whether the LWP
|
|
|
|
|
stopped for a software breakpoint or hardware breakpoint.
|
|
|
|
|
(select_event_lwp): Only give preference to the stepping LWP in
|
|
|
|
|
all-stop mode. Adjust comments.
|
|
|
|
|
(stop_and_resume_callback): Remove references to new_pending_p.
|
|
|
|
|
(linux_nat_filter_event): Likewise. Leave exit events of the
|
|
|
|
|
leader thread pending here. Handle signal short circuiting here.
|
|
|
|
|
Only call save_sigtrap after storing the pending waitstatus.
|
|
|
|
|
(linux_nat_wait_1): Remove 'retry' label. Remove references to
|
|
|
|
|
new_pending. Don't handle leaving events the caller is not
|
|
|
|
|
interested in pending here, nor handle signal short-circuiting
|
|
|
|
|
here. Also give equal priority to all LWPs that have had events
|
|
|
|
|
in non-stop mode. If reporting a software breakpoint event,
|
|
|
|
|
unadjust the LWP's PC.
|
|
|
|
|
* linux-nat.h (enum lwp_stop_reason): New.
|
|
|
|
|
(struct lwp_info) <stop_pc>: New field.
|
|
|
|
|
(struct lwp_info) <stopped_by_watchpoint>: Delete field.
|
|
|
|
|
(struct lwp_info) <stop_reason>: New field.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_prepare_to_resume): Adjust.
|
|
|
|
|
|
linux-nat.c: always mark execing LWP as resumed
A subsequent patch will make the Linux backend's target_wait method
pull all events out of the kernel (with waitpid) and store them as
pending status in the LWP structure if no pending status was already
available. Then, the backend goes over the pending statuses and pick
one to report to the core.
With that, the existing thread-execl.exp test exposes a bug, like:
(gdb) set scheduler-locking on
(gdb) PASS: gdb.threads/thread-execl.exp: schedlock on: set scheduler-locking on
next
FAIL: gdb.threads/thread-execl.exp: schedlock on: get to main in new image (timeout)
Recall that when the non-leader thread execs, all threads in the
process die, the execing thread changes its pid to the tgid, and then
waitpid returns an exec event to the tgid. If GDB didn't resume the
leader LWP, then GDB sees an event for an LWP that was supposedly
stopped, and thus not marked as resumed. Because the code that picks
a pending event to report to the core ignores not-resumed LWPs:
/* Return non-zero if LP has a wait status pending. */
static int
status_callback (struct lwp_info *lp, void *data)
{
/* Only report a pending wait status if we pretend that this has
indeed been resumed. */
if (!lp->resumed)
return 0;
the event ends up pending forever, thus the timeout.
gdb/
2015-01-09 Pedro Alves <palves@redhat.com>
* linux-nat.c (linux_handle_extended_wait) <PTRACE_EVENT_EXEC>:
Set the LWP's 'resumed' flag.
2014-12-29 20:41:06 +01:00
|
|
|
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_handle_extended_wait) <PTRACE_EVENT_EXEC>:
|
|
|
|
|
Set the LWP's 'resumed' flag.
|
|
|
|
|
|
2015-01-07 20:41:06 +01:00
|
|
|
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_resume_one_lwp): New function.
|
|
|
|
|
(resume_lwp): Use lwp_status_pending_p and linux_resume_one_lwp.
|
|
|
|
|
(linux_nat_resume): Use lwp_status_pending_p and
|
|
|
|
|
linux_resume_one_lwp.
|
|
|
|
|
(linux_handle_syscall_trap): Use linux_resume_one_lwp.
|
|
|
|
|
(linux_handle_extended_wait): Use linux_resume_one_lwp.
|
|
|
|
|
(status_callback, running_callback): Use lwp_status_pending_p.
|
|
|
|
|
(lwp_status_pending_p): New function.
|
|
|
|
|
(stop_and_resume_callback): Use lwp_status_pending_p.
|
|
|
|
|
(linux_nat_filter_event): Use linux_resume_one_lwp.
|
|
|
|
|
(linux_nat_wait_1): Always use status_callback to look for an LWP
|
|
|
|
|
with a pending status. Use linux_resume_one_lwp.
|
|
|
|
|
(resume_stopped_resumed_lwps): Use lwp_status_pending_p and
|
|
|
|
|
linux_resume_one_lwp.
|
|
|
|
|
|
2014-12-29 20:41:05 +01:00
|
|
|
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (bp_location_inserted_here_p): New function,
|
|
|
|
|
factored out from ...
|
|
|
|
|
(breakpoint_inserted_here_p): ... here. Use
|
|
|
|
|
ALL_BP_LOCATIONS_AT_ADDR.
|
|
|
|
|
(software_breakpoint_inserted_here_p): Use
|
|
|
|
|
bp_location_inserted_here_p and ALL_BP_LOCATIONS_AT_ADDR.
|
|
|
|
|
|
Linux: Skip thread_db thread event reporting if PTRACE_EVENT_CLONE is supported
[A test I wrote stumbled on a libthread_db issue related to thread
event breakpoints. See glibc PR17705:
[nptl_db: stale thread create/death events if debugger detaches]
https://sourceware.org/bugzilla/show_bug.cgi?id=17705
This patch avoids that whole issue by making GDB stop using thread
event breakpoints in the first place, which is good for other reasons
as well, anyway.]
Before PTRACE_EVENT_CLONE (Linux 2.6), the only way to learn about new
threads in the inferior (to attach to them) or to learn about thread
exit was to coordinate with the inferior's glibc/runtime, using
libthread_db. That works by putting a breakpoint at a magic address
which is called when a new thread is spawned, or when a thread is
about to exit. When that breakpoint is hit, all threads are stopped,
and then GDB coordinates with libthread_db to read data structures out
of the inferior to learn about what happened. Then the breakpoint is
single-stepped, and then all threads are re-resumed. This isn't very
efficient (stops all threads) and is more fragile (inferior's thread
list in memory may be corrupt; libthread_db bugs, etc.) than ideal.
When the kernel supports PTRACE_EVENT_CLONE (which we already make use
of), there's really no need to use libthread_db's event reporting
mechanism to learn about new LWPs. And if the kernel supports that,
then we learn about LWP exits through regular WIFEXITED wait statuses,
so no need for the death event breakpoint either.
GDBserver has been likewise skipping the thread_db events for a long
while:
https://sourceware.org/ml/gdb-patches/2007-10/msg00547.html
There's one user-visible difference: we'll no longer print about
threads being created and exiting while the program is running, like:
[Thread 0x7ffff7dbb700 (LWP 30670) exited]
[New Thread 0x7ffff7db3700 (LWP 30671)]
[Thread 0x7ffff7dd3700 (LWP 30667) exited]
[New Thread 0x7ffff7dab700 (LWP 30672)]
[Thread 0x7ffff7db3700 (LWP 30671) exited]
[Thread 0x7ffff7dcb700 (LWP 30668) exited]
This is exactly the same behavior as when debugging against remote
targets / gdbserver. I actually think that's a good thing (and as
such have listed this in the local/remote parity wiki page a while
ago), as the printing slows down the inferior. It's also a
distraction to keep bothering the user about short-lived threads that
she won't be able to interact with anyway. Instead, the user (and
frontend) will be informed about new threads that currently exist in
the program when the program next stops:
(gdb) c
...
* ctrl-c *
[New Thread 0x7ffff7963700 (LWP 7797)]
[New Thread 0x7ffff796b700 (LWP 7796)]
Program received signal SIGINT, Interrupt.
[Switching to Thread 0x7ffff796b700 (LWP 7796)]
clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:81
81 testq %rax,%rax
(gdb) info threads
A couple of tests had assumptions on GDB thread numbers that no longer
hold.
Tested on x86_64 Fedora 20.
gdb/
2014-01-09 Pedro Alves <palves@redhat.com>
Skip enabling event reporting if the kernel supports
PTRACE_EVENT_CLONE.
* linux-thread-db.c: Include "nat/linux-ptrace.h".
(thread_db_use_events): New function.
(try_thread_db_load_1): Check thread_db_use_events before enabling
event reporting.
(update_thread_state): New function.
(attach_thread): Use it. Check thread_db_use_events before
enabling event reporting.
(thread_db_detach): Check thread_db_use_events before disabling
event reporting.
(find_new_threads_callback): Check thread_db_use_events before
enabling event reporting. Update the thread's state if not using
libthread_db events.
gdb/testsuite/
2014-01-09 Pedro Alves <palves@redhat.com>
* gdb.threads/fork-thread-pending.exp: Switch to the main thread
instead of to thread 2.
* gdb.threads/signal-command-multiple-signals-pending.c (main):
Add barrier around each pthread_create call instead of around all
calls.
* gdb.threads/signal-command-multiple-signals-pending.exp (test):
Set a break on thread_function and have the child threads hit it
one at at a time.
2014-12-16 17:12:25 +01:00
|
|
|
|
2014-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
Skip enabling event reporting if the kernel supports
|
|
|
|
|
PTRACE_EVENT_CLONE.
|
|
|
|
|
* linux-thread-db.c: Include "nat/linux-ptrace.h".
|
|
|
|
|
(thread_db_use_events): New function.
|
|
|
|
|
(try_thread_db_load_1): Check thread_db_use_events before enabling
|
|
|
|
|
event reporting.
|
|
|
|
|
(update_thread_state): New function.
|
|
|
|
|
(attach_thread): Use it. Check thread_db_use_events before
|
|
|
|
|
enabling event reporting.
|
|
|
|
|
(thread_db_detach): Check thread_db_use_events before disabling
|
|
|
|
|
event reporting.
|
|
|
|
|
(find_new_threads_callback): Check thread_db_use_events before
|
|
|
|
|
enabling event reporting. Update the thread's state if not using
|
|
|
|
|
libthread_db events.
|
|
|
|
|
|
libthread_db: Skip attaching to terminated and joined threads
I wrote a test that attaches to a program that constantly spawns
short-lived threads, which exposed several issues. This is one of
them.
On GNU/Linux, attaching to a multi-threaded program sometimes prints
out warnings like:
...
[New LWP 20700]
warning: unable to open /proc file '/proc/-1/status'
[New LWP 20850]
[New LWP 21019]
...
That happens because when a thread exits, and is joined, glibc does:
nptl/pthread_join.c:
pthread_join ()
{
...
if (__glibc_likely (result == 0))
{
/* We mark the thread as terminated and as joined. */
pd->tid = -1;
...
/* Free the TCB. */
__free_tcb (pd);
}
So if we attach or interrupt the program (which does an implicit "info
threads") at just the right (or rather, wrong) time, we can find and
return threads in the libthread_db/pthreads thread list with kernel
thread ID -1. I've filed glibc PR nptl/17707 for this. You'll find
more info there.
This patch handles this as a special case in GDB.
This is actually more than just a cosmetic issue. lin_lwp_attach_lwp
will think that this -1 is an LWP we're not attached to yet, and after
failing to attach will try to check we were already attached to the
process, using a waitpid call, which in this case ends up being
"waitpid (-1, ...", which obviously results in GDB potentially
discarding an event when it shouldn't...
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/gdbserver/
2015-01-09 Pedro Alves <palves@redhat.com>
* thread-db.c (find_new_threads_callback): Ignore thread if the
kernel thread ID is -1.
gdb/
2015-01-09 Pedro Alves <palves@redhat.com>
* linux-nat.c (lin_lwp_attach_lwp): Assert that the lwp id we're
about to wait for is > 0.
* linux-thread-db.c (find_new_threads_callback): Ignore thread if
the kernel thread ID is -1.
2014-12-16 17:12:24 +01:00
|
|
|
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (lin_lwp_attach_lwp): Assert that the lwp id we're
|
|
|
|
|
about to wait for is > 0.
|
|
|
|
|
* linux-thread-db.c (find_new_threads_callback): Ignore thread if
|
|
|
|
|
the kernel thread ID is -1.
|
|
|
|
|
|
Linux: on attach, attach to lwps listed under /proc/$pid/task/
... instead of relying on libthread_db.
I wrote a test that attaches to a program that constantly spawns
short-lived threads, which exposed several issues. This is one of
them.
On Linux, we need to attach to all threads of a process (thread group)
individually. We currently rely on libthread_db to list the threads,
but that is problematic, because libthread_db relies on reading data
structures out of the inferior (which may well be corrupted). If
threads are being created or exiting just while we try to attach, we
may trip on inconsistencies in the inferior's thread list. To work
around that, when we see a seemingly corrupt list, we currently retry
a few times:
static void
thread_db_find_new_threads_2 (ptid_t ptid, int until_no_new)
{
...
if (until_no_new)
{
/* Require 4 successive iterations which do not find any new threads.
The 4 is a heuristic: there is an inherent race here, and I have
seen that 2 iterations in a row are not always sufficient to
"capture" all threads. */
...
That heuristic may well fail, and when it does, we end up with threads
in the program that aren't under GDB's control. That's obviously bad
and results in quite mistifying failures, like e.g., the process dying
for seeminly no reason when a thread that wasn't attached trips on a
breakpoint.
There's really no reason to rely on libthread_db for this nowadays
when we have /proc mounted. In that case, which is the usual case, we
can list the LWPs from /proc/PID/task/. In fact, GDBserver is already
doing this. The patch factors out that code that knows to walk the
task/ directory out of GDBserver, and makes GDB use it too.
Like GDBserver, the patch makes GDB attach to LWPs and _not_ wait for
them to stop immediately. Instead, we just tag the LWP as having an
expected stop. Because we can only set the ptrace options when the
thread stops, we need a new flag in the lwp structure to keep track of
whether we've already set the ptrace options, just like in GDBserver.
Note that nothing issues any ptrace command to the threads between the
PTRACE_ATTACH and the stop, so this is safe (unlike one scenario
described in gdbserver's linux-low.c).
When we attach to a program that has threads exiting while we attach,
it's easy to race with a thread just exiting as we try to attach to
it, like:
#1 - get current list of threads
#2 - attach to each listed thread
#3 - ooops, attach failed, thread is already gone
As this is pretty normal, we shouldn't be issuing a scary warning in
step #3.
When #3 happens, PTRACE_ATTACH usually fails with ESRCH, but sometimes
we'll see EPERM as well. That happens when the kernel still has the
thread in its task list, but the thread is marked as dead.
Unfortunately, EPERM is ambiguous and we'll get it also on other
scenarios where the thread isn't dead, and in those cases, it's useful
to get a warning. To distiguish the cases, when we get an EPERM
failure, we open /proc/PID/status, and check the thread's state -- if
the /proc file no longer exists, or the state is "Z (Zombie)" or "X
(Dead)", we ignore the EPERM error silently; otherwise, we'll warn.
Unfortunately, there seems to be a kernel race here. Sometimes I get
EPERM, and then the /proc state still indicates "R (Running)"... If
we wait a bit and retry, we do end up seeing X or Z state, or get an
ESRCH. I thought of making GDB retry the attach a few times, but even
with a 500ms wait and 4 retries, I still see the warning sometimes. I
haven't been able to identify the kernel path that causes this yet,
but in any case, it looks like a kernel bug to me. As this just
results failure to suppress a warning that we've been printing since
about forever anyway, I'm just making the test cope with it, and issue
an XFAIL.
gdb/gdbserver/
2015-01-09 Pedro Alves <palves@redhat.com>
* linux-low.c (linux_attach_fail_reason_string): Move to
nat/linux-ptrace.c, and rename.
(linux_attach_lwp): Update comment.
(attach_proc_task_lwp_callback): New function.
(linux_attach): Adjust to rename and use
linux_proc_attach_tgid_threads.
(linux_attach_fail_reason_string): Delete declaration.
gdb/
2015-01-09 Pedro Alves <palves@redhat.com>
* linux-nat.c (attach_proc_task_lwp_callback): New function.
(linux_nat_attach): Use linux_proc_attach_tgid_threads.
(wait_lwp, linux_nat_filter_event): If not set yet, set the lwp's
ptrace option flags.
* linux-nat.h (struct lwp_info) <must_set_ptrace_flags>: New
field.
* nat/linux-procfs.c: Include <dirent.h>.
(linux_proc_get_int): New parameter "warn". Handle it.
(linux_proc_get_tgid): Adjust.
(linux_proc_get_tracerpid): Rename to ...
(linux_proc_get_tracerpid_nowarn): ... this.
(linux_proc_pid_get_state): New function, factored out from
(linux_proc_pid_has_state): ... this. Add new parameter "warn"
and handle it.
(linux_proc_pid_is_gone): New function.
(linux_proc_pid_is_stopped): Adjust.
(linux_proc_pid_is_zombie_maybe_warn)
(linux_proc_pid_is_zombie_nowarn): New functions.
(linux_proc_pid_is_zombie): Use
linux_proc_pid_is_zombie_maybe_warn.
(linux_proc_attach_tgid_threads): New function.
* nat/linux-procfs.h (linux_proc_get_tgid): Update comment.
(linux_proc_get_tracerpid): Rename to ...
(linux_proc_get_tracerpid_nowarn): ... this, and update comment.
(linux_proc_pid_is_gone): New declaration.
(linux_proc_pid_is_zombie): Update comment.
(linux_proc_pid_is_zombie_nowarn): New declaration.
(linux_proc_attach_lwp_func): New typedef.
(linux_proc_attach_tgid_threads): New declaration.
* nat/linux-ptrace.c (linux_ptrace_attach_fail_reason): Adjust to
use nowarn functions.
(linux_ptrace_attach_fail_reason_string): Move here from
gdbserver/linux-low.c and rename.
(ptrace_supports_feature): If the current ptrace options are not
known yet, check them now, instead of asserting.
* nat/linux-ptrace.h (linux_ptrace_attach_fail_reason_string):
Declare.
2014-12-16 17:12:24 +01:00
|
|
|
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (attach_proc_task_lwp_callback): New function.
|
|
|
|
|
(linux_nat_attach): Use linux_proc_attach_tgid_threads.
|
|
|
|
|
(wait_lwp, linux_nat_filter_event): If not set yet, set the lwp's
|
|
|
|
|
ptrace option flags.
|
|
|
|
|
* linux-nat.h (struct lwp_info) <must_set_ptrace_flags>: New
|
|
|
|
|
field.
|
|
|
|
|
* nat/linux-procfs.c: Include <dirent.h>.
|
|
|
|
|
(linux_proc_get_int): New parameter "warn". Handle it.
|
|
|
|
|
(linux_proc_get_tgid): Adjust.
|
|
|
|
|
(linux_proc_get_tracerpid): Rename to ...
|
|
|
|
|
(linux_proc_get_tracerpid_nowarn): ... this.
|
|
|
|
|
(linux_proc_pid_get_state): New function, factored out from
|
|
|
|
|
(linux_proc_pid_has_state): ... this. Add new parameter "warn"
|
|
|
|
|
and handle it.
|
|
|
|
|
(linux_proc_pid_is_gone): New function.
|
|
|
|
|
(linux_proc_pid_is_stopped): Adjust.
|
|
|
|
|
(linux_proc_pid_is_zombie_maybe_warn)
|
|
|
|
|
(linux_proc_pid_is_zombie_nowarn): New functions.
|
|
|
|
|
(linux_proc_pid_is_zombie): Use
|
|
|
|
|
linux_proc_pid_is_zombie_maybe_warn.
|
|
|
|
|
(linux_proc_attach_tgid_threads): New function.
|
|
|
|
|
* nat/linux-procfs.h (linux_proc_get_tgid): Update comment.
|
|
|
|
|
(linux_proc_get_tracerpid): Rename to ...
|
|
|
|
|
(linux_proc_get_tracerpid_nowarn): ... this, and update comment.
|
|
|
|
|
(linux_proc_pid_is_gone): New declaration.
|
|
|
|
|
(linux_proc_pid_is_zombie): Update comment.
|
|
|
|
|
(linux_proc_pid_is_zombie_nowarn): New declaration.
|
|
|
|
|
(linux_proc_attach_lwp_func): New typedef.
|
|
|
|
|
(linux_proc_attach_tgid_threads): New declaration.
|
|
|
|
|
* nat/linux-ptrace.c (linux_ptrace_attach_fail_reason): Adjust to
|
|
|
|
|
use nowarn functions.
|
|
|
|
|
(linux_ptrace_attach_fail_reason_string): Move here from
|
|
|
|
|
gdbserver/linux-low.c and rename.
|
|
|
|
|
(ptrace_supports_feature): If the current ptrace options are not
|
|
|
|
|
known yet, check them now, instead of asserting.
|
|
|
|
|
* nat/linux-ptrace.h (linux_ptrace_attach_fail_reason_string):
|
|
|
|
|
Declare.
|
|
|
|
|
|
2014-12-16 17:12:23 +01:00
|
|
|
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linux-thread-db.c (thread_db_find_new_threads_silently)
|
|
|
|
|
(try_thread_db_load_1, try_thread_db_load, thread_db_load_search)
|
|
|
|
|
(find_new_threads_once): Print debug output on gdb_stdlog.
|
|
|
|
|
|
2015-01-09 11:09:03 +01:00
|
|
|
|
2015-01-09 Chen Gang <gang.chen.5i5j@gmail.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c: Include "gdb_wait.h".
|
|
|
|
|
(do_rmdir): Check return value, and free 'zap'.
|
|
|
|
|
|
2014-12-28 09:12:53 +01:00
|
|
|
|
2015-01-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Yao Qi <yao@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (indirect_pieced_value): Don't call
|
|
|
|
|
gdb_sign_extend. Call extract_signed_integer instead.
|
|
|
|
|
* utils.c (gdb_sign_extend): Remove.
|
|
|
|
|
* utils.h (gdb_sign_extend): Remove declaration.
|
|
|
|
|
|
2015-01-08 08:53:26 +01:00
|
|
|
|
2015-01-07 Pierre Muller <muller@sourceware.org>
|
|
|
|
|
|
|
|
|
|
PR symtab/17811
|
|
|
|
|
* stabsread.c (define_symbol): Set language for C++ special symbols.
|
|
|
|
|
|
2015-01-07 22:23:39 +01:00
|
|
|
|
2015-01-07 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* inflow.c (initial_gdb_ttystate): Tweak comment.
|
|
|
|
|
|
2015-01-07 15:49:49 +01:00
|
|
|
|
2015-01-07 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* inflow.c (set_initial_gdb_ttystate): Add empty line after
|
|
|
|
|
comment documenting function.
|
|
|
|
|
|
Don't propagate our current terminal state to the inferior
Currently when we start an inferior we have the inferior inherit our
terminal state. Under TUI, our terminal is highly modified by ncurses
and readline. So when starting an inferior under TUI, the inferior will
have a highly modified terminal state which will interfere with standard
I/O. For example,
$ gdb gdb
(gdb) break main
(gdb) run
(gdb) print puts ("a\nb")
a
b
$1 = 4
(gdb) [enter TUI mode]
(gdb) run
(gdb) [exit TUI mode]
(gdb) print puts ("a\nb")
a
b
$2 = 4
(gdb) print puts ("a\r\nb\r")
a
b
$3 = 6
As you can see, when we start the inferior under the regular interface,
puts() prints the text properly. But when we start the inferior under
TUI, puts() does not print the text properly. This is because when we
start the inferior under TUI it inherits our current terminal state
which has been modified by ncurses to, among other things, require an
explicit \r\n to print a new line. As a result the inferior performs
standard I/O in an unexpected way.
Because of this discrepancy, it doesn't seem like a good idea to have
the inferior inherit our _current_ terminal state for it may have been
modified by readline and/or ncurses. Instead, we should have the
inferior inherit a pristine snapshot of our terminal state taken before
readline or ncurses have had a chance to alter it. This enables the
inferior to run in a more accurate way, more closely mimicking the
program's behavior had it run standalone. And it fixes the above
mentioned issue.
Tested on x86_64-unknown-linux-gnu.
gdb/ChangeLog:
* terminal.h (set_initial_gdb_ttystate): Declare.
* inflow.c (initial_gdb_ttystate): New static variable.
(set_initial_gdb_ttystate): New setter.
(child_terminal_init_with_pgrp): Copy initial_gdb_ttystate
instead of our current terminal state.
* top.c (gdb_init): Call set_initial_gdb_ttystate.
2014-11-22 20:12:49 +01:00
|
|
|
|
2015-01-07 Patrick Palka <patrick@parcs.ath.cx>
|
|
|
|
|
|
|
|
|
|
* terminal.h (set_initial_gdb_ttystate): Declare.
|
|
|
|
|
* inflow.c (initial_gdb_ttystate): New static variable.
|
|
|
|
|
(set_initial_gdb_ttystate): New setter.
|
|
|
|
|
(child_terminal_init_with_pgrp): Copy initial_gdb_ttystate
|
|
|
|
|
instead of our current terminal state.
|
|
|
|
|
* top.c (gdb_init): Call set_initial_gdb_ttystate.
|
|
|
|
|
|
2015-01-07 04:34:29 +01:00
|
|
|
|
2015-01-07 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-type.c (tyscm_array_1): Add comment.
|
|
|
|
|
* python/py-type.c (typy_array_1): Add comment.
|
|
|
|
|
|
2015-01-06 15:37:53 +01:00
|
|
|
|
2015-01-06 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-type.c (tyscm_array_1): Do not raise out-of-range
|
|
|
|
|
error if N2 is equal to N1 - 1.
|
|
|
|
|
|
2015-01-06 15:30:53 +01:00
|
|
|
|
2015-01-06 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (typy_array_1): Do not raise negative-length
|
|
|
|
|
exception if N2 is equal to N1 - 1.
|
|
|
|
|
|
2015-01-03 21:01:29 +01:00
|
|
|
|
2015-01-03 Doug Evans <xdje42@gmail.com>
|
|
|
|
|
|
|
|
|
|
* c-exp.y: Whitespace cleanup.
|
|
|
|
|
(classify_inner_name): Remove extra ;.
|
|
|
|
|
|
2015-01-03 00:36:05 +01:00
|
|
|
|
2015-01-02 Maciej W. Rozycki <macro@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (mips32_scan_prologue): Keep the extracted stack
|
|
|
|
|
offset signed.
|
|
|
|
|
|
2015-01-02 20:49:14 +01:00
|
|
|
|
2015-01-02 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (setup_type_unit_groups): Remove outdated comment.
|
|
|
|
|
|
2015-01-02 20:02:31 +01:00
|
|
|
|
2015-01-02 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* symtab.h (struct symbol): Fix typo in comment.
|
|
|
|
|
|
2015-01-01 10:32:14 +01:00
|
|
|
|
2015-01-01 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
Update year range in copyright notice of all files.
|
|
|
|
|
|
2015-01-01 10:24:41 +01:00
|
|
|
|
2015-01-01 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* top.c (print_gdb_version): Update copyright year to 2015.
|
|
|
|
|
|
2015-01-01 10:21:14 +01:00
|
|
|
|
2015-01-01 Joel Brobecker <brobecker@adacore.com>
|
2014-12-30 08:36:53 +01:00
|
|
|
|
|
2015-01-01 10:21:14 +01:00
|
|
|
|
* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2014.
|
2014-12-30 08:36:53 +01:00
|
|
|
|
|
2015-01-01 10:21:14 +01:00
|
|
|
|
For older changes see ChangeLog-2014.
|
1999-04-16 03:35:26 +02:00
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode: change-log
|
|
|
|
|
left-margin: 8
|
|
|
|
|
fill-column: 74
|
|
|
|
|
version-control: never
|
2007-08-10 00:44:38 +02:00
|
|
|
|
coding: utf-8
|
1999-04-16 03:35:26 +02:00
|
|
|
|
End:
|