Kyrylo Tkachov [Mon, 11 Mar 2013 11:09:33 +0000 (11:09 +0000)]
Add support for AArch32 CRC instruction in ARMv8.
gas/ChangeLog
2013-03-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/tc-arm.c (crc_ext_armv8): New feature set.
(UNPRED_REG): New macro.
(do_crc32_1): New function.
(do_crc32b, do_crc32h, do_crc32w, do_crc32cb,
do_crc32ch, do_crc32cw): Likewise.
(TUEc): New macro.
(insns): Add entries for crc32 mnemonics.
(arm_extensions): Add entry for crc.
include/opcode/ChangeLog
2013-03-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* arm.h (CRC_EXT_ARMV8): New constant.
(ARCH_CRC_ARMV8): New macro.
opcodes/ChangeLog
2013-03-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* arm-dis.c (arm_opcodes): Add entries for CRC instructions.
(thumb32_opcodes): Likewise.
(print_insn_thumb32): Handle 'S' control char.
gas/testsuite/ChangeLog
2013-03-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gas/arm/crc32-bad.d: New file.
* gas/arm/crc32-bad.l: Likewise.
* gas/arm/crc32-bad.s: Likewise.
* gas/arm/crc32.d: Likewise.
* gas/arm/crc32.s: Likewise.
Markus Metzger [Mon, 11 Mar 2013 08:59:00 +0000 (08:59 +0000)]
Add tests for the new record-btrace target.
testsuite/
* Makefile.in: Add btrace testsuite.
* configure: Regenerated.
* configure.ac: Add btrace testsuite.
* gdb.btrace/Makefile.in: New file.
* gdb.btrace/enable.c: New file.
* gdb.btrace/enable.exp: New file.
* gdb.btrace/function_call_history.c: New file.
* gdb.btrace/function_call_history.exp: New file.
* gdb.btrace/instruction_history.c: New file.
* gdb.btrace/instruction_history.exp: New file.
* gdb.btrace/instruction_history.S: New file.
* lib/gdb.exp: Add btrace skip proc.
Markus Metzger [Mon, 11 Mar 2013 08:55:36 +0000 (08:55 +0000)]
Document changes to the record target resulting from the renaming into
record-full.
Document two new record sub-commands "record instruction-history" and
"record function-call-history" and two associated set/show commands
"set record instruction-history-size" and "set record
function-call-history-size".
Add this to NEWS.
gdb/
* NEWS: Add record changes.
doc/
* gdb.texinfo (Process Record and Replay): Document record
changes.
Markus Metzger [Mon, 11 Mar 2013 08:53:17 +0000 (08:53 +0000)]
Add a disassembly flag to omit the pc prefix and use it in the "record
instruction-history" command of record-btrace.
The pc prefix would appear multiple times in the branch trace disassembly,
which is more confusing than helpful.
gdb/
* record-btrace.c (btrace_insn_history): Omit the pc prefix in
the instruction history disassembly.
* disasm.c (dump_insns): Omit the pc prefix, if requested.
* disasm.h (DISASSEMBLY_OMIT_PC): New.
Markus Metzger [Mon, 11 Mar 2013 08:51:58 +0000 (08:51 +0000)]
Add a target for branch trace recording.
The target implements the new record sub-commands
"record instruction-history" and
"record function-call-history".
The target does not support reverse execution or navigation in the
recorded execution log.
gdb/
* Makefile.in (SFILES): Add record-btrace.c
(COMMON_OBS): Add record-btrace.o
* record-btrace.c: New.
* objfiles.c: Include btrace.h.
(free_objfile): call btrace_free_objfile.
Markus Metzger [Mon, 11 Mar 2013 08:50:05 +0000 (08:50 +0000)]
Add command to print the function names from recorded instructions.
This command provides a quick high-level overview over the recorded execution
log at function granularity without having to reverse-step.
gdb/
* target.c (target_call_history, target_call_history_from,
target_call_history_range): New.
* target.h (target_ops) <to_call_history, to_call_history_from,
to_call_history_range>: New fields.
(target_call_history, target_call_history_from,
target_call_history_range): New declaration.
* record.c (get_call_history_modifiers, cmd_record_call_history,
record_call_history_size): New.
(_initialize_record): Add the "record function-call-history" command.
Add "set/show record function-call-history-size" commands.
* record.h (record_print_flag): New.
Markus Metzger [Mon, 11 Mar 2013 08:48:38 +0000 (08:48 +0000)]
Add a command to provide a disassembly of the execution trace log.
gdb/
* target.h (target_ops) <to_insn_history, to_insn_history_from,
to_insn_history_range>: New fields.
(target_insn_history): New.
(target_insn_history_from): New.
(target_insn_history_range): New.
* target.c (target_insn_history): New.
(target_insn_history_from): New.
(target_insn_history_range): New.
* record.c: Include cli/cli-utils.h, disasm.h, ctype.h.
(record_insn_history_size): New.
(get_insn_number): New.
(get_context_size): New.
(no_chunk): New.
(get_insn_history_modifiers): New.
(cmd_record_insn_history): New.
(_initialize_record): Add "set/show record instruction-history-size"
command. Add "record instruction-history" command.
Markus Metzger [Mon, 11 Mar 2013 08:47:10 +0000 (08:47 +0000)]
Provide default target methods for record targets that are likely to be shared
between different record targets.
gdb/
* record.h (record_disconnect): New.
(record_detach): New.
(record_mourn_inferior): New.
(record_kill): New.
* record-full.c (record_disconnect, record_detach,
record_mourn_inferior, record_kill): Move to...
* record.c: ...here.
(DEBUG): New.
(record_stop): New.
(record_unpush): New.
(cmd_record_stop): Call record_stop. Replace unpush_target
call with record_unpush call.
(record_disconnect, record_detach): Assert that the target
is of record stratum. Call record_unpush, record_stop, and
DEBUG.
(record_mourn_inferior, record_kill): Assert that the target
is of record stratum. Call record_unpush and DEBUG.
Markus Metzger [Mon, 11 Mar 2013 08:45:54 +0000 (08:45 +0000)]
Rename record_ prefixes in record-full.h into record_full_.
gdb/
* record-full.h, record-full.c (record_memory_query): Rename
to ...
(record_full_memory_query): ...this. Update all users.
(record_arch_list_add_reg): Rename to ...
(record_full_arch_list_add_reg): ...this. Update all users.
(record_arch_list_add_mem): Rename to ...
(record_full_arch_list_add_mem): ...this. Update all users.
(record_arch_list_add_end): Rename to ...
(record_full_arch_list_add_end): ...this. Update all users.
(record_gdb_operation_disable_set): Rename to ...
(record_full_gdb_operation_disable_set): ...this.
Update all users.
Markus Metzger [Mon, 11 Mar 2013 08:44:14 +0000 (08:44 +0000)]
Rename record_ prefixes in record-full.c into record_full_.
gdb/
* record-full.c (DEFAULT_RECORD_INSN_MAX_NUM): Renamed to ...
(DEFAULT_RECORD_FULL_INSN_MAX_NUM): ... this. Updated all users.
(RECORD_IS_REPLAY): Renamed to ...
(RECORD_FULL_IS_REPLAY): ... this. Updated all users.
(RECORD_FILE_MAGIC): Renamed to ...
(RECORD_FULL_FILE_MAGIC): ... this. Updated all users.
(record_mem_entry): Renamed to ...
(record_full_mem_entry): ... this. Updated all users.
(record_reg_entry): Renamed to ...
(record_full_reg_entry): ... this. Updated all users.
(record_end_entry): Renamed to ...
(record_full_end_entry): ... this. Updated all users.
(record_type) <record_end, record_reg, record_mem>: Renamed
to ...
(record_full_type) <record_full_end, record_full_reg,
record_full_mem>: ... this. Updated all users.
(record_entry): Renamed to ...
(record_full_entry): ... this. Updated all users.
(record_core_buf_entry): Renamed to ...
(record_full_core_buf_entry): ... this. Updated all users.
(record_core_regbuf): Renamed to ...
(record_full_core_regbuf): ... this. Updated all users.
(record_core_start): Renamed to ...
(record_full_core_start): ... this. Updated all users.
(record_core_end): Renamed to ...
(record_full_core_end): ... this. Updated all users.
(record_core_buf_list): Renamed to ...
(record_full_core_buf_list): ... this. Updated all users.
(record_first): Renamed to ...
(record_full_first): ... this. Updated all users.
(record_list): Renamed to ...
(record_full_list): ... this. Updated all users.
(record_arch_list_head): Renamed to ...
(record_full_arch_list_head): ... this. Updated all users.
(record_arch_list_tail): Renamed to ...
(record_full_arch_list_tail): ... this. Updated all users.
(record_stop_at_limit): Renamed to ...
(record_full_stop_at_limit): ... this. Updated all users.
(record_insn_max_num): Renamed to ...
(record_full_insn_max_num): ... this. Updated all users.
(record_insn_num): Renamed to ...
(record_full_insn_num): ... this. Updated all users.
(record_insn_count): Renamed to ...
(record_full_insn_count): ... this. Updated all users.
(record_ops): Renamed to ...
(record_full_ops): ... this. Updated all users.
(record_core_ops): Renamed to ...
(record_full_core_ops): ... this. Updated all users.
(set_record_cmdlist): Renamed to ...
(set_record_full_cmdlist): ... this. Updated all users.
(show_record_cmdlist): Renamed to ...
(show_record_full_cmdlist): ... this. Updated all users.
(record_cmdlist): Renamed to ...
(record_full_cmdlist): ... this. Updated all users.
(record_beneath_to_resume_ops): Renamed to ...
(record_full_beneath_to_resume_ops): ... this. Updated all users.
(record_beneath_to_resume): Renamed to ...
(record_full_beneath_to_resume): ... this. Updated all users.
(record_beneath_to_wait_ops): Renamed to ...
(record_full_beneath_to_wait_ops): ... this. Updated all users.
(record_beneath_to_wait): Renamed to ...
(record_full_beneath_to_wait): ... this. Updated all users.
(record_beneath_to_store_registers_ops): Renamed to ...
(record_full_beneath_to_store_registers_ops): ... this.
Updated all users.
(record_beneath_to_store_registers): Renamed to ...
(record_full_beneath_to_store_registers): ... this.
Updated all users.
(record_beneath_to_xfer_partial_ops): Renamed to ...
(record_full_beneath_to_xfer_partial_ops): ... this.
Updated all users.
(record_beneath_to_xfer_partial): Renamed to ...
(record_full_beneath_to_xfer_partial): ... this.
Updated all users.
(record_beneath_to_insert_breakpoint): Renamed to ...
(record_full_beneath_to_insert_breakpoint): ... this.
Updated all users.
(record_beneath_to_stopped_by_watchpoint): Renamed to ...
(record_full_beneath_to_stopped_by_watchpoint): ... this.
Updated all users.
(record_beneath_to_stopped_data_address): Renamed to ...
(record_full_beneath_to_stopped_data_address): ... this.
Updated all users.
(record_beneath_to_async): Renamed to ...
(record_full_beneath_to_async): ... this. Updated all users.
(record_goto_insn): Renamed to ...
(record_full_goto_insn): ... this. Updated all users.
(record_save): Renamed to ...
(record_full_save): ... this. Updated all users.
(record_reg_alloc): Renamed to ...
(record_full_reg_alloc): ... this. Updated all users.
(record_reg_release): Renamed to ...
(record_full_reg_release): ... this. Updated all users.
(record_mem_alloc): Renamed to ...
(record_full_mem_alloc): ... this. Updated all users.
(record_mem_release): Renamed to ...
(record_full_mem_release): ... this. Updated all users.
(record_end_alloc): Renamed to ...
(record_full_end_alloc): ... this. Updated all users.
(record_end_release): Renamed to ...
(record_full_end_release): ... this. Updated all users.
(record_entry_release): Renamed to ...
(record_full_entry_release): ... this. Updated all users.
(record_list_release): Renamed to ...
(record_full_list_release): ... this. Updated all users.
(record_list_release_following): Renamed to ...
(record_full_list_release_following): ... this.
Updated all users.
(record_list_release_first): Renamed to ...
(record_full_list_release_first): ... this. Updated all users.
(record_arch_list_add): Renamed to ...
(record_full_arch_list_add): ... this. Updated all users.
(record_get_loc): Renamed to ...
(record_full_get_loc): ... this. Updated all users.
(record_check_insn_num): Renamed to ...
(record_full_check_insn_num): ... this. Updated all users.
(record_arch_list_cleanups): Renamed to ...
(record_full_arch_list_cleanups): ... this. Updated all users.
(record_message): Renamed to ...
(record_full_message): ... this. Updated all users.
(record_message_wrapper): Renamed to ...
(record_full_message_wrapper): ... this. Updated all users.
(record_message_wrapper_safe): Renamed to ...
(record_full_message_wrapper_safe): ... this. Updated all users.
(record_gdb_operation_disable): Renamed to ...
(record_full_gdb_operation_disable): ... this. Updated all users.
(record_hw_watchpoint): Renamed to ...
(record_full_hw_watchpoint): ... this. Updated all users.
(record_exec_insn): Renamed to ...
(record_full_exec_insn): ... this. Updated all users.
(record_restore): Renamed to ...
(record_full_restore): ... this. Updated all users.
(record_async_inferior_event_token): Renamed to ...
(record_full_async_inferior_event_token): ... this.
Updated all users.
(record_async_inferior_event_handler): Renamed to ...
(record_full_async_inferior_event_handler): ... this.
Updated all users.
(record_core_open_1): Renamed to ...
(record_full_core_open_1): ... this. Updated all users.
(record_open_1): Renamed to ...
(record_full_open_1): ... this. Updated all users.
(record_open): Renamed to ...
(record_full_open): ... this. Updated all users.
(record_close): Renamed to ...
(record_full_close): ... this. Updated all users.
(record_resume_step): Renamed to ...
(record_full_resume_step): ... this. Updated all users.
(record_resumed): Renamed to ...
(record_full_resumed): ... this. Updated all users.
(record_execution_dir): Renamed to ...
(record_full_execution_dir): ... this. Updated all users.
(record_resume): Renamed to ...
(record_full_resume): ... this. Updated all users.
(record_get_sig): Renamed to ...
(record_full_get_sig): ... this. Updated all users.
(record_sig_handler): Renamed to ...
(record_full_sig_handler): ... this. Updated all users.
(record_wait_cleanups): Renamed to ...
(record_full_wait_cleanups): ... this. Updated all users.
(record_wait_1): Renamed to ...
(record_full_wait_1): ... this. Updated all users.
(record_wait): Renamed to ...
(record_full_wait): ... this. Updated all users.
(record_stopped_by_watchpoint): Renamed to ...
(record_full_stopped_by_watchpoint): ... this. Updated all users.
(record_disconnect): Renamed to ...
(record_full_disconnect): ... this. Updated all users.
(record_detach): Renamed to ...
(record_full_detach): ... this. Updated all users.
(record_mourn_inferior): Renamed to ...
(record_full_mourn_inferior): ... this. Updated all users.
(record_kill): Renamed to ...
(record_full_kill): ... this. Updated all users.
(record_stopped_data_address): Renamed to ...
(record_full_stopped_data_address): ... this. Updated all users.
(record_registers_change): Renamed to ...
(record_full_registers_change): ... this. Updated all users.
(record_store_registers): Renamed to ...
(record_full_store_registers): ... this. Updated all users.
(record_xfer_partial): Renamed to ...
(record_full_xfer_partial): ... this. Updated all users.
(record_breakpoint): Renamed to ...
(record_full_breakpoint): ... this. Updated all users.
(record_breakpoint_p): Renamed to ...
(record_full_breakpoint_p): ... this. Updated all users.
(record_breakpoints): Renamed to ...
(record_full_breakpoints): ... this. Updated all users.
(record_sync_record_breakpoints): Renamed to ...
(record_full_sync_record_breakpoints): ... this.
Updated all users.
(record_init_record_breakpoints): Renamed to ...
(record_full_init_record_breakpoints): ... this.
Updated all users.
(record_insert_breakpoint): Renamed to ...
(record_full_insert_breakpoint): ... this. Updated all users.
(record_remove_breakpoint): Renamed to ...
(record_full_remove_breakpoint): ... this. Updated all users.
(record_can_execute_reverse): Renamed to ...
(record_full_can_execute_reverse): ... this. Updated all users.
(record_get_bookmark): Renamed to ...
(record_full_get_bookmark): ... this. Updated all users.
(record_goto_bookmark): Renamed to ...
(record_full_goto_bookmark): ... this. Updated all users.
(record_async): Renamed to ...
(record_full_async): ... this. Updated all users.
(record_can_async_p): Renamed to ...
(record_full_can_async_p): ... this. Updated all users.
(record_is_async_p): Renamed to ...
(record_full_is_async_p): ... this. Updated all users.
(record_execution_direction): Renamed to ...
(record_full_execution_direction): ... this. Updated all users.
(record_info): Renamed to ...
(record_full_info): ... this. Updated all users.
(record_delete): Renamed to ...
(record_full_delete): ... this. Updated all users.
(record_is_replaying): Renamed to ...
(record_full_is_replaying): ... this. Updated all users.
(record_goto_entry): Renamed to ...
(record_full_goto_entry): ... this. Updated all users.
(record_goto_begin): Renamed to ...
(record_full_goto_begin): ... this. Updated all users.
(record_goto_end): Renamed to ...
(record_full_goto_end): ... this. Updated all users.
(record_goto): Renamed to ...
(record_full_goto): ... this. Updated all users.
(init_record_ops): Renamed to ...
(init_record_full_ops): ... this. Updated all users.
(record_core_resume): Renamed to ...
(record_full_core_resume): ... this. Updated all users.
(record_core_kill): Renamed to ...
(record_full_core_kill): ... this. Updated all users.
(record_core_fetch_registers): Renamed to ...
(record_full_core_fetch_registers): ... this. Updated all users.
(record_core_prepare_to_store): Renamed to ...
(record_full_core_prepare_to_store): ... this. Updated all users.
(record_core_store_registers): Renamed to ...
(record_full_core_store_registers): ... this. Updated all users.
(record_core_xfer_partial): Renamed to ...
(record_full_core_xfer_partial): ... this. Updated all users.
(record_core_insert_breakpoint): Renamed to ...
(record_full_core_insert_breakpoint): ... this. Updated all users.
(record_core_remove_breakpoint): Renamed to ...
(record_full_core_remove_breakpoint): ... this. Updated all users.
(record_core_has_execution): Renamed to ...
(record_full_core_has_execution): ... this. Updated all users.
(init_record_core_ops): Renamed to ...
(init_record_full_core_ops): ... this. Updated all users.
(cmd_record_restore): Renamed to ...
(cmd_record_full_restore): ... this. Updated all users.
(record_save_cleanups): Renamed to ...
(record_full_save_cleanups): ... this. Updated all users.
(cmd_record_start): Renamed to ...
(cmd_record_full_start): ... this. Updated all users.
(set_record_insn_max_num): Renamed to ...
(set_record_full_insn_max_num): ... this. Updated all users.
(set_record_command): Renamed to ...
(set_record_full_command): ... this. Updated all users.
(show_record_command): Renamed to ...
(show_record_full_command): ... this. Updated all users.
(_initialize_record): Renamed to ...
(_initialize_record_full): ... this. Updated all users.
Markus Metzger [Mon, 11 Mar 2013 08:42:55 +0000 (08:42 +0000)]
Split record.h into record.h and record-full.h.
Split record.c into record.c and record-full.c.
The split leaves the command part in record.c and moves the target part into
record-full.c.
gdb/
* record.h: Split into this and ...
* record-full.h: ... this.
* record.c: Split into this and ...
* record-full.c: ... this.
* target.h (target_ops): Add new fields to_info_record,
to_save_record, to_delete_record, to_record_is_replaying,
to_goto_record_begin, to_goto_record_end, to_goto_record.
(target_info_record): New.
(target_save_record): New.
(target_supports_delete_record): New.
(target_delete_record): New.
(target_record_is_replaying): New.
(target_goto_record_begin): New.
(target_goto_record_end): New.
(target_goto_record): New.
* target.c (target_info_record): New.
(target_save_record): New.
(target_supports_delete_record): New.
(target_delete_record): New.
(target_record_is_replaying): New.
(target_goto_record_begin): New.
(target_goto_record_end): New.
(target_goto_record): New.
* record.h: Declare struct cmd_list_element.
(record_cmdlist): New declaration.
(set_record_cmdlist): New declaration.
(show_record_cmdlist): New declaration.
(info_record_cmdlist): New declaration.
(cmd_record_goto): New declaration.
* record.c: Remove unnecessary includes.
Include inferior.h.
(cmd_record_goto): Remove declaration.
(record_cmdlist): Now extern. Initialize.
(set_record_cmdlist): Now extern. Initialize.
(show_record_cmdlist): Now extern. Initialize.
(info_record_cmdlist): Now extern. Initialize.
(find_record_target): New.
(require_record_target): New.
(cmd_record_start): Update.
(cmd_record_delete): Remove target-specific code.
Call target_delete_record.
(cmd_record_stop): Unpush any record target.
(set_record_insn_max_num): Move to record-full.c
(set_record_command): Add comment.
(show_record_command): Add comment.
(info_record_command): Update comment.
Remove target-specific code.
Call the record target's to_info_record.
(cmd_record_start): New.
(cmd_record_goto): Now extern.
Remove target-specific code.
Call target_goto_begin, target_goto_end, or target_goto.
(_initialize_record): Move record target ops initialization to
record-full.c.
Change "record" command help text.
Move "record restore", "record set", and "record show" commands to
record-full.c.
* Makefile.in (SFILES): Add record-full.c.
(HFILES_NO_SRCDIR): Add record-full.h.
(COMMON_OBS): Add record-full.o.
* amd64-linux-tdep.c: Include record-full.h instead of record.h.
* arm-tdep.c: Include record-full.h.
* i386-linux-tdep.c: Include record-full.h instead of record.h.
* i386-tdep.c: Include record-full.h.
* infrun.c: Include record-full.h.
* linux-record.c: Include record-full.h.
* moxie-tdep.c: Include record-full.h.
* record-full.c: Include record-full.h.
Change module comment.
(set_record_full_cmdlist): New.
(show_record_full_cmdlist): New.
(record_full_cmdlist): New.
(record_goto_insn): New declaration.
(record_save): New declaration.
(record_check_insn_num): Change query string.
(record_info): New.
(record_delete): New.
(record_is_replaying): New.
(record_goto_entry): New.
(record_goto_begin): New.
(record_goto_end): New.
(record_goto): New.
(init_record_ops): Update.
(init_record_core_ops): Update.
(cmd_record_save): Rename to record_save. Remove target and arg checks.
(cmd_record_start): New.
(set_record_insn_max_num): Moved from record.c
(set_record_full_command): New.
(show_record_full_command): New.
(_initialize_record_full): New.
Markus Metzger [Mon, 11 Mar 2013 08:39:38 +0000 (08:39 +0000)]
Add a new function to target.h to add an alias command for a target and mark it
deprecated. This is useful when renaming targets.
gdb/
* target.h (add_deprecated_target_alias): New.
* target.c (add_deprecated_target_alias): New.
Markus Metzger [Mon, 11 Mar 2013 08:38:27 +0000 (08:38 +0000)]
LBR, BTM, or BTS records may have incorrect branch "from" information afer an
EIST transition, T-states, C1E, or Adaptive Thermal Throttling (AAJ122).
This results in sporadic test fails. Disable btrace on those processors.
gdb/
* common/linux-btrace.c: Include sys/ptrace, sys/types, sys/wait.h,
and signal.h.
(linux_supports_btrace): Add kernel and
cpuid check.
(kernel_supports_btrace): New function.
(cpu_supports_btrace): New function.
(intel_supports_btrace): New function.
Markus Metzger [Mon, 11 Mar 2013 08:36:57 +0000 (08:36 +0000)]
Document the branch tracing extensions to the remote serial protocol.
doc/
* gdb.texinfo (Requirements): List qXfer:btrace:read requiring expat.
(General Query Packets): Describe Qbtrace:bts, Qbtrace:off, and
qXfer:btrace:read.
Markus Metzger [Mon, 11 Mar 2013 08:35:11 +0000 (08:35 +0000)]
Add the gdb remote target operations for branch tracing.
We define the following packets:
Qbtrace:bts enable branch tracing for the current thread
returns "OK" or "Enn"
Qbtrace:off disable branch tracing for the current thread
returns "OK" or "Enn"
qXfer:btrace:read read the full branch trace data for the current thread
gdb/
* target.h (enum target_object): Add TARGET_OBJECT_BTRACE.
* remote.c: Include btrace.h.
(struct btrace_target_info): New struct.
(remote_supports_btrace): New function.
(send_Qbtrace): New function.
(remote_enable_btrace): New function.
(remote_disable_btrace): New function.
(remote_teardown_btrace): New function.
(remote_read_btrace): New function.
(init_remote_ops): Add btrace ops.
(enum <unnamed>): Add btrace packets.
(struct protocol_feature remote_protocol_features[]): Add btrace packets.
(_initialize_remote): Add packet configuration for branch tracing.
gdbserver/
* target.h (struct target_ops): Add btrace ops.
(target_supports_btrace): New macro.
(target_enable_btrace): New macro.
(target_disable_btrace): New macro.
(target_read_btrace): New macro.
* gdbthread.h (struct thread_info): Add btrace field.
* server.c: Include btrace-common.h.
(handle_btrace_general_set): New function.
(handle_btrace_enable): New function.
(handle_btrace_disable): New function.
(handle_general_set): Call handle_btrace_general_set.
(handle_qxfer_btrace): New function.
(struct qxfer qxfer_packets[]): Add btrace entry.
* inferiors.c (remove_thread): Disable btrace.
* linux-low: Include linux-btrace.h.
(linux_low_enable_btrace): New function.
(linux_low_read_btrace): New function.
(linux_target_ops): Add btrace ops.
* configure.srv (i[34567]86-*-linux*): Add linux-btrace.o.
Add srv_linux_btrace=yes.
(x86_64-*-linux*): Add linux-btrace.o.
Add srv_linux_btrace=yes.
* configure.ac: Define HAVE_LINUX_BTRACE.
* config.in: Regenerated.
* configure: Regenerated.
Markus Metzger [Mon, 11 Mar 2013 08:31:48 +0000 (08:31 +0000)]
Preserve a verbose error message of xfer functions if they return -3.
gdbserver/
* server.c (handle_qxfer): Preserve error message if -3 is
returned.
(qxfer): Document the -3 return value.
Markus Metzger [Mon, 11 Mar 2013 08:28:58 +0000 (08:28 +0000)]
Define the xml document style for transferring branch trace data.
Add a function to parse a btrace xml document into a vector of branch trace
blocks.
gdb/
* features/btrace.dtd: New file.
* Makefile.in (XMLFILES): Add btrace.dtd.
* btrace.h (parse_xml_btrace): New declaration.
* btrace.c: Include xml-support.h.
(parse_xml_btrace): New function.
(parse_xml_btrace_block): New function.
(block_attributes): New struct.
(btrace_attributes): New struct.
(btrace_children): New struct.
(btrace_elements): New struct.
Markus Metzger [Mon, 11 Mar 2013 08:25:58 +0000 (08:25 +0000)]
Install the btrace target ops for i386-linux-nat and amd64-linux-nat.
gdb/
* amd64-linux-nat.c: Include btrace.h and linux-btrace.h.
(amd64_linux_enable_btrace): New.
(amd64_linux_disable_btrace): New.
(amd64_linux_teardown_btrace): New.
(_initialize_amd64_linux_nat): Initialize btrace ops.
* i386-linux.nat.c: Include btrace.h and linux-btrace.h.
(i386_linux_enable_btrace): New.
(i386_linux_disable_btrace): New.
(i386_linux_teardown_btrace): New.
(_initialize_i386_linux_nat): Initialize btrace ops.
* config/i386/linux.mh: Add linux-btrace.o.
* config/i386/linux64.mh: Add linux-btrace.o.
Markus Metzger [Mon, 11 Mar 2013 08:24:07 +0000 (08:24 +0000)]
Implement branch tracing on Linux based on perf_event such that it can be shared
between gdb and gdbserver.
gdb/
* common/linux_btrace.h: New file.
* common/linux_btrace.c: New file.
* Makefile.in (SFILES): Add btrace.c.
(HFILES_NO_SRCDIR): Add common/linux-btrace.h.
(COMMON_OBS): Add btrace.o.
(linux-btrace.o): New rule.
gdbserver/
* Makefile.in (SFILES): Add $(srcdir)/common/linux-btrace.c.
(linux_btrace_h): New variable.
(linux-btrace.o): New rule.
Markus Metzger [Mon, 11 Mar 2013 08:19:33 +0000 (08:19 +0000)]
Fix ChangeLog date.
Markus Metzger [Mon, 11 Mar 2013 08:17:08 +0000 (08:17 +0000)]
Add branch trace information to struct thread_info.
Add functions to enable, disable, clear, and fetch a thread's branch trace.
gdb/
* target.h: Include btrace.h.
(struct target_ops) <to_supports_btrace, to_enable_btrace,
to_disable_btrace, to_teardown_btrace, to_read_btrace>: New.
* target.c (target_supports_btrace): New function.
(target_enable_btrace): New function.
(target_disable_btrace): New function.
(target_teardown_btrace): New function.
(target_read_btrace): New function.
* btrace.h: New file.
* btrace.c: New file.
* Makefile.in: Add btrace.c.
* gdbthread.h: Include btrace.h.
(struct thread_info): Add btrace field.
* thread.c: Include btrace.h.
(clear_thread_inferior_resources): Call target_teardown_btrace.
* common/btrace-common.h: New file.
gdbadmin [Mon, 11 Mar 2013 00:00:03 +0000 (00:00 +0000)]
*** empty log message ***
Alan Modra [Sun, 10 Mar 2013 23:08:18 +0000 (23:08 +0000)]
* gold.cc (queue_middle_tasks): Move detect_odr_violations..
* layout.cc (Layout_task_runner::run): ..to here.
* symtab.h (struct Symbol_location): Extract from..
(class Symbol_table): ..here.
* symtab.cc (Symbol_table::linenos_from_loc): Invoke function_location.
* target.h (class Target): Add function_location and
do_function_location functions.
(class Sized_target): Add do_function_location.
* object.h (class Sized_relobj_file): Move find_shdr..
(class Object): ..to here.
* object.cc: Likewise. Update to suit. Instantiate.
(Sized_relobj_file::find_eh_frame): Update find_shdr call.
* powerpc.cc (class Powerpc_dynobj): New.
(Target_powerpc::do_function_location): New function.
(Powerpc_relobj::do_find_special_sections): Update find_shdr call.
(Powerpc_dynobj::do_read_symbols): New function.
(Target_powerpc::do_make_elf_object): Make a Powerpc_dynobj.
Alan Modra [Sun, 10 Mar 2013 23:00:05 +0000 (23:00 +0000)]
daily update
Jan Kratochvil [Sun, 10 Mar 2013 18:07:57 +0000 (18:07 +0000)]
gdb/
* common/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Call also kill
for CHILD, ignore PTRACE_KILL errors, move the inner block variable
kill_status to outer block.
Jan Kratochvil [Sun, 10 Mar 2013 18:06:26 +0000 (18:06 +0000)]
gdb/
Fix entry-values if the callee called a noreturn function.
* dwarf2-frame-tailcall.c (dwarf2_tailcall_sniffer_first): Use
get_frame_address_in_block. Add new comment.
gdb/testsuite/
Fix entry-values if the callee called a noreturn function.
* gdb.arch/amd64-tailcall-noret.S: New file.
* gdb.arch/amd64-tailcall-noret.c: New file.
* gdb.arch/amd64-tailcall-noret.exp: New file.
Jan Kratochvil [Sun, 10 Mar 2013 18:04:00 +0000 (18:04 +0000)]
gdb/
Fix entry-values in C++ across CUs.
* dwarf2loc.c (call_site_to_target_addr) <FIELD_LOC_KIND_PHYSNAME>: Use
lookup_minimal_symbol. Add a comment.
* dwarf2read.c
(read_call_site_scope) <is_ref_attr> <die_is_declaration>: Prefer
DW_AT_linkage_name.
gdb/testsuite/
Fix entry-values in C++ across CUs.
* gdb.arch/amd64-tailcall-cxx.exp: New file.
* gdb.arch/amd64-tailcall-cxx1.S: New file.
* gdb.arch/amd64-tailcall-cxx1.cc: New file.
* gdb.arch/amd64-tailcall-cxx2.S: New file.
* gdb.arch/amd64-tailcall-cxx2.cc: New file.
gdbadmin [Sun, 10 Mar 2013 00:00:03 +0000 (00:00 +0000)]
*** empty log message ***
Alan Modra [Sat, 9 Mar 2013 23:00:05 +0000 (23:00 +0000)]
daily update
Hafiz Abid Qadeer [Sat, 9 Mar 2013 12:05:20 +0000 (12:05 +0000)]
2013-03-09 Hafiz Abid Qadeer <abidh@codesourcery.com>
Fixed year number in Changelog files.
Eli Zaretskii [Sat, 9 Mar 2013 11:01:01 +0000 (11:01 +0000)]
Fix last commit.
doc/gdb.texinfo (General Query Packets, Tracepoint Packets): Don't
use colons in @anchor and @cindex entries.
Hafiz Abid Qadeer [Sat, 9 Mar 2013 10:21:42 +0000 (10:21 +0000)]
2012-03-09 Hafiz Abid Qadeer <abidh@codesourcery.com>
* gdb.texinfo (QTBuffer:size): Add cindex and anchor.
gdbadmin [Sat, 9 Mar 2013 00:00:02 +0000 (00:00 +0000)]
*** empty log message ***
Alan Modra [Fri, 8 Mar 2013 23:00:06 +0000 (23:00 +0000)]
daily update
Ian Lance Taylor [Fri, 8 Mar 2013 22:34:46 +0000 (22:34 +0000)]
* options.cc (General_options::string_to_object_format): Accept
"default".
Nick Clifton [Fri, 8 Mar 2013 17:37:30 +0000 (17:37 +0000)]
* elf64-aarch64.c (elf_backend_can_gc_sections): Enable
gc-section support.
(elf64_aarch64_gc_sweep_hook): Handle GOT, TLS and PLT related relocs.
* lib/ld-lib.exp (check_gc_sections_available): Remove aarch64
from list of
targets that don't support gc-section.
Nick Clifton [Fri, 8 Mar 2013 17:25:12 +0000 (17:25 +0000)]
PR binutils/15241
* lm32.cpu (Control and status registers): Add CFG2, PSW,
TLBVADDR, TLBPADDR and TLBBADVADDR.
* lm32-desc.c: Regenerate.
Nick Clifton [Fri, 8 Mar 2013 17:13:31 +0000 (17:13 +0000)]
* elf-bfd.h (elfcore_write_s390_tdb): Add prototype.
* elf.c (elfcore_write_s390_tdb): New function.
(elfcore_write_register_note): Call it.
(elfcore_grok_s390_tdb): New function.
(elfcore_grok_note): Call it.
* readelf.c (get_note_type): Add NT_S390_TDB.
Yao Qi [Fri, 8 Mar 2013 15:35:06 +0000 (15:35 +0000)]
gdb/
* tracepoint.c (_initialize_tracepoint): Indent the code.
Pedro Alves [Fri, 8 Mar 2013 15:22:44 +0000 (15:22 +0000)]
find command, fix -Wpoint-sign
From: Pedro Alves <palves@redhat.com>
The find command's patter/buffer that is passed to the target is a
binary blob, not a string.
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" findcmd.o -k 2>&1 1>/dev/null
../../src/gdb/findcmd.c: In function ‘find_command’:
../../src/gdb/findcmd.c:278:6: error: pointer targets in passing argument 3 of ‘target_search_memory’ differ in signedness [-Werror=pointer-sign]
In file included from ../../src/gdb/findcmd.c:26:0:
../../src/gdb/target.h:1582:12: note: expected ‘const gdb_byte *’ but argument is of type ‘char *’
gdb/
2013-03-08 Pedro Alves <palves@redhat.com>
* findcmd.c (put_bits): Change type of parameter to 'gdb_byte *'.
(parse_find_args, find_command): Change type of pattern buffer
locals to 'gdb_byte *'.
Hafiz Abid Qadeer [Fri, 8 Mar 2013 15:06:39 +0000 (15:06 +0000)]
2012-03-08 Stan Shebs <stan@codesourcery.com>
Hafiz Abid Qadeer <abidh@codesourcery.com>
gdb/
* NEWS: Mention set and show trace-buffer-size commands.
Mention new packet.
* target.h (struct target_ops): New method
to_set_trace_buffer_size.
(target_set_trace_buffer_size): New macro.
* target.c (update_current_target): Set up new method.
* tracepoint.c (trace_buffer_size): New global.
(start_tracing): Send it to the target.
(set_trace_buffer_size): New function.
(_initialize_tracepoint): Add new setshow for trace-buffer-size.
* remote.c (remote_set_trace_buffer_size): New function.
(_initialize_remote): Use it.
(QTBuffer:size) New remote command.
(PACKET_QTBuffer_size): New enum.
(remote_protocol_features): Add an entry for
PACKET_QTBuffer_size.
gdb/gdbserver/
* tracepoint.c (trace_buffer_size): New global.
(DEFAULT_TRACE_BUFFER_SIZE): New define.
(init_trace_buffer): Change to one-argument function. Allocate
trace buffer memory.
(handle_tracepoint_general_set): Call cmd_bigqtbuffer_size to
handle QTBuffer:size packet.
(cmd_bigqtbuffer_size): New function.
(initialize_tracepoint): Call init_trace_buffer with
DEFAULT_TRACE_BUFFER_SIZE.
* server.c (handle_query): Add QTBuffer:size in the
supported packets.
gdb/doc/
* gdb.texinfo (Starting and Stopping Trace Experiments): Document
trace-buffer-size set and show commands.
(Tracepoint Packets): Document QTBuffer:size.
(General Query Packets): Document QTBuffer:size.
gdb/testsuite/
* gdb.trace/trace-buffer-size.exp: New file.
* gdb.trace/trace-buffer-size.c: New file.
Tom Tromey [Fri, 8 Mar 2013 14:42:23 +0000 (14:42 +0000)]
* remote-m32r-sdi.c (m32r_load): Call skip_spaces on correct
variable.
Maciej W. Rozycki [Fri, 8 Mar 2013 11:50:27 +0000 (11:50 +0000)]
* elfxx-mips.c (mips_elf_allocate_lazy_stub): Correct data type.
Chung-Lin Tang [Fri, 8 Mar 2013 10:17:00 +0000 (10:17 +0000)]
2013-03-08 Chung-Lin Tang <cltang@codesourcery.com>
* write.h (struct fix): Add fx_dot_frag field.
(dot_frag): Declare.
* write.c (dot_frag): New variable.
(fix_new_internal): Set fx_dot_frag field with dot_frag.
(fixup_segment): Base calculation of fx_offset with fx_dot_frag.
* expr.c (expr): Save value of frag_now in dot_frag when setting
dot_value.
* read.c (emit_expr): Likewise. Delete comments.
gdbadmin [Fri, 8 Mar 2013 00:00:34 +0000 (00:00 +0000)]
*** empty log message ***
Pedro Alves [Thu, 7 Mar 2013 23:53:12 +0000 (23:53 +0000)]
target.c: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" target.o -k 2>&1 1>/dev/null
../../src/gdb/target.c: In function ‘target_read_stralloc’:
../../src/gdb/target.c:2376:3: error: pointer targets in passing argument 1 of ‘strlen’ differ in signedness [-Werror=pointer-sign]
In file included from build-gnulib/import/string.h:27:0,
from ../../src/gdb/common/gdb_string.h:24,
from ../../src/gdb/target.c:24:
/usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘gdb_byte *’
...
This is about the same as the previous patch.
Functions that take or return ascii-ish string arguments usually use
char* for parameters/return. That means that at points we call into
target methods that work with binary blobs, we need casts to/from
gdb_byte*/char*. To choose which type for the variables, I usually go
based on which requires the fewer casts, and what the contents of the
variable are supposed to hold, which often gives the same answer.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* target.c (target_read_stralloc, target_fileio_read_alloc):
*Cast pointer to 'gdb_byte *' in target call.
Pedro Alves [Thu, 7 Mar 2013 23:36:01 +0000 (23:36 +0000)]
corefile.c: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" corefile.o -k 2>&1 1>/dev/null
../../src/gdb/corefile.c: In function ‘read_memory_string’:
../../src/gdb/corefile.c:334:7: error: pointer targets in passing argument 2 of ‘read_memory’ differ in signedness [-Werror=pointer-sign]
../../src/gdb/corefile.c:217:1: note: expected ‘gdb_byte *’ but argument is of type ‘char *’
Functions that take or return ascii-ish string arguments usually use
char* for parameters/return. That means that at points we call into
target methods that work with binary blobs, we need casts to
gdb_byte*.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* corefile.c (read_memory_string): Cast pointer to gdb_byte* in
call.
Alan Modra [Thu, 7 Mar 2013 23:27:53 +0000 (23:27 +0000)]
* ehframe.h (Post_fdes) Make it a vector of Post_fde rather than
pointer to Post_fde.
(struct Post_fde): Move definition to here..
* ehframe.cc (struct Post_fde): ..from here.
(Cie::write): Don't alloc Post_fde.
(Eh_frame::do_sized_write): Update. Don't free Post_fde.
Alan Modra [Thu, 7 Mar 2013 23:00:05 +0000 (23:00 +0000)]
daily update
Keith Seitz [Thu, 7 Mar 2013 21:57:30 +0000 (21:57 +0000)]
* breakpoint.c (catch_syscall_split_args): Use skip_spaces.
(trace_pass_command): Likewise.
* cli/cli-cmds.c: Include cli/cli-utils.h.
(source_command): Use skip-spaces.
(disassemble_command): Likewise.
* findcmd.c: Include cli/cli-utils.h.
(parse_find_args): Use skip_spaces.
* go32-nat.c: Include cli/cli-utils.h.
(go32_sldt): Use skip_spaces.
(go32_sgdt): Likewise.
(go32_sidt): Likewise.
(go32_pde): Likewise.
(go32_pte): Likewise.
(go32_pte_for_address): Likewise.
* infcmd.c: Include cli/cli-utils.h.
(registers_info): Use skip_spaces.
* linux-tdep.c (read_mapping): Use skip_spaces_const.
(linux_info_proc): Likewise.
* linux-thread-db.c: Include cli/cli-utils.h.
(info_auto_load_libthread_db): Use skip_spaces_const.
* m32r-rom.c: Include cli/cli-utils.h.
(m32r_upload_command): Use skip_spaces.
* maint.c: Include cli/cli-utils.h.
(maintenance_translate_address): Use skip_spaces.
* mi/mi-parse.c: Include cli/cli-utils.h.
(mi_parse_argv): Use skip_spaces.
(mi_parse): Likewise.
* minsyms.c: Include cli/cli-utils.h.
(msymbol_hash_iw): Use skip_spaces_const.
* objc-lang.c: Include cli/cli-utils.h.
(parse_selector): Use skip_spaces.
(parse_method): Likewise.
* python/python.c: Include cli/cli-utils.h.
(python_interactive_command)[HAVE_PYTHON]: Use skip_spaces.
(python_command)[HAVE_PYTHON]: Likewise.
(python_interactive_command)[!HAVE_PYTHON]: Likewise.
* remote-m32r-sdi.c: Include cli/cli-utils.h.
(m32r_load): Use skip_spaces.
* serial.c: Include cli/cli-utils.h.
(serial_open): Use skip_spaces_const.
* stack.c: Include cli/cli-utils.h.
(parse_frame_specification_1): Use skip_spaces_const.
* symfile.c: Include cli/cli-utils.h.
(set_ext_lang_command): Use skip_spaces.
* symtab.c: Include cli/cli-utils.h.
(rbreak_command): Use skip_spaces.
* thread.c (thread_name_command): Use skip_spaces.
* tracepoint.c (validate_actionline): Use skip_spaces.
(encode_actions_1): Likewise.
(trace_find_range_command): Likewise.
(trace_find_outside_command): Likewise.
(trace_dump_actions): Likewise.
H.J. Lu [Thu, 7 Mar 2013 21:40:06 +0000 (21:40 +0000)]
Rewrote i386_index_check
* config/tc-i386.c (flag_code_names): Removed.
(i386_index_check): Rewrote.
Pedro Alves [Thu, 7 Mar 2013 19:24:32 +0000 (19:24 +0000)]
Fix -Wpointer-sign around strings/encoding conversions.
Trimmed for brevity:
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" c-lang.o expprint.o utils.o valprint.o varobj.o -k 2>&1 1>/dev/null
../../src/gdb/c-lang.c: In function ‘parse_one_string’:
../../src/gdb/c-lang.c:540:8: error: pointer targets in passing argument 3 of ‘convert_between_encodings’ differ in signedness [-Werror=pointer-sign]
In file included from ../../src/gdb/c-lang.c:30:0:
../../src/gdb/charset.h:64:6: note: expected ‘const gdb_byte *’ but argument is of type ‘char *’
../../src/gdb/expprint.c: In function ‘print_subexp_standard’:
../../src/gdb/expprint.c:205:2: error: pointer targets in passing argument 3 of ‘current_language->la_printstr’ differ in signedness [-Werror=pointer-sign]
../../src/gdb/expprint.c:205:2: note: expected ‘const gdb_byte *’ but argument is of type ‘char *’
cc1: all warnings being treated as errors
make: *** [expprint.o] Error 1
../../src/gdb/utils.c: In function ‘host_char_to_target’:
../../src/gdb/utils.c:1474:9: error: pointer targets in passing argument 3 of ‘convert_between_encodings’ differ in signedness [-Werror=pointer-sign]
../../src/gdb/varobj.c: In function ‘value_get_print_value’:
../../src/gdb/varobj.c:2934:8: error: pointer targets in return differ in signedness [-Werror=pointer-sign]
../../src/gdb/varobj.c:2968:12: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
../../src/gdb/varobj.c:2971:3: error: pointer targets in return differ in signedness [-Werror=pointer-sign]
cc1: all warnings being treated as errors
make: *** [varobj.o] Error 1
As with the previous patch, the encoding conversion code works with
gdb_byte arrays as the generic buffers that hold strings of any
encoding/width. This patch adds casts where appropriate.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* c-lang.c (parse_one_string): Cast argument to gdb_byte *.
* expprint.c (print_subexp_standard): Likewise.
* utils.c (host_char_to_target): Likewise.
* valprint.c (generic_emit_char, generic_printstr): Likewise.
* varobj.c (value_get_print_value): Change type of local to char*.
Cast it gdb_byte * in call to language printer.
Pedro Alves [Thu, 7 Mar 2013 19:10:46 +0000 (19:10 +0000)]
charset.c: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" charset.o 2>&1 1>/dev/null
../../src/gdb/charset.c: In function ‘wchar_iterate’:
../../src/gdb/charset.c:665:13: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
../../src/gdb/charset.c:691:13: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
../../src/gdb/charset.c:706:12: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
The encoding conversion code works with gdb_byte arrays as the generic
buffers that hold strings of any encoding/width. Changing the type of
this field to gdb_byte* removes the need for one cast, and makes
everything work with the same types. That's good -- WRT to strings,
"char *" is (almost) consistently throughout GDB only used for
ascii-ish strings.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* charset.c (struct wchar_iterator) <input>: Change type to 'const
gdb_byte *'.
(make_wchar_iterator): Remove cast to char*.
(wchar_iterate): Change type of local.
Pedro Alves [Thu, 7 Mar 2013 18:59:54 +0000 (18:59 +0000)]
regcache.c: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" regcache.o 2>&1 1>/dev/null
../../src/gdb/regcache.c: In function ‘regcache_xmalloc_1’:
../../src/gdb/regcache.c:228:2: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
../../src/gdb/regcache.c:235:2: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
cc1: all warnings being treated as errors
regcache->register_status is "signed char".
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* regcache.c (regcache_xmalloc_1): Call XCALLOC with signed char
for 'regcache->register_status'.
Pedro Alves [Thu, 7 Mar 2013 18:53:40 +0000 (18:53 +0000)]
Fix typo.
Pedro Alves [Thu, 7 Mar 2013 18:50:53 +0000 (18:50 +0000)]
breakpoint.c: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" breakpoint.o 2>&1 1>/dev/null
../../src/gdb/breakpoint.c: In function ‘breakpoint_xfer_memory’:
../../src/gdb/breakpoint.c:1578:2: error: pointer targets in passing argument 3 of ‘gdbarch_breakpoint_from_pc’ differ in signedness [-Werror=pointer-sign]
In file included from ../../src/gdb/defs.h:644:0,
from ../../src/gdb/breakpoint.c:20:
../../src/gdb/gdbarch.h:495:25: note: expected ‘int *’ but argument is of type ‘unsigned int *’
target_info.placed_size is an 'int', and gdbarch_breakpoint_from_pc
takes an int too.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* breakpoint.c.c (breakpoint_xfer_memory): Change type of local to
int.
Pedro Alves [Thu, 7 Mar 2013 18:45:51 +0000 (18:45 +0000)]
stap-probe.c: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" stap-probe.o 2>&1 1>/dev/null
../../src/gdb/stap-probe.c: In function ‘handle_stap_probe’:
../../src/gdb/stap-probe.c:1306:19: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
cc1: all warnings being treated as errors
make: *** [stap-probe.o] Error 1
provider is a string, so it's rightfully a char*. 'data' holds raw
bytes (bfd_byte), so a cast is the right thing to do.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* stap-probe.c (handle_stap_probe): Add cast to char*.
Pedro Alves [Thu, 7 Mar 2013 18:29:05 +0000 (18:29 +0000)]
linux-record.c:record_linux_system_call: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" linux-record.o 2>&1 1>/dev/null
...
../../src/gdb/linux-record.c: In function ‘record_linux_system_call’:
../../src/gdb/linux-record.c:1152:9: error: pointer targets in passing argument 3 of ‘regcache_raw_read_signed’ differ in signedness [-Werror=pointer-sign]
In file included from ../../src/gdb/linux-record.c:23:0:
../../src/gdb/regcache.h:76:3: note: expected ‘long int *’ but argument is of type ‘long unsigned int *’
../../src/gdb/linux-record.c:1186:13: error: pointer targets in passing argument 3 of ‘regcache_raw_read_signed’ differ in signedness [-Werror=pointer-sign]
In file included from ../../src/gdb/linux-record.c:23:0:
../../src/gdb/regcache.h:76:3: note: expected ‘long int *’ but argument is of type ‘long unsigned int *’
I believe the read_signed calls are correct, and the variables are in
the wrong.
Tested on x86_64 Fedora 17.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* linux-record.c (record_linux_system_call) <gdb_sys_msgrcv,
RECORD_MSGRCV>: Pass a signed variable to
regcache_raw_read_signed, instead of an unsigned one.
Pedro Alves [Thu, 7 Mar 2013 17:52:58 +0000 (17:52 +0000)]
remote-notif.[h|c]:notif_debug: Change type to int.
notif_debug is installed as variable of a "signed" command:
add_setshow_boolean_cmd ("notification", no_class, ¬if_debug,
_("\
and:
command.h:extern void add_setshow_boolean_cmd (char *name,
command.h- enum command_class class,
command.h- int *var,
2013-03-07 Pedro Alves <palves@redhat.com>
* remote-notif.c (notif_debug): Change type to int.
* remote-notif.h (notif_debug): Likewise.
Pedro Alves [Thu, 7 Mar 2013 17:36:25 +0000 (17:36 +0000)]
ser-tcp.c:tcp_retry_limit: Change type to unsigned int.
tcp_retry_limit is installed as variable of an unsigned command:
add_setshow_uinteger_cmd ("connect-timeout", class_obscure,
&tcp_retry_limit, _("\
and I found no uses of the variable treating it as signed (like < 0
checks or some such).
2013-03-07 Pedro Alves <palves@redhat.com>
* ser-tcp.c (tcp_retry_limit): Change type to unsigned int.
Pedro Alves [Thu, 7 Mar 2013 17:29:32 +0000 (17:29 +0000)]
hex2bin, bin2hex: move declarations to header.
Move the declarations to a header, rather than declaring them in
(multiple) .c files.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* remote.c (hex2bin, bin2hex): Move extern declarations to ...
* remote.h (hex2bin, bin2hex): ... here.
* tracepoint.c (hex2bin, bin2hex): Remove extern declarations.
Yao Qi [Thu, 7 Mar 2013 13:17:28 +0000 (13:17 +0000)]
gdb/gdbserver/
* tracepoint.c (cur_action, cur_step_action): Make them unsigned.
(cmd_qtfp): Initialize cur_action and cur_step_action 0 instead
of -1.
(cmd_qtsp): Adjust condition. Do post increment.
Set cur_action and cur_step_action back to 0.
Eli Zaretskii [Thu, 7 Mar 2013 12:26:05 +0000 (12:26 +0000)]
* utils.c (initialize_utils): Improve doc strings of "set/show
width", "set/show height", and "set/show pagination".
Pedro Alves [Thu, 7 Mar 2013 09:47:57 +0000 (09:47 +0000)]
PR gdb/15236: gdbserver write to linux memory with zero length corrupts stack
PROBLEM:
The function linux_write_memory () in linux-low.c allocates a buffer
on the stack to hold a copy of the data to be written.
register PTRACE_XFER_TYPE *buffer = (PTRACE_XFER_TYPE *)
alloca (count * sizeof (PTRACE_XFER_TYPE));
"count" is the number of bytes to be written, rounded up to the
nearest multiple of sizeof (PTRACE_XFER_TYPE) and allowing for not
being an aligned address. The function later uses
buffer[0] = ptrace (PTRACE_PEEKTEXT, pid,
(PTRACE_ARG3_TYPE) (uintptr_t) addr, 0);
The problem is that this function can be called to write zero bytes on
an aligned address, for example when receiving an X packet of length 0
(used to test if 8-bit write is supported). Under these circumstances,
count can be zero.
Since in this case, buffer[0] may never have been allocated, the stack
is corrupted and gdbserver may crash.
SOLUTION:
Writing zero bytes should always succeed. The patch below returns
successfully early if the length is zero, so avoiding the stack
corruption.
Verified on the ARC GDB 7.5.1 port.
2013-03-07 Jeremy Bennett <jeremy.bennett@embecosm.com>
PR server/15236
* linux-low.c (linux_write_memory): Return early success if LEN is
zero.
Alan Modra [Thu, 7 Mar 2013 05:33:50 +0000 (05:33 +0000)]
* testsuite/discard_locals_relocatable_test.c: Add a powerpc
relocation referencing .LC0.
* testsuite/discard_locals_test.sh: Remove FIXMEs.
Alan Modra [Thu, 7 Mar 2013 05:31:44 +0000 (05:31 +0000)]
* testsuite/ifunc-sel.h (ifunc_sel, ifunc_one): Mark
always_inline. Add assembly for powerpc to avoid GOT.
Alan Modra [Thu, 7 Mar 2013 05:30:06 +0000 (05:30 +0000)]
* testsuite/script_test_10.sh: Don't test .bss section
header number.
Keith Seitz [Thu, 7 Mar 2013 00:48:25 +0000 (00:48 +0000)]
* ax-gdb.c (gen_printf): Make FORMAT const.
* ax-gdb.h (gen_printf): Likewise.
* ax-general.c (ax_string): Make STR const.
* ax.h (ax_string): Likewise.
gdbadmin [Thu, 7 Mar 2013 00:00:34 +0000 (00:00 +0000)]
*** empty log message ***
Alan Modra [Wed, 6 Mar 2013 23:00:05 +0000 (23:00 +0000)]
daily update
Doug Evans [Wed, 6 Mar 2013 21:20:02 +0000 (21:20 +0000)]
* elfread.c (elf_symfile_read): Move debugging printf to more
logical location.
Pedro Alves [Wed, 6 Mar 2013 19:51:18 +0000 (19:51 +0000)]
Garbage collect py-utils.c:target_string_to_unicode.
The strlen in this function looked suspicious, for the function
documents that STR is in the target's charset (what if it is utf-32,
etc.).
On closer inspection, nothing is calling the function, and it's been
that way ever since the function was added.
gdb/
2013-03-06 Pedro Alves <palves@redhat.com>
* python/py-utils.c (target_string_to_unicode): Delete function.
* python/python-internal.h (target_string_to_unicode): Delete
declaration.
Alan Modra [Wed, 6 Mar 2013 13:48:46 +0000 (13:48 +0000)]
* ldfile.c (ldfile_open_command_file_1): Return after einfo
to avoid warning.
Alan Modra [Wed, 6 Mar 2013 13:40:51 +0000 (13:40 +0000)]
* strings.c (get_char): Dispense with buf[]. Instead shift
chars into big-endian value and byte-swap later if
little-endian. Don't EOF check value read from object.
Alan Modra [Wed, 6 Mar 2013 12:28:47 +0000 (12:28 +0000)]
* powerpc.cc (class Powerpc_relobj): Move some member functions.
(Target_powerpc::symval_for_branch): Add symtab param. Update
all callers. Handle folded sections.
(Target_powerpc::do_gc_add_reference): Don't cast dynamic object
to Powerpc_relobj.
(Global_symbol_visitor_opd::operator()): Likewise.
Pedro Alves [Wed, 6 Mar 2013 12:13:41 +0000 (12:13 +0000)]
tstatus.exp: use UNSUPPORTED for optional features that are not supported
The current tstatus.exp tests shows PASSes if either the target
support or not the optional tstatus bits:
PASS: gdb.trace/tstatus.exp: tstatus does not report trace stop reason
PASS: gdb.trace/tstatus.exp: tstatus reports trace stop reason
The former (and any other similar case) should be UNSUPPORTED rather
than PASS. That'd make it much easier to spot actually problems with
the test (e.g., the one Yao's previous patch addressed), along with
regressions and progressions.
The "not supported" paths in tstatus.exp explicitly check for output
you'd get if the feature wasn't supported, so real unexpected failures
will still be caught as FAILs.
So now e.g., where we wanted to check if tstatus reports the trace
stop reason, and if the target does support it, we get
PASS: tstatus reports trace stop reason
if the target actually reports what we'd expect if the trace stop
reason isn't supported, we get:
UNSUPPORTED: tstatus reports trace stop reason
and if the target reports something else unexpected, we get:
FAIL: tstatus reports trace stop reason
That has the added bonus that the test string is always the same and
only the test results change (PASS/FAIL/UNSUPPORTED), which makes it
easier for testers see regressions, compared to the previous:
-PASS: gdb.trace/tstatus.exp: tstatus reports trace stop reason
+PASS: gdb.trace/tstatus.exp: tstatus does not report trace stop reason
which clearly easily goes by unnoticed, as evidenced by the existing
problem Yao's previous patch addressed.
Tested on x86_64 Fedora 17.
gdb/testsuite/
2013-03-06 Pedro Alves <palves@redhat.com>
* gdb.trace/tstatus.exp (run_trace_experiment): When the target
doesn't support the tested optional feature, call "unsupported"
with the same test message as the "pass" case, instead of calling
"pass" with a different message. Use the same text for the "fail"
cases too.
Pierre Muller [Wed, 6 Mar 2013 11:05:55 +0000 (11:05 +0000)]
* linespec.c (get_current_search_block): ARI fix, use (void)
for empty parameter list.
Yao Qi [Wed, 6 Mar 2013 01:03:40 +0000 (01:03 +0000)]
gdb/testsuite/
* gdb.trace/tstatus.exp: Remove the invocation of
gdb_load_shlibs, gdb_compile, clean_restart and runto_main.
(test_tracepoints): Don't set fast tracepoint.
(top level): Don't check agent library is loaded or not.
Yao Qi [Wed, 6 Mar 2013 00:59:55 +0000 (00:59 +0000)]
gdb/testsuite/
* gdb.trace/tstatus.exp (run_trace_experiment): Escape
parentheses by "\\".
gdbadmin [Wed, 6 Mar 2013 00:00:03 +0000 (00:00 +0000)]
*** empty log message ***
Alan Modra [Tue, 5 Mar 2013 23:00:06 +0000 (23:00 +0000)]
daily update
Doug Evans [Tue, 5 Mar 2013 21:15:34 +0000 (21:15 +0000)]
* ada-lang.c (ada_lookup_symbol_list_worker): New function, contents
of old ada_lookup_symbol_list. In !full_search case, don't
search superblocks.
(ada_lookup_symbol_list): Delete arg full_search, all callers
updated. Call ada_lookup_symbol_list_worker.
(ada_iterate_over_symbols): Call ada_lookup_symbol_list_worker.
* ada-lang.h (ada_lookup_symbol_list): Update.
* language.h (language_defn): Update comment for
la_iterate_over_symbols.
* linespec.c (iterate_over_file_blocks): New function.
(iterate_over_all_matching_symtabs): Call it.
(lookup_prefix_sym): Ditto.
(get_current_search_block): New function.
(get_search_block): Delete.
(find_label_symbols): Call get_current_search_block.
(add_matching_symbols_to_info): Call iterate_over_file_blocks.
* symtab.c (iterate_over_symbols): Don't search superblocks.
Yufeng Zhang [Tue, 5 Mar 2013 16:31:44 +0000 (16:31 +0000)]
Add to the AArch64 GAS the missing support for hexadecimal-format
floating-point literal in the FMOV instruction.
gas/
* config/tc-aarch64.c (aarch64_imm_float_p): Rename 'e' to 'pattern';
add comment.
(aarch64_double_precision_fmovable): New function.
(parse_aarch64_imm_float): Add parameter 'dp_p'; call the new
function; handle hexadecimal representation of IEEE754 encoding.
(parse_operands): Update the call to parse_aarch64_imm_float.
gas/testsuite/
* gas/aarch64/diagnostic.s: Add test.
* gas/aarch64/diagnostic.l: Update.
* gas/aarch64/illegal.s: Add test.
* gas/aarch64/illegal.l: Update.
* gas/aarch64/fpmov.s: New file.
* gas/aarch64/fpmov.d: New file.
Corinna Vinschen [Tue, 5 Mar 2013 15:18:10 +0000 (15:18 +0000)]
Fix ChangeLog entry.
Yao Qi [Tue, 5 Mar 2013 14:23:23 +0000 (14:23 +0000)]
gdb/
* cli/cli-decode.c (add_setshow_zuinteger_unlimited_cmd): Change
parameter VAR's type from "unsigned int" to "int".
* command.h (var_zuinteger_unlimited): Update its comments.
(add_setshow_zuinteger_unlimited_cmd): Update the declaration.
Corinna Vinschen [Tue, 5 Mar 2013 13:39:00 +0000 (13:39 +0000)]
* NEWS: Mention new target x86_64-*-cygwin*.
Corinna Vinschen [Tue, 5 Mar 2013 13:37:11 +0000 (13:37 +0000)]
* configure.host: Add x86_64-*-cygwin* as host.
* configure.tgt: Add x86_64-*-cygwin* as target.
* config/i386/cygwin64.mh: New file.
* gdbserver/configure.srv: Add x86_64-*-cygwin* as target.
Corinna Vinschen [Tue, 5 Mar 2013 11:54:29 +0000 (11:54 +0000)]
* configure.host: Add x86_64-*-cygwin* as valid host.
* configure.tgt: Add x86_64-*-cygwin* as valid target.
* emultempl/pep.em: Handle different requirements for Cygwin in terms
of start addresses for executables and DLLs, based on memory model in
http://cygwin.com/ml/cygwin-developers/2013-02/msg00027.html
Corinna Vinschen [Tue, 5 Mar 2013 11:52:12 +0000 (11:52 +0000)]
* configure.in: Build DLL tools on x86_64-*-cygwin* as well.
* configure: Regenerate.
Corinna Vinschen [Tue, 5 Mar 2013 11:47:01 +0000 (11:47 +0000)]
* config.bfd: Add x86_64-*-cygwin to list of supported targets.
Alan Modra [Tue, 5 Mar 2013 02:55:27 +0000 (02:55 +0000)]
PR ld/15222
ld/
* ldlang.c (lang_size_sections_1): When given an lma_region align
LMA as per VMA only if lma_region is the same as region.
ld/testsuite/
* ld-scripts/rgn-at6.s, * ld-scripts/rgn-at6.t, * ld-scripts/rgn-at6.d,
* ld-scripts/rgn-at7.t, * ld-scripts/rgn-at7.d: New tests.
gdbadmin [Tue, 5 Mar 2013 00:00:03 +0000 (00:00 +0000)]
*** empty log message ***
Alan Modra [Mon, 4 Mar 2013 23:00:06 +0000 (23:00 +0000)]
daily update
Jan Kratochvil [Mon, 4 Mar 2013 19:38:02 +0000 (19:38 +0000)]
gdb/
* linespec.c (decode_line_2): Fix duplicate request off by two message.
Jan Kratochvil [Mon, 4 Mar 2013 19:30:28 +0000 (19:30 +0000)]
gdb/
* linespec.c (struct linespec_canonical_name): New.
(struct linespec_state): Change canonical_names type to it.
(add_sal_to_sals): Change variable canonical_name to canonical. Change
xrealloc element size. Initialize the different CANONICAL fields.
(canonical_to_fullform): New.
(filter_results): Use it. Add variables canonical, fullform and
cleanup.
(struct decode_line_2_item, decode_line_2_compare_items): New.
(decode_line_2): Remove variables iter and item_names, add variables
items and items_count. Modify the code for these new variables.
gdb/testsuite/
* gdb.linespec/base/one/thefile.cc (twodup): New.
(m): Call it.
* gdb.linespec/base/two/thefile.cc (dupname): New.
(n): Call it.
* gdb.linespec/break-ask.exp: New file.
* gdb.linespec/lspec.cc (body_elsewhere): New comment marker.
Corinna Vinschen [Mon, 4 Mar 2013 15:09:46 +0000 (15:09 +0000)]
* coff-pe-read.c (read_pe_exported_syms): Don't return without
calling do_cleanup.
Nick Clifton [Mon, 4 Mar 2013 14:22:25 +0000 (14:22 +0000)]
* elfcomm.c (error): Flush stdout before emitting the error
message.
(warn): Likewise.
Hui Zhu [Mon, 4 Mar 2013 13:52:46 +0000 (13:52 +0000)]
2013-03-04 Luis Machado <lgustavo@codesourcery.com>
* tracepoint.c (build_traceframe_info): Add code for byte order.
Alan Modra [Mon, 4 Mar 2013 12:12:11 +0000 (12:12 +0000)]
* elf32-ppc.c (ppc_elf_relocate_section <R_PPC_PLTREL24>): Adjust
non-zero addends when relocatable, rather than addends >= 32768.
Always zero "addend" before applying relocation.
Nick Clifton [Mon, 4 Mar 2013 09:21:43 +0000 (09:21 +0000)]
* archive64.c (bfd_elf64_archive_write_armap): Fix calculation of
file pointer offsets for thin archives.