Commit Graph

118478 Commits

Author SHA1 Message Date
Tom Tromey
12406b2cda Remove 'copy_names' parameter from add_using_directive
I noticed that add_using_directive's 'copy_names' parameter is only
used by a single caller.  This patch removes the parameter and changes
that caller to copy the names itself.  I chose to use intern here
since I suspect the names may well be repeated in a given objfile.

Approved-By: John Baldwin <jhb@FreeBSD.org>
2024-04-15 11:45:33 -06:00
John Baldwin
35d6915157 gdb: Add Felix Willgerodt as the x86 architecture maintainer
This includes both the i386 and x86-64 architectures.
2024-04-15 10:39:46 -07:00
Nick Clifton
9dd9181427 Remove dependency upon shlwapi library when building BFD for Windows/MinGW environments.
PR 31527
2024-04-15 16:42:15 +01:00
Tom Tromey
5cb1d84e59 Change printf attribute to fix clang build
commit e8cd90f0 ("Rewrite gdb_bfd_error_handler") broke the clang
build.

The problem here is that print_error_callback isn't marked as being
printf-like, but it calls string_file::vprintf, triggering:

../../binutils-gdb/gdb/gdb_bfd.c:1202:18: error: format string is not a string literal [-Werror,-Wformat-nonliteral]

This patch applies the attribute to this function.

It also removes the attribute from gdb_bfd_error_handler, because that
function is no longer really printf-like.
2024-04-15 09:37:12 -06:00
Vijay Shankar
ccbf42ec88 When mapping sections to segments ensure that we do not add sections whose VMA->LMA relationship does not match the relationship of earlier sections in the segment.
PR 31540
2024-04-15 16:27:21 +01:00
Tom Tromey
75670e0075 Avoid complaint warning on mingw
The mingw build currently issues a warning:

./../../src/gdb/utils.h:378:56: warning: ignoring attributes on template argument 'void(const char*, va_list)' {aka 'void(const char*, char*)'} [-Wignored-attributes]

This patch fixes the problem as suggested by Simon:

    https://sourceware.org/pipermail/gdb-patches/2024-April/207908.html

...that is, by changing the warning interceptor to a class with a
single 'warn' method.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-15 09:21:40 -06:00
Tom Tromey
bdcd50f901 Strip trailing newlines from input string
A co-worker noticed a strange situation where "target remote" would
fail due to a trailing newline in the address part of the command.
Eventually he tracked this down to the fact that he was pasting the
command into the terminal, and due to bracketed paste mode, the
newline was being preserved by readline.

It seems to me that we basically never want a trailing newline on a
gdb command, so this patch removes it when handling the readline
result.

Co-Authored-By: Kévin Le Gouguec <legouguec@adacore.com>
Approved-By: Luis Machado <luis.machado@arm.com>
Tested-By: Luis Machado <luis.machado@arm.com>
2024-04-15 09:04:29 -06:00
Christophe Lyon
34d5ac9244 gprofng: Fix dvi documentation build rule
This  patch fixes 'install-dvi'.
2024-04-15 09:51:19 +00:00
Bernd Edlinger
d8e753b791 sim: riscv: Fix confusion with c.jal vs. c.addiw
There was apparently a confusion which cpu model uses
compressed JAL and which ADDIW.  Fixed that in execute_c,
case MATCH_C_JAL | MATCH_C_ADDIW.

Fixes 3224e32fb8 ("sim: riscv: Add support for compressed integer instructions")

Approved-By: Andrew Burgess <aburgess@redhat.com>
2024-04-15 11:04:07 +02:00
Bernd Edlinger
a73073dc7f sim: riscv: Make stack 16-byte aligned
Various gcc test cases fail due to the stack
alignment of 16 bytes is expected by gcc,
causing issues mostly with vararg functions,
e.g.

