deliverable/binutils-gdb.git
4 years agoFix test failures (arch not recognized)
Laurent Morichetti [Sun, 22 Dec 2019 06:05:30 +0000 (22:05 -0800)] 
Fix test failures (arch not recognized)

The following tests:
  - gdb.base/all-architectures-0.exp
  - gdb.base/all-architectures-1.exp
  - gdb.base/all-architectures-3.exp

fail with an "arch not recognized" error.

GDB cannot select architectures that are not supported by the ROCdbgapi
library. Remove unsupported architectures from the arch_info struct.

bfd/ChangeLog:

        * cpu-amdgcn.c (arch_info_struct): Remove unsupported
        architectures.

Change-Id: Ie9c72499fecdd64223184864cfe425330b582cf3

4 years agoFix gdb.base/all-architectures-2.exp failures
Laurent Morichetti [Sun, 22 Dec 2019 05:52:59 +0000 (21:52 -0800)] 
Fix gdb.base/all-architectures-2.exp failures

print_insn_amdgcn fails to report an error if the memory is not mapped.

disassemble 0x0,+4 returns:
Dump of assembler code from 0x0 to 0x4:
   0x0000000000000000:  v_cndmask_b32_e32 v0, s0, v0, vcc

instead of:
Dump of assembler code from 0x0 to 0x4:
   0x0000000000000000:  Cannot access memory at address 0x0

print_insn_amdgcn should return -1 if target_read returns 0 or
TARGET_XFER_E_IO. Also, use TARGET_OBJECT_CODE_MEMORY since we are
disassembling code memory.

gdb/ChangeLog:

        * amdgcn-rocm-tdep.c (print_insn_amdgcn): Check target_read's
        return value and return -1 if it is 0 or TARGET_XFER_E_IO.
        (amdgcn_rocm_displaced_step_fixup): Fix indentation.
        (amdgcn_gdbarch_init): Fix indentation.

Change-Id: Iff607a45efd0d369d44e7a8b34c8eb612985b5de

4 years agoFix test failures (timeout)
Laurent Morichetti [Sun, 22 Dec 2019 05:07:31 +0000 (21:07 -0800)] 
Fix test failures (timeout)

The following tests:

  - gdb.base/catch-fork-kill.exp
  - gdb.base/coredump-filter.exp
  - gdb.base/corefile.exp
  - gdb.base/multi-forks.exp
  - gdb.multi/watchpoint-multi-exit.exp
  - gdb.threads/fork-plus-threads.exp
  - gdb.threads/gcore-thread.exp
  - gdb.threads/process-dies-while-detaching.exp

timeout after a target, for which amd_dbgapi_process_attach failed,
terminates. When amd_dbgapi_process_attach fails, the notifier file
desriptor is left uninitialized, and rocm_target_inferior_exit ends
up closing stdin. Without stdin, gdb no longer receives any input
and hangs.

amd_dbapi_notifier should have a default value of -1 (not a valid
file descriptor), and rocm_target_inferior_exit should test the
notifier file descriptor before closing it.

gdb/ChangeLog:

        * rocm-tdep.c (rocm_inferior_info::process_id): Initialize.
        (rocm_inferior_info::notifier): Initialize.
        (rocm_target_inferior_exit): Test notifier before closing.

Change-Id: Ib7e2404440cb377a1e5235d24844aab70f801eb7

4 years agoRename ROCm Threads AMDGPU Threads
Laurent Morichetti [Sun, 22 Dec 2019 00:32:00 +0000 (16:32 -0800)] 
Rename ROCm Threads AMDGPU Threads

Also rename ROCm DSOs AMDGPU shared objects.

gdb/ChangeLog:

        * amdgcn-rocm-tdep.c (amdgcn_rocm_displaced_step_fixup): Fix
        a typo.
        * rocm-tdep.c (rocm_target_ops::pid_to_str): Rename ROCm Thread
        AMDGPU Thread.
        * solib-rocm.c (ROCM_DSO_NAME_PREFIX): Rename ROCm-supplied DSO
        AMDGPU shared object.

Change-Id: I09dbebcc605be9829983247d09c57c3c267bbf6a

4 years agoMerge branch 'gdb-9-branch' of ssh://git.amd.com:29418/compute/ec/rocm-gdb into amd...
Laurent Morichetti [Sun, 22 Dec 2019 04:51:53 +0000 (20:51 -0800)] 
Merge branch 'gdb-9-branch' of ssh://git.amd.com:29418/compute/ec/rocm-gdb into amd-staging-rocgdb-9

Change-Id: Ib9df2cf09930325723e0a6447bac0700e9b2c92a

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

4 years agoFix inadvertent indentation changes in last commit.
Eli Zaretskii [Sat, 21 Dec 2019 07:32:39 +0000 (09:32 +0200)] 
Fix inadvertent indentation changes in last commit.

4 years agoInclude xxHash support status in GDB configuration report
Eli Zaretskii [Sat, 21 Dec 2019 07:23:44 +0000 (09:23 +0200)] 
Include xxHash support status in GDB configuration report

gdb/ChangeLog
2019-12-21  Eli Zaretskii  <eliz@gnu.org>

* top.c (print_gdb_configuration): Print "--with-xxhash" or
"--without-xxhash" according to HAVE_LIBXXHASH.

(cherry picked from commit 15b07e4f5672cf02487a26305ac3b2ddd0aec68e)

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

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

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

4 years agoFix pthread_setname_np build error
Tom Tromey [Wed, 18 Dec 2019 18:45:51 +0000 (11:45 -0700)] 
Fix pthread_setname_np build error

My earlier patch to fix the pthread_setname_np build error on macOS
was incorrect.  While the macOS man page claims that
pthread_setname_np returns void, in <pthread.h> it is actually
declared returning "int".  I knew this earlier, but must have made
some mistake when preparing the patch for submission (perhaps when
removing the templates?).

This patch re-fixes the bug.  I'm also applying it to the 9.1 branch.

Tested by building on macOS High Sierra.

gdb/ChangeLog
2019-12-18  Tom Tromey  <tromey@adacore.com>

PR build/25268:
* gdbsupport/thread-pool.c (set_thread_name): Expect "int" return
type on macOS.  Add comment.

Change-Id: Ib09da6ac33958a0d843f65df2a528112356e7de6

4 years agoFix build failure on macOS
Tom Tromey [Wed, 18 Dec 2019 15:03:01 +0000 (08:03 -0700)] 
Fix build failure on macOS

