deliverable/binutils-gdb.git
7 years ago[AArch64] Increase max_num_aliases in aarch64-gen
Szabolcs Nagy [Fri, 11 Nov 2016 10:22:56 +0000 (10:22 +0000)] 
[AArch64] Increase max_num_aliases in aarch64-gen

Some ARMv8.3 pointer authentication instructions are encoded as HINT aliases,
so to allow more instruction aliases in the generator, max_num_aliases is
increased from 16 to 32.

opcodes/
2016-11-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* aarch64-gen.c (find_alias_opcode): Increase max_num_aliases to 32.

7 years ago[AArch64] Add ARMv8.3 command line option and feature flag
Szabolcs Nagy [Fri, 11 Nov 2016 10:20:30 +0000 (10:20 +0000)] 
[AArch64] Add ARMv8.3 command line option and feature flag

ARMv8.3 can be selected with -march=armv8.3-a command line option.
An overview of the ARMv8.3 architecture extension is at
https://community.arm.com/groups/processors/blog/2016/10/27/armv8-a-architecture-2016-additions

gas/
2016-11-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* config/tc-aarch64.c (aarch64_archs): Add "armv8.3-a".
* doc/c-aarch64.texi (-march): Likewise.

include/
2016-11-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* opcode/aarch64.h (AARCH64_FEATURE_V8_3): Define.
(AARCH64_ARCH_V8_3): Define.
(AARCH64_ARCH_V8_1, AARCH64_ARCH_V8_2): Simplify.

7 years ago[AArch64] Fix feature dependencies for +simd and +crypto
Szabolcs Nagy [Fri, 11 Nov 2016 10:14:31 +0000 (10:14 +0000)] 
[AArch64] Fix feature dependencies for +simd and +crypto

According to the gas manual, +simd implies +fp and +crypto implies +simd.
Make sure +nofp turns +simd, +crypto and +fp16 off.

gas/
2016-11-07  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* config/tc-aarch64.c (aarch64_features): Fix "simd" and "crypto".
* testsuite/gas/aarch64/illegal-crypto-nofp.d: New.
* testsuite/gas/aarch64/illegal-crypto-nofp.l: New.
* testsuite/gas/aarch64/illegal-fp16-nofp.d: New.
* testsuite/gas/aarch64/illegal-fp16-nofp.l: New.
* testsuite/gas/aarch64/illegal-fp16-nofp.s: New.

7 years agoAccept hidden COFF symbols, but treat them as if they were debugging symbols.
Luke Allardyce [Fri, 11 Nov 2016 10:08:05 +0000 (10:08 +0000)] 
Accept hidden COFF symbols, but treat them as if they were debugging symbols.

PR ld/20722
* coffcode.h (coff_slurp_symbol_table): Accept C_HIDDEN symbols,
but treat them as debugging symbols.

7 years agoRemove apply_val_pretty_printer parameter valaddr
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.

7 years agoRemove parameter valaddr from c print functions
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.

7 years agosim: mips: fix dv-tx3904cpu build error
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>
7 years agosim: mips: fix builds for r3900 cpus due to missing check_u64
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

