]> git.ipfire.org Git - thirdparty/binutils-gdb.git/log
thirdparty/binutils-gdb.git
4 years agoUpdate version number and generated files for 2.33 release. binutils-2_33
Phil Blundell [Mon, 30 Sep 2019 10:10:14 +0000 (11:10 +0100)] 
Update version number and generated files for 2.33 release.

4 years agoAutomatic date update in version.in
GDB Administrator [Mon, 30 Sep 2019 00:01:50 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Sun, 29 Sep 2019 00:02:28 +0000 (00:02 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Sat, 28 Sep 2019 00:01:20 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Fri, 27 Sep 2019 00:01:23 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Thu, 26 Sep 2019 00:01:38 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoPR25031, nm reports wrong address on 32bit
Alan Modra [Tue, 24 Sep 2019 13:17:13 +0000 (22:47 +0930)] 
PR25031, nm reports wrong address on 32bit

Using saved_format breaks when nm is presented with multiple object
files, some 32-bit and some 64-bit.

PR 25031
* nm.c (print_format_string): New.
(get_print_format): Delete saved_format.  Move earlier.
(set_print_width): Call get_print_format.
(print_value): Use print_format_string.

(cherry picked from commit 352f6bc3e5b23e76d8e6f56fb7db4e57d8f5d5bd)

4 years agoimplicit conversion from enum ld_plugin_level to enum ld_plugin_status
Alan Modra [Mon, 23 Sep 2019 11:00:22 +0000 (20:30 +0930)] 
implicit conversion from enum ld_plugin_level to enum ld_plugin_status

This is a gcc10 warning fix.

gold/
* testsuite/plugin_new_section_layout.c (new_input_hook): Correct
return status enum values.

(cherry picked from commit 6831670dd3c0a64e332b316c95873c57ab19887a)

4 years agoPR25018, readelf crash on 32bits
Alan Modra [Sun, 22 Sep 2019 23:23:07 +0000 (08:53 +0930)] 
PR25018, readelf crash on 32bits

Pointer comparisons after adding an offset just don't work to catch
overflow when the offset is a larger type than the pointer.

PR 25018
* dwarf.c (get_type_signedness): Delete ineffective pointer
comparison check.  Properly range check uvalue offset on
recursive call.
(read_and_display_attr_value): Range check uvalue offset before
calling get_type_signedness.

(cherry picked from commit b3fe587ed2c78d46132bd33e14f42449d410354b)

4 years agoWork around gcc10 FAIL: S-records with constructors
Alan Modra [Sat, 21 Sep 2019 08:43:52 +0000 (18:13 +0930)] 
Work around gcc10 FAIL: S-records with constructors

gcc10 on x86_64 and powerpc64le recognises that the loop in
Foo::operator= can be turned into a call to memmove, which then
results in an undefined symbol when linking.  Avoid that by making the
loop smaller.

* testsuite/ld-srec/sr3.cc (FOO_MSG_LEN): Set to 4.

(cherry picked from commit a13ba30840ba7a8450dcb4edd356de61fcb89130)

4 years agotc-i386.c gcc10 warning fix
Alan Modra [Sat, 21 Sep 2019 01:29:50 +0000 (10:59 +0930)] 
tc-i386.c gcc10 warning fix

.../gas/config/tc-i386.c: In function ‘md_parse_option’:
.../gas/config/tc-i386.c:11441:9: error: implicit conversion from ‘enum <anonymous>’ to ‘enum <anonymous>’ [-Werror=enum-conversion]
11441 |  vexwig = evexw0;
      |         ^
.../gas/config/tc-i386.c:11443:9: error: implicit conversion from ‘enum <anonymous>’ to ‘enum <anonymous>’ [-Werror=enum-conversion]
11443 |  vexwig = evexw1;
      |         ^

* config/tc-i386.c (md_parse_option): Fix warning on vexwig assignment.

(cherry picked from commit 40c9c8deb94be6576f5729172dce117cbe155856)

4 years agoAutomatic date update in version.in
GDB Administrator [Wed, 25 Sep 2019 00:01:57 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoFix building gold with gcc-10.
Nick Clifton [Tue, 24 Sep 2019 09:08:59 +0000 (10:08 +0100)] 
Fix building gold with gcc-10.

   * descriptors.cc: Include <string>

4 years agoAutomatic date update in version.in
GDB Administrator [Tue, 24 Sep 2019 00:01:59 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Mon, 23 Sep 2019 00:01:32 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Sun, 22 Sep 2019 00:02:01 +0000 (00:02 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Sat, 21 Sep 2019 00:01:31 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years ago[GOLD] Fix spurious "plugin needed to handle lto object" warnings
Alan Modra [Fri, 20 Sep 2019 05:22:54 +0000 (14:52 +0930)] 
[GOLD] Fix spurious "plugin needed to handle lto object" warnings

lto_slim_object_ was unitialized.  I also thought it worth adding
a sanity check on the .gnu.lto_.lto.* section size, and made some
other tidies.

PR 24768
* layout.cc (Layout::Layout): Init lto_slim_object_.
* object.cc (Sized_relobj_file::do_layout): Wrap overlong line.
Don't use C cast.  Validate section size.  Don't copy contents.

(cherry picked from commit 4c51dacacf8a97194a1241ad5e1cbf7be00a59a3)

4 years agoAutomatic date update in version.in
GDB Administrator [Fri, 20 Sep 2019 00:01:19 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years ago[gas][news] NEWS (2.33) note new SVE2 and TME instructions for AArch64
Matthew Malcomson [Thu, 19 Sep 2019 13:21:51 +0000 (14:21 +0100)] 
[gas][news] NEWS (2.33) note new SVE2 and TME instructions for AArch64

These NEWS entries had been missed when the instructions were added.

gas/ChangeLog:

2019-09-19  Matthew Malcomson  <matthew.malcomson@arm.com>

* NEWS: Add SVE2 and TME entries.

4 years agoAArch64: Fix objdump tests
Tamar Christina [Thu, 19 Sep 2019 12:15:02 +0000 (13:15 +0100)] 
AArch64: Fix objdump tests

The newly added objdump -S tests check for source line mapping of a static
variable.  But the test doesn't dump any data sections so this should never
pass.

This changes the test to dump all sections so the source mapping can be found.

binutils/ChangeLog:

* testsuite/binutils-all/objdump.exp (objdump -S): Update testcases.

(cherry picked from commit 4e28d4cc5b134a4027b4103ddaf09c19b8e0230b)

4 years agoPR24981, Hit assertion failure in ld/ldlang.c:7504
Alan Modra [Thu, 12 Sep 2019 07:55:46 +0000 (17:25 +0930)] 
PR24981, Hit assertion failure in ld/ldlang.c:7504

This fixes a problem with commit 128bf1fe608, a patch I made
2019-08-06.   Apparently it is possible to trigger the assertion I
added during an LTO bootstrap, something I haven't reproduced.
However, I did find a case triggered by an odd linker script feature
that allows a file to be loaded from the script without specifying
that file on the command line.  Regarding input sections:
  "When you use a file name which is not an archive:file specifier
   and does not contain any wild card characters, the linker will
   first see if you also specified the file name on the linker command
   line or in an INPUT command.  If you did not, the linker will
   attempt to open the file as an input file, as though it appeared on
   the command line."

So putting
  .foo : { foo.a(*) }
into a script supposedly extracts foo.a into .foo.  Except it doesn't,
since this feature is meant for object files only.  Well anyway,
assuming --whole-archive was given on the command line, foo.a contains
a -flto object and no other objects involved were -flto then we'll hit
the assert due to files added like foo.a here *not* having their input
statement put on the general statement list.  Why these are not put on
the statement list isn't obvious but it has been that way since commit
193c5f93a17 in 1994.

PR 24981
* ldlang.c (lang_process): Remove assertion.  Comment.

(cherry picked from commit a19826f4c41219be6fb1adb528fe5fd3a3dc4130)

4 years agoAutomatic date update in version.in
GDB Administrator [Thu, 19 Sep 2019 00:01:36 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoi386: Adjust for new output format from readelf
H.J. Lu [Mon, 9 Sep 2019 16:21:36 +0000 (09:21 -0700)] 
i386: Adjust for new output format from readelf

PR binutils/24887
* testsuite/ld-i386/property-1.r: Adjust for new output format
from readelf.
* testsuite/ld-i386/property-1a.r: Likewise.
* testsuite/ld-i386/property-2.r: Likewise.
* testsuite/ld-i386/property-2a.r: Likewise.
* testsuite/ld-i386/property-3.r: Likewise.
* testsuite/ld-i386/property-3a.r: Likewise.
* testsuite/ld-i386/property-4.r: Likewise.
* testsuite/ld-i386/property-4a.r: Likewise.
* testsuite/ld-i386/property-5.r: Likewise.
* testsuite/ld-i386/property-5a.r: Likewise.
* testsuite/ld-i386/property-6.r: Likewise.
* testsuite/ld-i386/property-7.r: Likewise.
* testsuite/ld-i386/property-7a.r: Likewise.
* testsuite/ld-i386/property-1.r: Likewise.
* testsuite/ld-i386/property-1a.r: Likewise.
* testsuite/ld-i386/property-2.r: Likewise.
* testsuite/ld-i386/property-2a.r: Likewise.
* testsuite/ld-i386/property-3.r: Likewise.
* testsuite/ld-i386/property-3a.r: Likewise.
* testsuite/ld-i386/property-4.r: Likewise.
* testsuite/ld-i386/property-4a.r: Likewise.
* testsuite/ld-i386/property-5.r: Likewise.
* testsuite/ld-i386/property-5a.r: Likewise.
* testsuite/ld-i386/property-6.r: Likewise.
* testsuite/ld-i386/property-7.r: Likewise.
* testsuite/ld-i386/property-7a.r: Likewise.

(cherry picked from commit 6715fe29ffcdbef026908fed62e993b238d04d77)

4 years agoAutomatic date update in version.in
GDB Administrator [Wed, 18 Sep 2019 00:01:22 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Tue, 17 Sep 2019 00:02:13 +0000 (00:02 +0000)] 
Automatic date update in version.in

4 years agoUpdate version number to 2.32.90 for pre-release on 2.33 branch.
Phil Blundell [Mon, 16 Sep 2019 10:09:29 +0000 (11:09 +0100)] 
Update version number to 2.32.90 for pre-release on 2.33 branch.

4 years agoAutomatic date update in version.in
GDB Administrator [Mon, 16 Sep 2019 00:01:35 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Sun, 15 Sep 2019 00:01:57 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAdd markers for 2.33 branch to NEWS and ChangeLog files.
Phil Blundell [Mon, 9 Sep 2019 09:27:03 +0000 (10:27 +0100)] 
Add markers for 2.33 branch to NEWS and ChangeLog files.

4 years agoAutomatic date update in version.in
GDB Administrator [Mon, 9 Sep 2019 00:00:28 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoTruncate long TUI window titles
Tom Tromey [Thu, 18 Jul 2019 21:07:01 +0000 (15:07 -0600)] 
Truncate long TUI window titles

If a TUI window has a long title, it can overflow the title line.
This changes the TUI to use just the tail part of the title in this
case.

gdb/ChangeLog
2019-09-08  Tom Tromey  <tom@tromey.com>

* tui/tui-wingeneral.c (box_win): Truncate long window titles.

gdb/testsuite/ChangeLog
2019-09-08  Tom Tromey  <tom@tromey.com>

* gdb.tui/resize.exp: Remove setup_xfail.
* gdb.tui/regs.exp: Remove setup_xfail.
* gdb.tui/basic.exp: Remove setup_xfail.

4 years agoAutomatic date update in version.in
GDB Administrator [Sun, 8 Sep 2019 00:01:06 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoChange lookup_symbol's block_index parameter type to block_enum
Simon Marchi [Sat, 7 Sep 2019 16:03:56 +0000 (12:03 -0400)] 
Change lookup_symbol's block_index parameter type to block_enum

The only two values valid to pass to the block_index parameter of
quick_symbol_functions::lookup_symbol are GLOBAL_BLOCK and STATIC_BLOCK,
part of enum block_enum.  Change the type of that parameter to
block_enum.

Change also the block_index field of dw2_symtab_iterator in the same
way..  This makes it consistent with dw2_debug_names_iterator, which
already uses block_enum for its block_index field.

This is a follow-up to this thread:

https://sourceware.org/ml/gdb-patches/2019-08/msg00097.html

gdb/ChangeLog:

* dwarf2read.c (struct dw2_symtab_iterator) <block_index>:
Change type to gdb::optional<block_enum>.
(dw2_symtab_iter_init): Change block_index parameter type
to gdb::optional<block_enum>.
(dw2_lookup_symbol): Change block_index parameter
type to block_enum.c
(dw2_debug_names_lookup_symbol): Likewise.
* psymtab.c (psym_lookup_symbol): Likewise.
* symfile-debug.c (debug_qf_lookup_symbol): Likewise.
* symfile.h (struct quick_symbol_functions) <lookup_symbol>:
Likewise.

4 years agoAutomatic date update in version.in
GDB Administrator [Sat, 7 Sep 2019 00:00:16 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoun-XFAIL under Clang tests using labels
David Blaikie [Thu, 5 Sep 2019 22:01:25 +0000 (15:01 -0700)] 
un-XFAIL under Clang tests using labels

gdb/testsuite/
* gdb.base/label.exp: un-XFAIL label related tests under Clang.
* gdb.cp/cplabel.exp: Ditto.
* gdb.linespec/ls-errs.exp: Ditto.

4 years agoChange int to bool for the relocate_* functions
Christian Biesinger [Fri, 6 Sep 2019 19:19:40 +0000 (14:19 -0500)] 
Change int to bool for the relocate_* functions

These parameters are only used as bools. This also
renames "flag" to "relocatable" to make it clearer
what it does.

gdb/ChangeLog:

2019-09-06  Christian Biesinger  <cbiesinger@google.com>

* defs.h (relocate_gdb_directory): Change int to bool in
signature and rename flag to relocatable.
* main.c (relocate_path): Likewise.
(relocate_gdb_directory): Likewise.

4 years agobeos.em qsort predicate tidy
Alan Modra [Fri, 6 Sep 2019 02:53:41 +0000 (12:23 +0930)] 
beos.em qsort predicate tidy

lang_input_section_type** is better than lang_statement_union_type**
here since that is in fact the type passed to the qsort predicate,
and I think it's worth factoring out the common indirections.

* emultempl/beos.em (sort_by_file_name): Use appropriate
intermediary variables.
(sort_by_section_name): Likewise.

4 years agobfd_get_filename
Alan Modra [Fri, 6 Sep 2019 02:37:05 +0000 (12:07 +0930)] 
bfd_get_filename

This macro says:
/* Cast from const char * to char * so that caller can assign to
   a char * without a warning.  */

I reckon that isn't such a good idea since it can result in char*
variables where const char* is appropriate.  Not very many places
need the char* cast.

bfd/
* aout-target.h (object_p): Formatting.
* bfd-in.h (bfd_get_filename): Don't cast to char*.
* corefile.c (generic_core_file_matches_executable_p): Constify
variables and remove cast.
* bfd-in2.h: Regenerate.
binutils/
* nm.c (print_object_filename_bsd, print_object_filename_sysv),
(print_object_filename_posix, print_archive_filename_bsd),
(print_archive_filename_sysv, print_archive_filename_posix),
(print_archive_member_bsd, print_archive_member_sysv),
(print_archive_member_posix): Constify parameter.
(struct output_fns <print_object_filename, print_archive_filename>),
(<print_archive_member>): Likewise.
* objcopy.c (copy_archive): Add cast for make_tempdir.
ld/
* emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Constify
variable.
* emultempl/pe.em (gld_${EMULATION_NAME}_after_open): Likewise.
* emultempl/pep.em (gld_${EMULATION_NAME}_after_open): Likewise.
gdb/
* coffread.c (coff_symfile_read): Constify filename variable.
* dbxread.c (dbx_symfile_init, coffstab_build_psymtabs),
(elfstab_build_psymtabs, stabsect_build_psymtabs): Likewise.
* gdb_bfd.c (gdb_bfd_close_or_warn): Likewise.
* solib.c (reload_shared_libraries_1): Likewise.
* symfile.c (reread_symbols): Likewise.
* solib-aix.c (solib_aix_bfd_open): Add cast for xfree of filename.
* solib-darwin.c (darwin_bfd_open): Likewise.
* symfile-mem.c (symbol_file_add_from_memory): Likewise.
sim/cris/
* sim-if.c (sim_open): Constify filename variable.

4 years agoAutomatic date update in version.in
GDB Administrator [Fri, 6 Sep 2019 00:00:19 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoFix PR ld/24574
Eric Botcazou [Thu, 5 Sep 2019 16:23:37 +0000 (18:23 +0200)] 
Fix PR ld/24574

This restores a line that has been dropped when the auto-import feature
of the PE-COFF linker was overhauled about one year.  It is necessary
for GDB to properly resolve extern symbol in DLLs.

ld/ChangeLog
* pe-dll.c (pe_find_data_imports): Replace again the original name
of the undefined symbol with the __imp_ prefixed one after it is
resolved.

4 years ago[gdb/testsuite] Restore breakpoint command in ui-redirect.exp
Tom de Vries [Thu, 5 Sep 2019 12:33:10 +0000 (14:33 +0200)] 
[gdb/testsuite] Restore breakpoint command in ui-redirect.exp

In gdb.base/ui-redirect.exp, the "save breakpoint" command is used to write
the current breakpoints to a file, but the actual output is not verified.

Consequently, the test has regressed in that the "print 1" command associated
with a breakpoint on main is removed by a subsequent runto_main, which first
deletes all breakpoints:
...
(gdb) break main
Breakpoint 1 at 0x4004d7: file start.c, line 34.
(gdb) commands
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
> PASS: gdb.base/ui-redirect.exp: commands
print 1
> PASS: gdb.base/ui-redirect.exp: print 1
end
(gdb) PASS: gdb.base/ui-redirect.exp: end
delete breakpoints
Delete all breakpoints? (y or n) y
...
and consequently the "save breakpoint" output is missing the breakpoint
command for main:
...
 break main
-  commands
-    print 1
-  end
 break foo
 break bar
...

Fix this by replacing "gdb_breakpoint main" with runto_main, and verifying the
"save breakpoints" output.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

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

* lib/gdb.exp (cmp_file_string): New proc.
* gdb.base/ui-redirect.exp: Replace "gdb_breakpoint main" with
runto_main.  Verify save breakpoints output.

4 years agoPowerPC warning on symbol+offset@got
Alan Modra [Thu, 5 Sep 2019 06:20:35 +0000 (15:50 +0930)] 
PowerPC warning on symbol+offset@got

* config/tc-ppc.c (ppc_elf_suffix): Display the relocation
operator on GOT reloc warnings/errors.

4 years agoPowerPC64 GOT_PCREL relocs
Alan Modra [Thu, 5 Sep 2019 00:36:42 +0000 (10:06 +0930)] 
PowerPC64 GOT_PCREL relocs

PC-relative relocs typically use the addend in adjusting what they are
relative to.  For example:
bcl 20,31,1f
1: mflr 12
addi 12,12,xxx-1b
generates "R_PPC64_REL16 xxx+0x4" for the addi (when little-endian).
The addend reflects the fact that you want the offset relative to the
previous insn not the current one in this case.

So the question is, will we ever want to do something like that for an
instruction using R_PPC64_GOT_PCREL34?  I thought so at the time I
first implemented support in ld but at the time I think the hardware
was possibly going to support pcrel+offset+reg addressing.  In which
case you might want something like:
load_big_offset_into_r2
pld 3,sym-big_offset@got@pcrel(2)
which would be a way of supporting more than 8G offsets from code to
the GOT.  We could do the same with
load_big_offset_into_r2
pla 9,sym-big_offset@got@pcrel
ldx 3,9,2
However, this is really a poor version of TOC-pointer relative code.

So let's go with an addend on R_PPC64_GOT_PCREL34 meaning that
sym+addend should be put in a GOT entry, and the relocation calculate
the pc-relative offset to that GOT entry.

Note that this is an extension to the ABI, which says (by the
expression given for GOT relocs) that non-zero addends on GOT and PLT
relocs are ignored.  This is true for all GOT/PLT relocs, not just the
pcrel ones.

* elf64-ppc.c (ppc64_elf_check_relocs): Interpret an addend in
GOT_PCREL and PLT_PCREL relocs as affecting the value stored
in the GOT/PLT entry rather than affecting the offset to that
GOI/PLT entry.
(ppc64_elf_edit_toc, ppc64_elf_relocate_section): Likewise.

4 years agoR_PPC64_PCREL_OPT
Alan Modra [Wed, 4 Sep 2019 06:00:37 +0000 (15:30 +0930)] 
R_PPC64_PCREL_OPT

The loads and stores handled in the second instruction of a sequence
marked by R_PPC64_PCREL_OPT may be a prefix instruction.  For example:
 pld ra,symbol@got@pcrel
0:
 pld rt,off(ra)
 .reloc 0b-8,R_PPC64_PCREL_OPT,(.-8)-(0b-8)
can be optimised to
 pld rt,symbol+off@pcrel
 pnop

* elf64-ppc.c (xlate_pcrel_opt): Handle prefix loads and stores
in second instruction.
(ppc64_elf_relocate_section): Likewise.

4 years agoPR24955, libbfd terminating program on out of memory
Alan Modra [Mon, 2 Sep 2019 06:43:05 +0000 (16:13 +0930)] 
PR24955, libbfd terminating program on out of memory

This patch fixes the worst of the cases where libbfd might terminate
a program due to calling xstrdup or xmalloc.  I've also fixed some
error paths that didn't clean up properly.

PR 24955
* libbfd-in.h (bfd_strdup): New inline function.
* archive.c (_bfd_get_elt_at_filepos): Use bfd_strdup.  Close
bfd on error.
* elfcode.h (_bfd_elf_bfd_from_remote_memory): Use bfd_strdup.
* opncls.c (bfd_fopen): Use bfd_strdup.  Close fd and stream
on error.
(bfd_openstreamr): Use bfd_strdup.
(bfd_openr_iovec, bfd_openw, bfd_create): Likewise.
* plugin.c (try_load_plugin): Use bfd_malloc.
* libbfd.h: Regenerate.

4 years agoAutomatic date update in version.in
GDB Administrator [Thu, 5 Sep 2019 00:00:27 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoAvoid expect's buffer overflow in info-var.exp test.
Philippe Waroquiers [Sat, 31 Aug 2019 15:25:54 +0000 (17:25 +0200)] 
Avoid expect's buffer overflow in info-var.exp test.

Once the executable is started, info variables can show thousands
of variables belonging to glibc (see below).

This long list of variables then causes the test to fail, due
to expect's buffer overflow:
  Running /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.base/info-var.exp ...
  ERROR: internal buffer is full.
  ERROR: internal buffer is full.
  ERROR: internal buffer is full.

Fix this by testing 'info variables' without running the executable.

gdb ./info-var
...
Reading symbols from ./info-var...
(gdb) |info variables|wc
     27      54     971
(gdb) start
Temporary breakpoint 1 at 0x1129: file /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.base/info-var-f1.c, line 23.
Starting program: /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/outputs/gdb.base/info-var/info-var

Temporary breakpoint 1, main ()
    at /bd/home/philippe/gdb/git/build_binutils-gdb/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.base/info-var-f1.c:23
23   return global_var + get_offset() + f1_var;
(gdb) |info variables|wc
   4334   14581  130738
(gdb)

gdb/testsuite/ChangeLog
2019-09-04  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

* gdb.base/info-var.exp: Test info variables without running
to main, to avoid expect's buffer overflow.

4 years agoAutomatic date update in version.in
GDB Administrator [Wed, 4 Sep 2019 00:00:30 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agogdb: Handle missing domain types in: maintenance print psymbols
Andrew Burgess [Tue, 3 Sep 2019 14:54:57 +0000 (15:54 +0100)] 
gdb: Handle missing domain types in: maintenance print psymbols

Some domain_enum values were not handled in print_partial_symbols
which means that 'maintenance print psymbols' would print '<invalid
domain>' when it shouldn't have.

gdb/ChangeLog:

* psymtab.c (print_partial_symbols): Handle missing domain_enum
values MODULE_DOMAIN and COMMON_BLOCK_DOMAIN.

4 years agoHandle biased types
Tom Tromey [Mon, 13 May 2019 19:21:48 +0000 (13:21 -0600)] 
Handle biased types

In Ada, the programmer can request that a range type with a non-zero
base be stored in the minimal number of bits required for the range.
This is done by biasing the values; so, for example, a range of -7..-4
may be stored as two bits with a bias of -7.

This patch implements this for gdb.  It is done by adding a bias to
struct range_bounds and then adjusting a few spots to handle this.

The test case is written to use -fgnat-encodings=minimal, but a future
compiler patch will change the compiler to emit DW_AT_GNU_bias with
-fgnat-encodings=gdb.  It seemed good to get the gdb patch in first.

Tested on x86-64 Fedora 29; plus a variety of targets using AdaCore's
internal test suite.

gdb/ChangeLog
2019-09-03  Tom Tromey  <tromey@adacore.com>

* ada-valprint.c (ada_val_print_num): Don't recurse for range
types.
(has_negatives): Unbias a range type bound.
* dwarf2read.c (read_subrange_type): Handle DW_AT_GNU_bias.
* gdbtypes.c (operator==): Handle new field.
(create_range_type): Add "bias" parameter.
(create_static_range_type, resolve_dynamic_range): Update.
* gdbtypes.h (struct range_bounds) <bias>: New member.
(create_range_type): Add bias parameter.
* printcmd.c (print_scalar_formatted): Unbias range types.
* value.c (unpack_long): Unbias range types.
(pack_long): Bias range types.

gdb/testsuite/ChangeLog
2019-09-03  Tom Tromey  <tromey@adacore.com>

* gdb.ada/bias.exp: New file.
* gdb.ada/bias/bias.adb: New file.
* gdb.ada/print_chars.exp: Add regression test.
* gdb.ada/print_chars/foo.adb (My_Character): New type.
(MC): New variable.

4 years agoFix buffer underrun bug in the TI C30 disassembler.
Nick Clifton [Tue, 3 Sep 2019 14:37:12 +0000 (15:37 +0100)] 
Fix buffer underrun bug in the TI C30 disassembler.

PR 24961
* tic30-dis.c (get_indirect_operand): Check for bufcnt being
greater than zero before indexing via (bufcnt -1).

4 years agoFix a potential buffer overrun in the MMIX disassembler when processing a corrupt...
Nick Clifton [Tue, 3 Sep 2019 08:53:25 +0000 (09:53 +0100)] 
Fix a potential buffer overrun in the MMIX disassembler when processing a corrupt input file.

PR 24958
* mmix-dis.c (MAX_REG_NAME_LEN): Define.
(MAX_SPEC_REG_NAME_LEN): Define.
(struct mmix_dis_info): Use defined constants for array lengths.
(get_reg_name): New function.
(get_sprec_reg_name): New function.
(print_insn_mmix): Use new functions.

4 years agoAutomatic date update in version.in
GDB Administrator [Tue, 3 Sep 2019 00:00:22 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoCheck arguments for all probes before using them
Alan Hayward [Wed, 21 Aug 2019 14:36:37 +0000 (15:36 +0100)] 
Check arguments for all probes before using them

There is a long standing bug in the Arm toolchain where invalid
stap probes get created due to the probes referring to symbols which
have been resolved away.

More details are here:
https://bugzilla.redhat.com/show_bug.cgi?id=1196181

When these invalid probes are present, GDB will create the breakpoints
and then fail to stop. The errors are only spotted the first time
GDB stops, which is too late.

The solution is to ensure the arguments for all the probes are
resolved before using them.

This fixes >100 timeouts when running break-interp.exp when using
bad probes.

gdb/ChangeLog:

* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Check all
probe arguments.

4 years agoUse gdbarch for probe::get_argument_count
Alan Hayward [Wed, 21 Aug 2019 14:24:02 +0000 (15:24 +0100)] 
Use gdbarch for probe::get_argument_count

The probe function get_argument_count does not need a frame, only
the current gdbarch.  Switch the code to pass gdbarch instead.
No functional changes.

gdb/ChangeLog:

* break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
* dtrace-probe.c (dtrace_probe::get_argument_count): Likewise.
* probe.c (probe_safe_evaluate_at_pc) (compute_probe_arg)
(compile_probe_arg): Likewise.
* probe.h (get_argument_count): Likewise.
* solib-svr4.c (solib_event_probe_action): Likewise.
* stap-probe.c (stap_probe::get_argument_count): Likewise.

4 years agoRefactor svr4_create_solib_event_breakpoints
Alan Hayward [Wed, 21 Aug 2019 14:05:40 +0000 (15:05 +0100)] 
Refactor svr4_create_solib_event_breakpoints

Move the bulk of svr4_create_solib_event_breakpoints into a new
function to simplify the logic. No functional changes.

gdb/ChangeLog:

* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move
code to here...
(svr4_create_solib_event_breakpoints): ...from here.

4 years agoRe: Memory leak in dwarf2.c
Alan Modra [Mon, 2 Sep 2019 07:18:44 +0000 (16:48 +0930)] 
Re: Memory leak in dwarf2.c

PR 11983
* dwarf2.c (read_alt_indirect_string): Free debug_filename
on success.  Tidy.
(read_alt_indirect_ref): Likewise.

4 years agoMemory leak in dwarf2.c
Alan Modra [Mon, 2 Sep 2019 00:24:55 +0000 (09:54 +0930)] 
Memory leak in dwarf2.c

This fixes a small leak of debug_filename.  bfd_openr copies the file
name since git commit 1be5090bca.

PR 11983
* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
on success.  Tidy.

4 years agoAutomatic date update in version.in
GDB Administrator [Mon, 2 Sep 2019 00:00:17 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoRISC-V: Fix linker problems with tls copy relocs.
Jim Wilson [Sun, 1 Sep 2019 04:22:36 +0000 (21:22 -0700)] 
RISC-V: Fix linker problems with tls copy relocs.

The linker doesn't allocate memory space for sections that are only SEC_ALLOC
and SEC_THREAD_LOCAL.  See the IS_TBSS test in ld/ldlang.c.  So we need to
pretend that .tdata.dyn sections have contents to get the right result.  It
will be marked this way anyways if there is a .tdata section to merge with.

bfd/
PR 23825
* elfnn-riscv.c (riscv_elf_create_dynamic_sections): Add SEC_LOAD,
SEC_DATA, and SEC_HAS_CONTENTS to .tdata.dyn section.

4 years agoAutomatic date update in version.in
GDB Administrator [Sun, 1 Sep 2019 00:01:00 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Sat, 31 Aug 2019 00:00:41 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoRISC-V: Force linker error exit after unresolvable reloc.
Jim Wilson [Fri, 30 Aug 2019 22:14:36 +0000 (15:14 -0700)] 
RISC-V: Force linker error exit after unresolvable reloc.

This was noticed while trying to test the compiler -msave-restore support.
Putting non-pic code in a shared library gives a linker error, but doesn't
stop the build.

rohan:2030$ cat libtmp.c
extern int sub2 (int);
int sub (int i) { return sub2 (i + 10); }
rohan:2031$ cat libtmp2.c
extern int sub (int);
int sub2 (int i) { return sub (i + 10); }
rohan:2032$ riscv64-unknown-linux-gnu-gcc --shared -o libtmp.so libtmp.c
rohan:2033$ riscv64-unknown-linux-gnu-gcc --shared -o libtmp2.so libtmp2.c libtmp.so
/home/jimw/FOSS/install-riscv64/lib/gcc/riscv64-unknown-linux-gnu/8.3.0/../../../../riscv64-unknown-linux-gnu/bin/ld: /tmp/cctrsIBe.o(.text+0x18): unresolvable R_RISCV_CALL relocation against symbol `sub'
rohan:2034$ echo $?
0
rohan:2035$ ls -lt libtmp2.so
-rwxr-xr-x 1 jimw jimw 6912 Aug 30 14:32 libtmp2.so
rohan:2036$

The patch fixes this by forcing a linker error.  I now get this.

ohan:2059$ sh tmp.script
/home/jimw/FOSS/BINUTILS/X-riscv64-linux/ld/ld-new: libtmp2.o(.text+0x18): unresolvable R_RISCV_CALL relocation against symbol `sub'
/home/jimw/FOSS/BINUTILS/X-riscv64-linux/ld/ld-new: final link failed: bad value
rohan:2060$ echo $?
1
rohan:2061$ ls -lt libtmp2.so
ls: cannot access 'libtmp2.so': No such file or directory

bfd/
* elfnn-riscv.c (riscv_elf_relocate_section): For unresolvable reloc
error, call bfd_set_error, set ret to FALSE, and goto out label.

4 years agoRemove "\nError: " suffix from nat/fork-inferior.c:trace_start_error warning message
Sergio Durigan Junior [Thu, 29 Aug 2019 20:11:45 +0000 (16:11 -0400)] 
Remove "\nError: " suffix from nat/fork-inferior.c:trace_start_error warning message

Rationale: https://sourceware.org/ml/gdb-patches/2019-08/msg00651.html

This very simple patch removes the "\nError: " suffix from the warning
message printed by nat/fork-inferior.c:trace_start_error.  This proved
to just pollute the screen, causing things like:

  Starting program: /usr/bin/true
  warning: Could not trace the inferior process.
  Error:
  warning: ptrace: Permission denied

This "Error: " string is not useful at all, and can confuse things,
therefore let's just remove it and simplify the resulting messages:

  Starting program: /usr/bin/true
  warning: Could not trace the inferior process.
  warning: ptrace: Permission denied

gdb/ChangeLog:
2019-08-30  Sergio Durigan Junior  <sergiodj@redhat.com>

* nat/fork-inferior.c (trace_start_error): Remove "\nError: "
suffix from warning message.

4 years agoRemove tui_win_info::refresh_all
Tom Tromey [Thu, 18 Jul 2019 20:38:39 +0000 (14:38 -0600)] 
Remove tui_win_info::refresh_all

The TUI has two duplicate "re-render this window" methods, "rerender"
and "refresh_all".  They differ only slightly in semantics, so I
wanted to see if they could be unified.

After looking into this, I decided that refresh_all was not needed.
There are 4 calls to tui_refresh_all_win (the only caller of this
method):

1. tui_enable.  This sets the layout, which renders the windows.

2. tui_cont_sig.  Here, I think it's sufficient to simply redraw the
   current window contents from the curses backing store, because gdb
   state didn't change while it was suspended

3. tui_dispatch_ctrl_char.  This is the C-l handler, and here it's
   explicitly enough to just refresh the screen (as above).

4. tui_refresh_all_command.  This is the command equivalent of C-l.

So, this patch removes this method entirely and simplifies
tui_refresh_all_win.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-winsource.h (struct tui_source_window_base)
<refresh_all>: Don't declare.
* tui/tui-winsource.c (tui_source_window_base::refresh_all):
Remove.
* tui/tui-win.c (tui_refresh_all_win): Don't call refresh_all or
tui_show_locator_content.
* tui/tui-regs.h (struct tui_data_window) <refresh_all>: Don't
declare.
* tui/tui-regs.c (tui_data_window::refresh_all): Remove.
* tui/tui-data.h (struct tui_win_info) <refresh_all>: Don't
declare.

4 years agoDon't call wrefresh from tui_cont_sig
Tom Tromey [Thu, 18 Jul 2019 20:34:39 +0000 (14:34 -0600)] 
Don't call wrefresh from tui_cont_sig

tui_cont_sig does not need to call wrefresh, because this is already
done by tui_refresh_all_win.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-io.c (tui_cont_sig): Don't call wrefresh.

4 years agoMinor rearrangement of tui-stack.c
Tom Tromey [Thu, 18 Jul 2019 20:12:31 +0000 (14:12 -0600)] 
Minor rearrangement of tui-stack.c

This move _initialize_tui_stack to the end of tui-stack.c, per the gdb
style; and then removes two unnecessary forward declarations.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-stack.c (_initialize_tui_stack): Move later.
Remove unnecessary forward declarations.

4 years agoMake tui_locator_window::set_locator_fullname re-render
Tom Tromey [Thu, 18 Jul 2019 20:08:53 +0000 (14:08 -0600)] 
Make tui_locator_window::set_locator_fullname re-render

This changes tui_locator_window::set_locator_fullname to re-render the
locator window, so that the callers don't need to do this.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-stack.c (tui_locator_window::set_locator_fullname): Call
rerender.
(tui_update_locator_fullname, tui_show_frame_info): Don't call
tui_show_locator_content.

4 years agoSwap tui_show_locator_content and tui_locator_window::rerender
Tom Tromey [Thu, 18 Jul 2019 20:04:14 +0000 (14:04 -0600)] 
Swap tui_show_locator_content and tui_locator_window::rerender

This swaps the bodies ot tui_show_locator_content and
tui_locator_window::rerender, so that the latter does the work, and
the former is now just an exported convenience wrapper.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-stack.c (tui_show_locator_content): Move lower.  Rewrite.
(tui_locator_window::rerender): Rewrite using body of previous
tui_show_locator_content.

4 years agoTurn two locator functions into methods
Tom Tromey [Thu, 18 Jul 2019 20:01:56 +0000 (14:01 -0600)] 
Turn two locator functions into methods

This changes tui_set_locator_fullname and tui_set_locator_info to be
methods on tui_locator_window.  This enables some subsequent
cleannups.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-stack.h (struct tui_locator_window) <set_locator_info,
set_locator_fullname>: New methods.
* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
Rename from tui_set_locator_fullname.
(tui_locator_window::set_locator_info): Rename from
tui_set_locator_info.  Return bool.
(tui_update_locator_fullname, tui_show_frame_info): Update.

4 years agoDon't call tui_refresh_all from show_layout
Tom Tromey [Thu, 18 Jul 2019 19:46:23 +0000 (13:46 -0600)] 
Don't call tui_refresh_all from show_layout

show_layout calls tui_refresh_all in one case.  However, it doesn't
need to any more, because the resize method on each window will also
update the contents.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-layout.c (show_layout): Don't call tui_refresh_all.

4 years agoDon't call touchwin in tui_gen_win_info::refresh_window
Tom Tromey [Wed, 17 Jul 2019 22:11:40 +0000 (16:11 -0600)] 
Don't call touchwin in tui_gen_win_info::refresh_window

The call to touchwin in tui_gen_win_info::refresh_window was an
artifact of some earlier refactorings.  Testing shows it isn't needed
any more -- I believe it was only ever needed for the data item window
display problem; but that's been solved more locally.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Don't
call touchwin.

4 years agoRemove NULL checks from box_win
Tom Tromey [Mon, 15 Jul 2019 21:59:53 +0000 (15:59 -0600)] 
Remove NULL checks from box_win

box_win can't be called with a NULL window, or with an invisible
window.  So, the NULL checks in that function can be removed.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-wingeneral.c (box_win): Assume win_info and
win_info->handle cannot be NULL.

4 years agoSimplify register display
Tom Tromey [Mon, 15 Jul 2019 21:28:56 +0000 (15:28 -0600)] 
Simplify register display

This patch starts with the observation that the code in
tui_data_window::display_registers_from can all be replaced with a
call to resize.  To make this work propertly, it also changes
tui_display_register to be the "rerender" method on
tui_data_item_window.

The refresh_window method is needed due to the use of nested windows
here.  The ncurses man page makes it sound like this is not very well
supported; and experience bears this out: negelecting the touchwin
call in this path will cause the register window to blank when
switching focus.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.h (struct tui_data_item_window) <rerender,
refresh_window>: Declare.
* tui/tui-regs.c (tui_data_window::display_registers_from): Call
resize.
(tui_data_item_window::rerender): Rename from
tui_display_register.
(tui_data_item_window::refresh_window): New method.
* tui/tui-layout.c (tui_gen_win_info::resize): Do nothing on
no-op.

4 years agoPrivate data members in tui_data_window
Tom Tromey [Mon, 15 Jul 2019 01:45:55 +0000 (19:45 -0600)] 
Private data members in tui_data_window

This changes tui_data_window so that the data members are private.
This required the addition of a simple accessor method in one case.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.h (struct tui_data_window) <regs_content,
regs_column_count, current_group>: Move later.  Now private.
<get_current_group>: New method.
* tui/tui-regs.c (tui_reg_command): Update.
* tui/tui-layout.c (tui_set_layout): Update.

4 years agoRemove some calls in tui_data_window
Tom Tromey [Sun, 14 Jul 2019 15:11:46 +0000 (09:11 -0600)] 
Remove some calls in tui_data_window

This patch removes a call to erase_data_content in refresh_all and
then removes some other calls that are more clearly unnecessary once
one follows calls from that point.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.c (tui_data_window::display_registers_from_line)
(tui_data_window::rerender): Don't call
check_and_display_highlight_if_needed.
(tui_data_window::refresh_all): Remove call to
erase_data_content.

4 years agoRemove some checks of .empty()
Tom Tromey [Sun, 14 Jul 2019 15:07:10 +0000 (09:07 -0600)] 
Remove some checks of .empty()

A few methods in tui_data_window check whether the contents are empty;
but all the callers already check this, so these calls can be removed.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.c (tui_data_window::last_regs_line_no)
(tui_data_window::display_registers_from)
(tui_data_window::display_reg_element_at_line)
(tui_data_window::display_registers_from_line): Remove checks of
"empty".

4 years agoRemove tui_data_window::display_all_data
Tom Tromey [Sun, 14 Jul 2019 14:27:34 +0000 (08:27 -0600)] 
Remove tui_data_window::display_all_data

tui_data_window::rerender clears the data item windows, and then calls
display_all_data.  However, that method only does anything if the
contents are not empty.  So, display_all_data can be renamed and the
wrapper removed.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.h (struct tui_data_window) <display_all_data>:
Don't declare.
* tui/tui-regs.c (tui_data_window::show_registers): Call
rerender.
(tui_data_window::rerender): Rename from display_all_data.
(tui_data_window::rerender): Remove old implementation.

4 years agoRemove NO_DATA_STRING
Tom Tromey [Sun, 14 Jul 2019 14:21:16 +0000 (08:21 -0600)] 
Remove NO_DATA_STRING

NO_DATA_STRING shouldn't be used.  It's referenced in a single spot,
in tui_data_window::display_all_data.  This patch removes the use and
replaces it with the more correct text.  A later patch (though not in
this series) will remove this call entirely, when it's more obviously
correct to do so.

gdb/ChangeLog
2019-08-30  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.c (tui_data_window::display_all_data): Change
text.
* tui/tui-data.h (NO_DATA_STRING): Remove define.

4 years agoCopy BFD_COMPRESS/BFD_DECOMPRESS/BFD_COMPRESS_GABI for thin archive
H.J. Lu [Fri, 30 Aug 2019 14:46:15 +0000 (07:46 -0700)] 
Copy BFD_COMPRESS/BFD_DECOMPRESS/BFD_COMPRESS_GABI for thin archive

We need to copy BFD_COMPRESS, BFD_DECOMPRESS and BFD_COMPRESS_GABI flags
for thin archive.

PR ld/24951
* archive.c (_bfd_get_elt_at_filepos): Copy BFD_COMPRESS,
BFD_DECOMPRESS and BFD_COMPRESS_GABI flags for thin archive.

4 years ago[PATCH][ARM][GAS]: Assembler support to interpret MVE VMOV instruction correctly.
Srinath Parvathaneni [Fri, 30 Aug 2019 09:44:18 +0000 (10:44 +0100)] 
[PATCH][ARM][GAS]: Assembler support to interpret MVE VMOV instruction correctly.

This patch make changes to the assembler to encode MVE VMOV instruction "a" same as "b".
a: VMOV<c><q> <Dd>, <Dm>
b: VMOV<c><q>.F64 <Dd>, <Dm>

gas/ChangeLog:

2019-08-30  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

* config/tc-arm.c (do_neon_mov): Modify "if" statement.
* testsuite/gas/arm/mve-vmov-bad-3.d: New test.
* testsuite/gas/arm/mve-vmov-bad-3.l: Likewise.
* testsuite/gas/arm/mve-vmov-bad-3.s: Likewise.

4 years ago[ARC] [COMMITTED] Fix FASTMATH field.
Claudiu Zissulescu [Fri, 30 Aug 2019 08:31:19 +0000 (11:31 +0300)] 
[ARC] [COMMITTED] Fix FASTMATH field.

Move FASTMATH to the right enum.

2019-08-30  Claudiu Zissulescu <claziss@gmail.com>

        * opcode/arc.h (FASTMATH): Move it from insn_class_t to
        insn_subclass_t enum.

4 years agoAutomatic date update in version.in
GDB Administrator [Fri, 30 Aug 2019 00:00:20 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoRun argv0-symlink.exp only on native target and local host.
Sandra Loosemore [Thu, 29 Aug 2019 21:48:05 +0000 (14:48 -0700)] 
Run argv0-symlink.exp only on native target and local host.

This testcase was originally for PR gdb/15415, a problem with the
"run" command expanding symlinks in the name of the program being run.
It does not correctly distinguish between files on build, host, and
target, and it is not clear if it would be testing anything useful in
configurations where "run" is not being used.

2019-08-29  Sandra Loosemore  <sandra@codesourcery.com>

* gdb.base/argv0-symlink.exp: Run only on native target
and local host.

4 years agoFix PR win32/24284: tcp_auto_retry doesn't work in MinGW
Bernhard Wodok [Tue, 27 Aug 2019 15:40:31 +0000 (11:40 -0400)] 
Fix PR win32/24284: tcp_auto_retry doesn't work in MinGW

This was reported by Bernhard Wodok, along with a patch to fix the
issue.  I adjusted the patch a bit, and I'm submitting the patch on
his behalf.

According to Bernhard, the issue can be reproduced by doing:

  1. start gdb
  2. enter 'target remote :2345'
  3. observe that it throws a "connection refused" error immediately
  instead of waiting and throwing a timeout error

I.e., I believe it can be reproduced by our current tests, which is
why I'm not proposing any extra tests here (well, I don't use nor have
any Windows system to test this, so...).

The problem happens because, on ser-tcp:wait_for_connect, we call
'gdb_select' passing 0 as its first argument, which, when using MinGW,
ends up using the 'gdb_select' version from mingw-hdep.c, and when the
first argument is 0 this means that WaitForMultipleObjects will be
called with 0 as its first argument as well.  According to the MS API
docs, this is forbidden:

  https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitformultipleobjects

The proposed fix is simple: we just call Sleep when N == 0 (and when
TIMEOUT is non-NULL), and return 0.  It makes sense to me.

Both Bernhard and Paul Carroll confirmed that the fix works.  I'm
Cc'ing Bernhard in case you have any questions about the patch.

OK?

gdb/ChangeLog:
2019-08-29  Bernhard Wodok  <barto@gmx.net>
    Sergio Durigan Junior  <sergiodj@redhat.com>

PR win32/24284
* mingw-hdep.c (gdb_select): Handle case when 'n' is zero.

4 years ago[gdb/testsuite] Fix gdb.fortran/info-types.exp regexp
Tom de Vries [Thu, 29 Aug 2019 12:43:11 +0000 (14:43 +0200)] 
[gdb/testsuite] Fix gdb.fortran/info-types.exp regexp

The gdb.fortran/info-types.exp test-case passes with gcc 7 (though not on
openSUSE, due to the extra debug info) and fails with gcc 4.8 and gcc 8.

Fix the gdb_test regexp to fix all those cases.

gdb/testsuite/ChangeLog:

2019-08-29  Tom de Vries  <tdevries@suse.de>

* gdb.fortran/info-types.exp: Fix gdb_test regexp to allow more
diverse debug info.
* lib/fortran.exp (fortran_int8): New proc, based on fortran_int4.

4 years agoPR24697, R_PPC_EMB_SDA21 cannot be used when making a shared object
Alan Modra [Thu, 29 Aug 2019 09:05:54 +0000 (18:35 +0930)] 
PR24697, R_PPC_EMB_SDA21 cannot be used when making a shared object

This removes a restriction on various R_PPC_EMB relocations that has
been present for ppc32 since 1996-04-26 git commit e25a798839.  As far
as I know, only those relocs that would require addressing via r2 for
.sdata2/.sbss2 access are disallowed in shared libraries.

PR 24697
* elf32-ppc.c (ppc_elf_check_relocs): Call bad_shared_reloc
when !bfd_link_executable for R_PPC_EMB_SDA2I16 and
R_PPC_EMB_SDA2REL.  Don't call bad_shared_reloc for any other
reloc.

4 years agoPowerPC64 xlate_pcrel_opt
Alan Modra [Thu, 29 Aug 2019 02:00:11 +0000 (11:30 +0930)] 
PowerPC64 xlate_pcrel_opt

We can easily support an offset on the second instruction of a
sequence marked with R_PPC64_PCREL_OPT.  For example,
  pla ra,symbol@pcrel
  ld rt,off(ra)
can be optimised to
  pld rt,symbol+off@pcrel
  nop

* elf64-ppc.c (xlate_pcrel_opt): Add poff parameter.  Allow offset
on second insn, return it in poff.
(ppc64_elf_relocate_section): Add offset to paddi addend for
PCREL_OPT.

4 years agoRISC-V: Fix a gp relaxation reloc overflow error.
Jim Wilson [Thu, 29 Aug 2019 00:47:01 +0000 (17:47 -0700)] 
RISC-V: Fix a gp relaxation reloc overflow error.

This was broken when I changed how we compute the value for the gp register.
It used to be computed inside the sdata section.  Now it is computed at the
end which makes it an abs section symbol.  There is code that tries to use
the alignment of the section that the gp value is in, but this does not work
if it is in the abs section, as the abs section has alignment of 1 byte.
There are people using alternative linker scripts that still define it in the
sdata section, so the code is still useful.  Thus adding a check to disable
this when gp is in the abs section.

bfd/
* elfnn-riscv.c (_bfd_riscv_relax_lui): Add check to exclude abs
section when setting max_alignment.  Update comment.
(_bfd_riscv_relax_pc): Likewise.

4 years agoAutomatic date update in version.in
GDB Administrator [Thu, 29 Aug 2019 00:00:14 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoTidy check_uvalue
Alan Modra [Wed, 28 Aug 2019 23:34:08 +0000 (09:04 +0930)] 
Tidy check_uvalue

I don't see a need to calculate "ptr = start + uvalue" then compare
"ptr" with "start" and "end".  Given "start <= end" on entry, the
"uvalue" comparison with "max_uvalue" ought to be sufficient to ensure
"start + uvalue" is bounded by "start" and "end" regardless of the
size of pointers and the unsigned dwarf_vma integer type.

* dwarf.c (check_uvalue): Remove unnecessary pointer checks.

4 years agoPR24891, objdump memory leaks when parsing malformed archive
Alan Modra [Wed, 28 Aug 2019 07:04:34 +0000 (16:34 +0930)] 
PR24891, objdump memory leaks when parsing malformed archive

BFD was leaking memory in bfd_check_format_matches.  As part of
deciding the proper format of an archive, BFD looks at the format of
the first file stored.  That file's bfd was left open for reasons
given in a comment removed in git commit 0e71e4955cd1 that said:
             /* We ought to close `first' here, but we can't, because
                we have no way to remove it from the archive cache.
                It's close to impossible to figure out when we can
                release bfd_ardata.  FIXME.  */
Well, things have changed since that comment was true and we now can
remove files from the archive cache.  Closing the first file is good
and cures some of the leaks.  Other leaks are caused by
bfd_check_format_matches throwing away bfd tdata before trying a new
match.  That lost the element cache set up when format checking the
first element in the archive.  The easiest and cleanest fix is to
simply disable the caching when checking the first element.

PR 24891
* bfd.c (struct bfd): Add no_element_cache.
* archive.c (_bfd_get_elt_at_filepos): Don't add element to
archive cache when no_element_cache.
(bfd_generic_archive_p): Set no_element_cache when opening first
element to check format.  Close first element too.
(do_slurp_bsd_armap): Don't zero ardata->cache here.
* bfd-in2.h: Regenerate.

4 years ago[gdb/testsuite] Fix info-var.exp for debug info from other files
Tom de Vries [Wed, 28 Aug 2019 17:13:29 +0000 (19:13 +0200)] 
[gdb/testsuite] Fix info-var.exp for debug info from other files

On openSUSE Leap 15.1, I get:
...
FAIL: gdb.base/info-var.exp: info variables
FAIL: gdb.base/info-var.exp: info variables -n
...
because the info variables command prints info also for init.c:
...
File init.c:^M
24:     const int _IO_stdin_used;^M
...
while the regexps in the test-case only expect info for info-var-f1.c and
info-var-f2.c.

Fix this by extending the regexps.

Tested on x86_64-linux, both openSUSE Leap 15.1 and Fedora 30.

gdb/testsuite/ChangeLog:

2019-08-28  Tom de Vries  <tdevries@suse.de>

* gdb.base/info-var.exp: Allow info variables to print info for files
other than info-var-f1.c and info-var-f2.c.

4 years agoSegfault in ld building SPEC CPU2017 527.cam4_r with -flto
Alan Modra [Wed, 28 Aug 2019 14:50:46 +0000 (00:20 +0930)] 
Segfault in ld building SPEC CPU2017 527.cam4_r with -flto

Caused by the PR24406 fix.  unwrap_hash_lookup shouldn't be called
with link_info.wrap_hash NULL.

PR ld/24406
* plugin.c (get_symbols): Test link_info.wrap_hash before calling
unwrap_hash_lookup.

4 years agoFix Gnulib glob.c resource leaks found by Coverity
Gary Benson [Wed, 28 Aug 2019 14:19:28 +0000 (15:19 +0100)] 
Fix Gnulib glob.c resource leaks found by Coverity

Coverity discovered a number of resource leaks in Gnulib's glob.c.
This commit backports the Gnulib commits that fix the leaks.

gnulib/ChangeLog:

* patches/0003-Fix-glob-c-Coverity-issues.patch: New file.
* update-gnulib.sh: List the above.
* import/glob.c: Rebuild.

4 years agogdb/fortran: Don't include module symbols when searching for types
Andrew Burgess [Tue, 9 Jul 2019 14:49:07 +0000 (15:49 +0100)] 
gdb/fortran: Don't include module symbols when searching for types

Currently the 'info types' command will return symbols that correspond
to Fortran modules.  This is because the symbols are created with
domain MODULE_DOMAIN and address_class LOC_TYPEDEF.  The address_class
LOC_TYPEDEF is the same address_class used for type symbols which is
why the modules show up when listing types.

This commit explicitly prevents symbols in the MODULE_DOMAIN from
appearing when we search for symbols in the TYPES_DOMAIN, this
prevents the Fortran module symbols from appearing in the output of
'info types'.

gdb/ChangeLog:

* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
when searching for types.

gdb/testsuite/ChangeLog:

* gdb.fortran/info-types.exp: Add module.
* gdb.fortran/info-types.f90: Update expected results.

4 years agogdb/fortran: Implement la_print_typedef for Fortran
Andrew Burgess [Tue, 9 Jul 2019 14:47:19 +0000 (15:47 +0100)] 
gdb/fortran: Implement la_print_typedef for Fortran

Implement an la_print_typedef method for Fortran, this allows 'info
types' to work for Fortran.  The implementation is just copied from
ada_print_typedef (with the appropriate changes).

To support the testing of this patch I added a new proc,
fortran_character1, to lib/fortran.exp which returns a regexp to match
a 1-byte character type.  The regexp returned is correct for current
versions of gFortran.  All of the other regexp are guesses based on
all of the other support procs in lib/fortran.exp, I haven't tested
them myself.

gdb/ChangeLog:

* f-lang.c (f_language_defn): Use f_print_typedef.
* f-lang.h (f_print_typedef): Declare.
* f-typeprint.c (f_print_typedef): Define.

gdb/testsuite/ChangeLog:

* gdb.fortran/info-types.exp: New file.
* gdb.fortran/info-types.f90: New file.
* lib/fortran.exp (fortran_character1): New proc.

4 years agoAdd an option to objcopy to change the alignment of sections.
Niklas G?rtler [Wed, 28 Aug 2019 11:33:41 +0000 (12:33 +0100)] 
Add an option to objcopy to change the alignment of sections.

PR 24942
* objcopy.c (SECTION_CONTEXT_SET_ALIGNMENT): New constant.
(struct section_list): Add alignment field.
(command_line_switch): Add OPTION_SET_SECTION_ALIGNMENT.
(copy_options): Add --set-section-alignment.
(copy_usage): Describe --set-section-alignment.
(find_section_list): Initialise the alignment field.
(setup_section): Handle the alignment field.
(copy_main): Handle OPTION_SET_SECTION_ALIGNMENT.
* doc/binutils.texi: Document the new feature.
* NEWS: Mention the new feature.

4 years agoAdd a --source-comment=<text> option to objdump which provides a prefix to dipslayed...
Nick Clifton [Wed, 28 Aug 2019 10:39:19 +0000 (11:39 +0100)] 
Add a --source-comment=<text> option to objdump which provides a prefix to dipslayed source code lines.

PR 24931
* objdump.c (source_comment): New static variable.
(option_values): Add OPTION_SOURCE_COMMENT.
(long_opions): Add --source-comment.
(print_line): If source comment is set, use it as a prefix to the
source code line.
(main): Handle OPTION_SOURCE_COMMENT.
* doc/binutils.texi: Document the new option.
* NEWS: Mention the new feature.
* testsuite/binutils-all/objdump.exp (test_objdump_S): Add tests
of the -S and --source-comment options.