PR build/25250 notes that the gdb 9 pre-release fails to build on
macOS, due to a name clash between field_kind::STRING and the STRING
token in ada-exp.y.  I am not sure (I couldn't reproduce this myself),
but presumably this is due to differences caused by the version of
bison in use there.

This patch works around the problem by renaming the field_kind
enumerator.  I chose to rename this one because it is used in
relatively few places -- it's just an implementation detail of the
style code.

This version also renames field_kind::SIGNED for consistency.

Let me know what you think.  I intend to check this in on the gdb 9
branch as well.

2019-12-18  Tom Tromey  <tromey@adacore.com>

PR build/25250:
* ui-out.c (ui_out::vmessage): Update.
* ui-out.h (enum class field_kind) <FIELD_STRING, FIELD_SIGNED>:
Rename.
(string_field): Update.
(signed_field): Update.

Change-Id: Iae9f36f1b793e22c61fee0de2ab2d508668ee7e4

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

4 years agoFix double-free when creating more than one block in JIT debug info reader
Simon Marchi [Mon, 16 Dec 2019 21:30:49 +0000 (16:30 -0500)] 
Fix double-free when creating more than one block in JIT debug info reader

A double-free happens when using a JIT debug info reader that creates
more than one block.  In the loop that frees blocks in finalize_symtab,
at the very end, the gdb_block_iter_tmp variable is set initially, but
not changed as the loop advances.  If we have two blocks, the first
iteration frees the first block, the second iteration frees the second
block, but the third iteration tries to free the second block again, as
gdb_block_iter_tmp keeps pointing on the second block.

Fix it by assigning the gdb_block_iter_tmp variable in the loop.

I have improved the jit-reader.exp test to cover this case, by adding a
second "JIT-ed" function and creating a block for it.  I have renamed
the existing function to something I find a bit more descriptive.  There
are no significant changes to jit-reader.exp itself, only updates
following the renaming.  The important changes are in jithost.c
(generate a new function) and in jitreader.c (create a gdb_block for
that function).

This was found because of an ASan report:

$ ./gdb testsuite/outputs/gdb.base/jit-reader/jit-reader -ex "jit-reader-load /home/simark/build/binutils-gdb/gdb/testsuite/outputs/gdb.base/jit-reader/jitreader.so" -ex r
Reading symbols from testsuite/outputs/gdb.base/jit-reader/jit-reader...
Starting program: /home/simark/build/binutils-gdb/gdb/testsuite/outputs/gdb.base/jit-reader/jit-reader
=================================================================
==1751048==ERROR: AddressSanitizer: heap-use-after-free on address 0x604000042eb8 at pc 0x5650ef8eec88 bp 0x7ffe52767290 sp 0x7ffe52767280
READ of size 8 at 0x604000042eb8 thread T0
    #0 0x5650ef8eec87 in finalize_symtab /home/simark/src/binutils-gdb/gdb/jit.c:768
    #1 0x5650ef8eef88 in jit_object_close_impl /home/simark/src/binutils-gdb/gdb/jit.c:797
    #2 0x7fbbda986278 in read_debug_info /home/simark/src/binutils-gdb/gdb/testsuite/gdb.base/jitreader.c:71
    #3 0x5650ef8ef56b in jit_reader_try_read_symtab /home/simark/src/binutils-gdb/gdb/jit.c:850
    #4 0x5650ef8effe3 in jit_register_code /home/simark/src/binutils-gdb/gdb/jit.c:948
    #5 0x5650ef8f2c92 in jit_event_handler(gdbarch*) /home/simark/src/binutils-gdb/gdb/jit.c:1396
    #6 0x5650ef0d137e in handle_jit_event /home/simark/src/binutils-gdb/gdb/breakpoint.c:5470
    [snip]

0x604000042eb8 is located 40 bytes inside of 48-byte region [0x604000042e90,0x604000042ec0)
freed by thread T0 here:
    #0 0x7fbbe57376b0 in __interceptor_free /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:122
    #1 0x5650ef8f350b in xfree<gdb_block> /home/simark/src/binutils-gdb/gdb/gdbsupport/common-utils.h:62
    #2 0x5650ef8eeca9 in finalize_symtab /home/simark/src/binutils-gdb/gdb/jit.c:769
    #3 0x5650ef8eef88 in jit_object_close_impl /home/simark/src/binutils-gdb/gdb/jit.c:797
    #4 0x7fbbda986278 in read_debug_info /home/simark/src/binutils-gdb/gdb/testsuite/gdb.base/jitreader.c:71
    #5 0x5650ef8ef56b in jit_reader_try_read_symtab /home/simark/src/binutils-gdb/gdb/jit.c:850
    #6 0x5650ef8effe3 in jit_register_code /home/simark/src/binutils-gdb/gdb/jit.c:948
    #7 0x5650ef8f2c92 in jit_event_handler(gdbarch*) /home/simark/src/binutils-gdb/gdb/jit.c:1396
    #8 0x5650ef0d137e in handle_jit_event /home/simark/src/binutils-gdb/gdb/breakpoint.c:5470
    [snip]

previously allocated by thread T0 here:
    #0 0x7fbbe5737cd8 in __interceptor_calloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:153
    #1 0x5650eef662f3 in xcalloc /home/simark/src/binutils-gdb/gdb/alloc.c:100
    #2 0x5650ef8f34ea in xcnew<gdb_block> /home/simark/src/binutils-gdb/gdb/gdbsupport/poison.h:122
    #3 0x5650ef8ed467 in jit_block_open_impl /home/simark/src/binutils-gdb/gdb/jit.c:557
    #4 0x7fbbda98620a in read_debug_info /home/simark/src/binutils-gdb/gdb/testsuite/gdb.base/jitreader.c:60
    #5 0x5650ef8ef56b in jit_reader_try_read_symtab /home/simark/src/binutils-gdb/gdb/jit.c:850
    #6 0x5650ef8effe3 in jit_register_code /home/simark/src/binutils-gdb/gdb/jit.c:948
    #7 0x5650ef8f2c92 in jit_event_handler(gdbarch*) /home/simark/src/binutils-gdb/gdb/jit.c:1396
    #8 0x5650ef0d137e in handle_jit_event /home/simark/src/binutils-gdb/gdb/breakpoint.c:5470
    [snip]

gdb/ChangeLog:

* jit.c (finalize_symtab): Set gdb_block_iter_tmp in loop.

gdb/testsuite/ChangeLog:

* gdb.base/jit-reader.exp (jit_reader_test): Rename
jit_function_00 to jit_function_stack_mangle.
* gdb.base/jithost.c (jit_function_t): Rename to...
(jit_function_stack_mangle_t): ... this.
(jit_function_add_t): New typedef.
(jit_function_00_code): Rename to...
(jit_function_stack_mangle_code): ... this, make static.
(jit_function_add_code): New.
(main): Generate "add" function and call it.  Adjust to changes
in jithost_abi.
* gdb.base/jithost.h (struct jithost_abi_bounds): New.
(struct jithost_abi) <begin, end>: Remove fields.
<object, function_stack_mangle, function_add>: New fields.
* gdb.base/jitreader.c (struct reader_state) <code_begin,
code_end>: Remove fields.
<func_stack_mangle>: New field.
(read_debug_info): Adjust to renaming, create block for "add"
function.
(read_sp, unwind_frame, get_frame_id): Adjust to other changes.

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

4 years agoMerge branch 'gdb-9-branch' of ssh://git.amd.com:29418/compute/ec/rocm-gdb into amd...
Laurent Morichetti [Mon, 16 Dec 2019 19:46:03 +0000 (11:46 -0800)] 
Merge branch 'gdb-9-branch' of ssh://git.amd.com:29418/compute/ec/rocm-gdb into amd-staging-rocgdb-9

Change-Id: Ib897e9cc938543e70987b6dedbfde32b19460e8c

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

4 years agoUpdate documentation for the default value of main set worker-threads
Christian Biesinger [Sun, 15 Dec 2019 00:18:49 +0000 (19:18 -0500)] 
Update documentation for the default value of main set worker-threads

I forgot to update this documentation when I changed the default for
maint set worker-threads to be 0. This is a branch-only change, because
on trunk this has been changed back to unlimited.

gdb/doc/ChangeLog:

2019-12-15  Christian Biesinger  <cbiesinger@google.com>

* gdb.texinfo (Maintenance Commands): Update documentation for
maint set worker-threads to say the default is 0.

Change-Id: I75b74c5da599e657ee94daa8c88b5a097bc58d15

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

4 years agogdb/doc: Remove duplicate description of lookup_global_symbol
Andrew Burgess [Sat, 14 Dec 2019 23:11:58 +0000 (23:11 +0000)] 
gdb/doc: Remove duplicate description of lookup_global_symbol

In this commit:

  commit 086baaf1346f07acfb6708e8c6cb79274241488b
  Date:   Tue Oct 15 16:18:26 2019 +0100

      gdb/python: Introduce gdb.lookup_static_symbols

A duplicate description of gdb.lookup_global_symbol was accidentally
added.  This commit corrects this mistake and removes the duplicate.

gdb/doc/ChangeLog:

* python.texi (Symbols In Python): Remove duplicate description of
gdb.lookup_global_symbol.

Change-Id: I4457b42cf05bde39e5c0ff39f168af919cad1255

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

4 years agoAutomatic date update in version.in
GDB Administrator [Fri, 13 Dec 2019 00:01:02 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoInitial version of ROCgdb
Laurent Morichetti [Mon, 9 Dec 2019 04:28:44 +0000 (20:28 -0800)] 
Initial version of ROCgdb

Change-Id: I452a39b8de6892b6945e913d3144a29bb8119426

4 years agoAutomatic date update in version.in
GDB Administrator [Thu, 12 Dec 2019 00:00:55 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoBump GDB version number to 9.0.90.DATE-git.
Joel Brobecker [Wed, 11 Dec 2019 21:42:19 +0000 (22:42 +0100)] 
Bump GDB version number to 9.0.90.DATE-git.

gdb/ChangeLog:

* version.in: Set GDB version number to 9.0.90.DATE-git.

4 years agoDocument the GDB 9.0.90 release in gdb/ChangeLog
Joel Brobecker [Wed, 11 Dec 2019 21:42:13 +0000 (22:42 +0100)] 
Document the GDB 9.0.90 release in gdb/ChangeLog

gdb/ChangeLog:

GDB 9.0.90 released.

4 years agoSet GDB version number to 9.0.90.
Joel Brobecker [Wed, 11 Dec 2019 20:54:26 +0000 (21:54 +0100)] 
Set GDB version number to 9.0.90.

gdb/ChangeLog:

* version.in: Set GDB version number to 9.0.90.

4 years agogdb/NEWS: Say "Changes in GDB 9" rather than "Changes since GDB 8.3"
Joel Brobecker [Wed, 11 Dec 2019 20:51:26 +0000 (21:51 +0100)] 
gdb/NEWS: Say "Changes in GDB 9" rather than "Changes since GDB 8.3"

gdb/ChangeLog:

  * NEWS: Change "Changes since GDB 8.3" into "Changes in GDB 9".

4 years agoSet development mode to "off" by default.
Joel Brobecker [Wed, 11 Dec 2019 20:37:55 +0000 (21:37 +0100)] 
Set development mode to "off" by default.

bfd/ChangeLog:

* development.sh (development): Set to false.

4 years agoBump version to 9.0.90.DATE-git.
Joel Brobecker [Wed, 11 Dec 2019 20:37:08 +0000 (21:37 +0100)] 
Bump version to 9.0.90.DATE-git.

Now that the GDB 9 branch has been created, we can
bump the version number.

gdb/ChangeLog:

GDB 9 branch created (27f7b2f64062ac9e52afc60509263c2702a9ebd0):
* version.in: Bump version to 9.0.90.DATE-git.

4 years agoFix typo, get_Frame_id -> get_frame_id
Simon Marchi [Wed, 11 Dec 2019 16:30:15 +0000 (11:30 -0500)] 
Fix typo, get_Frame_id -> get_frame_id

gdb/doc/ChangeLog:

* gdb.texinfo (Writing JIT Debug Info Readers): Fix typo.

4 years ago[gas][arm] Add -mwarn-restrict-it
Andre Vieira [Wed, 11 Dec 2019 15:53:26 +0000 (15:53 +0000)] 
[gas][arm] Add -mwarn-restrict-it

Add a -m{no-}warn-restrict-it option to control IT related warnings in
ARMv8-A and ARMv8-R.  This is disabled by default.

Committed on behalf of Wilco Dijkstra.

gas/ChangeLog:
2019-12-11  Wilco Dijkstra  <wdijkstr@arm.com>

* config/tc-arm.c (warn_on_restrict_it): Add new variable.
(it_fsm_post_encode): Check warn_on_restrict_it.
(arm_option_table): Add -mwarn-restrict-it/-mno-warn-restrict-it.
* testsuite/gas/arm/armv8-2-fp16-scalar-bad.d: Add -mwarn-restrict-it.
* testsuite/gas/arm/armv8-2-fp16-scalar-bad-ext.d: Likewise.
* testsuite/gas/arm/armv8-a-bad.d: Likewise.
* testsuite/gas/arm/armv8-a-it-bad.d: Likewise.
* testsuite/gas/arm/armv8-r-bad.d: Likewise.
* testsuite/gas/arm/armv8-r-it-bad.d: Likewise.
* testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d: Likewise.
* testsuite/gas/arm/udf.d: Likewise.

4 years agoFix build on macOS
Tom Tromey [Tue, 10 Dec 2019 21:16:19 +0000 (14:16 -0700)] 
Fix build on macOS

PR build/25268 points out that the build fails on macOS, because on
macOS the "pthread_setname_np" function takes a single argument.

This patch fixes the problem, by introducing a new adapter function
that handles both styles of pthread_setname_np.

This change also meant moving the pthread_setname_np call to the
thread function, because macOS only permits setting the name of the
current thread.  This means that there can be a brief window when gdb
will see the wrong name; but I think this is a minor concern.

Tested by rebuilding on x86-64 Fedora 30, and on macOS High Sierra.
On Linux I also debugged gdb to ensure that the thread names are still
set correctly.

gdb/ChangeLog
2019-12-11  Tom Tromey  <tromey@adacore.com>

PR build/25268:
* gdbsupport/thread-pool.c (set_thread_name): New function.
(thread_pool::set_thread_count): Don't call pthread_setname_np.
(thread_pool::thread_function): Call set_thread_name.

Change-Id: Id7bf28d99ca27a893a9fc87ebb90b15a9c2a9cb4

4 years agoFix the build after bfd_get_signed_8 change
Tom Tromey [Wed, 11 Dec 2019 14:58:46 +0000 (07:58 -0700)] 
Fix the build after bfd_get_signed_8 change

A recent commit changed bfd_get_signed_8 to extend the result to a
bfd_signed_vma.  This caused a compiler error in one spot in my
--enable-targets=all gdb build, where the result of bfd_get_signed_8
was passed to printf.

This patch fixes the build.  Tested by rebuilding.

gdb/ChangeLog
2019-12-11  Tom Tromey  <tromey@adacore.com>

* fbsd-tdep.c (fbsd_core_info_proc_status): Cast result of
bfd_get_signed_8.

Change-Id: Ic015f5fd3d88da6b5da8f7b4e1d11d5c981333db

4 years agoRemove more shifts for sign/zero extension
Alan Modra [Wed, 11 Dec 2019 06:15:14 +0000 (16:45 +1030)] 
Remove more shifts for sign/zero extension

cpu/
* epiphany.cpu (f-sdisp11): Don't sign extend with shifts.
* lm32.cpu (f-branch, f-vall): Likewise.
* m32.cpu (f-lab-8-16): Likewise.
opcodes/
* arc-dis.c (BITS): Don't truncate high bits with shifts.
* nios2-dis.c (nios2_print_insn_arg): Don't sign extend with shifts.
* tic54x-dis.c (print_instruction): Likewise.
* tilegx-opc.c (parse_insn_tilegx): Likewise.
* tilepro-opc.c (parse_insn_tilepro): Likewise.
* visium-dis.c (disassem_class0): Likewise.
* pdp11-dis.c (sign_extend): Likewise.
(SIGN_BITS): Delete.
* epiphany-ibld.c: Regenerate.
* lm32-ibld.c: Regenerate.
* m32c-ibld.c: Regenerate.

4 years agobfd signed overflow fixes
Alan Modra [Wed, 11 Dec 2019 03:02:25 +0000 (13:32 +1030)] 
bfd signed overflow fixes

Aimed at quietening ubsan.

include/
* opcode/mmix.h (PUSHGO_INSN_BYTE): Make unsigned.
(GO_INSN_BYTE, SETL_INSN_BYTE, INCML_INSN_BYTE, INCMH_INSN_BYTE),
(INCH_INSN_BYTE, SWYM_INSN_BYTE, JMP_INSN_BYTE): Likewise.
bfd/
* elf32-rx.c (elf32_rx_relax_section): Avoid signed overflow.
* libaout.h (N_SET_INFO, N_SET_FLAGS): Likewise.
* netbsd.h (write_object_contents): Likewise.
* elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Likewise.
* libhppa.h (HPPA_R_CONSTANT): Don't signed extend with shifts.
(stm32l4xx_create_replacing_stub_vldm): Don't truncate high bits
with shifts.
* elf32-nds32.h (R_NDS32_RELAX_ENTRY_DISABLE_RELAX_FLAG): Define
using 1u shifted left.  Ditto for other macros.
* mmo.c (LOP): Make unsigned.

4 years agoMake bfd_get_8 return a bfd_vma like other bfd_get_* functions
Alan Modra [Wed, 11 Dec 2019 10:36:17 +0000 (21:06 +1030)] 
Make bfd_get_8 return a bfd_vma like other bfd_get_* functions

And similarly for bfd_get_signed_8.

bfd/
* libbfd.c (bfd_get_8): Return a bfd_vma.
(bfd_get_signed_8): Return a bfd_signed_vma.
* bfd-in2.h: Regenerate.
binutils/
* od-xcoff.c (dump_dumpx_core): Adjust for bfd_h_get_8 change.

4 years agox86: further refine SSE check (SSE4a, SHA, GFNI)
Jan Beulich [Wed, 11 Dec 2019 08:42:29 +0000 (09:42 +0100)] 
x86: further refine SSE check (SSE4a, SHA, GFNI)

In  ("x86: extend SSE check to PCLMULQDQ, AES, and GFNI insns") I went
both a little too far and not quite far enough:
- GFNI insns also have AVX512 variants, which also shouldn't get
  diagnosed,
- SSE4a insns should get diagnosed just like SSE4.x ones,
- SHA insns should get diagnosed just like PCLMULQDQ or AES ones.

4 years agoImplement 'print -raw-values' and 'set print raw-values on|off'
Philippe Waroquiers [Wed, 7 Aug 2019 18:50:54 +0000 (20:50 +0200)] 
Implement 'print -raw-values' and 'set print raw-values on|off'

The option framework documentation was speaking about a 'print -raw'
option, but this option does not exist.

This patch implements -raw-values option that tells to ignore the
active pretty printers when printing a value.
As we already have -raw-frame-arguments, I thought -raw-values
was more clear, in particular to differentiate
   set print raw-values and set print raw-frame-arguments.

gdb/doc/ChangeLog
2019-12-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

* gdb.texinfo (Command Options): Use -p and -pretty in the example,
as -r is ambiguous.  Update the print - TAB TAB completion result.
(Data): Document new option -raw-values.  Use -p and -pretty in the
 example, as -r is ambiguous.
(Print Settings): Document set print raw values.
(Pretty-Printer Commands): Document interaction between enabled
pretty printers and -raw-values/-raw-frame-arguments.

gdb/ChangeLog
2019-12-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

* NEWS: Document -raw-values option and the related setting commands.
* printcmd.c (print_command_parse_format): Do not set opts->raw off,
only set it on when /r is given.
* valprint.c (value_print_option_defs): New element raw-values.
* Makefile.in: Add the new file.

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

* gdb.base/options.exp: Add -raw-values in the print completion list.
* gdb.python/py-prettyprint.exp: Add tests for -raw-values.

4 years agoRe: ubsan: ns32k: left shift cannot be represented in type
Alan Modra [Wed, 11 Dec 2019 02:41:07 +0000 (13:11 +1030)] 
Re: ubsan: ns32k: left shift cannot be represented in type

* ns32k-dis.c (sign_extend): Correct last patch.

4 years agoubsan: vax: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 22:27:45 +0000 (08:57 +1030)] 
ubsan: vax: left shift cannot be represented in type 'int'

* vax-dis.c (NEXTLONG): Avoid signed overflow.

4 years agoubsan: v850: left shift cannot be represented in type 'long'
Alan Modra [Tue, 10 Dec 2019 22:23:50 +0000 (08:53 +1030)] 
ubsan: v850: left shift cannot be represented in type 'long'

* v850-dis.c (get_operand_value): Use unsigned arithmetic.  Don't
sign extend using shifts.

4 years agoubsan: tic6x: shift left of int
Alan Modra [Tue, 10 Dec 2019 22:22:22 +0000 (08:52 +1030)] 
ubsan: tic6x: shift left of int

* tic6x-dis.c (tic6x_extract_32): Avoid signed overflow.

4 years agoubsan: tic4x: segv and signed shifts
Alan Modra [Tue, 10 Dec 2019 22:17:35 +0000 (08:47 +1030)] 
ubsan: tic4x: segv and signed shifts

* tic4x-dis.c (tic4x_print_register): Formatting.  Don't segfault
on NULL registertable entry.
(tic4x_hash_opcode): Use unsigned arithmetic.

4 years agoubsan: s12z: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 22:07:53 +0000 (08:37 +1030)] 
ubsan: s12z: left shift cannot be represented in type 'int'

* s12z-opc.c (z_decode_signed_value): Avoid signed overflow.

4 years agoubsan: ns32k: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 22:04:57 +0000 (08:34 +1030)] 
ubsan: ns32k: left shift cannot be represented in type 'int'

