Commit Graph

95454 Commits

Author SHA1 Message Date
Jerome Guitton 0d81f350ec Handle PPC64 function descriptor in Ada decoding
On PPC64, the entry point of the function "FN" is ".FN" when a function
descriptor is used. One of the consequences of this is that GDB then
presents the name of the function to the user (eg: in backtraces) with
the leading dot, which is a low-level internal detail that the user
should not be seeing.  The Ada decoding should strip it.

gdb/ChangeLog:

	* ada-lang.c (ada_decode): strip dot prefix in symbol name.

No testcase added, as a number of existing testcases should already
demonstrate that problem.
2018-09-08 17:47:11 -04:00
Joel Brobecker 57aff202b4 (Ada) "catch assert" spurious internal error
We noticed while debugging a program compiled without assertions
enabled and using an older compiler that inserting a catchpoint
on failed assertions would cause an internal error:

    (gdb) catch assert
    ../../src/gdb/ada-lang.c:13321: internal-error: ada_exception_sal:
    Assertion`sym != NULL' failed.
    A problem internal to GDB has been detected,

This is due to a combination of factors:

  1. With older versions of the compiler, the function used as a hook
     was provided by a unit that's different from the unit which
     provides the hooks for the other exception catchpoints.

  2. The program either does not use any assertion, or is compiled
     without the assertions enabled.

With newer versions of the compiler, all such functions are provided
by the same unit, so should normally always be available.  However,
there can still be reasons why this is not the case. Consider, for
instance, the case of a runtime compiled with -ffunction-sections,
in which case the hook might be eliminated unless assertions are
used and enabled.

So this patch transforms the internal error into a simple error.

gdb/ChangeLog:

        * ada-lang.c (ada_exception_sal): Replace gdb_assert calls
        by calls to error.

No testcase added, as the existing testcase gdb.ada/catch_ex.exp
should trigger it when using an older version of GNAT as the Ada
compiler.
2018-09-08 17:46:08 -04:00
Joel Brobecker fb44b1a737 (Ada) infinite loop when hitting unhandled exception catchpoint
When debugging a program compiled with an older version of GNAT,
hitting a catchpoint on unhandled exceptions can caused GDB to
got into an infinite loop. This happens while trying to find
the name of the exception that was raised. For that, it searches
for a frame corresponding to a specific function we know gets
called during the exeption handling.

In our particular case, the compiler was too old, and so GDB never
found that frame, and eventually got past the "main" subprogram,
all the way to system frames, where no symbol was available.
As a result, the code addresses could not be resolved into
a function name, leading to the infinite loop because of
a misplaced update of our loop variable "fi":

    while (fi != NULL)
      {
        char *func_name;
        enum language func_lang;

        find_frame_funname (fi, &func_name, &func_lang, NULL);
        if (func_name != NULL)
          {
            make_cleanup (xfree, func_name);

            if (strcmp (func_name,
                        data->exception_info->catch_exception_sym) == 0)
              break; /* We found the frame we were looking for...  */
            fi = get_prev_frame (fi);
          }
      }

If FUNC_NAME is NULL, then FI never gets updated ever after!

gdb/ChangeLog:

        * ada-lang.c (ada_unhandled_exception_name_addr_from_raise):
        Move update of loop variable "fi".

No testcase added, as the existing testcase gdb.ada/catch_ex.exp
should trigger it when using an older version of GNAT as the Ada
compiler.
2018-09-08 17:45:25 -04:00
Joel Brobecker 2a62dfa93f (Ada) assigning packed array aggregate with variable as component
Consider a variable "PRA" defined as a packed array of packed
records as follow:

   subtype Int is Integer range 0 .. 7;
   type Packed_Rec is record
      X, Y : Int;
      W    : Integer;
   end record;
   pragma Pack (Packed_Rec);
   type Packed_RecArr is array (Integer range <>) of Packed_Rec;
   pragma Pack (Packed_RecArr);

   PRA : Packed_RecArr (1 .. 3);

Consider also a variable "PR", which is a Packed_Rec record,
declared as follow:

   PR : Packed_Rec := (2, 2, 2);

Trying to assign a new value to PRA using an aggregate expression
where one of the components is our variable PR yields the wrong
result on big-endian machines (e.g. on ppc-linux):

    (gdb) p pra := (pr, (2,2,2), (2,2,2))
    $6 = ((x => 1, y => 0, w => 8), [...]

On the other hand, replacing "pr" by "(2,2,2)" does work.

I tracked the issue down to the bit offset we use to extract
the value of "PR" and copy it inside PRA. in value_assign_to_component,
we have:

  if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
    move_bits ([target buffer], [bit offset in target buffer],
               [source buffer where PR is stored],
               TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits,
               bits, 1);

The issue is with the third-to-last argument, which provides the bit
offset where the value of PR is stored relative to its start address,
and therefore the bit offset relative to the start of the source
buffer passed as the previous argument.

In our case, component is a 38bit packed record whose TYPE_LENGTH
is 5 bytes, so the bit-offset that gets calculated is 2 (bits).
However, that formula only really applies to scalars, whereas
in our case, we have a record (struct). The offset in the non-scalar
case should be zero.

gdb/ChangeLog:

        * ada-lang.c (value_assign_to_component): In the case of
        big-endian targets, extract the bits of the given VAL
        using an src_offset of zero if container is not a scalar.

gdb/testsuite/ChangeLog:

        * gdb.ada/packed_array_assign: New testcase.
2018-09-08 17:44:36 -04:00
John Darrington d1908f2d6b gdb: Add builtin types for 24 bit integers.
Add int24 and uint24.  These are used by the upcoming S12Z target, but will be
needed for any arch which features 24 bit registers.

* gdb/gdbtypes.h (struct builtin_type): New members builtin_int24
  and builtin_uint24;
* gdb/gdbtypes.c: Initialize them.
* gdb/doc/gdb.texinfo (Predefined Target Types): Mention types int24 and uint24.
2018-09-08 13:21:30 +02:00
John Darrington 9da4dfd681 S12Z: Make disassebler work for --enable-targets=all config.
opcodes/
    * disassemble.c (ARCH_s12z): Define if ARCH_all.
2018-09-08 10:32:35 +02:00
GDB Administrator b8c876004b Automatic date update in version.in 2018-09-08 00:00:35 +00:00
Andrew Burgess 96b6697fd8 gdb/testsuite: Make test names unique in gdb.base/watchpoint.exp
Extend test names and add test name prefixes to make test names
unique.

gdb/testsuite/ChangeLog:

	* gdb.base/watchpoint.exp (test_complex_watchpoint): Extend test
	names, and add test prefixes to make test names unique.
2018-09-07 14:06:53 +01:00
GDB Administrator 7235dd9f90 Automatic date update in version.in 2018-09-07 00:00:41 +00:00
Simon Ser 739ab2e92e Generate NT_PROCSTAT_{AUXV,VMMAP,PS_STRINGS} in FreeBSD coredumps
gcore generates NT_AUXV and NT_FILE notes for Linux targets.  On
FreeBSD auxv is stored in a NT_PROCSTAT_AUXV section, virtual memory
mappings are stored in a NT_PROCSTAT_VMMAP, and both are prefixed with
the struct size.  In addition, store a NT_PROCSTAT_PS_STRINGS note
saving the initial location of the argv[] and environment[] arrays.

gdb/ChangeLog:

	PR gdb/23105
	* fbsd-nat.c (fbsd_nat_target::xfer_partial): Add support for
	TARGET_OBJECT_FREEBSD_VMMAP and TARGET_OBJECT_FREEBSD_PS_STRINGS.
	* fbsd-tdep.c (fbsd_make_note_desc): New.
	(fbsd_make_corefile_notes): Write NT_PROCSTAT_AUXV,
	NT_PROCSTAT_VMMAP and NT_PROCSTAT_PS_STRINGS notes.
	* target.h (enum target_object) Add FreeBSD-specific
	TARGET_OBJECT_FREEBSD_VMMAP and TARGET_OBJECT_FREEBSD_PS_STRINGS.
2018-09-06 15:07:59 -07:00
Simon Marchi d82b3862f1 compile: Remove non-const reference parameters
As mentioned here:

  https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#Avoid_non-const_reference_parameters.2C_use_pointers_instead

we prefer to avoid non-const references.  This patch changes the
non-const references I could find in the compile/ directory, either by
making them rvalue-reference (&&) or changing them to pointers.

I'd say all the changes are pretty obvious, except the one in
compile_cplus_instance::enter_scope which might require more attention.

gdb/ChangeLog:

	* compile/compile-c.h (generate_c_for_variable_locations):
	Change reference to pointer.
	* compile/compile-c-support.c (compile_program) <compute>:
	Likewise.
	* compile/compile-c-symbols.c (generate_vla_size): Likewise.
	(generate_c_for_for_one_variable): Likewise
	(generate_c_for_variable_locations): Likewise
	* compile/compile-c-types.c (compile_c_instance::convert_type):
	Likewise
	* compile/compile-cplus-symbols.c (convert_one_symbol):
	std::move the scope passed to enter_scope.
	* compile/compile-cplus-types.c
	(compile_cplus_instance::enter_scope): Make parameter
	rvalue-reference.
	(compile_cplus_instance::new_scope): Change reference to
	pointer.
	(compile_cplus_instance::convert_type): Likewise
	(compile_cplus_convert_typedef): std::move the scope passed to
	enter_scope.
	(compile_cplus_convert_struct_or_union): Likewise.
	(compile_cplus_convert_enum): Likewise.
	(compile_cplus_convert_namespace): Likewise.
	* compile/compile-cplus.h (compile_cplus_instance)
	<enter_scope>: Make parameter rvalue-reference.
	* compile/compile-internal.h (compile_instance)
	<get_cached_type>: Likewise
	* compile/compile-loc2c.c (push): Likewise
	(pushf): Likewise
	(unary): Likewise
	(binary): Likewise
	(print_label): Likewise
	(pushf_register_address): Likewise
	(pushf_register): Likewise
	(do_compile_dwarf_expr_to_c): Likewise
	(compile_dwarf_expr_to_c): Likewise
	(compile_dwarf_bounds_to_c): Likewise
	* compile/compile.c (compile_instance::get_cached_type):
	Likewise
	* compile/compile.h (compile_dwarf_expr_to_c): Likewise.
	(compile_dwarf_bounds_to_c): Likewise
	* dwarf2loc.c (locexpr_generate_c_location): Likewise.
	(dwarf2_compile_property_to_c): Likewise
	* dwarf2loc.h (dwarf2_compile_property_to_c): Likewise
	* symtab.h (struct symbol_computed_ops) <generate_c_location>:
	Likewise
2018-09-06 13:48:15 +01:00
Simon Marchi cc5a5ae5b7 Remove unused tui_win_element::highlight
gdb/ChangeLog:

	* tui/tui-data.h (struct tui_win_element) <highlight>: Remove.
	* tui/tui-data.c (init_content_element): Don't initialize it.
2018-09-06 13:35:53 +01:00
Simon Marchi 137be54029 Remove unused tui_win_info::detail::opaque
gdb/ChangeLog:

	* tui/tui-data.h (struct tui_win_info)
	<detail::opaque>: Remove.
	* tui/tui-data.c (init_win_info): Remove assignment.
2018-09-06 12:08:33 +01:00
Alan Modra deee88e981 PR23570, AVR .noinit section defaults to PROGBITS
Revert commit 8744470dea and instead use the standard special_sections
support.

	PR 23570
bfd/
	* elf32-avr.c (elf_avr_special_sections): New.
	(elf_backend_special_sections): Define.
gas/
	* config/tc-avr.c: Revert 2018-09-03 change.
2018-09-06 14:13:00 +09:30
Tom Tromey f1628857d7 Make -Wformat-nonliteral work with gcc
After looking into why the build failed for Simon but not for me, we
found that the underlying cause was due to how gcc treats
-Wformat-nonliteral.  gcc requires -Wformat to be given first; but
warning.m4 was not doing this, so -Wformat-nonliteral was not being
used.

This patch changes warning.m4 to account gcc's requirement.

This then showed that the target-float.c build change in the earlier
Makefile patch was also incorrect.  Simon didn't see this in his
build, but gcc now points it out.  So, this patch fixes this problem
as well.

2018-09-05  Tom Tromey  <tom@tromey.com>

	* warning.m4 (AM_GDB_WARNINGS): Add -Wformat when testing
	-Wformat-nonliteral.
	* target-float.c (host_float_ops<T>::to_string)
	(host_float_ops<T>::from_string): Use
	DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL.
	* configure: Rebuild.

gdb/gdbserver/ChangeLog
2018-09-05  Tom Tromey  <tom@tromey.com>

	* configure: Rebuild.
2018-09-05 21:47:33 -06:00
Simon Marchi af39b1c216 Disable -Wformat-nonliteral in parts of printcmd.c
commit 3322c5d9a1 ("Remove unneeded explicit .o targets") broke the
build with clang, because -Wno-format-nonliteral was in fact needed.
This patch fixes the problem by introducing
DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL and using it in printcmd.c.  This
seems preferable to reverting the patch because now the warning
suppression is more targeted.

gdb/ChangeLog
2018-09-05  Simon Marchi  <simon.marchi@ericsson.com>

	* printcmd.c (printf_c_string): Use
	DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL.
	(printf_wide_c_string, printf_pointer, ui_printf): Likewise.

include/ChangeLog
2018-09-05  Simon Marchi  <simon.marchi@ericsson.com>

	* diagnostics.h (DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL): New macro.
2018-09-05 21:47:33 -06:00
GDB Administrator 4f075c06a3 Automatic date update in version.in 2018-09-06 00:00:45 +00:00
Tom Tromey 081bca4d62 Remove unnecessary casts from cli-cmds.c
I noticed a couple of unnecessary casts in cli-cmds.c.  This patch
removes them.

Tested by rebuilding.  I'm checking this in.

gdb/ChangeLog
2018-09-05  Tom Tromey  <tom@tromey.com>

	* cli/cli-cmds.c (shell_escape, edit_command): Remove cast.
2018-09-05 09:23:22 -06:00
Tom de Vries e4a62c65fa [gdb/exp] Handle DW_OP_GNU_variable_value refs to abstract dies
Consider a vla variable 'a' in function f1:
...
 <2><1a7>: Abbrev Number: 11 (DW_TAG_variable)
    <1a8>   DW_AT_description : a
    <1aa>   DW_AT_abstract_origin: <0x311>
...
with abstract origin 'a':
...
 <2><311>: Abbrev Number: 3 (DW_TAG_variable)
    <312>   DW_AT_name        : a
    <317>   DW_AT_type        : <0x325>
...
and inherited abstract vla type:
...
 <1><325>: Abbrev Number: 9 (DW_TAG_array_type)
    <326>   DW_AT_type        : <0x33a>
 <2><32e>: Abbrev Number: 10 (DW_TAG_subrange_type)
    <32f>   DW_AT_type        : <0x2ea>
    <333>   DW_AT_upper_bound : 5 byte block: fd 1b 3 0 0
                                (DW_OP_GNU_variable_value: <0x31b>)
...
where the upper bound refers to this artificial variable D.1922 without location
attribute:
...
 <2><31b>: Abbrev Number: 8 (DW_TAG_variable)
    <31c>   DW_AT_description : (indirect string, offset: 0x39a): D.1922
    <320>   DW_AT_type        : <0x2ea>
    <324>   DW_AT_artificial  : 1
...

Currently, when we execute "p sizeof (a)" in f1, the upper bound is calculated
by evaluating the DW_OP_GNU_variable_value expression referring to D.1922, but
since that die doesn't have a location attribute, we get:
...
value has been optimized out
...

However, there's also artificial variable D.4283 that is sibling of vla
variable 'a', has artificial variable D.1922 as abstract origin, and has a
location attribute:
...
 <2><1ae>: Abbrev Number: 12 (DW_TAG_variable)
    <1af>   DW_AT_description : (indirect string, offset: 0x1f8): D.4283
    <1b3>   DW_AT_abstract_origin: <0x31b>
    <1b7>   DW_AT_location    : 11 byte block: 75 1 8 20 24 8 20 26 31 1c 9f
                                (DW_OP_breg5 (rdi):1; DW_OP_const1u: 32;
				 DW_OP_shl; DW_OP_const1u: 32; DW_OP_shra;
				 DW_OP_lit1; DW_OP_minus; DW_OP_stack_value)
...

The intended behaviour for DW_OP_GNU_variable_value is to find a die that
refers to D.1922 as abstract origin, has a location attribute and is
'in scope', so the expected behaviour is:
...
$1 = 6
...

The 'in scope' concept can be thought of as variable D.1922 having name
attribute "D.1922", and variable D.4283 inheriting that attribute, resulting
in D.4283 being declared with name "D.1922" alongside vla a in f1, and when we
lookup "DW_OP_GNU_variable_value D.1922", it should work as if we try to find
the value of a variable named "D.1922" on the gdb command line using
"p D.1922", and we should return the value of D.4283.

This patch fixes the case described above, by:
- adding a field abstract_to_concrete to struct dwarf2_per_objfile,
- using that field to keep track of which concrete dies are instances of an
  abstract die, and
- using that information when getting the value DW_OP_GNU_variable_value.

Build and reg-tested on x86_64-linux.

2018-09-05  Tom de Vries  <tdevries@suse.de>

	* dwarf2loc.c (sect_variable_value): Call indirect_synthetic_pointer
	with resolve_abstract_p == true.
	(indirect_synthetic_pointer): Add resolve_abstract_p parameter,
	defaulting to false. Propagate resolve_abstract_p to
	dwarf2_fetch_die_loc_sect_off.
	* dwarf2loc.h (dwarf2_fetch_die_loc_sect_off): Add resolve_abstract_p
	parameter, defaulting to false.
	* dwarf2read.c (read_variable): Add variable to abstract_to_concrete.
	(dwarf2_fetch_die_loc_sect_off): Add and handle resolve_abstract_p
	parameter.
	* dwarf2read.h (struct die_info): Forward-declare.
	(die_info_ptr): New typedef.
	(struct dwarf2_per_objfile): Add abstract_to_concrete field.

	* gdb.dwarf2/varval.exp: Add test.
2018-09-05 10:39:19 +02:00
Joel Brobecker 2b69821e70 Document the GDB 8.2 release in gdb/ChangeLog
gdb/ChangeLog:

	GDB 8.2 released.
2018-09-05 10:02:27 +02:00
GDB Administrator 5e627001a0 Automatic date update in version.in 2018-09-05 00:00:32 +00:00
Jose E. Marchesi e920c014ec bfd, sparc: avoid duplicated error messages on invalid relocations.
This patch avoids a duplicated error message when an invalid
relocation number is read from an object file in sparc-* ELF targets:

$ strip -g test.o
strip: test.o: unsupported relocation type 0xd7
strip: test.o: unsupported relocation type 0xd7
strip: test.o: bad value

Tested in x86_64-linux-gnu, sparc64-linux-gnu and sparc-linux-gnu
targets.

bfd/ChangeLog:

2018-09-04  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* elfxx-sparc.c (_bfd_sparc_elf_info_to_howto): Do not issue an
	error when an invalid relocation is passed;  this is already done
	by `_bfd_sparc_elf_info_to_howto_ptr'.