FAIL: gcc.c-torture/execute/nest-align-1.c   -O0  execution test
FAIL: gcc.c-torture/execute/nest-stdar-1.c   -O0  execution test
FAIL: gcc.c-torture/execute/va-arg-12.c   -O0  execution test
FAIL: gcc.c-torture/execute/va-arg-15.c   -O0  execution test
FAIL: gcc.c-torture/execute/va-arg-16.c   -O0  execution test
FAIL: gcc.c-torture/execute/va-arg-17.c   -O0  execution test
FAIL: gcc.c-torture/execute/va-arg-20.c   -O0  execution test
FAIL: gcc.c-torture/execute/va-arg-26.c   -O0  execution test
...

Approved-By: Andrew Burgess <aburgess@redhat.com>
2024-04-15 10:22:56 +02:00
Bernd Edlinger
ae14cde6fd sim: riscv: Fix PC at gdb breakpoints
The uncompressed EBREAK instruction does not work
correctly this way, and the comment saying that
GDB expects us to step over EBREAK is just wrong.
The PC was always 4 bytes too high, which skips one
instruction at break and step over commands, and
causes complete chaos.  The compressed EBREAK was
already implemented correctly.

Tested by using gdb's "target sim" and single-stepping.

Approved-By: Andrew Burgess <aburgess@redhat.com>
2024-04-15 10:20:50 +02:00
Lulu Cai
5966e2eb3f LoongArch: ld:Report an error when seeing an unrecognized relocation
If we generate an object file using an assembler with the new
relocations added, and then linking those files with an older
linker, the link will still complete and the linked file will
be generated.
In this case we should report an error instead of continuing
the linking process.
2024-04-15 09:54:06 +08:00
GDB Administrator
31a1b19e6c Automatic date update in version.in 2024-04-15 00:00:11 +00:00
GDB Administrator
d96ca68465 Automatic date update in version.in 2024-04-14 00:00:07 +00:00
GDB Administrator
4ad25f3bed Automatic date update in version.in 2024-04-13 00:00:09 +00:00
Pedro Alves
c223d37388 Fix setting watchpoints when current thread is running
Currently, when the current thread is running, you can print global
variables.  However, if you try to set a watchpoint on the same
globals, GDB errors out, complaining that the selected thread is
running.  Like so:

 (gdb) c&
 Continuing.
 (gdb) p global
 $1 = 1098377287
 (gdb) watch global
 Selected thread is running.

This patch makes setting the watchpoint work.  You'll now get:

 (gdb) c&
 Continuing.
 (gdb) [New Thread 0x7ffff7d6e640 (LWP 434993)]
 [New Thread 0x7ffff756d640 (LWP 434994)]
 p global
 $1 = 88168
 (gdb) watch global
 Hardware watchpoint 2: global
 (gdb) [Switching to Thread 0x7ffff7d6e640 (LWP 434993)]

 Thread 2 "function0" hit Hardware watchpoint 2: global

 Old value = 185420
 New value = 185423
 int_return () at threads.c:39
 39      }

The problem is that update_watchpoint calls get_selected_frame
unconditionally.  We can skip it if the watchpoint expression is only
watching globals.

This adds a testcase that exercises both all-stop and non-stop, and
also software and hardware watchpoints.  It is kfailed for software
watchpoints, as those require another fix not handled by this patch
(the sw watchpoint doesn't fire because GDB doesn't force the
running-free thread to switch to single-stepping).

Change-Id: I68ca948541aea3edd4f70741f272f543187abe40
2024-04-12 18:54:08 +01:00
Pedro Alves
ec48903170 New testcase gdb.threads/leader-exit-attach.exp (PR threads/8153)
Add a new testcase for exercising attaching to a process after its
main thread has exited.

This is not possible on Linux, the kernel does not allow attaching to
a zombie task, so the test is kfailed there.  It is possible however
on Windows at least, and was the scenario addressed by the Windows
backend fix in
https://sourceware.org/legacy-ml/gdb-patches/2003-12/msg00479.html,
nowadays PR threads/8153, back in 2003.