* ns32k-dis.c (bit_extract): Use unsigned arithmetic.
(bit_extract_simple, sign_extend): Likewise.

4 years agoubsan: nios2: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 22:02:18 +0000 (08:32 +1030)] 
ubsan: nios2: left shift cannot be represented in type 'int'

* nios2-dis.c (nios2_print_insn_arg): Use 1u << 31.

4 years agoubsan: moxie: left shift of negative value
Alan Modra [Tue, 10 Dec 2019 21:56:58 +0000 (08:26 +1030)] 
ubsan: moxie: left shift of negative value

* moxie-dis.c (INST2OFFSET): Don't sign extend using shifts.

4 years agoubsan: m68k: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 21:53:33 +0000 (08:23 +1030)] 
ubsan: m68k: left shift cannot be represented in type 'int'

* m68k-dis.c (COERCE32): Cast value first.
(NEXTLONG, NEXTULONG): Avoid signed overflow.

4 years agoubsan: h8300: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 13:23:57 +0000 (23:53 +1030)] 
ubsan: h8300: left shift cannot be represented in type 'int'

This is
  *cst = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3];
data is unsigned char which promotes to int.

* h8300-dis.c (extract_immediate): Avoid signed overflow.
(bfd_h8_disassemble): Likewise.

4 years agoussan: d30v: index out of bounds
Alan Modra [Tue, 10 Dec 2019 13:20:02 +0000 (23:50 +1030)] 
ussan: d30v: index out of bounds