2018-09-04 20:31:41 +02:00
Jose E. Marchesi 8410d65b77 bfd, sparc: issue an error when reading relocations with invalid symbol references.
The function `elf64_sparc_slurp_one_reloc_table' in elf64-sparc.c
currently checks that the symbol indexes read in the r_sym fields of
relocations are in range.  This is done for both dynamic and
non-dynamic symbols.  This avoids subsequent invalid memory accesses.
However, no error is issued to the user.

This patch makes BFD to issue an error when the read symbol index is
out of range, following the same behavior implemented in both the
generic ELF routines and other ELF backends (such as mips64).

Tested in x86_64-linux-gnu, sparc64-linux-gnu, and
--enable-targets=all.

2018-09-04  Jose E. Marchesi  <jose.marchesi@oracle.com>

            * elf64-sparc.c (elf64_sparc_slurp_one_reloc_table): Issue an
            error when an invalid symbol index is retrieved in ELF64_R_SYM of
            a relocation seen in an input file.
2018-09-04 20:31:41 +02:00
Sergio Durigan Junior fcc9b044b7 Automatically update "aclocal_m4_deps" when updating gnulib
When we update gnulib using our "update-gnulib.sh" tool, it doesn't
automatically update the list of M4 files present at
gnulib/Makefile.in:aclocal_m4_deps.  This patch extends the tool to do
that.  It also puts "aclocal_m4_deps" in its own file (a Makefile
fragment), so that it's easier to update it programatically.

Tested by generating the file and diff'ing the results against the
current version of "aclocal_m4_deps".

gdb/ChangeLog:
2018-09-04  Sergio Durigan Junior  <sergiodj@redhat.com>
	    Pedro Alves  <palves@redhat.com>

	* gnulib/Makefile.in (aclocal_m4_deps): Move to
	"aclocal-m4-deps.mk".  Include file here.
	$(srcdir)/aclocal.m4: Add "configure.ac".
	* gnulib/aclocal-m4-deps.mk: New file.
	* gnulib/update-gnulib.sh: Automatically update
	"aclocal-m4-deps.mk".
2018-09-04 13:58:14 -04:00
Tom Tromey d53d543682 Remove --enable-multi-ice
gdb's configure script accepts --enable-multi-ice, but the code this
refers to is long gone.  This patch removes the option entirely.

gdb/ChangeLog
2018-09-04  Tom Tromey  <tom@tromey.com>

	* configure: Rebuild.
	* configure.ac: Remove multi-ice code.
2018-09-04 10:45:55 -06:00
Tom Tromey 8dc9fd87b0 Simplify ada-exp.o rule
The ada-exp.o rule no longer needs to pass -Wno-old-style-definition
to the compiler, as this option has no meaning in C++.  So, This patch
simplifies the explicit ada-exp.o rule in the Makefile.  The rule is
still needed because, according to the comment, ada-exp.c may appear
in the srcdir.

gdb/ChangeLog
2018-09-04  Tom Tromey  <tom@tromey.com>

	* Makefile.in (GDB_WARN_CFLAGS_NO_DEFS): Remove.
	(ada-exp.o): Update.
2018-09-04 10:45:55 -06:00
Tom Tromey 3322c5d9a1 Remove unneeded explicit .o targets
Makefile.in had special cases to compile printcmd.o and target-float.o
with a different set of warnings.  However, this is no longer
required, so this patch removes those rules.

gdb/ChangeLog
2018-09-04  Tom Tromey  <tom@tromey.com>

	* Makefile.in (printcmd.o, target-float.o): Remove.
	(GDB_WARN_CFLAGS_NO_FORMAT): Remove.
2018-09-04 10:45:54 -06:00
Tom Tromey ba2bf2aaba Remove obsolete comments from Makefiles
This removes an obsolete comment from Makefile.in.  This was copied
into gnulib/Makefile.in, so this removes that comment as well.

gdb/ChangeLog
2018-09-04  Tom Tromey  <tom@tromey.com>

	* gnulib/Makefile.in: Remove obsolete comment.
	* Makefile.in: Remove obsolete comment.
2018-09-04 10:45:54 -06:00
Gary Benson dd083ee23d Fix batch exit status test failure on Fedora 28
This commit adds calls to remote_close and clear_gdb_spawn_id to
gdb.base/batch-exit-status.exp, fixing failures reported by buildbot
on Fedora 28 where gdb_spawn_id not being reset by the previous test
caused default_gdb_spawn to return without spawning.

This commit also changes the test to use detect GDB's exit using
gdb_test_multiple expecting 'eof', rather than using 'wait -i' alone.
This means the testcase won't hang forever on failure as fixed in
gdb.base/quit.exp by commit 15763a09d4 ("Fix 'gdb.base/quit.exp
hangs forever' if the test fails").

gdb/testsuite/ChangeLog:

	* gdb.base/batch-exit-status.exp: Use gdb_test_multiple and expect
	'eof' before 'wait -i'.  Use remote_close and clear_gdb_spawn_id.
2018-09-04 15:29:20 +01:00
Daniel Cederman 618a8fdba6 gas, sparc: Allow non-fpop2 instructions before floating point branches
Sparc V8 does not allow fpop2 instructions (floating point
comparisons) immediately before floating point branches.  From the
SPARC Architecture Manual Version 8, section B.22 "Branch on
Floating-point Condition Codes Instructions":

"If the instruction executed immediately before an FBfcc is an FPop2
instruction, the result of the FBfcc is undefined.  Therefore, at
least one non FPop2 instruction should be executed between the FPop2
instruction and the FBfcc instruction."

The existing check in GAS, however, does not allow any kind of
floating point instruction before the branch.  This patch adds an
extra condition to only disallow fpop2 instructions.

gas/ChangeLog:

2018-09-04  Daniel Cederman  <cederman@gaisler.com>

	* config/tc-sparc.c (md_assemble): Allow non-fpop2 instructions
            before floating point branches for Sparc V8 and earlier.
	* testsuite/gas/sparc/sparc.exp: Execute the new test.
	* testsuite/gas/sparc/v8branch.d: New test.
	* testsuite/gas/sparc/v8branch.s: New test.
2018-09-04 06:25:52 -07:00
Andrew Burgess 6c9d681b07 gdb/riscv: Fix an ARI warning
This patch fixes an ARI violation in riscv-tdep.c (line ends with
'+').

gdb/ChangeLog:

	* riscv-tdep.c (riscv_frame_cache): Fix ARI warning, don't end a
	line with '+'.
2018-09-04 11:52:25 +01:00
GDB Administrator 70f95c89a1 Automatic date update in version.in 2018-09-04 00:00:41 +00:00
Nick Clifton 8744470dea Change the .section directive for the AVR assembler so that the .noinit section is always given the ELF NOBITS section type.
PR gas/23570
	* config/tc-avr.c (md_pseudo_table): Add entry for "secction".
	(avr_set_section): New function.  Ensures that the .noinit section
	gets the NOBITS ELF section type.
2018-09-03 17:06:45 +01:00
Andrew Burgess 78a3b0fab8 gdb/riscv: Provide non-DWARF stack unwinder
Collects information during the prologue scan and uses this to unwind
registers when no DWARF information is available.

This patch has been tested by disabling the DWARF stack unwinders, and
running the complete GDB testsuite against a range of RISC-V targets.
The results are comparable to running with the DWARF unwinders in
place.

gdb/ChangeLog:

	* riscv-tdep.c: Add 'prologue-value.h' include.
	(struct riscv_unwind_cache): New struct.
	(riscv_debug_unwinder): New global.
	(riscv_scan_prologue): Update arguments, capture register details
	from prologue scan.
	(riscv_skip_prologue): Reformat arguments line, move end of
	prologue calculation into riscv_scan_prologue.
	(riscv_frame_cache): Update return type, create
	riscv_unwind_cache, scan the prologue, and fill in remaining cache
	details.
	(riscv_frame_this_id): Use frame id computed in riscv_frame_cache.
	(riscv_frame_prev_register): Use the trad_frame within the
	riscv_unwind_cache.
	(_initialize_riscv_tdep): Add 'set/show debug riscv unwinder'
	flag.
2018-09-03 15:48:41 +01:00
Andrew Burgess 23e60e7a4e gdb: Extend the trad-frame API
Adds two new functions to the trad-frame API and update the internals
of trad-frame to use the new functions.  These functions will be used
in later commits.

gdb/ChangeLog:

	* trad-frame.h (trad_frame_set_realreg): Declare.
	(trad_frame_set_addr): Declare.
	* trad-frame.c (trad_frame_set_realreg): Define new function.
	(trad_frame_set_addr): Define new function.
	(trad_frame_set_reg_realreg): Use new function.
	(trad_frame_set_reg_addr): Use new function.
2018-09-03 15:48:41 +01:00
Nick Clifton 20a4d0bd98 Updated Japanese translation for the binutils sub-directory. 2018-09-03 15:04:34 +01:00
Nick Clifton b6f00d89c7 Updated Finnish translation for the ld sub-directory.
* po/fi.po: Updated Finnish translation.
2018-09-03 13:40:32 +01:00
Jozef Lawrynowicz 2542e49e21 PR23595, simple objcopy of executable failure for msp430-elf
VMA of the first section in the segment containing the ELF file header
(and possibly section headers too) can't be used to reliably find the
size of the headers plus padding.  What's really needed is sh_offset
of the first section assuming it has contents (vma does have a
relationship to sh_offset, but is only guaranteed in demand paged
executables).

If the first section is SHT_NOBITS and it hasn't been converted to
have file contents by the existence of a following SHT_PROGBITS
section in the same segment, the sh_offset value also isn't reliable.

	PR 23595
	elf.c (copy_elf_program_header): When first segment contains
	only the headers and SHT_NOBITS sections, use segment p_filesz
	to calculate header and padding size.  Use filepos of the first
	section otherwise.
2018-09-03 15:50:54 +09:30
Alan Modra 0d9a433be4 Re: ld: Lookup section in output with the same name
Fixes pr23591 test failures on hppa64-hpux and score-elf, and xfails
frv-linux and lm32-linux.

	PR ld/23591
	* testsuite/ld-elf/pr23591a.s,
	* testsuite/ld-elf/pr23591b.s,
	* testsuite/ld-elf/pr23591c.s: Don't start directives in first column.
	* testsuite/ld-elf/pr23591.d: xfail frv-linux and lm32-linux.
	Allow __start___sancov_cntrs as a local symbol.
2018-09-03 12:54:35 +09:30
GDB Administrator ec8da87a22 Automatic date update in version.in 2018-09-03 00:00:48 +00:00
GDB Administrator 23a29771e0 Automatic date update in version.in 2018-09-02 00:00:59 +00:00
Keith Seitz 5c889512f3 Fix ARI violations in c++compile
This patch fixes two violations of the ARI (use of ATTRIBUTE_UNUSED and
"%ll").

gdb/ChangeLog

	* compile/compile-cplus-types.c (compile_cplus_debug_output_1): Use
	pulongest instead of "%lld".
	* compile/compile-cplus-symbols.c (gcc_cplus_convert_symbol): Remove
	ATTRIBUTE_UNUSED.
2018-09-01 12:04:29 -07:00
H.J. Lu b986869b66 Allow an IR object with unknown architecture
An IR object may have an unknown architecture.  But it is compatible
with other architecture.

	PR ld/23600
	* archures.c (bfd_arch_get_compatible): Allow an IR object with
	unknown architecture.
2018-08-31 19:57:38 -07:00
GDB Administrator d431d6279b Automatic date update in version.in 2018-09-01 00:00:38 +00:00
Jim Wilson be192bc284 RISC-V: Correct the requirement of compressed floating point instructions
2018-08-31  Kito Cheng  <kito@andestech.com>
gas/
	* testsuite/gas/riscv/c-fld-fsd-fail.d: New.
	* testsuite/gas/riscv/c-fld-fsd-fail.l: Likewise.
	* testsuite/gas/riscv/c-fld-fsd-fail.s: Likewise.
opcodes/
	* riscv-opc.c (riscv_opcodes): Fix incorrect subset info for
	compressed floating point instructions.
2018-08-31 12:23:05 -07:00
Tom Tromey c8c8163573 Set TYPE_LENGTH on a variant part
gdb represents a DW_TAG_variant_part as a union.  While normally DWARF
would not set the size of a DW_TAG_variant_part, gdb's representation
requires the TYPE_LENGTH to be set.

This patch arranges to set the TYPE_LENGTH of a variant part if it has
not already been set.

This fixes some Rust regressions when testing against a version of
rustc that emits DW_TAG_variant_part.

gdb/ChangeLog
2018-08-31  Tom Tromey  <tom@tromey.com>

	* dwarf2read.c (dwarf2_add_field): Set the TYPE_LENGTH of the
	variant part type.
2018-08-31 12:59:16 -06:00
Tom Tromey aef9346c25 Fix a small bug in gdb.rust/simple.rs
I noticed that gdb.rust/simple.rs had two local variables named "v".
This didn't previous cause problems, but with a newer rust compiler
this resulted in a test failure.  (It should have failed all along, so
I suppose earlier passes were due to a compiler bug.)

This patch renames the second variable.

gdb/testsuite/ChangeLog
2018-08-31  Tom Tromey  <tom@tromey.com>

	* gdb.rust/simple.rs: Rename second variable "v".
2018-08-31 12:59:16 -06:00
Pedro Alves 0c8885885a Regenerate gdbarch.h
The previous commit included a stale gdbarch.h from an earlier version
of that patch by mistake.

gdb/ChangeLog:
2018-08-31  Pedro Alves  <palves@redhat.com>

	* gdbarch.h: Regenerate.
2018-08-31 18:56:10 +01:00
Pedro Alves 7ea65f08fa Add comment describing continuable/steppable/non-steppable watchpoints
These weren't described anywhere in the sources.

gdb/ChangeLog:
2018-08-31  Pedro Alves  <palves@redhat.com>

	* gdbarch.sh (have_nonsteppable_watchpoint): Add comment.
	* target.h (Hardware watchpoint interfaces): Describe
	continuable/steppable/non-steppable watchpoints.
	* gdbarch.h, gdbarch.c: Regenerate.
2018-08-31 18:47:36 +01:00
Pedro Alves 7eb65fafed Eliminate target_have_continuable_watchpoint
target_have_continuable_watchpoint isn't used anywhere so remove it.
The property isn't necessary because checking for "continuable" is the
same as checking for "!steppable && !non-steppable".

gdb/ChangeLog:
2018-08-31  Pedro Alves  <palves@redhat.com>

	* nto-procfs.c (nto_procfs_target::have_continuable_watchpoint):
	Delete.
	* s390-linux-nat.c
	(s390_linux_nat_target::have_continuable_watchpoint): Delete.
	* target.h (target_ops::have_continuable_watchpoint): Delete.
	(target_have_continuable_watchpoint): Delete.
	* x86-nat.h (x86_nat_target::have_continuable_watchpoint): Delete.
	* target-delegates.c: Regenerate.
2018-08-31 18:47:12 +01:00