Yao Qi [Fri, 11 Nov 2016 08:38:31 +0000 (08:38 +0000)]
Remove apply_val_pretty_printer parameter valaddr
This patch removes the parameter valaddr of
extension_language_ops::apply_val_pretty_printer and remove const from
"struct value *val". valaddr can be got in each extension language's
implementation of apply_val_pretty_printer.
gdb:
2016-11-11 Yao Qi <yao.qi@linaro.org>
* cp-valprint.c (cp_print_value): Remove local base_valaddr.
* extension-priv.h (struct extension_language_ops)
<apply_val_pretty_printer>: Remove the second parameter.
Remove const from "struct value *". Callers updated.
* extension.c (apply_ext_lang_val_pretty_printer): Update
comments. Remove parameter valaddr. Remove const from
"struct value *".
* extension.h (apply_ext_lang_val_pretty_printer): Update
declaration.
* guile/guile-internal.h (gdbscm_apply_val_pretty_printer):
Update declaration.
* guile/scm-pretty-print.c (gdbscm_apply_val_pretty_printer):
Remove parameter valaddr. Remove const from "struct value *".
* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer):
Likewise.
* python/python-internal.h (gdbpy_apply_val_pretty_printer):
Update declaration.
Yao Qi [Fri, 11 Nov 2016 08:38:31 +0000 (08:38 +0000)]
Remove parameter valaddr from c print functions
This patch removes parameter valaddr from some c print functions.
gdb:
2016-11-11 Yao Qi <yao.qi@linaro.org>
* c-lang.h (cp_print_value_fields): Update declaration.
* cp-valprint.c (cp_print_value): Update declaration.
(cp_print_value_fields): Remove parameter valaddr. Callers
updated.
(cp_print_value): Likewise.
Mike Frysinger [Fri, 11 Nov 2016 06:29:21 +0000 (01:29 -0500)]
sim: mips: fix dv-tx3904cpu build error
When building for mipstx39-rtems4.12 targets, some funcs use SD and CPU
implicitly. Restore the defines for these to the local sd and cpu vars.
This was broken by the clean up in commit
d47f5b30d8481272e9480118bdcb.
Reported-by: Joel Sherrill <joel.sherrill@oarcorp.com>
Mike Frysinger [Fri, 11 Nov 2016 06:28:36 +0000 (01:28 -0500)]
sim: mips: fix builds for r3900 cpus due to missing check_u64
GDB Administrator [Fri, 11 Nov 2016 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
Nick Clifton [Thu, 10 Nov 2016 12:26:53 +0000 (12:26 +0000)]
Provide a more helpful error message when the BFD library is unable to load an extremely large section.
PR target/20737
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Bind defined
symbol locally in PIE.
Jiong Wang [Thu, 10 Nov 2016 09:25:17 +0000 (09:25 +0000)]
[AArch64] Bind defined symbol locally in PIE
bfd/
PR target/20737
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Bind defined
symbol locally in PIE.
ld/
* testsuite/ld-aarch64/pie-bind-locally-a.s: New test source.
* testsuite/ld-aarch64/pie-bind-locally-b.s: Likewise.
* testsuite/ld-aarch64/pie-bind-locally.d: New testcase.
* testsuite/ld-aarch64/aarch64-elf.exp: Run new testcase.
Tom Tromey [Sat, 15 Oct 2016 15:20:02 +0000 (09:20 -0600)]
Use unique_xmalloc_ptr in Python code
This changes some utility functions in the Python code to return
unique_xmalloc_ptr, and then fixes up the callers.
I chose unique_xmalloc_ptr rather than std::string because at a few
call points the xmalloc'd string is released and ownership transferred
elsewhere.
This patch found a few existing memory leaks. For example,
py-unwind.c called gdbpy_obj_to_string but never freed the result.
Built and regression tested on the buildbot.
2016-11-09 Tom Tromey <tom@tromey.com>
* varobj.h (varobj_get_display_hint): Change return type.
* varobj.c (varobj_get_display_hint): Return unique_xmalloc_ptr.
(varobj_value_get_print_value): Update.
* python/python.c (gdbpy_before_prompt_hook, gdbpy_print_stack)
(gdbpy_apply_type_printers): Update.
* python/python-internal.h (unicode_to_target_string)
(python_string_to_target_string, python_string_to_host_string)
(gdbpy_obj_to_string, gdbpy_exception_to_string)
(gdbpy_get_display_hint): Change return types.
* python/py-varobj.c (py_varobj_iter_next): Update.
* python/py-value.c (valpy_getitem, convert_value_from_python):
Update.
* python/py-utils.c (unicode_to_encoded_string)
(unicode_to_target_string, python_string_to_target_string)
(python_string_to_host_string, gdbpy_obj_to_string)
(gdbpy_exception_to_string): Return unique_xmalloc_ptr.
* python/py-unwind.c (pyuw_parse_register_id): Update.
* python/py-type.c (typy_getitem): Update.
* python/py-prettyprint.c (gdbpy_get_display_hint)
(print_stack_unless_memory_error, print_children)
(gdbpy_apply_val_pretty_printer): Update.
* python/py-param.c (set_parameter_value): Update.
(get_doc_string, call_doc_function): Return unique_xmalloc_ptr.
(get_set_value, get_show_value, compute_enum_values, parmpy_init):
Update.
* python/py-infthread.c (thpy_set_name): Update.
* python/py-function.c (fnpy_call, fnpy_init): Update.
* python/py-framefilter.c (extract_sym): Change "name" to
unique_xmalloc_ptr.
(enumerate_args, enumerate_locals): Update.
(py_print_frame): Use unique_xmalloc_ptr.
* python/py-frame.c (frapy_read_var): Update. Remove cleanup.
* python/py-cmd.c (cmdpy_function, cmdpy_completer, cmdpy_init):
Update.
* python/py-breakpoint.c (bppy_set_condition): Use
unique_xmalloc_ptr.
(bppy_init): Likewise. Remove cleanup.
(local_setattro): Update.
* mi/mi-cmd-var.c (print_varobj, mi_cmd_var_list_children)
(varobj_update_one): Update.
GDB Administrator [Thu, 10 Nov 2016 00:00:17 +0000 (00:00 +0000)]
Automatic date update in version.in
H.J. Lu [Wed, 9 Nov 2016 22:00:18 +0000 (14:00 -0800)]
X86: Remove the .s suffix from EVEX vpextrw
The .s suffix indicates that the instruction is encoded by swapping
2 register operands. Since vpextrw takes an XMM register and an
integer register, the .s suffix should be ignored for EVEX vpextrw.
gas/
PR binutils/20799
* testsuite/gas/i386/opcode.s: Add a test for EVEX vpextrw.
* testsuite/gas/i386/opcode-intel.d: Updated.
* testsuite/gas/i386/opcode-suffix.d: Likewise.
* testsuite/gas/i386/opcode.d: Likewise.
* testsuite/gas/i386/x86-64-avx512bw-opts.s: Remove vpextrw
tests.
* testsuite/gas/i386/x86-64-avx512bw-opts-intel.d: Updated.
* testsuite/gas/i386/x86-64-avx512bw-opts.d: Likewise.
opcodes/
PR binutils/20799
* i386-dis-evex.h (evex_table): Replace EdqwS with Edqw.
* i386-dis.c (EdqwS): Removed.
(dqw_swap_mode): Likewise.
(intel_operand_size): Don't check dqw_swap_mode.
(OP_E_register): Likewise.
(OP_E_memory): Likewise.
(OP_G): Likewise.
(OP_EX): Likewise.
* i386-opc.tbl: Remove "S" from EVEX vpextrw.
* i386-tbl.h: Regerated.
H.J. Lu [Wed, 9 Nov 2016 21:44:42 +0000 (13:44 -0800)]
Update opcodes/ChangeLog
H.J. Lu [Wed, 9 Nov 2016 20:11:50 +0000 (12:11 -0800)]
X86: Update opcode-suffix.d
PR binutils/20754
* testsuite/gas/i386/opcode-suffix.d: Updated.
Pedro Alves [Wed, 9 Nov 2016 18:48:25 +0000 (18:48 +0000)]
Further cleanup/modernization of gdb.base/commands.exp
- Use multi_line for matching multi-line GDB output.
- Add a multi_line_input variant of multi_line to build GDB input and
use it throughout.
(The two changes above make the tests much more readable, IMO.)
- Add a new valnum_re global to get rid of the multiple "\\\$\[0-9\]*".
- Remove gdb_stop_suppressing_tests uses.
- tighten a few regexps.
- Replace send_gdb/gdb_expect with gdb_test_multiple and simplify,
making pass/fail messages the same.
gdb/ChangeLog:
2016-11-09 Pedro Alves <palves@redhat.com>
* gdb.base/commands.exp (runto_or_return): New procedure.
(gdbvar_simple_if_test, gdbvar_simple_while_test)
(gdbvar_complex_if_while_test, progvar_simple_if_test)
(progvar_simple_while_test, progvar_complex_if_while_test)
(if_while_breakpoint_command_test)
(infrun_breakpoint_command_test, breakpoint_command_test)
(user_defined_command_test, watchpoint_command_test)
(test_command_prompt_position, redefine_hook_test)
(stray_arg0_test, error_clears_commands_left, redefine_hook_test)
(redefine_backtrace_test): Use runto_or_return, $valnum_re,
multi_line_input and multi_line. Remove gdb_expect and
gdb_stop_suppressing_tests uses.
* lib/gdb.exp (valnum_re): New global.
* lib/gdb.exp (valnum_re): New global.
(multi_line_input): New procedure.
H.J. Lu [Wed, 9 Nov 2016 18:20:13 +0000 (10:20 -0800)]
X86: Merge AVX512F vmovq
AVX512F vmovq doesn't support masking. We can't swap register operand
in AVX512F vmovq with Reg64 since Reg64 != RegXMM. This patch merges
AVX512F vmovq.
* i386-opc.tbl: Merge AVX512F vmovq.
Simon Marchi [Wed, 9 Nov 2016 15:55:14 +0000 (10:55 -0500)]
Make gdb.mi/user-selected-context-sync.exp use proc_with_prefix
Pedro's patch provides a cleaner way to prefix tests with the proc name,
so let's use that.
gdb/testsuite/ChangeLog:
* gdb.mi/user-selected-context-sync.exp (with_test_prefix_procname):
Remove.
(test_setup): Define with proc_with_prefix.
(test_cli_inferior): Likewise.
(test_cli_thread): Likewise.
(test_cli_frame): Likewise.
(test_cli_select_frame): Likewise.
(test_cli_up_down): Likewise.
(test_mi_thread_select): Likewise.
(test_mi_stack_select_frame): Likewise.
(test_cli_in_mi_inferior): Likewise.
(test_cli_in_mi_thread): Likewise.
(test_cli_in_mi_frame): Likewise.
(top level): Do not use with_test_prefix_procname.
Pedro Alves [Wed, 9 Nov 2016 15:45:49 +0000 (15:45 +0000)]
gdb/testsuite: Introduce "proc_with_prefix"
While adding new tests to gdb.base/commands.exp, I noticed that the
file includes a bunch of individual testcases split into their own
procedures, and that none have ever been adjusted to use
with_test_prefix. Instead, each gdb_test/gdb_test_multiple/etc
invocation takes care of including the procedure name in the test
message, in order to make sure test messages are unique.
Simon convinced me that using the procedure name as prefix is not that
bad of an idea:
https://sourceware.org/ml/gdb-patches/2016-10/msg00020.html
This commit adds an IMO simpler alternative to
with_test_prefix_procname added by that patch -- a new
"proc_with_prefix" convenience proc that is meant to be used in place
of "proc", and then uses it in commands.exp. Procedures defined with
this automatically run their bodies under with_test_prefix $proc_name.
Here's a sample of the resulting gdb.sum diff:
[...]
-PASS: gdb.base/commands.exp: break factorial #3
-PASS: gdb.base/commands.exp: set value to 5 in test_command_prompt_position
-PASS: gdb.base/commands.exp: if test in test_command_prompt_position
-PASS: gdb.base/commands.exp: > OK in test_command_prompt_position
+PASS: gdb.base/commands.exp: test_command_prompt_position: break factorial
+PASS: gdb.base/commands.exp: test_command_prompt_position: set value to 5
+PASS: gdb.base/commands.exp: test_command_prompt_position: if test
+PASS: gdb.base/commands.exp: test_command_prompt_position: > OK
[...]
gdb/testsuite/ChangeLog:
2016-11-09 Pedro Alves <palves@redhat.com>
* gdb.base/commands.exp (gdbvar_simple_if_test)
(gdbvar_simple_while_test, gdbvar_complex_if_while_test)
(progvar_simple_if_test, progvar_simple_while_test)
(progvar_complex_if_while_test, if_while_breakpoint_command_test)
(infrun_breakpoint_command_test, breakpoint_command_test)
(user_defined_command_test, watchpoint_command_test)
(test_command_prompt_position, deprecated_command_test)
(bp_deleted_in_command, temporary_breakpoint_commands)
(stray_arg0_test, source_file_with_indented_comment)
(recursive_source_test, if_commands_test)
(error_clears_commands_left, redefine_hook_test)
(redefine_backtrace_test): Use proc_with_prefix.
* lib/gdb.exp (proc_with_prefix): New proc.
Pedro Alves [Wed, 9 Nov 2016 15:09:31 +0000 (15:09 +0000)]
Fix formattting of gdb/ChangeLog and gdb/testsuite/ChangeLog enties
Leading tab/spaces. Missing periods. Duplicate date.
Pedro Alves [Wed, 9 Nov 2016 12:49:43 +0000 (12:49 +0000)]
agent_expr_up: gdb::unique_ptr -> std::unique_ptr
Now that we require C++11, use std::unique_ptr directly. This allows
simplifying collection_list a bit by placing unique pointers in the
vector directly, making the vector own its elements.
gdb/ChangeLog:
2016-11-09 Pedro Alves <palves@redhat.com>
* ax-gdb.c (agent_eval_command_one): Use std::move instead of
gdb::move.
* ax.h (agent_expr_up): Use std::unique_ptr instead of
gdb::unique_ptr.
* breakpoint.c (parse_cond_to_aexpr): Use std::move instead of
gdb::move.
* tracepoint.c (collection_list::collect_symbol): Likewise.
(collection_list::~collection_list): Delete.
(encode_actions_1): Use std::move instead of gdb::move.
(collection_list::add_aexpr): Use std::move instead of
unique_ptr::release.
* tracepoint.h (collection_list) <~collection_list>: Delete
declaration.
<m_aexprs>: Now a vector of agent_ptr_up.
Pedro Alves [Wed, 9 Nov 2016 14:53:58 +0000 (14:53 +0000)]
gdb: Use vector::emplace_back
Now that we require C++11, we can use vector::emplace_back to
construct elements in place instead of constructing and then copying.
gdb/ChangeLog:
2016-11-09 Pedro Alves <palves@redhat.com>
* main.c (struct cmdarg): Add constructor.
(captured_main_1): Use vector::emplace_back.
* tracepoint.c (collection_list::add_memrange): Likewise.
Andreas Arnez [Wed, 9 Nov 2016 12:02:13 +0000 (13:02 +0100)]
tui-winsource: Remove failed-allocation logic
This removes dead code in tui_alloc_source_buffer for handling a NULL
return value from xmalloc.
gdb/ChangeLog:
* tui/tui-winsource.c (tui_alloc_source_buffer): Remove
failed-xmalloc handling.
Andreas Arnez [Wed, 9 Nov 2016 12:02:13 +0000 (13:02 +0100)]
tui-winsource: Allocate for actual lines only
The logic for allocating a TUI source window's content buffer allocates
two more lines than needed, because it does not reduce the window height
by the highlight box's overhead. However, it does reduce the line width
accordingly. This patch makes the height and width calculation
consistent and improves the comment.
gdb/ChangeLog:
* tui/tui-winsource.c (tui_alloc_source_buffer): Subtract
highlight box's overhead when calculating the content height.
Andreas Arnez [Wed, 9 Nov 2016 12:02:13 +0000 (13:02 +0100)]
tui-disasm: Fix line buffer size calculation
The code that fills the TUI disassembly window content first calculates
the maximum full length of a displayed disassembly line. This
calculation typically yields the wrong result. The result is too large,
so the bug does not cause any run-time failures, but unnecessary
confusion for the reader. This patch fixes the calculation.
gdb/ChangeLog:
* tui/tui-disasm.c (tui_set_disassem_content): Fix calculation of
the longest disassembly line's length.
Andreas Arnez [Wed, 9 Nov 2016 12:02:12 +0000 (13:02 +0100)]
tui-disasm: Fix window content buffer overrun
A user reported a GDB crash with TUI when trying to debug a function
with a long demangled C++ method name. It turned out that the logic for
displaying the TUI disassembly window has a bug that can cause a buffer
overrun, possibly overwriting GDB-internal data structures. In
particular, the logic performs an unguarded strcpy.
Another (harmless) bug in tui_alloc_source_buffer causes the buffer to
be two lines longer than needed. This may have made the crash appear
less frequently.
gdb/ChangeLog:
* tui/tui-disasm.c (tui_set_disassem_content): Fix line buffer
overrun due to unchecked strcpy.
gdb/testsuite/ChangeLog:
* gdb.base/tui-layout.c: New file.
* gdb.base/tui-layout.exp: Use tui-layout.c, to ensure that the
disassembly window contains very long lines.
Tristan Gingold [Wed, 9 Nov 2016 09:25:00 +0000 (10:25 +0100)]
darwin-nat.c: handle Darwin 16 (aka Sierra).
Support message from new task and dead name notification on task of an
existing process.
With Sierra, exec(2) terminate the current task and creates a new one.
'set startup-with-shell off' must still be used on Darwin 16.
2016-11-09 Tristan Gingold <gingold@adacore.com>
* darwin-nat.c (find_inferior_task_it): Fix indentation.
(find_inferior_notify_it): Remove.
(find_inferior_pid_it): New function.
(darwin_find_inferior_by_notify): Remove.
(darwin_find_inferior_by_pid): New function.
(darwin_find_new_inferior): New function.
(darwin_check_message_ndr): New function from
darwin_decode_exception_message.
(darwin_decode_exception_message): Call darwin_check_message_ndr.
Handle SIGTRAP addressed to an unknown task (when a task spawned).
(darwin_decode_notify_message): New function.
(darwin_decode_message): Handle unknown task.
(darwin_deallocate_threads): New function from darwin_mourn_inferior.
(darwin_mourn_inferior): Use darwin_deallocate_threads and
darwin_deallocate_exception_ports.
(darwin_deallocate_exception_ports): New function from
darwin_mourn_inferior.
(darwin_setup_exceptions): New function from darwin_attach_pid.
(darwin_setup_request_notification): Likewise.
(darwin_attach_pid): Call darwin_setup_request_notification and
darwin_setup_request_notification.
GDB Administrator [Wed, 9 Nov 2016 00:00:27 +0000 (00:00 +0000)]
Automatic date update in version.in
H.J. Lu [Tue, 8 Nov 2016 19:03:06 +0000 (11:03 -0800)]
X86: Remove the THREE_BYTE_0F7A entry
Remove the THREE_BYTE_0F7A entry which is leftover from SSE5.
PR binutils/20701
* i386-dis.c (THREE_BYTE_0F7A): Removed.
(dis386_twobyte): Don't use THREE_BYTE_0F7A.
(three_byte_table): Remove THREE_BYTE_0F7A.
Tom Tromey [Mon, 31 Oct 2016 17:23:34 +0000 (11:23 -0600)]
Fix py-value.exp failure on Python 3
I happened to notice that one test in py-value.exp did not work
properly with Python 3. This patch fixes the problem.
2016-11-08 Tom Tromey <tom@tromey.com>
* gdb.python/py-value.exp (test_value_creation): Make "long" test
depend on Python 2.
Tom Tromey [Mon, 31 Oct 2016 17:10:35 +0000 (11:10 -0600)]
Fix some error-handling bugs in python frame filters
While writing a Python frame filter, I found a few bugs in the current
frame filter code. In particular:
* One spot converts a Python long to a CORE_ADDR using PyLong_AsLong.
However, this can fail on overflow. I changed this to use
get_addr_from_python.
* Another spot is doing the same but with PyLong_AsUnsignedLongLong; I
changed this as well just for consistency.
* Converting line numbers can print "-1" if conversion from long
fails. This isn't fatal but just a bit ugly.
I've included a test case for the first issue. The line number one
didn't seem important enough to bother with.
2016-11-08 Tom Tromey <tom@tromey.com>
* python/py-framefilter.c (py_print_frame): Use
get_addr_from_python. Check for errors when getting line number.
2016-11-08 Tom Tromey <tom@tromey.com>
* gdb.python/py-framefilter.py (ElidingFrameDecorator.address):
New method.
Yao Qi [Tue, 8 Nov 2016 16:02:42 +0000 (16:02 +0000)]
Remove parameter valaddr from la_val_print
Nowadays, we pass both val and return value of
value_contents_for_printing (val) to la_val_print. The latter is
unnecessary. This patch removes the second parameter of la_val_print,
and get valaddr in each language's implementation by calling
value_contents_for_printing. Since value_contents_for_printing calls
value_fetch_lazy, I also make VAL non-const.
Note that
- I don't clean up the valaddr usages in each language's routines,
- I don't remove valaddr from apply_ext_lang_val_pretty_printer, and
extension language ops apply_val_pretty_printer.
They can be done in followup patches.
gdb:
2016-11-08 Yao Qi <yao.qi@linaro.org>
* ada-lang.h (ada_val_print): Remove second parameter. Remove
const from "struct value *".
* ada-valprint.c (print_field_values): Remove const from
"struct value *".
(val_print_packed_array_elements): Likewise.
(print_variant_part): Likewise.
(ada_val_print_string): Likewise.
(ada_val_print_gnat_array): Likewise.
(ada_val_print_ptr): Likewise.
(ada_val_print_num): Likewise.
(ada_val_print_enum): Likewise.
(ada_val_print_flt): Likewise.
(ada_val_print_union): Likewise.
(ada_val_print_struct_union): Likewise.
(ada_val_print_ref): Likewise.
(ada_val_print_1): Remove second parameter. Remove const from
"struct value *".
(ada_val_print): Likewise.
* c-lang.h (c_val_print): Likewise.
* c-valprint.c (c_val_print_array): Remove const from
"struct value *".
(c_val_print_ptr): Likewise.
(c_val_print_struct): Likewise.
(c_val_print_union): Likewise.
(c_val_print_int): Likewise.
(c_val_print_memberptr): Likewise.
(c_val_print): Remove second parameter. Remove const from
"struct value *". All callers updated.
* cp-valprint.c (cp_print_value): Remove const from
"struct value *".
(cp_print_value_fields): Likewise.
(c_val_print_value): Likewise.
* d-lang.h (d_val_print): Remove second parameter. Remove const
from "struct value *".
* d-valprint.c (dynamic_array_type): Likewise.
(d_val_print): Likewise.
* f-lang.h (f_val_print): Likewise.
* f-valprint.c (f_val_print): Likewise.
* go-lang.h (go_val_print): Likewise.
* go-valprint.c (print_go_string): Likewise.
(go_val_print): Likewise.
* language.c (unk_lang_val_print): Likewise.
* language.h (struct language_defn) <la_val_print>: Likewise.
Update comments.
(LA_VAL_PRINT): Remove.
* m2-lang.h (m2_val_print): Remove const from
"struct value *".
* m2-valprint.c (m2_print_array_contents): Likewise.
(m2_val_print): Likewise.
* p-lang.h (pascal_val_print): Remove second parameter. Remove
const from "struct value *".
(pascal_object_print_value_fields): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
(pascal_object_print_value_fields): Likewise.
(pascal_object_print_value): Likewise.
* rust-lang.c (rust_get_disr_info): Likewise.
(val_print_struct): Likewise.
(rust_val_print): Likewise.
* valprint.c (generic_val_print_array): Likewise.
(generic_val_print_ptr): Likewise.
(generic_val_print_memberptr): Likewise.
(generic_val_print_ref): Likewise.
(generic_val_print_enum): Likewise.
(generic_val_print_flags): Likewise.
(generic_val_print_func): 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.
(generic_val_print): Likewise.
(val_print): Likewise.
(common_val_print): Likewise.
(val_print_type_code_flags): Likewise.
(val_print_scalar_formatted): Likewise.
(val_print_array_elements): Likewise.
* valprint.h (val_print_array_elements): Update declaration.
(val_print_scalar_formatted): Likewise.
(generic_val_print): Likewise.
* value.h (val_print): Likewise.
Yao Qi [Tue, 8 Nov 2016 15:58:47 +0000 (15:58 +0000)]
Use get_frame_register_value instead of deprecated_frame_register_read
This patch calls get_frame_register_value instead of
deprecated_frame_register_read, so that we can pass
value_contents_for_printing to val_print. Both
get_frame_register_value and deprecated_frame_register_read call
frame_unwind_register_value indirectly, so no functionality is changed
by this patch.
gdb:
2016-11-08 Yao Qi <yao.qi@linaro.org>
* mt-tdep.c (mt_registers_info): Call
get_frame_register_value instead of
deprecated_frame_register_read.
* sh64-tdep.c (sh64_do_register): Likewise.
Pedro Alves [Tue, 8 Nov 2016 15:26:47 +0000 (15:26 +0000)]
Eliminate agent_expr_p; VEC -> std::vector in struct bp_target_info
After the previous patch, we end up with these two types with quite
similar, and potentially confusing names:
typedef gdb::unique_ptr<agent_expr> agent_expr_up;
/* Pointer to an agent_expr structure. */
typedef struct agent_expr *agent_expr_p;
The latter is only necessary to put agent_expr pointers in VECs. So
just eliminate it and use std::vector instead.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ax.h (agent_expr_p): Delete.
(DEF_VEC_P (agent_expr_p)): Delete.
* breakpoint.c (build_target_condition_list)
(build_target_command_list): Adjust to use of std::vector.
(bp_location_dtor): Remove now unnecessary VEC_free calls.
* breakpoint.h: Include <vector>.
(struct bp_target_info) <conditions, tcommands>: Now
std::vector's.
* remote.c (remote_add_target_side_condition): bp_tgt->conditions
is now a std::vector; adjust.
(remote_add_target_side_commands, remote_insert_breakpoint):
bp_tgt->tcommands is now a std::vector; adjust.
Pedro Alves [Tue, 8 Nov 2016 15:26:47 +0000 (15:26 +0000)]
'struct agent_expr *' -> unique_ptr<agent_expr>
This patch makes the gen_* functions return a unique_ptr instead of
raw pointer:
typedef gdb::unique_ptr<agent_expr> agent_expr_up;
and then adjusts the codebase throughout to stop using
make_cleanup_free_agent_expr.
The cond_bytecode and cmd_bytecode fields of struct bp_location are
owning pointers, so they're changed to be unique_ptr's instead of raw
pointers.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ax-gdb.c (is_nontrivial_conversion): Use agent_expr_up.
(gen_trace_for_var, gen_trace_for_expr, gen_eval_for_expr)
(gen_trace_for_return_address, gen_printf): Use and return an
agent_expr_up. Don't use make_cleanup_free_agent_expr.
(agent_eval_command_one, maint_agent_printf_command): Use
agent_expr_up. Don't use make_cleanup_free_agent_expr.
* ax-gdb.h (gen_trace_for_expr, gen_trace_for_var)
(gen_trace_for_return_address, gen_eval_for_expr, gen_printf): Use
agent_expr_up.
* ax-general.c (new_agent_expr): Rename to ...
(agent_expr::agent_expr): ... this, and now a constructor.
(free_agent_expr): Rename to ...
(agent_expr::~agent_exp): ... this, and now a destructor.
(do_free_agent_expr_cleanup, make_cleanup_free_agent_expr):
Delete.
* ax.h (struct agent_expr): Add ctor/dtor.
(agent_expr_up): New typedef.
(new_agent_expr, free_agent_expr, make_cleanup_free_agent_expr):
Delete declarations.
* breakpoint.c (parse_cond_to_aexpr): Use and return an
agent_expr_up. Don't use make_cleanup_free_agent_expr.
(build_target_condition_list): Adjust to use agent_expr_up.
(parse_cmd_to_aexpr): Use and return an agent_expr_up. Don't use
make_cleanup_free_agent_expr.
(build_target_command_list): Adjust to use agent_expr_up.
(force_breakpoint_reinsertion): Adjust to use agent_expr_up.
(bp_location_dtor): Remove unnecessary free_agent_expr and xfree
calls.
* breakpoint.h (struct bp_target_info) <cond_bytecode,
cmd_bytecode>: Now agent_expr_up's.
* remote.c (remote_download_tracepoint): Adjust to use
agent_expr_up and remove use of make_cleanup_free_agent_expr.
* tracepoint.c (validate_actionline, collect_symbol): Adjust to
use agent_expr_up and remove uses of make_cleanup_free_agent_expr.
(collection_list::~collection_list): Call delete instead of
free_agent_expr.
(encode_actions_1): Adjust to use agent_expr_up and remove uses of
make_cleanup_free_agent_expr.
(add_aexpr): Change parameter type to agent_expr_up; Return a raw
agent_expr pointer.
Pedro Alves [Tue, 8 Nov 2016 15:26:47 +0000 (15:26 +0000)]
Use ui_file_as_string throughout more
This replaces most of the remaining ui_file_xstrdup calls with
ui_file_as_string calls. Whenever a call was replaced, that led to a
cascade of other necessary adjustments throughout, to make the code
use std::string instead of raw pointers. And then whenever I added a
std::string as member of a struct, I needed to adjust
allocation/destruction of said struct to use new/delete instead of
xmalloc/xfree.
The stopping point was once gdb built again. These doesn't seem to be
a way to reasonably split this out further.
Maybe-not-obvious changes:
- demangle_for_lookup returns a cleanup today. To get rid of that,
and avoid unnecessary string dupping/copying, this introduces a
demangle_result_storage type that the caller instantiates and
passes to demangle_for_lookup.
- Many methods returned a "char *" to indicate that the caller owns
the memory and must free it. Those are switched to return a
std::string instead. Methods that return a "view" into some
internal string return a "const char *" instead. I.e., we only
copy/allocate when necessary.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_name_for_lookup, type_as_string): Use and return
std::string.
(type_as_string_and_cleanup): Delete.
(ada_lookup_struct_elt_type): Use type_as_string.
* ada-lang.h (ada_name_for_lookup): Now returns std::string.
* ada-varobj.c (ada_varobj_scalar_image): Return a std::string.
(ada_varobj_describe_child): Make 'child_name' and
'child_path_expr' parameters std::string pointers.
(ada_varobj_describe_struct_child, ada_varobj_describe_ptr_child):
Likewise, and use string_printf.
(ada_varobj_describe_simple_array_child)
(ada_varobj_describe_child): Likewise.
(ada_varobj_get_name_of_child, ada_varobj_get_path_expr_of_child)
(ada_varobj_get_value_image)
(ada_varobj_get_value_of_array_variable)
(ada_varobj_get_value_of_variable, ada_name_of_variable)
(ada_name_of_child, ada_path_expr_of_child)
(ada_value_of_variable): Now returns std::string. Use
string_printf.
(ada_value_of_child): Adjust.
* break-catch-throw.c (check_status_exception_catchpoint): Adjust
to use std::string.
* breakpoint.c (watch_command_1): Adjust to use std::string.
* c-lang.c (c_get_string): Adjust to use std::string.
* c-typeprint.c (print_name_maybe_canonical): Use std::string.
* c-varobj.c (varobj_is_anonymous_child): Use ==/!= std::string
operators.
(c_name_of_variable): Now returns a std::string.
(c_describe_child): The 'cname' and 'cfull_expression' output
parameters are now std::string pointers. Adjust.
(c_name_of_child, c_path_expr_of_child, c_value_of_variable)
(cplus_number_of_children): Adjust to use std::string and
string_printf.
(cplus_name_of_variable): Now returns a std::string.
(cplus_describe_child): The 'cname' and 'cfull_expression' output
parameters are now std::string pointers. Adjust.
(cplus_name_of_child, cplus_path_expr_of_child)
(cplus_value_of_variable): Now returns a std::string.
* cp-abi.c (cplus_typename_from_type_info): Return std::string.
* cp-abi.h (cplus_typename_from_type_info): Return std::string.
(struct cp_abi_ops) <get_typename_from_type_info>: Return
std::string.
* cp-support.c (inspect_type): Use std::string.
(cp_canonicalize_string_full, cp_canonicalize_string_no_typedefs)
(cp_canonicalize_string): Return std::string and adjust.
* cp-support.h (cp_canonicalize_string)
(cp_canonicalize_string_no_typedefs, cp_canonicalize_string_full):
Return std::string.
* dbxread.c (read_dbx_symtab): Use std::string.
* dwarf2read.c (dwarf2_canonicalize_name): Adjust to use std::string.
* gdbcmd.h (lookup_struct_elt_type): Adjust to use std::string.
* gnu-v3-abi.c (gnuv3_get_typeid): Use std::string.
(gnuv3_get_typename_from_type_info): Return a std::string and
adjust.
(gnuv3_get_type_from_type_info): Adjust to use std::string.
* guile/guile.c (gdbscm_execute_gdb_command): Adjust to use
std::string.
* infcmd.c (print_return_value_1): Adjust to use std::string.
* linespec.c (find_linespec_symbols): Adjust to
demangle_for_lookup API change. Use std::string.
* mi/mi-cmd-var.c (print_varobj, mi_cmd_var_set_format)
(mi_cmd_var_info_type, mi_cmd_var_info_path_expression)
(mi_cmd_var_info_expression, mi_cmd_var_evaluate_expression)
(mi_cmd_var_assign, varobj_update_one): Adjust to use std::string.
* minsyms.c (lookup_minimal_symbol): Use std::string.
* python/py-varobj.c (py_varobj_iter_next): Use new instead of
XNEW. vitem->name is a std::string now, adjust.
* rust-exp.y (convert_ast_to_type, convert_name): Adjust to use
std::string.
* stabsread.c (define_symbol): Adjust to use std::string.
* symtab.c (demangle_for_lookup): Now returns 'const char *'. Add
a demangle_result_storage parameter. Use it for storage.
(lookup_symbol_in_language)
(lookup_symbol_in_objfile_from_linkage_name): Adjust to new
demangle_for_lookup API.
* symtab.h (struct demangle_result_storage): New type.
(demangle_for_lookup): Now returns 'const char *'. Add a
demangle_result_storage parameter.
* typeprint.c (type_to_string): Return std::string and use
ui_file_as_string.
* value.h (type_to_string): Change return type to std::string.
* varobj-iter.h (struct varobj_item) <name>: Now a std::string.
(varobj_iter_delete): Use delete instead of xfree.
* varobj.c (create_child): Return std::string instead of char * in
output parameter.
(name_of_variable, name_of_child, my_value_of_variable): Return
std::string instead of char *.
(varobj_create, varobj_get_handle): Constify 'objname' parameter.
Adjust to std::string fields.
(varobj_get_objname): Return a const char * instead of a char *.
(varobj_get_expression): Return a std::string.
(varobj_list_children): Adjust to use std::string.
(varobj_get_type): Return a std::string.
(varobj_get_path_expr): Return a const char * instead of a char *.
Adjust to std::string fields.
(varobj_get_formatted_value, varobj_get_value): Return a
std::string.
(varobj_set_value): Change type of 'expression' parameter to
std::string. Use std::string.
(install_new_value): Use std::string.
(delete_variable_1): Adjust to use std::string.
(create_child): Change the 'name' parameter to a std::string
reference. Swap it into the new item's name.
(create_child_with_value): Swap item's name into the new child's
name. Use string_printf.
(new_variable): Use new instead of XNEW.
(free_variable): Don't xfree fields that are now std::string.
(name_of_variable, name_of_child): Now returns std::string.
(value_of_root): Adjust to use std::string.
(my_value_of_variable, varobj_value_get_print_value): Return
and use std::string.
(varobj_value_get_print_value): Adjust to use ui_file_as_string
and std::string.
* varobj.h (struct varobj) <name, path_expr, obj_name,
print_value>: Now std::string's.
<name_of_variable, name_of_child, path_expr_of_child,
value_of_variable>: Return std::string.
(varobj_create, varobj_get_handle): Constify 'objname' parameter.
(varobj_get_objname): Return a const char * instead of a char *.
(varobj_get_expression, varobj_get_type): Return a std::string.
(varobj_get_path_expr): Return a const char * instead of a char *.
(varobj_get_formatted_value, varobj_get_value): Return a
std::string.
(varobj_set_value): Constify 'expression' parameter.
(varobj_value_get_print_value): Return a std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:47 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/language.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* language.c (add_language): Use ui_file_as_string and adjust to
use std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:46 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/rust-lang.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
Tom Tromey <tom@tromey.com>
* rust-lang.c (struct disr_info) <name>: Now a std::string.
(rust_get_disr_info): Use ui_file_as_string and adjust to use
std::string.
(rust_val_print): Adjust to use std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:46 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/infrun.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* infrun.c (print_target_wait_results): Use ui_file_as_string and
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:46 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/ada-lang.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ada-lang.c (type_as_string): Use ui_file_as_string and return
std::string.
(type_as_string_and_cleanup): Delete.
(ada_lookup_struct_elt_type): Use type_as_string.
Pedro Alves [Tue, 8 Nov 2016 15:26:46 +0000 (15:26 +0000)]
Use ui_file_as_string in gdbarch.sh/gdbarch.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* gdbarch.sh (verify_gdbarch): Use ui_file_as_string and
std::string.
* gdbarch.c: Regenerate.
Pedro Alves [Tue, 8 Nov 2016 15:26:46 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/c-exp.y
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* c-exp.y (OPERATOR NEW): Adjust to use ui_file_as_string and
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:46 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/compile/
Using ui_file_as_string would imply changing a few prototypes to pass
around source and object file names as std::string. Instead of that,
wrap those two in a new class. This ends up eliminating a small
wrinkle: get_new_file_names and compile_object_load have swapped
parameters. The former takes "source, objfile", while the latter
takes "objfile, source".
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* c-lang.h (c_compute_program): Now returns std::string.
* compile/compile-internal.h (class compile_file_names): New
class.
* compile/compile-object-load.c (compile_object_load): Replace
object_file and source_file parameters with a compile_file_names
parameter. Adjust.
* compile-object-load.h: Include "compile-internal.h".
(compile_object_load): Replace object_file and source_file
parameters with a compile_file_names parameter.
* compile/compile-c-support.c (c_compute_program): Now returns a
std::string. Use ui_file_as_string.
* compile/compile.c (get_new_file_names): Remove parameters and
return a compile_file_names instead.
(compile_to_object): Now returns a compile_file_names. Use
ui_file_as_string.
(eval_compile_command): Use compile_file_names.
* language.h (struct language_defn) <la_compute_program>: Now
returns std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/cli/cli-setshow.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* cli/cli-setshow.c (do_show_command): Adjust to use
ui_file_as_string and std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/remote.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* remote.c (escape_buffer): Use ui_file_as_string and return
std::string.
(putpkt_binary, read_frame): Adjust to use std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/python/
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* python/py-arch.c (archpy_disassemble): Use ui_file_as_string and
std::string.
* python/py-breakpoint.c (bppy_get_commands): Use
ui_file_as_string and std::string.
* python/py-frame.c (frapy_str): Likewise.
* python/py-type.c (typy_str): Likewise.
* python/py-unwind.c (unwind_infopy_str): Likewise.
* python/py-value.c (valpy_str): Likewise.
Pedro Alves [Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/printcmd.c
Yet another cleanup eliminated.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* printcmd.c (eval_command): Use ui_file_as_string and
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/top.c
Yet another cleanup is eliminated.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* top.c (quit_confirm): Use ui_file_as_string and std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:45 +0000 (15:26 +0000)]
Use ui_file_as_string in execute_command_to_string
... and then return std::string and adjust all callers.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* gdbcmd.h (execute_command_to_string): Now returns std::string.
(lookup_struct_elt_type): Adjust to use std::string.
* top.c (execute_command_to_string): Use ui_file_as_string and
return std::string.
* guile/guile.c (gdbscm_execute_gdb_command): Adjust to use
std::string.
* python/python.c (execute_gdb_command): Adjust to use
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:44 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/guile/
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
ui_file_as_string and adjust to use std::string.
* guile/scm-disasm.c (gdbscm_arch_disassemble): Likewise.
* guile/scm-frame.c (frscm_print_frame_smob): Likewise.
* guile/scm-type.c (tyscm_type_name): Use ui_file_as_string and
adjust to use std::string. Throw exception directly instead of
returning it in EXCP output parameter.
(tyscm_print_type_smob, gdbscm_type_print_name): Adjust to
tyscm_type_name interface change.
* guile/scm-value.c (vlscm_print_value_smob, gdbscm_value_print):
Use ui_file_as_string and std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:44 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/arm-tdep.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* arm-tdep.c (_initialize_arm_tdep): Use ui_file_as_string and
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:44 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/utils.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* utils.c (error_stream): Use ui_file_as_string and std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:44 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/ui-out.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ui-out.c (ui_out_field_stream): Use ui_file_as_string.
Pedro Alves [Tue, 8 Nov 2016 15:26:44 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/ada-valprint.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ada-valprint.c (ada_print_floating): Use ui_file_as_string and
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:44 +0000 (15:26 +0000)]
Use ui_file_as_string in gdb/xtensa-tdep.c
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* xtensa-tdep.c (xtensa_verify_config): Use ui_file_as_string and
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:44 +0000 (15:26 +0000)]
Use ui_file_as_string in dwarf2_compute_name
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* dwarf2read.c (dwarf2_compute_name): Use ui_file_as_string and
std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:43 +0000 (15:26 +0000)]
Clean up tracepoint.h/c:collection_list
Noticed we could do this while working on the expression_up change.
The main goal here was getting rid of the
encode_actions_and_make_cleanup / do_clear_collection_list cleanups.
While at it, uncrustify the code:
- Make collection_list a C++ class, with data members private (and
thus renamed m_...).
- Make related functions be member methods.
- Use std::vector instead of an open coding a vector implementation.
- Use std::sort instead of qsort.
- Rename the "list" member of collection_list, which is an incredibly
obfuscating name.
- Rename a couple other things here and there for clarify.
- Use "bool" more.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* mi/mi-main.c (print_variable_or_computed): Constify 'expression'
parameter.
(mi_cmd_trace_frame_collected): Call encode_actions instead of
encode_actions_and_make_cleanup. Adjust to use std::vector.
* tracepoint.c (memrange_cmp): Delete.
(memrange_comp): New.
(memrange_sortmerge): Take a memrange vector as parameter instead
of a collection_list. Use std::sort instead of qsort.
(add_register): Now a method of collection_list. Adjust to m_
prefix of data fields.
(add_memrange): Now a method of collection_list. Adjust to m_
prefix of data fields. Adjust to use std::vector.
(collect_symbol): Now a method of collection_list. Adjust to m_
prefix of data fields.
(do_collect_symbol): Adjust. Call add_wholly_collected instead of
accessing the vector directly.
(collection_list::add_wholly_collected): New.
(add_local_symbols): Now a method of collection_list.
(add_static_trace_data): Now a method of collection_list. Adjust
to use bool.
(clear_collection_list, do_clear_collection_list): Delete.
(init_collection_list): Delete.
(collection_list::collection_list): New.
(collection_list::~collection_list): New.
(stringify_collection_list): Rename to ...
(collection_list::stringify): ... this and adjust to being a
method of collection_list. Adjust to use of std::vector.
(append_exp): Now a method of collection_list. Use
ui_file_as_string. Adjust to std::vector.
(collection_list::finish): New.
(encode_actions_1): Adjust.
(encode_actions_and_make_cleanup): Rename to ...
(encode_actions)... this. No longer returns a cleanup. No longer
call init_collection_list nor install do_clear_collection_list
cleanups. Call collection_list::finish instead of
memrange_sortmerge directly.
(encode_actions_rsp): Adjust to call encode_actions instead of
encode_actions_and_make_cleanup. Adjust to method renames.
(add_aexpr): Now a method of collection_list.
* tracepoint.h: Include <vector> and <string>.
(struct memrange): Add constructors.
(struct collection_list): Now a class.
(class collection_list) <collection_list, ~collection_list,
add_wholly_collected, append_exp, add_aexpr, add_register,
add_memrange, collect_symbol, add_local_symbols,
add_static_trace_data, finish, stringify, wholly_collected, and
computed>: New methods.
<regs_mask>: Rename to ...
<m_regs_mask>: ... this.
<listsize, next_memrange, list>: Delete fields.
<m_memranges>: New field.
<aexpr_listsize, next_aexpr_elt, aexpr_list>: Delete fields.
<m_aexprs>: New field.
<strace_data>: Rename to ...
<m_strace_data>: ... this. Now a bool.
<wholly_collected>: Rename to ...
<m_wholly_collected>: ... this. Now a std::vector<std::string>.
<computed>: Rename to ...
<m_computed>: ... this. Now a std::vector<std::string>.
(encode_actions_and_make_cleanup): Delete declaration.
(encode_actions): New declaration.
Pedro Alves [Tue, 8 Nov 2016 15:26:43 +0000 (15:26 +0000)]
Introduce ui_file_as_string
ui_file_as_string is a variant of ui_file_xstrdup that returns a
std::string instead of a xmalloc'ed char *. The idea is using the new
function to eliminate "make_cleanup (xfree, ...)" cleanups
throughout.
Following patches will make use of this.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ui-file.c (do_ui_file_as_string, ui_file_as_string): New
functions.
* ui-file.h: Include <string>.
(ui_file_as_string): New declaration.
Pedro Alves [Tue, 8 Nov 2016 15:26:43 +0000 (15:26 +0000)]
'struct expression *' -> gdb::unique_xmalloc_ptr<expression>
This patch makes parse_expression and friends return a unique_ptr
instead of raw pointer [1]:
typedef gdb::unique_malloc_ptr<expression> expression_up;
and then adjusts the codebase throughout to stop using cleanups to
manage lifetime of expression pointers.
Whenever I found a structure owning an expression pointer, I made it
store a unique_ptr instead of a raw pointer, which then requires using
new/delete of the holding structure, instead of XNEW/xfree.
[1] - I'd like to set the rule that types named with an "_up" suffix
are unique_ptr typedefs.
Note I used gdb::unique_xmalloc_ptr instead of gdb::unique_ptr, simply
because we still use xmalloc instead of new to allocate expression
objects. Once that's changed, all we need to do is change the
expression_up typedef and the smart pointer will then call delete
instead of xfree.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_read_renaming_var_value): Use expression_up.
(struct ada_catchpoint_location) <excep_cond_expr>: Now an
expression_up.
(ada_catchpoint_location_dtor): Reset excep_cond_expr instead of
using xfree.
(create_excep_cond_exprs): Use expression_up and gdb::move.
(allocate_location_exception): Use new instead of XNEW.
(should_stop_exception): Likewise. Adjust to use expression_up.
(create_ada_exception_catchpoint): Use new instead of XNEW.
* ax-gdb.c (agent_eval_command_one): Use expression_up instead of
cleanups.
(maint_agent_printf_command): Use expression_up.
* break-catch-sig.c (create_signal_catchpoint): Use new instead of
XNEW.
* break-catch-syscall.c (create_syscall_event_catchpoint):
Likewise.
* break-catch-throw.c (handle_gnu_v3_exceptions): Use new instead
of XCNEW. Use gdb::unique_ptr instead of cleanups.
* breakpoint.c (set_breakpoint_condition, update_watchpoint)
(parse_cmd_to_aexpr, watchpoint_check)
(bpstat_check_breakpoint_conditions, watchpoint_locations_match):
Adjust to use expression_up.
(init_bp_location): Adjust.
(free_bp_location): Use delete instead of xfree.
(set_raw_breakpoint_without_location, set_raw_breakpoint)
(add_solib_catchpoint, create_fork_vfork_event_catchpoint)
(new_single_step_breakpoint, create_breakpoint_sal): Use new
instead of XNEW.
(find_condition_and_thread): Adjust to use expression_up.
(create_breakpoint): Use new instead of XNEW.
(dtor_watchpoint): Don't xfree expression pointers, they're
unique_ptr's now.
(insert_watchpoint, remove_watchpoint): Adjust.
(watch_command_1): Use expression_up. Use new instead of XCNEW.
(catch_exec_command_1): Use new instead of XNEW.
(bp_location_dtor): Don't xfree expression pointers, they're
unique_ptr's now.
(base_breakpoint_allocate_location)
(strace_marker_create_breakpoints_sal): Use new instead of XNEW.
(delete_breakpoint): Use delete instead of xfree.
* breakpoint.h (struct bp_location) <cond>: Now an
unique_ptr<expression> instead of a raw pointer.
(struct watchpoint) <exp, cond_exp>: Likewise.
* cli/cli-script.c (execute_control_command): Use expression_up
instead of cleanups.
* dtrace-probe.c (dtrace_process_dof_probe): Use expression_up.
* eval.c (parse_and_eval_address, parse_and_eval_long)
(parse_and_eval, parse_to_comma_and_eval, parse_and_eval_type):
Use expression_up instead of cleanups.
* expression.h (expression_up): New typedef.
(parse_expression, parse_expression_with_language, parse_exp_1):
Change return type to expression_up.
* mi/mi-main.c (mi_cmd_data_evaluate_expression)
(print_variable_or_computed): Use expression_up.
* objc-lang.c (print_object_command): Use expression_up instead of
cleanups.
* parse.c (parse_exp_1, parse_exp_in_context)
(parse_exp_in_context_1, parse_expression)
(parse_expression_with_language): Return an expression_up instead
of a raw pointer.
(parse_expression_for_completion): Use expression_up.
* printcmd.c (struct display) <exp>: Now an expression_up instead
of a raw pointer.
(print_command_1, output_command_const, set_command, x_command):
Use expression_up instead of cleanups.
(display_command): Likewise. Use new instead of XNEW.
(free_display): Use delete instead of xfree.
(do_one_display): Adjust to use expression_up.
* remote.c (remote_download_tracepoint): Likewise.
* stack.c (return_command): Likewise.
* tracepoint.c (validate_actionline, encode_actions_1): Use
expression_up instead of cleanups.
* typeprint.c (whatis_exp, maintenance_print_type): Likewise.
* value.c (init_if_undefined_command): Likewise.
* varobj.c (struct varobj_root) <exp>: Now an expression_up
instead of a raw pointer.
(varobj_create): Adjust.
(varobj_set_value): Use an expression_up instead of cleanups.
(new_root_variable): Use new instead of XNEW.
(free_variable): Use delete instead of xfree.
(value_of_root_1): Use std::swap.
Pedro Alves [Tue, 8 Nov 2016 15:26:43 +0000 (15:26 +0000)]
cli-script.c: Simplify using std::string, eliminate cleanups
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* cli/cli-script.c (execute_control_command): Use std::string
instead of cleanups.
(locate_arg): Constify return type.
(insert_args): Constify paremeter. Simplify using std::string.
Return a std::string.
Pedro Alves [Tue, 8 Nov 2016 15:26:43 +0000 (15:26 +0000)]
breakpoint.c:commands_command_1 constification and cleanup
This is constification needed for next patch. Adjust
commands_command_1 to use std::string too because the "arg" parameter
is currently overwritten and then passed to make_cleanup. The
constification alone would trigger a compile error in the make_cleanup
call otherwise (passing const char * to void * parameter). Using
std::string gets rid of the cleanup in the first place, resulting in
simpler code.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* breakpoint.c (struct commands_info) <arg>: Constify.
(commands_command_1): Constify 'arg' parameter. Use std::string
and string_printf.
(commands_from_control_command): Constify 'arg' parameter.
(map_breakpoint_numbers): Constify 'args' parameter.
* breakpoint.h (commands_from_control_command): Constify 'arg'
parameter.
Pedro Alves [Tue, 8 Nov 2016 15:26:42 +0000 (15:26 +0000)]
cli/cli-script.c: Remove some dead NULL checks
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* cli/cli-script.c (execute_control_command): Assume insert_args
never returns NULL.
(insert_args): Assume xmalloc never returns NULL.
Pedro Alves [Tue, 8 Nov 2016 15:26:42 +0000 (15:26 +0000)]
Introduce string_printf
This introduces the string_printf function. Like asprintf, but
returns a std::string.
gdb/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* Makefile.in (COMMON_OBS): Add utils-selftests.o.
* common/common-utils.c (string_printf): New function.
* common/common-utils.h: Include <string>.
(string_printf): Declare.
* utils-selftests.c: New file.
Nick Clifton [Tue, 8 Nov 2016 15:03:46 +0000 (15:03 +0000)]
Fix heap-buffer-overflow error detected by address sanitization on a fuzzed binary.
PR binutils/20794
* readelf.c (process_section_headers): Fix off-by-one error when
checking for invalid sh_link and sh_info fields.
Yao Qi [Tue, 8 Nov 2016 14:28:32 +0000 (14:28 +0000)]
gdbarch software_single_step returns VEC (CORE_ADDR) *
This patch changes gdbarch method software_single_step to return a
vector of addresses on which GDB should insert breakpoints, and don't
insert breakpoints. Instead, the caller of
gdbarch_software_single_step inserts breakpoints if the returned
vector is not NULL.
gdb:
2016-11-08 Yao Qi <yao.qi@linaro.org>
* aarch64-tdep.c (aarch64_software_single_step): Return
VEC (CORE_ADDR) *. Return NULL instead of 0. Don't call
insert_single_step_breakpoint.
* alpha-tdep.c (alpha_deal_with_atomic_sequence): Likewise.
(alpha_software_single_step): Likewise.
* alpha-tdep.h (alpha_software_single_step): Update declaration.
* arm-linux-tdep.c (arm_linux_software_single_step): Return
VEC (CORE_ADDR) *. Return NULL instead of 0.
* arm-tdep.c (arm_software_single_step): Return NULL instead of 0.
* arm-tdep.h (arm_software_single_step): Update declaration.
* breakpoint.c (insert_single_step_breakpoints): New function.
* breakpoint.h (insert_single_step_breakpoints): Declare.
* cris-tdep.c (cris_software_single_step): Return
VEC (CORE_ADDR) *. Don't call insert_single_step_breakpoint.
* gdbarch.sh (software_single_step): Change it to return
VEC (CORE_ADDR) *.
* gdbarch.c, gdbarch.h: Regenerated.
* infrun.c (maybe_software_singlestep): Adjust.
* mips-tdep.c (mips_deal_with_atomic_sequence): Return
VEC (CORE_ADDR) *. Don't call insert_single_step_breakpoint.
(micromips_deal_with_atomic_sequence): Likewise.
(deal_with_atomic_sequence): Likewise.
(mips_software_single_step): Likewise.
* mips-tdep.h (mips_software_single_step): Update declaration.
* moxie-tdep.c (moxie_software_single_step): Likewise.
* nios2-tdep.c (nios2_software_single_step): Likewise.
* ppc-tdep.h (ppc_deal_with_atomic_sequence): Update
declaration.
* record-full.c (record_full_resume): Adjust.
(record_full_wait_1): Likewise.
* rs6000-aix-tdep.c (rs6000_software_single_step): Return
VEC (CORE_ADDR) *. Don't call insert_single_step_breakpoint.
* rs6000-tdep.c (ppc_deal_with_atomic_sequence): Return
VEC (CORE_ADDR) *. Don't call insert_single_step_breakpoint.
* s390-linux-tdep.c (s390_software_single_step): Likewise.
* sparc-tdep.c (sparc_software_single_step): Likewise.
* spu-tdep.c (spu_software_single_step): Likewise.
* tic6x-tdep.c (tic6x_software_single_step): Likewise.
Yao Qi [Tue, 8 Nov 2016 12:58:33 +0000 (12:58 +0000)]
Clear addr bit in next_pcs vector
This patch is to split the loop of calling gdbarch_addr_bits_remove
and insert_single_step_breakpoint into two loops.
gdb:
2016-11-08 Yao Qi <yao.qi@linaro.org>
* arm-linux-tdep.c (arm_linux_software_single_step): Write
adjusted address back to vector. Call insert_single_step_breakpoint
in a new loop.
* arm-tdep.c (arm_software_single_step): Likewise.
Yao Qi [Tue, 8 Nov 2016 12:47:16 +0000 (12:47 +0000)]
Remove arm_insert_single_step_breakpoint
This patch is to remove arm_insert_single_step_breakpoint.
gdb:
2016-11-08 Yao Qi <yao.qi@linaro.org>
* arm-linux-tdep.c (arm_linux_software_single_step): Don't
call arm_insert_single_step_breakpoint, call
insert_single_step_breakpoint instead.
* arm-tdep.c (arm_insert_single_step_breakpoint): Remove.
(arm_software_single_step): Don't call
arm_insert_single_step_breakpoint, call
insert_single_step_breakpoint instead.
* arm-tdep.h (arm_insert_single_step_breakpoint): Remove
declaration.
Cordian A. Daniluk [Sat, 29 Oct 2016 18:39:57 +0000 (20:39 +0200)]
Fix PR breakpoints/20739: Badly formatted adress string in error message
Remove duplicate `0x'-prefix for the hex address printed. `paddress'
already prepends this, so no need to do it manually.
gdb/ChangeLog:
2016-11-08 Cordian A. Daniluk <th3c0r1uk@gmail.com>
PR breakpoints/20739
* breakpoint.c (check_fast_tracepoint_sals): Don't print duplicate
0x prefix.
Pedro Alves [Tue, 8 Nov 2016 12:32:05 +0000 (12:32 +0000)]
Fix bfd/dwarf2.c build breakage
Fix build breakage introduced by commit
089e3718bd8d ("Greatly improve
the speed if looking up DWARF line number information."):
- bfd_boolean is_linkage;
- const char *name;
- struct arange arange;
+ int line;
+ int tag;
+ bfd boolean is_linkage;
bfd/ChangeLog:
2016-11-08 Pedro Alves <palves@redhat.com>
* dwarf2.c (struct funcinfo) <is_linkage>: Type is bfd_boolean,
not "bfd boolean".
Igor Tsimbalist [Tue, 8 Nov 2016 12:01:58 +0000 (12:01 +0000)]
Greatly improve the speed if looking up DWARF line number information.
* dwarf2.c (comp_unit): Add new fields 'lookup_funcinfo_table' and
'number_of_functions' to keep lookup table and number of entries in
the table.
(line_sequence): Add new fields 'line_info_lookup' and 'num_lines'
to keep lookup table and number of entries in the table.
(lookup_funcinfo): New structure for lookup table for function
references.
(build_line_info_table): New function to create and build the lookup
table for line information.
(lookup_address_in_line_info_table): Use the lookup table instead of
traverse a linked list.
(compare_lookup_funcinfos): New compare fuction used in sorting of
lookup table for function references.
(build_lookup_funcinfo_table): New function to create, build and
sort the lookup table for functions references.
(lookup_address_in_function_table): Use the table instead of
traverse a linked list.
(_bfd_dwarf2_cleanup_debug_info): Free memory from function references
lookup table.
Yao Qi [Tue, 8 Nov 2016 11:32:53 +0000 (11:32 +0000)]
Fix indentation
gdb:
2016-11-08 Yao Qi <yao.qi@linaro.org>
* rust-lang.c (val_print_struct): Fix indentation.
Lionel Flandrin [Tue, 8 Nov 2016 10:27:36 +0000 (10:27 +0000)]
Check for truncated registers in process_g_packet
While investigating an unrelated issue in remote.c I noticed that the
bound checking for 'g' packets was bogus:
The previous code would only check that the first byte of the register
was within bounds before passing the buffer to regcache_raw_supply.
If it turned out that the register in the 'g' packet was incomplete
then regcache_raw_supply would proceed to memcpy out-of-bounds.
Since the buffer is allocated with alloca it's relatively unlikely to
crash (you just end up dumping gdb's stack into the cache) but it's
still a bit messy.
I changed this logic to check for truncated registers and raise an
error if one is encountered. Hopefully it should make debugging
remote stubs a bit easier.
gdb/ChangeLog:
2016-11-08 Lionel Flandrin <lionel@svkt.org>
* remote.c (process_g_packet): Detect truncated registers in 'g'
packets and raise an error.
GDB Administrator [Tue, 8 Nov 2016 00:00:34 +0000 (00:00 +0000)]
Automatic date update in version.in
H.J. Lu [Mon, 7 Nov 2016 22:58:38 +0000 (14:58 -0800)]
X86: Properly handle bad FPU opcode
Since Bad_Opcode and FGRPd9_2 were the same in i386-dis.c, all
Bad_Opcode entries in float_reg were displaced as FGRPd9_2. This
patch adds an entry for Bad_Opcode in fgrps to avoid treating it
as FGRPd9_2.
gas/
PR binutils/20775
* testsuite/gas/i386/i386.exp: Run fpu-bad.
* testsuite/gas/i386/fpu-bad.d: New file.
* testsuite/gas/i386/fpu-bad.s: Likewise.
opcodes/
PR binutils/20775
* i386-dis.c (FGRPd9_2): Replace 0 with 1.
(FGRPd9_4): Replace 1 with 2.
(FGRPd9_5): Replace 2 with 3.
(FGRPd9_6): Replace 3 with 4.
(FGRPd9_7): Replace 4 with 5.
(FGRPda_5): Replace 5 with 6.
(FGRPdb_4): Replace 6 with 7.
(FGRPde_3): Replace 7 with 8.
(FGRPdf_4): Replace 8 with 9.
(fgrps): Add an entry for Bad_Opcode.
Doug Evans [Mon, 7 Nov 2016 21:31:24 +0000 (13:31 -0800)]
Fix ext lang calls to value_struct_elt.
gdb/ChangeLog:
* guile/scm-value.c (gdbscm_value_field): Fix call to value_struct_elt.
* python/py-value.c (valpy_getitem): Ditto.
Doug Evans [Mon, 7 Nov 2016 21:27:22 +0000 (13:27 -0800)]
i386-tdep.c (i386_gdbarch_init): Add comments.
gdb/ChangeLog:
* i386-tdep.c (i386_gdbarch_init): Add comments.
Doug Evans [Mon, 7 Nov 2016 21:23:10 +0000 (13:23 -0800)]
python/py-unwind.c (unwind_infopy_str): Fix use of VEC_iterate.
gdb/ChangeLog:
* python/py-unwind.c (unwind_infopy_str): Fix use of VEC_iterate.
Doug Evans [Mon, 7 Nov 2016 21:15:48 +0000 (13:15 -0800)]
configure.tgt (x86_64-*-elf*): Remove i386bsd-tdep.o.
gdb/ChangeLog:
* configure.tgt (x86_64-*-elf*): Remove i386bsd-tdep.o.
Doug Evans [Mon, 7 Nov 2016 21:08:55 +0000 (13:08 -0800)]
Sync config.sub,config.guess with upstream.
Loïc Yhuel [Mon, 7 Nov 2016 16:00:21 +0000 (08:00 -0800)]
Add missing '$' in configure.ac.
2016-11-04 Loïc Yhuel <loic.yhuel@softathome.com>
gold/
* configure.ac: add missing '$'.
* configure: Regenerate.
Nick Clifton [Mon, 7 Nov 2016 15:05:34 +0000 (15:05 +0000)]
Fix infinite loop when processing rpath tokens.
PR ld/20784
* emultempl/elf32.em (search_needed): Fix infinite loop when
unable to process a token. Add support for curly braced enclosed
tokens.
* ld.texinfo (--rpath-link): Document supprot for $ORIGIN and
$LIB.
Nick Clifton [Mon, 7 Nov 2016 12:28:16 +0000 (12:28 +0000)]
Note that the linker's --compress-debug-sections option overrides the compression status of any input debug sections.
* ld.texinfo (--compress-debug-sections): Expand documentation of
this option.
GDB Administrator [Mon, 7 Nov 2016 00:00:23 +0000 (00:00 +0000)]
Automatic date update in version.in
GDB Administrator [Sun, 6 Nov 2016 00:00:24 +0000 (00:00 +0000)]
Automatic date update in version.in
Nathan Sidwell [Fri, 4 Nov 2016 03:42:23 +0000 (20:42 -0700)]
Fix gas crash with unreasonably long lines
gas/
* input-scrub.c (partial_size): Make size_t.
(buffer_length): Likewise. Adjust meaning.
(struct input_save): Adjust partial_size type.
(input_scrub_reinit): New.
(input_scrub_push, input_scrub_begin): Use it.
(input_scrub_next_buffer): Fix buffer extension logic. Only scan
newly read buffer for newline.
Simon Marchi [Sat, 5 Nov 2016 03:47:32 +0000 (23:47 -0400)]
Fix a few typos
gdb/ChangeLog:
* maint.c (scoped_command_stats::scoped_command_stats): Fix typo.
* ppcnbsd-tdep.c (_initialize_ppcnbsd_tdep): Likewise.
* ppcobsd-tdep.c (_initialize_ppcobsd_tdep): Likewise.
* ui-out.c (ui_out_new): Likewise.
* utils.c (init_page_info): Likewise.
(reset_prompt_for_continue_wait_time): Likewise.
* windows-nat.c (windows_init_thread_list): Likewise.
* xtensa-tdep.c (call0_analyze_prologue): Likewise.
GDB Administrator [Sat, 5 Nov 2016 00:00:20 +0000 (00:00 +0000)]
Automatic date update in version.in
Andrew Burgess [Tue, 27 Sep 2016 11:06:01 +0000 (12:06 +0100)]
arc/nps400: Validate address type operands correctly
When we match against an address type operand within an instruction it
is important that we match exactly the right address type operand early
on, during the opcode selection phase. If we wait until the operand
insertion phase to check that we have the correct address operand, then
it is too late to select an alternative opcode. This becomes important
only when we have multiple opcodes with the same mnemonic, and operand
lists that differ only in the type of the address operands.
This commit fixes this issue, and adds some example instructions that
require this issue to be fixed (the instructions are identical except
for the address type operand).
gas/ChangeLog:
* config/tc-arc.c (find_opcode_match): Use insert function to
validate matching address type operands.
* testsuite/gas/arc/nps400-10.d: New file.
* testsuite/gas/arc/nps400-10.s: New file.
opcodes/ChangeLog:
* arc-opc.c (arc_flag_operands): Add F_DI14.
(arc_flag_classes): Add C_DI14.
* arc-nps400-tbl.h: Add new exc instructions.
Andrew Burgess [Thu, 11 Aug 2016 15:04:59 +0000 (16:04 +0100)]
objcopy: Close some memory leaks in error paths
Closes some memory leaks within objcopy for error paths.
binutils/ChangeLog:
* objcopy.c (copy_section): Add extra calls to free for error
paths.
Tom Tromey [Mon, 22 Aug 2016 03:47:14 +0000 (21:47 -0600)]
set default-directory in dwarf-browse
I've been using dwarf-mode.el again recently and I found it mildly
annoying that the mode doesn't set default-directory. Setting it
means that operations in the dwarf-browsing buffer default to the
directory holding the object file being investigated.
This bumps the version number as well so that updating it via the
package manager works properly.
2016-11-04 Tom Tromey <tom@tromey.com>
* dwarf-mode.el (dwarf-browse): Set default-directory. Bump
version number.
Andreas Krebbel [Fri, 4 Nov 2016 18:48:35 +0000 (19:48 +0100)]
S/390: Fix 16 bit pc relative relocs.
Since the bpp instruction has been added the 16 bit wide pc relative
relocs might occur at offset 2 as well at offset 4 in an instruction.
With this patch the different adjustment is passed from
md_gather_operand to md_apply_fix via fx_pcrel_adjust field in the fix
data structure.
No regressions on s390x.
gas/ChangeLog:
2016-11-04 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/tc-s390.c (md_gather_operands): Set fx_pcrel_adjust.
(md_apply_fix): Use/Set fx_pcrel_adjust.
* testsuite/gas/s390/zarch-zEC12.d: Add bpp reloc test pattern.
* testsuite/gas/s390/zarch-zEC12.s: Add bpp reloc test.
Thomas Preud'homme [Fri, 4 Nov 2016 16:32:08 +0000 (16:32 +0000)]
Commit missing ChangeLog entry for Cortex-M33 support
2016-11-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
include/
* opcode/arm.h (ARM_AEXT_V8M_MAIN_DSP): Define.
(ARM_AEXT2_V8M_MAIN_DSP): Likewise.
(ARM_ARCH_V8M_MAIN_DSP): Likewise.
Thomas Preud'homme [Fri, 4 Nov 2016 16:24:59 +0000 (16:24 +0000)]
Add support for ARM Cortex-M33 processor
2016-11-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
gas/
* config/tc-arm.c (cortex-m33): Declare new processor.
* doc/c-arm.texi (-mcpu ARM command line option): Document new
Cortex-M33 processor.
* NEWS: Mention ARM Cortex-M33 support.
Thomas Preud'homme [Fri, 4 Nov 2016 16:24:08 +0000 (16:24 +0000)]
Add support for ARM Cortex-M23 processor
2016-11-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
gas/
* config/tc-arm.c (cortex-m23): Declare new processor.
* doc/c-arm.texi (-mcpu ARM command line option): Document new
Cortex-M23 processor.
* NEWS: Mention ARM Cortex-M23 support.
Palmer Dabbelt [Fri, 4 Nov 2016 16:08:31 +0000 (16:08 +0000)]
Add maintainers for RISC-V target.
* MAINTAINERS: Add myself and Andrew Waterman as maintainers for
the RISC-V target.
Palmer Dabbelt [Fri, 4 Nov 2016 14:18:06 +0000 (14:18 +0000)]
Update RISC-V documentation and make sure that it is included in the gas info file.
* Makefile.am (CPU_DOCS): Add c-riscv.texi.
* Makefile.in: Regenerate.
* doc/all.texi: Set RISCV.
* doc/as.texinfo: Add RISCV options.
Add RISC-V-Dependent node.
Include c-riscv.texi.
* doc/c-riscv.texi: Rename RISC-V Options to RISC-V-Opts.
Nick Clifton [Fri, 4 Nov 2016 13:57:40 +0000 (13:57 +0000)]
Remove support for $PLATFORM in rpath search paths.
* emultempl/elf32.em (search_needed): Remove use of getauxval and
inclusion of <sys/auxv.h>. Replace support for $PLATFORM with a
warning message.
* configure.ac (AC_CHECK_FUNCS): Remove getauxval.
* configure: Regenerate.
* config.in: Regenerate.
Nick Clifton [Fri, 4 Nov 2016 13:50:01 +0000 (13:50 +0000)]
Fix building binutils for all 32-bit targets by moving riscv32 target into 64-bit builds only.
* targets.c (bfd_target_vector): Only add riscv_elf32_vec target
when supporting 64-bit BFD targets.
Andrew Burgess [Tue, 20 Sep 2016 13:21:05 +0000 (14:21 +0100)]
ld: Allow EXCLUDE_FILE to be used outside of the section list
Currently the EXCLUDE_FILE linker script construct can only be used
within the input section list, and applied only to the section pattern
immediately following the EXCLUDE_FILE. For example:
*.o (EXCLUDE_FILE (a.o) .text .rodata)
In this case all sections matching '.text' are included from all files
matching '*.o' but not from the file 'a.o'. All sections matching
'.rodata' are also included from all files matching '*.o' (incluing from
'a.o').
If the user wants to restrict the inclusion of section '.rodata' so that
this too is not taken from the file 'a.o' then the above example must be
extended like this:
*.o (EXCLUDE_FILE (a.o) .text EXCLUDE_FILE (a.o) .rodata)
However, due to the internal grammar of the linker script language the
snippet 'EXCLUDE_FILE (a.o) .text' is parsed by a pattern called
'wildcard_spec'. The same 'wildcard_spec' pattern is also used to parse
the input file name snippet '*.o' in the above examples. As a result of
this pattern reuse within the linker script grammar then the following
is also a valid linker script construct:
EXCLUDE_FILE (a.o) *.o (.text .rodata)
However, though the linker accepts this without complaint the
EXCLUDE_FILE part is silently ignored and has no effect.
This commit takes this last example and makes it a useful, valid,
construct. The last example now means to include sections '.text' and
'.rodata' from all files matching '*.o' except for the file 'a.o'.
If the list of input sections is long, and the user knows that the file
exclusion applies across the list then the second form might be a
clearer alternative to replicating the EXCLUDE_FILE construct.
I've added a set of tests for EXCLUDE_FILE to the linker, including
tests for the new functionality.
ld/ChangeLog:
* ldlang.h (struct lang_wild_statement_struct): Add
exclude_name_list field.
* ldlang.c (walk_wild_file_in_exclude_list): New function.
(walk_wild_consider_section): Use new
walk_wild_file_in_exclude_list function.
(walk_wild_file): Add call to walk_wild_file_in_exclude_list.
(print_wild_statement): Print new exclude_name_list field.
(lang_add_wild): Initialise new exclude_name_list field.
* testsuite/ld-scripts/exclude-file-1.d: New file.
* testsuite/ld-scripts/exclude-file-1.map: New file.
* testsuite/ld-scripts/exclude-file-1.t: New file.
* testsuite/ld-scripts/exclude-file-2.d: New file.
* testsuite/ld-scripts/exclude-file-2.map: New file.
* testsuite/ld-scripts/exclude-file-2.t: New file.
* testsuite/ld-scripts/exclude-file-3.d: New file.
* testsuite/ld-scripts/exclude-file-3.map: New file.
* testsuite/ld-scripts/exclude-file-3.t: New file.
* testsuite/ld-scripts/exclude-file-4.d: New file.
* testsuite/ld-scripts/exclude-file-4.map: New file.
* testsuite/ld-scripts/exclude-file-4.t: New file.
* testsuite/ld-scripts/exclude-file-a.s: New file.
* testsuite/ld-scripts/exclude-file-b.s: New file.
* testsuite/ld-scripts/exclude-file.exp: New file.
* ld.texinfo (Input Section Basics): Update description of
EXCLUDE_FILE to cover the new features.
* NEWS: Mention new EXCLUDE_FILE usage.
Andrew Burgess [Tue, 20 Sep 2016 14:25:55 +0000 (15:25 +0100)]
ld: Create test object files based on source file name
When creating object files during testing, base the name of the object
file on the name of the source file, rather than using dump0.o,
dump1.o, etc. There's a few places where we have multiple source
files with the same name but in different directories, in these cases,
even after this change, we still add a numerical suffix to make the
object file names unique. So if we have 'foo/src.s' and 'bar/src.s',
we will create object files 'src.o' and 'src1.o'.
Update the few tests that hard code the object file name into the
expected test results.
ld/ChangeLog:
* testsuite/lib/ld-lib.exp (run_dump_test): Use object file names
based on the original source file name.
* testsuite/ld-discard/extern.d: Update object file names.
* testsuite/ld-discard/start.d: Likewise.
* testsuite/ld-discard/static.d: Likewise.
* testsuite/ld-elf/orphan-8.map: Likewise.
Andrew Burgess [Sun, 30 Oct 2016 08:11:30 +0000 (08:11 +0000)]
ld/xc16x: This target does not support -shared
Add the xc16x-elf target to the list of targets that do not support
the -shared option. Being missing from this list was causing the
linker to add '-z norelro' to the link line of many tests, which in
turn caused these tests to fail.
ld/ChangeLog:
* testsuite/lib/ld-lib.exp (check_shared_lib_support): Add
xc16x-*-elf to the list of targets that don't support -shared.
Andrew Burgess [Tue, 20 Sep 2016 10:18:12 +0000 (11:18 +0100)]
ld: Rename pattern within yacc grammar file
Rename file_NAME_list to section_NAME_list in the linker's grammar
file. This rename reflects how the pattern is now being used, and makes
the grammar easier to understand.
There should be no functional change after this commit.
ld/ChangeLog:
* ldgram.y: Rename file_NAME_list to section_NAME_list
throughout.
GDB Administrator [Fri, 4 Nov 2016 00:00:13 +0000 (00:00 +0000)]
Automatic date update in version.in