* d30v-dis.c (print_insn): Make opind unsigned.  Don't access
past end of operands array.

4 years agoubsan: csky: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 13:07:03 +0000 (23:37 +1030)] 
ubsan: csky: left shift cannot be represented in type 'int'

In the following buf is an unsigned char array, so elements are
promoted to int before arithmetic operations.

  if (dis_info.info->endian == BFD_ENDIAN_BIG)
    while (n--)
      val |= buf[n] << (n*8);
  else
    for (i = 0; i < n; i++)
      val |= buf[i] << (i*8);

* csky-dis.c (csky_chars_to_number): Rewrite.  Avoid signed
overflow when collecting bytes of a number.

4 years agoubsan: cris: signed integer overflow
Alan Modra [Tue, 10 Dec 2019 12:52:10 +0000 (23:22 +1030)] 
ubsan: cris: signed integer overflow

This was the following in print_with_operands
case 4:
  number
    = buffer[2] + buffer[3] * 256 + buffer[4] * 65536
    + buffer[5] * 0x1000000;
and buffer[5] * 0x1000000 can indeed overflow.  So to fix this we need
to use unsigned arithmetic where overflow semantics are specified.
But number is a long, and the expression is int which will be sign
extended to long.  If we make the expression unsigned it will be zero
extended.  So make number an int32_t and rearrange a little for some
of the places that need fixing.

* cris-dis.c (print_with_operands): Avoid signed integer
overflow when collecting bytes of a 32-bit integer.

4 years agoubsan: cr16: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 12:32:37 +0000 (23:02 +1030)] 
ubsan: cr16: left shift cannot be represented in type 'int'

This was:
  unsigned long mask = SBM (instruction->match_bits);
with
  #define SBM(offs)  ((((1 << (32 - offs)) -1) << (offs)))

Well, there are a couple of problems.  Firstly, the expression uses
int values (1 rather than 1u or 1ul) resulting in the ubsan error, and
secondly, a zero offs will result in a 32-bit shift which is undefined
if ints are only 32 bits.

* cr16-dis.c (EXTRACT, SBM): Rewrite.
(cr16_match_opcode): Delete duplicate bcond test.

4 years agoubsan: bfin: shift exponent is too large
Alan Modra [Tue, 10 Dec 2019 12:02:06 +0000 (22:32 +1030)] 
ubsan: bfin: shift exponent is too large

This was the following in fmtconst_val, x is unsigned int.
    x = SIGNEXTEND (x, constant_formats[cf].nbits);
Problem is, the SIGNEXTEND macro assumed its arg was a long and sign
extended by shifting left then shifting right, and didn't cast the
arg.  So don't do the silly shift thing.  It's not guaranteed to work
anyway according to the C standard.  ">>" might do a logical shift
even if its args are signed.

* bfin-dis.c (HOST_LONG_WORD_SIZE, XFIELD): Delete.
(SIGNBIT): New.
(MASKBITS, SIGNEXTEND): Rewrite.
(fmtconst): Don't use ? expression now that SIGNEXTEND uses
unsigned arithmetic, instead assign result of SIGNEXTEND back
to x.
(fmtconst_val): Use 1u in shift expression.

4 years agoubsan: arc: shift exponent 32 is too large for 32-bit type 'int'
Alan Modra [Tue, 10 Dec 2019 08:39:47 +0000 (19:09 +1030)] 
ubsan: arc: shift exponent 32 is too large for 32-bit type 'int'

When operand->bits is 32, the following results in UB.
value = (insn >> operand->shift) & ((1 << operand->bits) - 1);

* arc-dis.c (find_format_from_table): Use ull constant when
shifting by up to 32.

4 years agoaarch64 disassembler infinite loop
Alan Modra [Tue, 10 Dec 2019 08:34:37 +0000 (19:04 +1030)] 
aarch64 disassembler infinite loop

Assembling this to an object and trying to disassemble results in
objdump -d looping forever.

 .inst 0x45205120

PR 25270
* aarch64-dis.c (aarch64_decode_variant_using_iclass): Return
false when field is zero for sve_size_tsz_bhs.

4 years agoubsan: left shift of cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 08:28:38 +0000 (18:58 +1030)] 
ubsan: left shift of cannot be represented in type 'int'

* dis-asm.h (INSN_HAS_RELOC, DISASSEMBLE_DATA),
(USER_SPECIFIED_MACHINE_TYPE, WIDE_OUTPUT): Make unsigned.
* opcode/tic80.h (TIC80_OPERAND_*): Likewise.

4 years agoubsan: xtensa: left shift cannot be represented in type 'int'
Alan Modra [Tue, 10 Dec 2019 07:42:28 +0000 (18:12 +1030)] 
ubsan: xtensa: left shift cannot be represented in type 'int'

In Operand_soffsetx4_decode:
  soffsetx4_0 = 0x4 + ((((int) offset_0 << 14) >> 14) << 2);
and other places.

Don't sign extend with shifts!  This file also has many occurrences of
truncation via shifts, which aren't a problem due to using uint32, but
I dislike on principle enough to fix.

* xtensa-modules.c (Field_* functions): Don't mask using shifts.
(Operand_soffsetx4_decode, Operand_simm4_decode),
(Operand_simm8_decode, Operand_simm8x256_decode),
(Operand_simm12b_decode, Operand_label8_decode),
(Operand_label12_decode, Operand_soffset_decode),
(Operand_xt_wbr15_label_decode, Operand_xt_wbr18_label_decode): Don't
sign extend using shifts.
(Operand_immrx4_decode, Operand_uimm16x4_decode): Avoid UB in
constant.

4 years agoubsan: epiphany: left shift of negative value
Alan Modra [Tue, 10 Dec 2019 07:36:09 +0000 (18:06 +1030)] 
ubsan: epiphany: left shift of negative value

Two places in epiphany_cgen_extract_operand, "value" is a long.
        value = ((((value) << (1))) + (pc));

cpu/
* epiphany.cpu (f-simm8, f-simm24): Use multiply rather than
shift left to avoid UB on left shift of negative values.
opcodes/
* epiphany-ibld.c: Regenerate.

4 years agoubsan: ia64: left shift of negative value
Alan Modra [Tue, 10 Dec 2019 07:27:14 +0000 (17:57 +1030)] 
ubsan: ia64: left shift of negative value