Passes cleanly on Cygwin.
KFAILed on GNU/Linux native and gdbserver.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=8153
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31554
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31555
Change-Id: Ib554f92f68c965bb4603cdf2aadb55ca45ded53b
2024-04-12 18:38:56 +01:00
Pedro Alves
9c25a9d0f7 Cygwin/testsuite: Avoid infinite hang
On Cygwin, the gdb.base/fork-no-detach-follow-child-dlopen.exp
testcase hits a sequence of cascading FAILs:

 (gdb) run
 Starting program: ..../gdb.base/fork-no-detach-follow-child-dlopen/fork-no-detach-follow-child-dlopen
 [New Thread 12672.0x318c]
 [New Thread 12672.0x2844]
 [New Thread 12672.0x714]
 FAIL: gdb.base/fork-no-detach-follow-child-dlopen.exp: runto: run to add (timeout)
 frame
 FAIL: gdb.base/fork-no-detach-follow-child-dlopen.exp: frame (timeout)
 list
 FAIL: gdb.base/fork-no-detach-follow-child-dlopen.exp: list (timeout)

And the test program never makes progress.

... and at this point, Cygwin is completely stuck.  I can't run any
other Cygwin program.

However, if we run the test program outside DejaGnu, we see something
different:

  (gdb) b add
  Function "add" not defined.
  Make breakpoint pending on future shared library load? (y or [n]) y
  Breakpoint 1 (add) pending.
  (gdb) r
  Starting program: ..../gdb.base/fork-no-detach-follow-child-dlopen/fork-no-detach-follow-child-dlopen
  [New Thread 10968.0x834]
  [New Thread 10968.0x29a4]
  [New Thread 10968.0x16b8]
  [New Thread 10968.0xf9c]
  [Switching to Thread 10968.0x16b8]

  Thread 4 "sig" hit Breakpoint 1.2, pending_signals::add (pack=..., this=0x7ffa1e748a40 <sigq>) at /usr/src/debug/cygwin-3.4.9-1/winsup/cygwin/sigproc.cc:1304
  1304      se = sigs + pack.si.si_signo;
  (gdb)