7 years agoAutomatic date update in version.in
GDB Administrator [Fri, 11 Nov 2016 00:00:08 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoProvide a more helpful error message when the BFD library is unable to load an extrem...
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.

7 years ago[AArch64] 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.

7 years agoUse unique_xmalloc_ptr in Python code
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.

7 years agoAutomatic date update in version.in
GDB Administrator [Thu, 10 Nov 2016 00:00:17 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoX86: Remove the .s suffix from EVEX vpextrw
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.

7 years agoUpdate opcodes/ChangeLog
H.J. Lu [Wed, 9 Nov 2016 21:44:42 +0000 (13:44 -0800)] 
Update opcodes/ChangeLog

7 years agoX86: Update opcode-suffix.d
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.

7 years agoFurther cleanup/modernization of gdb.base/commands.exp
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.

7 years agoX86: Merge AVX512F vmovq
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.

7 years agoMake gdb.mi/user-selected-context-sync.exp use proc_with_prefix
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.

7 years agogdb/testsuite: Introduce "proc_with_prefix"
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.

7 years agoFix formattting of gdb/ChangeLog and gdb/testsuite/ChangeLog enties
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.

7 years agoagent_expr_up: gdb::unique_ptr -> std::unique_ptr
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.

7 years agogdb: Use vector::emplace_back
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.

7 years agotui-winsource: Remove failed-allocation logic
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.

7 years agotui-winsource: Allocate for actual lines only
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.

7 years agotui-disasm: Fix line buffer size calculation
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.

7 years agotui-disasm: Fix window content buffer overrun
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.

7 years agodarwin-nat.c: handle Darwin 16 (aka Sierra).
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.

7 years agoAutomatic date update in version.in
GDB Administrator [Wed, 9 Nov 2016 00:00:27 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoX86: Remove the THREE_BYTE_0F7A entry
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.

7 years agoFix py-value.exp failure on Python 3
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.

7 years agoFix some error-handling bugs in python frame filters
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.

7 years agoRemove parameter valaddr from la_val_print
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.

7 years agoUse get_frame_register_value instead of deprecated_frame_register_read
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.

7 years agoEliminate agent_expr_p; VEC -> std::vector in struct bp_target_info
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.

7 years ago'struct agent_expr *' -> unique_ptr<agent_expr>
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.

7 years agoUse ui_file_as_string throughout more
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.

7 years agoUse ui_file_as_string in gdb/language.c
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.

7 years agoUse ui_file_as_string in gdb/rust-lang.c
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.

7 years agoUse ui_file_as_string in gdb/infrun.c
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.

7 years agoUse ui_file_as_string in gdb/ada-lang.c
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.

7 years agoUse ui_file_as_string in gdbarch.sh/gdbarch.c
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.

7 years agoUse ui_file_as_string in gdb/c-exp.y
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.

7 years agoUse ui_file_as_string in gdb/compile/
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.

7 years agoUse ui_file_as_string in gdb/cli/cli-setshow.c
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.

7 years agoUse ui_file_as_string in gdb/remote.c
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.

7 years agoUse ui_file_as_string in gdb/python/
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.

7 years agoUse ui_file_as_string in gdb/printcmd.c
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.

7 years agoUse ui_file_as_string in gdb/top.c
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.

7 years agoUse ui_file_as_string in execute_command_to_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.

7 years agoUse ui_file_as_string in gdb/guile/
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.

7 years agoUse ui_file_as_string in gdb/arm-tdep.c
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.

7 years agoUse ui_file_as_string in gdb/utils.c
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.

7 years agoUse ui_file_as_string in gdb/ui-out.c
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.

7 years agoUse ui_file_as_string in gdb/ada-valprint.c
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.

7 years agoUse ui_file_as_string in gdb/xtensa-tdep.c
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.

7 years agoUse ui_file_as_string in dwarf2_compute_name
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.

7 years agoClean up tracepoint.h/c:collection_list
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.

7 years agoIntroduce ui_file_as_string
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.

7 years ago'struct expression *' -> gdb::unique_xmalloc_ptr<expression>
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.

7 years agocli-script.c: Simplify using std::string, eliminate cleanups
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.

7 years agobreakpoint.c:commands_command_1 constification and cleanup
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.

7 years agocli/cli-script.c: Remove some dead NULL checks
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.

7 years agoIntroduce string_printf
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.

7 years agoFix heap-buffer-overflow error detected by address sanitization on a fuzzed binary.
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.

7 years agogdbarch software_single_step returns VEC (CORE_ADDR) *
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.

7 years agoClear addr bit in next_pcs vector
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.

7 years agoRemove arm_insert_single_step_breakpoint
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.

7 years agoFix PR breakpoints/20739: Badly formatted adress string in error message
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.

7 years agoFix bfd/dwarf2.c build breakage
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".

7 years agoGreatly improve the speed if looking up DWARF line number information.
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.

7 years agoFix indentation
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.

7 years agoCheck for truncated registers in process_g_packet
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.

7 years agoAutomatic date update in version.in
GDB Administrator [Tue, 8 Nov 2016 00:00:34 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoX86: Properly handle bad FPU opcode
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.

7 years agoFix ext lang calls to value_struct_elt.
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.

7 years agoi386-tdep.c (i386_gdbarch_init): Add comments.
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.

7 years agopython/py-unwind.c (unwind_infopy_str): Fix use of VEC_iterate.
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.

7 years agoconfigure.tgt (x86_64-*-elf*): Remove i386bsd-tdep.o.
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.

7 years agoSync config.sub,config.guess with upstream.
Doug Evans [Mon, 7 Nov 2016 21:08:55 +0000 (13:08 -0800)] 
Sync config.sub,config.guess with upstream.

7 years agoAdd missing '$' in configure.ac.
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.

7 years agoFix infinite loop when processing rpath tokens.
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.

7 years agoNote that the linker's --compress-debug-sections option overrides the compression...
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.

7 years agoAutomatic date update in version.in
GDB Administrator [Mon, 7 Nov 2016 00:00:23 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoAutomatic date update in version.in
GDB Administrator [Sun, 6 Nov 2016 00:00:24 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoFix gas crash with unreasonably long lines
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.

7 years agoFix a few typos
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.

7 years agoAutomatic date update in version.in
GDB Administrator [Sat, 5 Nov 2016 00:00:20 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoarc/nps400: Validate address type operands correctly
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.

7 years agoobjcopy: Close some memory leaks in error paths
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.

7 years agoset default-directory in dwarf-browse
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.

7 years agoS/390: Fix 16 bit pc relative relocs.
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.

7 years agoCommit missing ChangeLog entry for Cortex-M33 support
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.

7 years agoAdd support for ARM Cortex-M33 processor
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.

7 years agoAdd support for ARM Cortex-M23 processor
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.

7 years agoAdd maintainers for RISC-V target.
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.

7 years agoUpdate RISC-V documentation and make sure that it is included in the gas info file.
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.

7 years agoRemove support for $PLATFORM in rpath search paths.
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.

7 years agoFix building binutils for all 32-bit targets by moving riscv32 target into 64-bit...
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.

7 years agold: Allow EXCLUDE_FILE to be used outside of the section list
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.

This page took 0.055495 seconds and 4 git commands to generate.