Here, since val is signed:
   *valuep = (val << scale);

* cpu-ia64-opc.c (ext_imms_scaled): Avoid undefined left shift
of negative values by using unsigned vars.

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

4 years agoMinor fix to gdb.prompt documentation
Tom Tromey [Wed, 20 Nov 2019 23:07:46 +0000 (16:07 -0700)] 
Minor fix to gdb.prompt documentation

I noticed that an example in the gdb.prompt documentation used the
wrong kind of quotes -- because it is code, it should use a plain
ASCII quotation mark.  I also slightly shortened the sample text here,
so it would more clearly fit on a single line.

gdb/doc/ChangeLog
2019-12-10  Tom Tromey  <tom@tromey.com>

* python.texi (gdb.prompt): Use correct quotes in example.
Shorten sample text.

Change-Id: I4153928c0d88001244ad410f3943c952a6ebfeb1

4 years agoOpenMP parallel region scope tests
Kevin Buettner [Wed, 20 Sep 2017 22:40:14 +0000 (15:40 -0700)] 
OpenMP parallel region scope tests

Add tests which check for accessibility of variables from within
various OpenMP parallel regions.

Tested on Fedora 27, 28, 29, 30, and 31.  I also tested with my OpenMP
work on Fedora 30.  The test has been annotated with setup_xfail and
setup_kfail statements so that there are no unexpected failures on any
of these platforms when using gcc.  Better still, for my own testing
anyway, is that there are also no XPASSes or KPASSes either.  So,
regardless of platform, when using gcc, and regardless of whether my
(not yet public) OpenMP work is used, seeing a FAIL indicates a real
problem.

Fedora 27 results:

        # of expected passes            85
        # of expected failures          65

(Note: I have not retested F27 since v1 of the patch; it's possible
that the numbers will be slightly different for v2.)

Fedora 28, 29, 30 results:

        # of expected passes            131
        # of expected failures          4
        # of known failures             16

Fedora 30, 31 results w/ my OpenMP work:

        # of expected passes            151

The above results all use gcc, either the system gcc or a development
gcc (when testing against my OpenMP work in GDB).  I've also tested
with clang 9.0.0 and icc 19.0.5.281 20190815 on Fedora 31.

Fedora 31, clang:

FAIL: gdb.threads/omp-par-scope.exp: single_scope: first thread: print s1
FAIL: gdb.threads/omp-par-scope.exp: single_scope: first thread: print s3
FAIL: gdb.threads/omp-par-scope.exp: single_scope: first thread: print i1
FAIL: gdb.threads/omp-par-scope.exp: single_scope: first thread: print i3
FAIL: gdb.threads/omp-par-scope.exp: single_scope: second thread: print s1
FAIL: gdb.threads/omp-par-scope.exp: single_scope: second thread: print s3
FAIL: gdb.threads/omp-par-scope.exp: single_scope: second thread: print i1
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: first thread: print i02
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: first thread: print i11
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: first thread: print i12
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: first thread: print i22
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: first thread: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: second thread: print i11
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: second thread: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: after parallel: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 1st stop: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 1st stop: print num
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 1st stop: print l
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 1st stop: print k
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print num
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 3rd stop: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 3rd stop: print num
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 3rd stop: print l
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 3rd stop: print k
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 4th stop: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 4th stop: print num
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: outer_threads: outer stop: print file_scope_var
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: outer_threads: outer stop: print i
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: outer_threads: outer stop: print j

Fedora 31, icc:

FAIL: gdb.threads/omp-par-scope.exp: multi_scope: first thread: print i12
FAIL: gdb.threads/omp-par-scope.exp: multi_scope: first thread: print i22
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 1st thread: print s1
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 1st thread: print i
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 1st thread: print j
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 2nd thread: print s1
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 2nd thread: print i
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 2nd thread: print j
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 2nd thread: print k
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 2nd thread: print z
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 1st thread: print s1
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 1st thread: print i
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 1st thread: print j
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print s1
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print i
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print j
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print k
FAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print z
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 1st stop: print l
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 1st stop: print k
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 3rd stop: print l
FAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 3rd stop: print k

For both clang and icc, it turns out that there are some problems with
the DWARF that these compilers generate.  Of the two, icc does at
least nest the subprogram of the outlined function representing the
parallel region within the function that it's defined, but does not
handle inner scopes if they exist.  clang places the subprogram for
the outlined function at the same level as the containing function, so
variables declared within the function aren't visible at all.

I could call setup_xfail to avoid FAILs for clang and icc also, but I don't
want to further complicate the test.

gdb/testsuite/ChangeLog:

* gdb.threads/omp-par-scope.c: New file.
* gdb/threads/omp-par-scope.exp: New file.

Change-Id: Icb9c991730d84ca7509380af817dfcc778e764ea

4 years agoAdd gdb_caching_proc support_nested_function_tests to lib/gdb.exp
Kevin Buettner [Sat, 9 Nov 2019 18:09:41 +0000 (11:09 -0700)] 
Add gdb_caching_proc support_nested_function_tests to lib/gdb.exp

This commit adds the gdb_caching_proc, support_nested_function_tests,
to lib/gdb.exp.  It tests to see whether or not the C compiler has
support for nested function calls.

gdb/testsuite/ChangeLog:

* lib/gdb.exp (support_nested_function_tests): New proc.

Change-Id: Ic2c93bc4cc200e07e104a2398f89a9c0514bdc75

4 years agoAdd gdb_compile_openmp to lib/gdb.exp
Kevin Buettner [Thu, 22 Aug 2019 02:32:12 +0000 (19:32 -0700)] 
Add gdb_compile_openmp to lib/gdb.exp

gdb/testsuite/ChangeLog:

* lib/gdb.exp (gdb_compile_openmp): New proc.
(build_executable_from_specs): Add an "openmp" option.
(gdb_compile_pthreads): Add non-executable case.

Change-Id: I94048b8b0940c707ce0529a6bcfa6e4eace49101

4 years agoSuppress the "unused function" warning for select_strerror_r
Christian Biesinger [Tue, 10 Dec 2019 19:42:40 +0000 (13:42 -0600)] 
Suppress the "unused function" warning for select_strerror_r

We only ever use one of the two overloads, so to avoid breaking -Werror
builds, supress the warning.

gdb/ChangeLog:

2019-12-10  Christian Biesinger  <cbiesinger@google.com>

* gdbsupport/safe-strerror.c: Supress the unused function warning
for select_strerror_r.

Change-Id: I344869a382bb36fe181b5b2a31838d1d20f58169

4 years agoReplace the remaining uses of strerror with safe_strerror
Christian Biesinger [Wed, 6 Nov 2019 19:57:52 +0000 (13:57 -0600)] 
Replace the remaining uses of strerror with safe_strerror

To do that, this patch makes IPA compile safe-strerror as well. Because
it doesn't use Gnulib, it calls the Glibc version of strerror_r directly.

Consequently this patch also removes the configure checks for strerror.

gdb/ChangeLog:

2019-12-10  Christian Biesinger  <cbiesinger@google.com>

* config.in: Regenerate.
* configure: Regenerate.
* gdbsupport/agent.c (gdb_connect_sync_socket): Call
safe_strerror instead of strerror.
* gdbsupport/common.m4: Don't check for strerror.
* gdbsupport/safe-strerror.c: Support both the glibc version
of strerror_r and the XSI version.

gdb/gdbserver/ChangeLog:

2019-12-10  Christian Biesinger  <cbiesinger@google.com>

* Makefile.in: Add safe-strerror.c to gdbreplay and IPA, and change
UNDO_GNULIB_CFLAGS to undo strerror_r instead of strerror.
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Don't check for strerror.
* linux-i386-ipa.c (initialize_fast_tracepoint_trampoline_buffer):
Call safe_strerror instead of strerror.
* server.h (strerror): Remove this now-unnecessary declaration.
* tracepoint.c (init_named_socket): Call safe_strerror instead of
strerror.
(gdb_agent_helper_thread): Likewise.
* utils.c (perror_with_name): Likewise.

Change-Id: I74848f072dcde75cb55c435ef9398dc8f958cd73

4 years ago[gas][arm] Set context table for '.arch_extension'
Andre Vieira [Tue, 10 Dec 2019 16:10:17 +0000 (16:10 +0000)] 
[gas][arm] Set context table for '.arch_extension'

This patch fixes .arch_extension behaviour.

Currently, context table for '.arch_extension' is only set while
"-march" processing, but it is not set while .arch processing,
so following code is rejected

  .syntax unified
  .thumb
  .arch armv8.1-m.main
  .arch_extension mve.fp

  unless -march=armv8.1-m.main is given.

Committing on behalf of Vladimir Murzin

gas/ChangeLog:
2019-12-10  Vladimir Murzin  <vladimir.murzin@arm.com>

* config/tc-arm.c (s_arm_arch): Set selected_ctx_ext_table.
* testsuite/gas/arm/mve-arch-ext.s: New.
* testsuite/gas/arm/mve-arch-ext.d: New.