Ah, the test wanted to run to a global "add" function, but managed to
stop at an internal Cygwin method called "add".  And stopping there
deadlocks everything Cygwin in the system.  (I believe some
cygwin1.dll mechanisms use cross-process synchronization or
communication, we're probably blocking something like that.)

Fix this by using "break -q".  The tests FAIL because we don't support
follow-fork for Cygwin, but at least we no longer deadlock the
machine.

Approved-by: Kevin Buettner <kevinb@redhat.com>
Change-Id: I7181d8481c2ae1024b0d73e3bb194f9a4f0a7eb9
2024-04-12 18:37:29 +01:00
Andrew Burgess
032e5e0c0c gdb/data-directory: silence output from mkinstalldirs script
After my recent changes the data-directory build now uses
silent-rules.mk to reduce the output.

One problem that remains was the use of mkinstalldirs by stamp-python
and stamp-guile for creating some directories, the mkinstalldirs
prints some messages, so we're left with output like this:

    GEN    stamp-python
  mkdir -p -- ./python/gdb
  mkdir -p -- ./python/gdb/command
  mkdir -p -- ./python/gdb/dap
  mkdir -p -- ./python/gdb/function
  mkdir -p -- ./python/gdb/printer

I was looking at adding a --silent option to the mkinstalldirs script,
however, when I took a look at the automake package (which is where
mkinstalldirs comes from) it turns out that mkinstalldirs is
deprecated, at the advice is to use 'install-sh -d' instead.

Just like we carry mkinstalldirs in the top-level directory, we also
carry install-sh, and a version of install-sh which supports the -d
flag.

And best of all, 'install-sh -d' doesn't appear to print any of the
information messages to stdout that mkinstalldirs does, so if we
switch to use that, we get a quieter build.

There should be no changes in what is built after this commit

Approved-By: Tom Tromey <tom@tromey.com>
2024-04-12 17:15:34 +01:00
Nick Clifton
99daf56f4b Update description of macro keyword argument assignment in assembler documentation.
PR 31255
2024-04-12 16:51:51 +01:00
H.J. Lu
3d67591c6f gas: Fix memory leaks in gen-sframe.c
* gen-sframe.c (sframe_xlate_ctx_cleanup): Call XDELETE on
	xlate_ctx->cur_fre.
	(create_sframe_all): Call XDELETE on xlate_ctx after use.
2024-04-12 03:55:33 -07:00
GDB Administrator
8bad8d5133 Automatic date update in version.in 2024-04-12 00:00:08 +00:00
Alan Modra
0f8adbf77d Re: Fix null pointer dereference in process_debug_info()
read_bases has a potential null-pointer deref too, and without a
debug_info_p there isn't any point in calling read_bases.

	* dwarf.c (process_debug_info): Don't call read_bases when
	debug_info_p is NULL.
2024-04-12 09:00:52 +09:30
Nick Clifton
fcf8f3237c Improve readelf's display of RELR relocs. 2024-04-11 16:57:18 +01:00
Nick Clifton
8e8d0b63ff Add -j/--display-section option to readelf. 2024-04-11 15:57:26 +01:00
Tom de Vries
31c21e2c13 [gdb/testsuite] Fix gdb.threads/access-mem-running-thread-exit.exp with clang
When running test-case gdb.threads/access-mem-running-thread-exit.exp with
clang, we run into:
...
(gdb) print global_var = 555^M
No symbol "global_var" in current context.^M
(gdb) FAIL: gdb.threads/access-mem-running-thread-exit.exp: all-stop: \
  access mem (write to global_var, inf=2, iter=1)
...

The problem is that clang removes the unused variable.

Fix this in the same way as done in commit b4f767131f
("Fix gdb.base/align-*.exp and Clang + LTO and AIX GCC"), by incrementing the
variable.

Tested on x86_64-linux with gcc and clang.
2024-04-11 13:43:52 +02:00
H.J. Lu
cafca5eaa0 gas: Fix a CFI label name memory leak in scfi.c
CFI label name can be freed only after use.

	* scfi.c (handle_scfi_dot_cfi): Free CFI label name after use.
	* scfidw2gen.c (scfi_process_cfi_label): Add a comment.  Remove
	TODO on freeing CFI label name.
2024-04-11 04:11:19 -07:00
H.J. Lu
80ec23548f gas: Fix memory leaks in ginsn.c
Free buffer memory after use in ginsn.c.

	* ginsn.c (ginsn_dst_print): Free buffer after use.
	(ginsn_print): Likewise.
2024-04-11 04:10:28 -07:00
Tankut Baris Aktemur
9df979cab7 gdb: fix format in remote.c
Fix space-before-parenthesis format at three spots in remote.c.
2024-04-11 13:00:43 +02:00
Alan Modra
af92590521 Remove bfdwin.c
In commit b86d3af60f and 0ab0435fe6 I fixed SIGBUS errors found by
oss-fuzz now that --with-mmap defaults to enabled.  It turns out there
are further problems with the aout mmap code: aout_read_minisymbols
returns the external symbol array, which is later freed by nm.c.  If
the array is mmaped you can't free it.  Now this could be fixed by
making aout minisymbols an array of pointers, but I figure there's not
much point in expending effort on that.  So delete the aout mmap
support along with bfdwin.c and get_section_contents_in_window.
2024-04-11 17:05:16 +09:30
Alan Modra
de9dc65bd4 asan: heap buffer overflow elf_link_add_to_first_hash
Seen on mmix.
mmix  +FAIL: ld-misc/defsym1
mmix  +FAIL: sysroot-prefix common plain -Lpath, quoted
mmix  +FAIL: sysroot-prefix common plain -Lpath, unquoted
mmix  +FAIL: sysroot-prefix common full-path, quoted
mmix  +FAIL: sysroot-prefix common full-path, unquoted
mmix  +FAIL: sysroot-prefix common plain =-prefixed with empty, quoted
mmix  +FAIL: sysroot-prefix common plain =-prefixed with empty, unquoted
mmix  +FAIL: sysroot-prefix common plain $SYSROOT-prefixed with empty, quoted
mmix  +FAIL: sysroot-prefix common plain $SYSROOT-prefixed with empty, unquoted
mmix  +FAIL: sysroot-prefix common plain =-prefixed -Lpath, quoted
mmix  +FAIL: sysroot-prefix common plain =-prefixed -Lpath, unquoted
mmix  +FAIL: sysroot-prefix common plain $SYSROOT-prefixed -Lpath, quoted
mmix  +FAIL: sysroot-prefix common plain $SYSROOT-prefixed -Lpath, unquoted
mmix  +FAIL: sysroot-prefix common full-path =-prefixed without, quoted
mmix  +FAIL: sysroot-prefix common full-path =-prefixed without, unquoted
mmix  +FAIL: sysroot-prefix common full-path $SYSROOT-prefixed without, quoted
mmix  +FAIL: sysroot-prefix common full-path $SYSROOT-prefixed without, unquoted

==3746597==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6070000007a0 at pc 0x56d87b0d1a40 bp 0x7fffb1629bf0 sp 0x7fffb1629be0
READ of size 8 at 0x6070000007a0 thread T0
    #0 0x56d87b0d1a3f in elf_link_add_to_first_hash /home/alan/src/binutils-gdb/bfd/elflink.c:4312

mmix uses bfd_link_generic_hash_table.

	* elflink.c (_bfd_elf_archive_symbol_lookup): Dont use first_hash
	unless the hash table is bfd_link_elf_hash_table.
	(elf_link_add_archive_symbols): Likewise.
2024-04-11 17:05:15 +09:30
Alan Modra
ef70c9e7b2 Re: Update objcopy's --section-alignment option
ubsan: shift exponent 255 is too large for 64-bit type

I should have known oss-fuzz wouldn't be satisfied so easily.  The pef
format allows quite silly section alignments in object files.

	* objcopy.c (setup_section): Limit shift exponent when checking
	vma and lma for alignment.
2024-04-11 17:05:15 +09:30
H.J. Lu
bf649e72d3 x86-64: Use long NOPs for Intel Core processors
Use long NOPs for Intel Core processors since they are faster than
multiple NOPs.  Don't use them for 64-bit processors by default since
Intel Atom processors can only decode 4 prefixes in 1 cycle.

	* config/tc-i386.c (alt64_9): New.
	(alt64_10): Likewise.
	(alt64_11): Likewise.
	(alt64_12): Likewise.
	(alt64_13): Likewise.
	(alt64_14): Likewise.
	(alt64_15): Likewise.
	(alt64_patt): Likewise.
	(i386_generate_nops): Use alt64_patt for Intel Core processors
	in 64-bit mode.
	* testsuite/gas/i386/x86-64-nops-1-core2.d: Expect long NOPs.
	* testsuite/gas/i386/x86-64-nops-4-core2.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d: Replace
	../x86-64-nops-1.d with ../x86-64-nops-1-core2.d.
	* testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d: Replace
	../x86-64-nops-4.d with ../x86-64-nops-4-core2.d.
2024-04-10 20:24:41 -07:00
H.J. Lu
533da9536e mmap: Fix a memory leak in _bfd_mmap_read_temporary
Return malloced memory in *mmap_base so that _bfd_munmap_readonly_temporary
will free it.

	* libbfd.c (_bfd_mmap_read_temporary): Return malloced memory
	in *mmap_base.
2024-04-10 19:51:29 -07:00
H.J. Lu
c3460201a6 elf: Fix a memory leak in _bfd_elf_add_dynamic_entry
Normally, the section contents is allocated by bfd_alloc which is freed
when the object is closed.  But the .dynamic section contents is allocated
by bfd_realloc, which should be freed by calling free.  Add a dynamic
field to elf_link_hash_table for the .dynamic section and free its
contents in _bfd_elf_link_hash_table_free.

	* elf-bfd.h (elf_link_hash_table): Add dynamic.
	* elflink.c (_bfd_elf_link_create_dynamic_sections): Set the
	dynamic field in elf_link_hash_table.
	(_bfd_elf_add_dynamic_entry): Use hash_table->dynamic.
	(_bfd_elf_strip_zero_sized_dynamic_sections): Likewise.
	(bfd_elf_add_dt_needed_tag): Likewise.
	(elf_finalize_dynstr): Likewise.
	(_bfd_elf_link_hash_table_free): Free htab->dynamic->contents.
	(bfd_elf_final_link): Use htab->dynamic.
	* elfxx-x86.c (_bfd_x86_elf_finish_dynamic_sections): Use
	htab->elf.dynamic.
2024-04-10 19:50:01 -07:00
Alan Modra
ea3002bc4d Segfault in _bfd_delete_bfd with USE_MMAP
Any of the calls to _bfd_delete_bfd in bfd_fopen will hit this.

	* opncls.c (_bfd_delete_bfd): Check for non-NULL xvec before
	accessing flavour.
2024-04-11 09:32:10 +09:30
GDB Administrator
f8e9374ea8 Automatic date update in version.in 2024-04-11 00:00:17 +00:00
Indu Bhagat
f1c5d46cae gas: scfi: bugfixes for SCFI state propagation
There are two state propagation functions in SCFI machinery - forward
and backward flow.  The patch addresses two issues:
  - In forward_flow_scfi_state (), the state being compared in forward flow
    must be that at the exit of a prev bb and that at the entry of the
    next bb.  The variable holding the state to be compared was
    previously (erroneously) stale.
  - In cmp_scfi_state (), the assumption that two different control
    flows, leading to the same basic block, cannot have a mismatched
    notion of CFA base register, is not true.  Remove the assertion and
    instead return err if mismatch.

Fixing these issues helps correctly synthesize CFI, when previously
SCFI was erroring out for an otherwise valid input asm.

gas/
	* scfi.c (cmp_scfi_state): Remove assertion and return mismatch
	in return value as applicable.
	(forward_flow_scfi_state): Update state object to be the same as
	the exit state of the prev bb before comparing.

gas/testsuite/
	* gas/scfi/x86_64/scfi-x86-64.exp: Add new test.
	* gas/scfi/x86_64/scfi-cfg-5.d: New test.
	* gas/scfi/x86_64/scfi-cfg-5.l: New test.
	* gas/scfi/x86_64/scfi-cfg-5.s: New test.
2024-04-10 13:46:37 -07:00
Indu Bhagat
a1c6a60cc5 gas: gcfg: add_bb_at_ginsn must return root_bb
A GCFG (ginsn control flow graph) is created for SCFI purposes in GAS.
The existing GCFG creation process was ignoring some paths.

add_bb_at_ginsn () is a recursive function which should return the root
of the added basic blocks.  This property was being violated in some
traversals, e.g., where a taken path involving a sequence of a few basic
blocks eventually culminated in a GINSN_TYPE_RETURN instruction.  This
patch fixes the issue by keeping an explicit variable root_bb to
memorize the bb to be returned.

Next, find_or_make_bb () must either create or find the bb with the
first ginsn as the provided ginsn.  Add a few assertions to ensure
health of the cfg creation process.

Note that the testcase, in its current shape, is not fit for catching
regressions for the issue at hand.  Although the testcase does exercise
the updated code path, the testcase passes even without the current fix,
because the added edge in this specific testcase does not alter the
synthesized CFI.  (The missing edge is the fallthrough edge of the
conditional branch "jne .L13" in the testcase.)

Using a manual gcfg_print (), one can see the missing edge without the
fix.  Lets keep the testcase for now, until there is a better way to
test the GCFG for this issue (e.g., either by dumping the GCFG in
textual format, or a case when the missing edge does cause wrong
synthesized CFI).

gas/
	* ginsn.c (bb_add_edge): Fix a code comment.
	(find_bb): Likewise.
	(find_or_make_bb): Add new assertions to ensure health of cfg
	creation process.
	(add_bb_at_ginsn): Keep reference to the root_bb and return it.

gas/testsuite/
	* gas/scfi/x86_64/scfi-x86-64.exp: Add new test.
	* gas/scfi/x86_64/scfi-cfg-4.d: New test.
	* gas/scfi/x86_64/scfi-cfg-4.l: New test.
	* gas/scfi/x86_64/scfi-cfg-4.s: New test.
2024-04-10 13:45:59 -07:00
Christophe Lyon
96c1bcb38b gdb, gdbserver: Add missing install-dvi Makefile target
For some reason install-dvi is missing although other targets of the
same family are present. This looks like an oversight.

This enables calling 'make install-dvi' from the top-level build
directory.

Fix what looks like another oversight: include 'pdf' in 'all-doc' in
gdb/doc/Makefile.in.

Approved-By: Luis Machado <luis.machado@arm.com>
Tested-By: Luis Machado <luis.machado@arm.com>
2024-04-10 13:37:05 +00:00
Nick Clifton
ea83005a36 readelf: Add -j/--display-section command line option. 2024-04-10 12:23:44 +01:00
H.J. Lu
303da223b1 mmap: Avoid the sanitizer configure check failure
When -fsanitize=address,undefined is used to build, the mmap configure
check failed with

=================================================================
==231796==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x5750c7f6d72b in main /home/alan/build/gas-san/all/bfd/conftest.c:239

Direct leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x5750c7f6d2e1 in main /home/alan/build/gas-san/all/bfd/conftest.c:190

SUMMARY: AddressSanitizer: 8192 byte(s) leaked in 2 allocation(s).

Replace AC_FUNC_MMAP with GCC_AC_FUNC_MMAP to avoid the sanitizer
configure check failure.

bfd/

	* configure.ac: Replace AC_FUNC_MMAP with GCC_AC_FUNC_MMAP.
	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.

binutils/

	* configure.ac: Replace AC_FUNC_MMAP with GCC_AC_FUNC_MMAP.
	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.

ld/

	* configure.ac: Replace AC_FUNC_MMAP with GCC_AC_FUNC_MMAP.
	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.

libctf/

	* configure.ac: Replace AC_FUNC_MMAP with GCC_AC_FUNC_MMAP.
	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.

libsframe/

	* configure.ac: Replace AC_FUNC_MMAP with GCC_AC_FUNC_MMAP.
	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.
2024-04-10 03:57:46 -07:00
H.J. Lu
219822fd5d mmap: Avoid the sanitizer configure check failure
When -fsanitize=address,undefined is used to build, the mmap configure
check failed with

=================================================================
==231796==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x5750c7f6d72b in main /home/alan/build/gas-san/all/bfd/conftest.c:239

Direct leak of 4096 byte(s) in 1 object(s) allocated from:
    #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x5750c7f6d2e1 in main /home/alan/build/gas-san/all/bfd/conftest.c:190

SUMMARY: AddressSanitizer: 8192 byte(s) leaked in 2 allocation(s).

Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=detect_leaks=0 to avoid
the sanitizer configure check failure.

config/

	* mmap.m4 (GCC_AC_FUNC_MMAP): New.
	* no-executables.m4 (AC_FUNC_MMAP): Renamed to GCC_AC_FUNC_MMAP.
	Change AC_FUNC_MMAP to GCC_AC_FUNC_MMAP.

libiberty/

	* Makefile.in (aclocal_deps): Add $(srcdir)/../config/mmap.m4.
	* acinclude.m4: Change AC_FUNC_MMAP to GCC_AC_FUNC_MMAP.
	* aclocal.m4: Regenerated.
	* configure: Likewise.

zlib/

	* acinclude.m4: Include ../config/mmap.m4.
	* Makefile.in: Regenerated.
	* configure: Likewise.
2024-04-10 03:57:02 -07:00
Alan Modra
bdefc07306 Re: ld testsuite: Append NOSANITIZE_CFLAGS to CFLAGS_FOR_TARGET
Don't use CC_FOR_TARGET in the bootstrap test, a silly idea aiming at
consistency that made things worse.  The objects being linked were
built using $CC, so $CC should be used to link.

	* testsuite/ld-bootstrap/bootstrap.exp: Revert last change.
2024-04-10 11:28:32 +09:30
GDB Administrator
2c8dd9b1c3 Automatic date update in version.in 2024-04-10 00:00:22 +00:00
Tom Tromey
e8cd90f039 Rewrite gdb_bfd_error_handler
This patch rewrites gdb_bfd_error_handler to use 'bfd_print_error' to
generate the text of the warning, and then emits it using 'warning'.
The current code in the tree is a bit wrong because it may do the
wrong thing when BFD uses ones of its printf extensions.

This also adds locking to increment_bfd_error_count.  This is
important now that some BFD operations can be done on worker threads.

This approach makes it simpler for worker threads to intercept any
messages.

Regression tested on x86-64 Fedora 38.
2024-04-09 09:39:15 -06:00
Jens Remus
6f3cf71845 aarch64: Treat operand "SME list of ZA tiles" as immediate (PR 31561)
The AArch64 instruction table (aarch64-tbl.h) defines the operand
"SME list of ZA tiles" (SME_list_of_64bit_tiles) as immediate. During
assembly it is correctly encoded as immediate value (imm.value) in
parse_operands. During disassembly it is first correctly decoded as
immediate value (imm.value) in aarch64_ext_imm called by
aarch64_extract_operand, but then erroneously treated as register
number (reg.regno) in aarch64_print_operand.

This resolves the assembler test case "SME extension (ZERO)" to
erroneously fail on s390. On AArch64 - being little-endian - the struct
aarch64_opnd_info union fields reg.regno and imm.value share their
least-significant bits. On s390 - being big-endian - they do not.

opcodes/
	PR binutils/31561
	* aarch64-opc.c: Treat operand "SME list of ZA tiles" as
	immediate.

Bug: https://sourceware.org/PR31561
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Acked-by: Nick Clifton <nickc@redhat.com>
2024-04-09 17:21:53 +02:00
Jens Remus
676b98078f s390: Flag conditional branch relative insns as condjump
Flag conditional branch relative (extended) mnemonics clij* and clgij*
as "condjump" for jump visualization in disassembly. They were missed
to be flagged as such in commit c5306fed7d ("s390: Support for jump
visualization in disassembly").

opcodes/
	* s390-opc.txt: Flag conditional branch relative instructions
	clij* and clgij* as condjump for jump visualization in
	disassembly.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Acked-by: Nick Clifton <nickc@redhat.com>
2024-04-09 17:17:02 +02:00
H.J. Lu
56756c571e bfd: Define pagesize variables only for mmap
Define _bfd_pagesize, _bfd_pagesize_m1 and _bfd_minimum_mmap_size only
if HAVE_MMAP is defined.

	* libbfd-in.h (_bfd_pagesize): Declare only if HAVE_MMAP is
	defined.
	(_bfd_pagesize_m1): Likewise.
	(_bfd_minimum_mmap_size): Likewise.
	* libbfd.c (_bfd_pagesize): Define only if HAVE_MMAP is defined.
	(_bfd_pagesize_m1): Likewise.
	(_bfd_minimum_mmap_size): Likewise.
	(bfd_init_pagesize): Likewise.
	* lynx-core.c (lynx_core_file_p): Replace _bfd_pagesize with
	getpagesize.
2024-04-09 05:22:41 -07:00
Alex Coplan
cd714ac07c arm: Fix disassembly of MVE vq[r]shr[u]n
This patch fixes the disassembly of vq[r]shr[u]n insns so that the
shift immediate is properly decoded.  See the description of the
previous patch for an example of the incorrect disassembly.

As part of this patch we also fix the mve-vqrshrn.d test which was
testing for the incorrect disassembly of the immediates.  The
disassembly now matches the assembled instructions in that test.

Finally we add an mve-vqshrn test which tests the non-rounding variants
of those insns, whose encoding we fixed with the previous patch in this
series.
2024-04-09 10:09:25 +01:00