Add inclusive range support for Rust
[deliverable/binutils-gdb.git] / gdb / ChangeLog
index a5cb3bbd82523cb9dc7f0fe95a312dab95a67cab..2b9e55409931323d313242e34fb83caf745f5e32 100644 (file)
@@ -1,3 +1,173 @@
+2018-04-27  Tom Tromey  <tom@tromey.com>
+
+       PR rust/22545:
+       * rust-lang.c (rust_inclusive_range_type_p): New function.
+       (rust_range): Handle inclusive ranges.
+       (rust_compute_range): Likewise.
+       * rust-exp.y (struct rust_op) <inclusive>: New field.
+       (DOTDOTEQ): New constant.
+       (range_expr): Add "..=" productions.
+       (operator_tokens): Add "..=" token.
+       (ast_range): Add "inclusive" parameter.
+       (convert_ast_to_expression) <case OP_RANGE>: Handle inclusive
+       ranges.
+       * parse.c (operator_length_standard) <case OP_RANGE>: Handle new
+       bounds values.
+       * expression.h (enum range_type) <NONE_BOUND_DEFAULT_EXCLUSIVE,
+       LOW_BOUND_DEFAULT_EXCLUSIVE>: New constants.
+       Update comments.
+       * expprint.c (print_subexp_standard): Handle new bounds values.
+       (dump_subexp_body_standard): Likewise.
+
+2018-04-27  Tom Tromey  <tom@tromey.com>
+
+       * configure: Rebuild.
+       * warning.m4 (AM_GDB_WARNINGS): Add -Wsuggest-override.
+       * dwarf2loc.c (class dwarf_evaluate_loc_desc): Use "override", not
+       "OVERRIDE".
+       (class symbol_needs_eval_context): Likewise.
+       * dwarf2read.c (mock_mapped_index::symbol_name_count)
+       (mock_mapped_index::symbol_name_at): Use "override".  Remove
+       "virtual".
+       * dwarf2-frame.c (dwarf_expr_executor::get_addr_index): Use
+       "override".
+       (class dwarf_expr_executor): Use "override", not "OVERRIDE".
+       * aarch64-tdep.c (instruction_reader::read): Use "override".
+       (instruction_reader_test::read): Likewise.
+       * arm-tdep.c (instruction_reader::read): Use "override".
+       (instruction_reader_thumb::read): Likewise.
+
+2018-04-26  Andrzej Kaczmarek  <andrzej.kaczmarek@codecoup.pl>
+
+       PR remote/9665
+       * remote.c (send_g_packet): Use putpkt/getpkt/packet_check_result
+       instead of remote_send.
+       (remote_send): Remove.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * elfread.c (elf_gnu_ifunc_resolver_return_stop): Use
+       find_function_start_sal instead of find_pc_line.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * breakpoint.c (set_breakpoint_location_function): Handle
+       mst_data_gnu_ifunc.
+       * c-exp.y (variable production): Handle mst_data_gnu_ifunc.
+       * elfread.c (elf_symtab_read): Give data symbols with
+       BSF_GNU_INDIRECT_FUNCTION set mst_data_gnu_ifunc type.
+       (elf_rel_plt_read): Update comment.
+       * linespec.c (convert_linespec_to_sals): Handle
+       mst_data_gnu_ifunc.
+       (minsym_found): Handle mst_data_gnu_ifunc.
+       * minsyms.c (msymbol_is_function, minimal_symbol_reader::record)
+       (find_solib_trampoline_target): Handle mst_data_gnu_ifunc.
+       * parse.c (find_minsym_type_and_address): Handle
+       mst_data_gnu_ifunc.
+       * symmisc.c (dump_msymbols): Handle mst_data_gnu_ifunc.
+       * symtab.c (find_gnu_ifunc): Handle mst_data_gnu_ifunc.
+       * symtab.h (minimal_symbol_type) <mst_text_gnu_ifunc>: Update
+       comment.
+       <mst_data_gnu_ifunc>: New enumerator.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * minsyms.c (lookup_minimal_symbol_by_pc_section_1): Rename to ...
+       (lookup_minimal_symbol_by_pc_section): ... this.  Replace
+       'want_trampoline' parameter by a lookup_msym_prefer parameter.
+       Handle it.
+       (lookup_minimal_symbol_by_pc_section): Delete old implementation.
+       (lookup_minimal_symbol_by_pc): Adjust.
+       (in_gnu_ifunc_stub): Prefer GNU ifunc symbols.
+       (lookup_solib_trampoline_symbol_by_pc): Adjust.
+       * minsyms.h (lookup_msym_prefer): New enum.
+       (lookup_minimal_symbol_by_pc_section): Replace 'want_trampoline'
+       parameter by a lookup_msym_prefer parameter.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * elfread.c (elf_gnu_ifunc_record_cache): Check if the symbol name
+       ends in "@plt" instead of looking at the symbol's section.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * blockframe.c (cache_pc_function_is_gnu_ifunc): Delete.  Remove
+       all references.
+       (find_pc_partial_function_gnu_ifunc): Rename to ...
+       (find_pc_partial_function): ... this, and remove references to
+       'is_gnu_ifunc_p'.
+       (find_pc_partial_function): Delete old implementation.
+       * symtab.h (find_pc_partial_function_gnu_ifunc): Delete.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * linespec.c (struct bound_minimal_symbol_search_key): New.
+       (convert_linespec_to_sals): Sort minimal symbols earlier.  Don't
+       skip first line if we found a GNU ifunc minimal symbol by name.
+       (compare_msymbols): Change parameters to work with a destructured
+       lhs minsym.
+       (compare_msymbols_for_qsort, compare_msymbols_for_bsearch): New
+       functions.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * breakpoint.c (set_breakpoint_location_function): Don't resolve
+       ifunc targets here.  Instead, if we have an ifunc minsym, use its
+       address/name.
+       (add_location_to_breakpoint): Store the minsym and the objfile in
+       the breakpoint location.
+       * breakpoint.h (bp_location) <msymbol, objfile>: New fields.
+       * linespec.c (minsym_found): Resolve GNU ifunc targets here.
+       Record the minsym in the sal.
+       * symtab.h (symtab_and_line) <msymbol>: New field.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * elfread.c (elf_gnu_ifunc_resolve_by_got): Don't write to *ADDR_P
+       unless we actually resolved the ifunc.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * c-exp.y (variable production): Prefer ifunc minsyms over
+       regular function symbols.
+       * symtab.c (find_gnu_ifunc): New function.
+       * minsyms.h (lookup_msym_prefer): New enum.
+       (lookup_minimal_symbol_by_pc_section): Replace 'want_trampoline'
+       parameter by a lookup_msym_prefer parameter.
+       * symtab.h (find_gnu_ifunc): New declaration.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * blockframe.c (find_gnu_ifunc_target_type): New function.
+       (find_function_type): New.
+       * eval.c (evaluate_var_msym_value): For GNU ifunc types, always
+       return a value with a memory address.
+       (eval_call): For calls to GNU ifunc functions, try to find the
+       type of the target function from the type that the resolver
+       returns.
+       * gdbtypes.c (objfile_type): Don't install a return type for ifunc
+       symbols.
+       * infcall.c (find_function_return_type): Delete.
+       (find_function_addr): Add 'function_type' parameter.  For calls to
+       GNU ifunc functions, try to find the type of the target function
+       from the type that the resolver returns, and return it via
+       FUNCTION_TYPE.
+       (call_function_by_hand_dummy): Adjust to use the function type
+       returned by find_function_addr.
+       (find_function_addr): Add 'function_type' parameter and move
+       description here.
+       * symtab.h (find_function_type, find_gnu_ifunc_target_type): New
+       declarations.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * c-exp.y (variable production): Skip finding an alias for ifunc
+       symbols.
+
+2018-04-26  Pedro Alves  <palves@redhat.com>
+
+       * elfread.c (elf_rel_plt_read): Look for relocations for .got.plt too.
+
 2018-04-25  Pedro Alves  <palves@redhat.com>
 
        * infcmd.c (kill_command): Print the pid as string, not the whole
This page took 0.026663 seconds and 4 git commands to generate.