4 years agoNormalize Ada ptype to use a single "?"
Tom Tromey [Tue, 3 Dec 2019 20:31:21 +0000 (13:31 -0700)] 
Normalize Ada ptype to use a single "?"

Sometimes -- notably with unchecked unions -- the Ada "ptype" code
will print a "?" or "??" to indicate something unknown.  The choice of
what was printed was somewhat arbitrary, and in one case, Ada would
print an empty string rather than "?".

This patch normalizes the Ada code to use "?" rather than an empty
string or "??".  My reasoning here is that a single question mark is
enough to convey unknown-ness.

gdb/ChangeLog
2019-12-10  Tom Tromey  <tromey@adacore.com>

* ada-typeprint.c (print_choices): Use a single "?".
(print_variant_part): Print "?" if the discriminant name
is not known.

gdb/testsuite/ChangeLog
2019-12-10  Tom Tromey  <tromey@adacore.com>

* gdb.ada/unchecked_union.exp: New file.
* gdb.ada/unchecked_union/pck.adb: New file.
* gdb.ada/unchecked_union/pck.ads: New file.
* gdb.ada/unchecked_union/unchecked_union.adb: New file.
* gdb-utils.exp (string_to_regexp): Also quote "?".

Change-Id: I3403040780a155ffa2c44c8e6a04ba86bc810e29

4 years agoAutomatic date update in version.in
GDB Administrator [Tue, 10 Dec 2019 00:00:15 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoPR24960, Memory leak from disassembler
Alan Modra [Mon, 9 Dec 2019 10:04:49 +0000 (20:34 +1030)] 
PR24960, Memory leak from disassembler

PR 24960
include/
* dis-asm.h (disassemble_free_target): Declare.
opcodes/
* disassemble.c (disassemble_free_target): New function.
binutils/
* objdump.c (disassemble_data): Call disassemble_free_target.

4 years agoUse disassemble_info.private_data in place of insn_sets
Alan Modra [Mon, 9 Dec 2019 12:16:26 +0000 (22:46 +1030)] 
Use disassemble_info.private_data in place of insn_sets

No cgen target uses private_data.  This patch removes a
disassemble_info field that is only used by cgen, and instead uses
private_data.  It also removes a macro that is no longer used.

include/
* dis-asm.h (struct disassemble_info): Delete insn_sets.
(INIT_DISASSEMBLE_INFO_NO_ARCH): Don't define.
opcodes/
* cgen-dis.in (print_insn_@arch@): Replace insn_sets with private_data.
* disassemble.c (disassemble_init_for_target): Likewise.
* bpf-dis.c: Regenerate.
* epiphany-dis.c: Regenerate.
* fr30-dis.c: Regenerate.
* frv-dis.c: Regenerate.
* ip2k-dis.c: Regenerate.
* iq2000-dis.c: Regenerate.
* lm32-dis.c: Regenerate.
* m32c-dis.c: Regenerate.
* m32r-dis.c: Regenerate.
* mep-dis.c: Regenerate.
* mt-dis.c: Regenerate.
* or1k-dis.c: Regenerate.
* xc16x-dis.c: Regenerate.
* xstormy16-dis.c: Regenerate.

4 years agoRemove backup ppc struct dis_private.
Alan Modra [Mon, 9 Dec 2019 12:27:15 +0000 (22:57 +1030)] 
Remove backup ppc struct dis_private.

ppc-dis.c used a global struct whenever malloc failed to provide the
eight bytes of memory necessary for struct dis_private.  Which is
quite ridiculous.  If that malloc failed there is zero chance some
other malloc won't fail too.

* ppc-dis.c (private): Delete variable.
(get_powerpc_dialect): Don't segfault on NULL info->private_data.
(powerpc_init_dialect): Don't use global private.

4 years agoDelete duplicate struct objdump_disasm_info field
Alan Modra [Mon, 9 Dec 2019 10:17:04 +0000 (20:47 +1030)] 
Delete duplicate struct objdump_disasm_info field

objdump_disasm_info.sec duplicates disassemble_info.section

* objdump.c (struct objdump_disasm_info): Delete "sec".
(find_symbol_for_address): Use inf->section rather than aux->sec.
(objdump_print_addr, disassemble_bytes): Likewise.
(disassemble_section): Don't set aux->sec.

4 years agos12z-opc.c formatting fixes
Alan Modra [Sat, 7 Dec 2019 05:34:33 +0000 (16:04 +1030)] 
s12z-opc.c formatting fixes

Wrap overlong lines, whitespace fixes, and for function definitions
start a line with the name of the function.

* s12z-opc.c: Formatting.

4 years agoFix scripted probe breakpoints
George Barrett [Mon, 9 Dec 2019 21:28:39 +0000 (08:28 +1100)] 
Fix scripted probe breakpoints

The documentation for make-breakpoint from the Guile API and the `spec'
variant of the gdb.Breakpoint constructor from the Python API state that
the format acceptable for location strings is the same as that accepted
by the break command. However, using the -probe qualifier at the
beginning of the location string causes a GDB internal error as it
attempts to decode a probe location in the wrong code path. Without this
functionality, there doesn't appear to be another way to set breakpoints
on probe points from Python or Guile scripts.

This patch introduces a new helper function that returns a
breakpoint_ops instance appropriate for a parsed location and updates
the Guile and Python bindings to use said function, rather than the
current hard-coded use of bkpt_breakpoint_ops. Since this logic is
duplicated in the handling of the `break' and `trace' commands, those
are also updated to call into the new helper function.

gdb/ChangeLog:
2019-12-10  George Barrett  <bob@bob131.so>

Fix scripted probe breakpoints.
* breakpoint.c (tracepoint_probe_breakpoint_ops): Move
declaration forward.
(breakpoint_ops_for_event_location_type)
(breakpoint_ops_for_event_location): Add function definitions.
(break_command_1, trace_command): Use
breakpoint_ops_for_event_location.
* breakpoint.h (breakpoint_ops_for_event_location): Add function
declarations.
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Use
breakpoint_ops_for_event_location.
* python/py-breakpoint.c (bppy_init): Use
breakpoint_ops_for_event_location.

gdb/testsuite/ChangeLog:
2019-12-10  George Barrett  <bob@bob131.so>

Test scripted probe breakpoints.
* gdb.guile/scm-breakpoint.c (main): Add probe point.
* gdb.python/py-breakpoint.c (main): Likewise.
* gdb.guile/scm-breakpoint.exp (test_bkpt_probe): Add probe
specifier test.
* gdb.python/py-breakpoint.exp (test_bkpt_probe): Likewise.

4 years agogdb: rank an lvalue argument incompatible for an rvalue parameter
Tankut Baris Aktemur [Mon, 9 Dec 2019 16:07:47 +0000 (17:07 +0100)] 
gdb: rank an lvalue argument incompatible for an rvalue parameter

Passing an lvalue argument to a function that takes an rvalue parameter
is not allowed per C++ rules.  Consider this function:

    int g (int &&x) { return x; }

Calling g as in

    int i = 5;
    int j = g (i);

is illegal.  For instance, GCC 9.2.1 yields

~~~
test.cpp: In function ‘int main()’:
test.cpp:6:14: error: cannot bind rvalue reference of type ‘int&&’ to
lvalue of type ‘int’
    6 |   int j = g (i);
      |              ^
~~~

GDB currently allows this function call:

~~~
(gdb) print g(i)
$1 = 5
~~~

Fix this by ranking an lvalue argument incompatible with an rvalue
parameter.  The behavior after this patch is:

~~~
(gdb) print g(i)
Cannot resolve function g to any overloaded instance
~~~

Tested with GCC 9.2.1.

gdb/ChangeLog:
2019-12-09  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* gdbtypes.c (rank_one_type): Return INCOMPATIBLE_TYPE_BADNESS
when ranking an lvalue argument for an rvalue parameter.

gdb/testsuite/ChangeLog:
2019-12-09  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* gdb.cp/rvalue-ref-overload.cc (g): New function that takes
an rvalue parameter.
* gdb.cp/rvalue-ref-overload.exp: Test calling it with an lvalue
parameter.

Change-Id: I4a6dfc7dac63efa1e3b9f8f391e4b736fbdccdc1

4 years agogdb/fortran: Improve output pattern in gdb.mi/mi-fortran-modules.exp
Andrew Burgess [Tue, 3 Dec 2019 20:41:27 +0000 (20:41 +0000)] 
gdb/fortran: Improve output pattern in gdb.mi/mi-fortran-modules.exp

Extend the output pattern in mi-fortran-modules.exp to skip some
system modules that appear with versions of GFortran after 7.x.x.

gdb/testsuite/ChangeLog:

* gdb.mi/mi-fortran-modules.exp: Add patterns to skip system
modules.

Change-Id: I64aaa395e554a32e8267ffa096faee53c19c0b9e

4 years agogdb/testsuite: kfail some tests if using broken gcc
Andrew Burgess [Tue, 3 Dec 2019 19:15:06 +0000 (19:15 +0000)] 
gdb/testsuite: kfail some tests if using broken gcc

In some cases the Fortran stride information generated by GCC is wrong
with versions of GCC after 7.x.x.  This commit adds kfails for the
tests in question with known bad versions of gcc.

The bug has been reported to GCC here:

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92775

gdb/testsuite/ChangeLog:

* gdb.fortran/derived-type-striding.exp: KFAIL if we are using a
broken version of GCC.

Change-Id: Iaef08e5e2c87ab3d6983b88f749d40e01aea2bc6

4 years agogdb/testsuite/fortran: Fix info-modules/info-types for gfortran 8+
Andrew Burgess [Tue, 3 Dec 2019 13:18:43 +0000 (13:18 +0000)] 
gdb/testsuite/fortran: Fix info-modules/info-types for gfortran 8+

The gdb.fortran/info-modules.exp and gdb.fortran/info-types.exp tests
are failing on versions of gfortran after 7.3 due to the inclusion of
extra "system" modules and type that were not being matched by the
current test patterns.

Rather than building increasingly complex patterns that would always
be at risk of breaking with future versions of GCC I have instead
added a new library that parses the output of the following commands:

  info types
  info variables
  info functions
  info modules
  info module functions
  info module variables

into a data structure, the test can than run checks against the
contents of this data structure.

The benefit is that we can simply ignore extra results that we don't
care about.

There is a small risk that a bug in GDB might allow us to start
reporting incorrect results in such a way that the new library will
not spot the error.  However, I have tried to mitigate this risk by
adding extra procedures into the test library (see check_no_entry) and
we can add more in future if we wanted to be even more defensive.

I tested this test file with gFortran 7.3.1, 8.3.0, and 9.2.0, I now
see 100% pass in all cases.

gdb/testsuite/ChangeLog:

* gdb.fortran/info-modules.exp: Rewrite to make use of new
sym-info-cmds library.
* gdb.fortran/info-types.exp: Likewise.
* lib/sym-info-cmds.exp: New file.

Change-Id: Iff81624f51b5afb6c95393932f3d94472d7c2970

4 years agogdb/darwin-nat.c: Fix template argument for scoped_restore_tmpl
Wataru Ashihara [Sun, 8 Dec 2019 08:00:43 +0000 (17:00 +0900)] 
gdb/darwin-nat.c: Fix template argument for scoped_restore_tmpl

This should be the type of startup_with_shell, whose type was changed
from int to bool at commit 80fd28264.

This fixes the build on macOS:

      CXX    darwin-nat.o
    In file included from ../../gdb/darwin-nat.c:22:
    In file included from ../../gdb/top.h:25:
    In file included from ../../gdb/value.h:23:
    In file included from ../../gdb/frame.h:72:
    In file included from ../../gdb/language.h:26:
    In file included from ../../gdb/symtab.h:33:
    ../../gdb/gdbsupport/gdb_optional.h:155:19: error: no matching constructor for initialization of 'scoped_restore_tmpl<int>'
        new (&m_item) T (std::forward<Args>(args)...);
                      ^  ~~~~~~~~~~~~~~~~~~~~~~~~
    ../../gdb/darwin-nat.c:1995:31: note: in instantiation of function template specialization 'gdb::optional<scoped_restore_tmpl<int> >::emplace<bool *, int>' requested here
              restore_startup_with_shell.emplace (&startup_with_shell, 0);
                                         ^
    ../../gdb/gdbsupport/scoped_restore.h:69:3: note: candidate constructor template not viable: no known conversion from 'bool *' to 'int *' for 1st argument
      scoped_restore_tmpl (T *var, T2 value)
      ^
    ../../gdb/gdbsupport/scoped_restore.h:57:3: note: candidate constructor not viable: requires single argument 'var', but 2 arguments were provided
      scoped_restore_tmpl (T *var)
      ^
    ../../gdb/gdbsupport/scoped_restore.h:76:3: note: candidate constructor not viable: requires single argument 'other', but 2 arguments were provided
      scoped_restore_tmpl (const scoped_restore_tmpl<T> &other)
      ^
    1 error generated.

gdb/ChangeLog
2019-12-08  Wataru Ashihara  <wataash@wataash.com>

* darwin-nat.c (darwin_nat_target::create_inferior): Fix
template argument for scoped_restore_tmpl from bool to int.

Change-Id: Ia0202efd34dbce69b6af5d035fa55ed89215138a

4 years agox86/Intel: fold "xmmword" with "oword"
Jan Beulich [Mon, 9 Dec 2019 12:32:11 +0000 (13:32 +0100)] 
x86/Intel: fold "xmmword" with "oword"

These are full aliases of one another, so there's no real need to use
distinct O_md* values for them.

4 years agox86/Intel: support "mmword ptr"
Jan Beulich [Mon, 9 Dec 2019 12:31:39 +0000 (13:31 +0100)] 
x86/Intel: support "mmword ptr"

This is an alias of "qword ptr", commonly used with MMX insns.

At this occasion also test (alongside the newly supported "mmword")
- "zmmword" used as expression,
- PADDB with "oword ptr" (aliasing "xmmword ptr").

4 years agox86/Intel: fix "near ptr" / "far ptr" handling
Jan Beulich [Mon, 9 Dec 2019 12:31:07 +0000 (13:31 +0100)] 
x86/Intel: fix "near ptr" / "far ptr" handling

Commit dc2be329b950 ("i386: Only check suffix in instruction mnemonic")
broke rejecting of these for floating point insns. Fix this by setting
the "byte" operand attribute, which will now (again) cause an error.

Furthermore the diagnostic for the "far ptr" case in general and for the
"near ptr" case in the non-float cases became "invalid instruction
suffix" instead of the intended "operand size mismatch". Fix this by
also setting the "tbyte" operand attribute (no insn template accepts
both byte and tbyte operands).

4 years agox86/Intel: drop pointless suffix setting for "tbyte ptr"
Jan Beulich [Mon, 9 Dec 2019 12:29:44 +0000 (13:29 +0100)] 
x86/Intel: drop pointless suffix setting for "tbyte ptr"

There are extremely few insns accepting "tbyte ptr" operand, so the
"tbyte" operand flag checking done by match_operand_size() is already
sufficient; the setting of the suffix has become meaningless anyway
with dc2be329b950 ("i386: Only check suffix in instruction mnemonic").
Fold the code with that setting the "byte" operand flag to force an
error (no insn at all accepts both "byte ptr" and tbyte ptr" operands,
except for AnySize ones where the two (conflicting) recorded types
don't matter (operand_size_match() doesn't call match_operand_size() in
this case).

4 years agox86/Intel: drop pointless suffix setting for "fword ptr"
Jan Beulich [Mon, 9 Dec 2019 12:29:14 +0000 (13:29 +0100)] 
x86/Intel: drop pointless suffix setting for "fword ptr"

No floating point insn accepts an "fword ptr" operand, so the "fword"
operand flag checking done by match_mem_size() is already sufficient;
the setting of the suffix has become meaningless anyway with
dc2be329b950 ("i386: Only check suffix in instruction mnemonic").

4 years agox86/Intel: drop pointless special casing of LxS
Jan Beulich [Mon, 9 Dec 2019 12:28:43 +0000 (13:28 +0100)] 
x86/Intel: drop pointless special casing of LxS

LDS et al don't accept "word ptr" operands anyway, as per their insn
templates. Hence there's no need to special case this here; the check
has become dysfunctional anyway by dc2be329b950 ("i386: Only check
suffix in instruction mnemonic").

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

4 years agoS12Z disassembler memory leak
Alan Modra [Sat, 7 Dec 2019 00:55:52 +0000 (11:25 +1030)] 
S12Z disassembler memory leak

* s12z-opc.c (exg_sex_discrim): Don't leak memory on invalid
registers.

4 years agoaarch64*-*-*ilp32 gas tests
Alan Modra [Sat, 7 Dec 2019 12:01:43 +0000 (22:31 +1030)] 
aarch64*-*-*ilp32 gas tests

The new pac_negate_ra_state test adds yet another failure on aarch64
ipl32 targets.  This patch fixes that particular problem and a few
more that are trivial to fix.

* testsuite/gas/aarch64/bfloat16.d: Match 32-bit and 64-bit output.
* testsuite/gas/aarch64/dgh.d: Likewise.
* testsuite/gas/aarch64/f32mm.d: Likewise.
* testsuite/gas/aarch64/f64mm.d: Likewise.
* testsuite/gas/aarch64/i8mm.d: Likewise.
* testsuite/gas/aarch64/pac_ab_key.d: Likewise.
* testsuite/gas/aarch64/pac_negate_ra_state.d: Likewise.
* testsuite/gas/aarch64/reloc-prel_g0.d: Likewise.
* testsuite/gas/aarch64/reloc-prel_g0_nc.d: Likewise.
* testsuite/gas/aarch64/reloc-prel_g1.d: Likewise.
* testsuite/gas/aarch64/sve-bfloat-movprfx.d: Likewise.
* testsuite/gas/aarch64/sve-movprfx-mm.d: Likewise.
* testsuite/gas/aarch64/sve2.d: Likewise.

4 years agoOptional matching for run_dump_test
Alan Modra [Sat, 7 Dec 2019 12:02:52 +0000 (22:32 +1030)] 
Optional matching for run_dump_test

This adds an alternative to using #... in dump files, useful where we
only want to allow specific extra output.  DW_CFA_nop in CIEs and FDEs
to pad out to required alignment (larger for 64-bit than 32-bit) is
an example where these optional match patterns are useful.

binutils/
* testsuite/lib/binutils-common.exp (regexp_diff): Support #?REGEXP.
ld/
* testsuite/ld-elf/eh4.d: Match optional padding DW_CFA_nop in FDEs.
* testsuite/ld-elf/eh5.d: Likewise, and extra CIEs emitted on
embedded targets.

4 years agoFix inter-CU references using intra-CU form in imported-unit
Tom de Vries [Sun, 8 Dec 2019 10:25:28 +0000 (11:25 +0100)] 
Fix inter-CU references using intra-CU form in imported-unit

When running the gdb testsuite with the cc-with-dwz board, I run into:
...
Running gdb/testsuite/gdb.dwarf2/imported-unit.exp ...
gdb compile failed, dwz: gdb.dwarf2/imported-unit/imported-unit: \
  Couldn't find DIE referenced by DW_AT_abstract_origin
cc-with-tweaks.sh: dwz did not modify gdb.dwarf2/imported-unit/imported-unit.
...

The problem is that the DW_AT_abstract_origin reference here:
...
 <0><d2>: Abbrev Number: 2 (DW_TAG_compile_unit)
 <1><e6>: Abbrev Number: 4 (DW_TAG_subprogram)
    <e7>   DW_AT_abstract_origin: <0x142>
    <eb>   DW_AT_low_pc      : 0x4004b2
    <f3>   DW_AT_high_pc     : 0x4004c8
...
referring to a DIE in another compilation unit here:
...
 <0><129>: Abbrev Number: 2 (DW_TAG_compile_unit)
  <1><142>: Abbrev Number: 4 (DW_TAG_subprogram)
    <143>   DW_AT_name        : main
    <148>   DW_AT_type        : <0x13b>
    <14c>   DW_AT_external    : 1
...
is encoded using intra-CU reference form DW_FORM_ref4 instead of intra-CU
reference DW_FORM_ref_addr:
...
   4      DW_TAG_subprogram    [has children]
    DW_AT_abstract_origin DW_FORM_ref4
    DW_AT_low_pc       DW_FORM_addr
    DW_AT_high_pc      DW_FORM_addr
    DW_AT value: 0     DW_FORM value: 0
...

Fix this in the DWARF assembler by making all inter-CU references use the '%'
label prefix.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

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

* gdb.dwarf2/imported-unit.exp: Fix inter-CU references.

Change-Id: I690ff18c3943705ed478453531b176ff74700f3c

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

4 years agoCore file build-id support
Keith Seitz [Sat, 7 Dec 2019 17:35:03 +0000 (09:35 -0800)] 
Core file build-id support

This patch uses new BFD support for detecting build-ids in core
files.

After this patch, it is possible to run gdb with only the
core file, and gdb will automatically load the executable and
debug info [example from tests]:

$ gdb -nx -q
(gdb) core-file corefile-buildid.core
[New LWP 29471]
Reading symbols from gdb.base/corefile-buildid/debugdir-exec/.build-id/36/fe5722c5a7ca3ac746a84e223c6a2a69193a24...
Core was generated by `outputs/gdb.base/coref'.
Program terminated with signal SIGABRT, Aborted.
(gdb)

This work is based on functionality available in Fedora originally
written by Jan Kratochvil.

Regression tested on buildbot.

gdb/ChangeLog:
2019-12-07  Keith Seitz  <keiths@redhat.com>

* build-id.c (build_id_bfd_get): Permit bfd_core, too.
(build_id_to_debug_bfd): Make static, rewriting to use
build_id_to_bfd_suffix.
(build_id_to_bfd_suffix): Copy of build_id_to_debug_bfd,
adding `suffix' parameter. Append SUFFIX to file names
when searching for matching files.
(build_id_to_debug_bfd): Use build_id_to_bfd_suffix.
(build_id_to_exec_bfd): Likewise.
* build-id.h (build_id_to_debug_bfd): Clarify that function
searches for BFD of debug info file.
(build_id_to_exec_bfd): Declare.
* corelow.c: Include build-id.h.
(locate_exec_from_corefile_build_id): New function.
(core_target_open): If no executable BFD is found,
search for a core file BFD using build-id.

gdb/testsuite/ChangeLog:
2019-12-07  Keith Seitz  <keiths@redhat.com>

* gdb.base/corefile-buildid-shlib-shr.c: New file.
* gdb.base/corefile-buildid-shlib.c: New file.
* gdb.base/corefile-buildid.c: New file.
* gdb.base/corefile-buildid.exp: New file.

Change-Id: I15e9e8e58f10c68b5cae55e2eba58df1e8aef529

4 years agoPR25236, common sym versioning
Alan Modra [Fri, 6 Dec 2019 00:51:45 +0000 (11:21 +1030)] 
PR25236, common sym versioning

In cases where a relocatable object file has a common symbol, no other
file has a definition, and there is a matching common symbol found in
a shared library then ld will output a definition using the largest of
size and alignment for the commons.  This patch fixes a bug in ld that
ignored common symbols when assigning versions, resulting in such
symbols being given VER_NDX_LOCAL versions.

PR 25236
* elflink.c (_bfd_elf_link_assign_sym_version): Assign versions
for ELF_COMMON_DEF_P symbols.
(elf_link_output_extsym, _bfd_elf_add_default_symbol): Adjust to
suit.

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

4 years ago[ARM, sim] Fix build error and warnings
Luis Machado [Tue, 26 Nov 2019 15:52:56 +0000 (12:52 -0300)] 
[ARM, sim] Fix build error and warnings

Newer GCC's have switched to -fno-common by default, and this breaks the build
for the ARM sim, like this:

binutils-gdb.git~gdb-8.3-release/sim/arm/maverick.c:65: multiple definition of `DSPsc'; libsim.a(wrapper.o):binutils-gdb.git~gdb-8.3-release/sim/arm/wrapper.c:134: first defined here
binutils-gdb.git~gdb-8.3-release/sim/arm/maverick.c:64: multiple definition of `DSPacc'; libsim.a(wrapper.o):binutils-gdb.git~gdb-8.3-release/sim/arm/wrapper.c:133: first defined here
binutils-gdb.git~gdb-8.3-release/sim/arm/maverick.c:63: multiple definition of `DSPregs'; libsim.a(wrapper.o):binutils-gdb.git~gdb-8.3-release/sim/arm/wrapper.c:132: first defined here

I also noticed a few warnings due to mismatching types, as follows:

../../../../repos/binutils-gdb/sim/arm/wrapper.c: In function ‘sim_create_inferior’:
../../../../repos/binutils-gdb/sim/arm/wrapper.c:335:16: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
       for (arg = argv; *arg != NULL; arg++)
                ^
../../../../repos/binutils-gdb/sim/arm/wrapper.c:342:8: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
    arg = argv;
        ^
../../../../repos/binutils-gdb/sim/arm/wrapper.c:345:13: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
    for (arg = argv; *arg != NULL; arg++)
             ^
The following patch fixes both of the above.

sim/arm/ChangeLog:

2019-12-06  Luis Machado  <luis.machado@linaro.org>

* armemu.c (isize): Move this declaration ...
* arminit.c (isize): ... here.
* maverick.h: New file.
* wrapper.c: Include "maverick.h".
(<struct maverick_regs>, <union maverick_acc_regs>): Remove and update
comment.
(sim_create_inferior): Cast variables to proper type.
* maverick.c: Include "maverick.h".
(<struct maverick_regs>, <union maverick_acc_regs>): Move
declarations to maverick.h and update comment.
(DSPsc, DSPacc, DSPregs): Adjust comment.

Change-Id: I21db699d3b61b2de8c44053e47be4387285af28f

4 years agoPut bcache inside "namespace gdb"
Christian Biesinger [Mon, 2 Dec 2019 21:05:54 +0000 (15:05 -0600)] 
Put bcache inside "namespace gdb"

This avoids a conflict with a system "struct bcache" on
Solaris (see e.g.
https://www.isi.edu/nsnam/archive/ns-users/webarch/2001/msg05393.html)

Note that the Solaris conflict for now only surfaces with
--enable-targets=all (which the build bot doesn't use).

gdb/ChangeLog:

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

* bcache.c: Put in namespace gdb.
* bcache.h: Likewise.
* gdbtypes.c (check_types_worklist): Update.
(types_deeply_equal): Update.
* macrotab.c (struct macro_table) <bcache>: Update.
(new_macro_table): Update.
* macrotab.h (struct bcache): Put this forward declaration
inside namespace gdb.
(new_macro_table): Update.
* objfiles.h (struct objfile_per_bfd_storage) <filename_cache>:
Update.
<macro_cache>: Update.
* psymtab.h: (psymtab_storage) <psymbol_cache>: Update.

Change-Id: I843d5e91f7ccb3db6d1099a8214c15a74510256f

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