aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-04-10Re: ld testsuite: Append NOSANITIZE_CFLAGS to CFLAGS_FOR_TARGETAlan Modra1-4/+4
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-10Automatic date update in version.inGDB Administrator1-1/+1
2024-04-09Rewrite gdb_bfd_error_handlerTom Tromey1-15/+24
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-09aarch64: Treat operand "SME list of ZA tiles" as immediate (PR 31561)Jens Remus1-1/+1
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-09s390: Flag conditional branch relative insns as condjumpJens Remus1-4/+4
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 c5306fed7d40 ("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-09bfd: Define pagesize variables only for mmapH.J. Lu4-1/+7
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-09arm: Fix disassembly of MVE vq[r]shr[u]nAlex Coplan4-1808/+1879
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-09arm: Fix encoding of MVE vqshr[u]nAlex Coplan1-4/+4
As it stands, these insns are incorrectly encoded as vqrshr[u]n. Concretely, the problem can be seen as follows: $ cat t.s vqrshrnb.s16 q0,q0,#8 vqshrnb.s16 q0,q0,#8 $ gas/as-new t.s -march=armv8.1-m.main+mve -o t.o $ binutils/objdump -d t.o -m armv8.1-m.main t.o: file format elf32-littlearm Disassembly of section .text: 00000000 <.text>: 0: ee88 0f41 vqrshrnb.s16 q0, q0, #0 4: ee88 0f41 vqrshrnb.s16 q0, q0, #0 Here we assemble these two instructions to the same opcode. The encoding of the first is the correct, while the encoding of the second is incorrect, and the bottom bit should be clear, see the Armv8-M ARM: https://developer.arm.com/documentation/ddi0553/latest/ There is an additional problem here in that the disassembly of the immediate is incorrect. llvm-objdump shows the correct disassembly here: t.o: file format elf32-littlearm Disassembly of section .text: 00000000 <$t>: 0: ee88 0f41 vqrshrnb.s16 q0, q0, #8 4: ee88 0f41 vqrshrnb.s16 q0, q0, #8 Note that we defer adding a test for the correct encoding of these insns until the next patch which fixes the disassembly issue.
2024-04-09arm: Refactor condition for print_mve_shift_nAlex Coplan1-10/+25
This is intended to have no functional change, but refactors the condition guarding the call to print_mve_shift_n in arm-dis.c ahead of a later patch which adds additional insns to the set of those whose shift immediate is disassembled using print_mve_shift_n.
2024-04-09RISC-V: Support Zcmp push/pop instructions.Jiawei13-0/+641
Support zcmp extension push/pop/popret and popret zero instructions. The `reg_list' is a list containing 1 to 13 registers, we can use: "{ra}, {ra, s0}, {ra, s0-s1}, {ra, s0-s2} ... {ra, s0-sN}" to present this feature. Passed gcc/binutils regressions of riscv-gnu-toolchain. Most of work was finished by Sinan Lin. Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com> Co-Authored by: Mary Bennett <mary.bennett@embecosm.com> Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com> Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com> Co-Authored by: Simon Cook <simon.cook@embecosm.com> Co-Authored by: Shihua Liao <shihua@iscas.ac.cn> Co-Authored by: Yulong Shi <yulong@iscas.ac.cn> bfd/ChangeLog: * elfxx-riscv.c (riscv_implicit_subset): Imply zca for zcmp. (riscv_supported_std_z_ext): Added zcmp with version 1.0. (riscv_parse_check_conflicts): Zcmp conflicts with d/zcd. (riscv_multi_subset_supports): Handle zcmp. (riscv_multi_subset_supports_ext): Ditto. gas/ChangeLog: * NEWS: Updated. * config/tc-riscv.c (regno_to_reg_list): New function, used to map register to reg_list number. (reglist_lookup): Called reglist_lookup_internal. Return false if reg_list number is zero, which is an invalid value. (reglist_lookup_internal): Parse register list, and return the last register by regno_to_reg_list. (validate_riscv_insn): New operators. (riscv_ip): Ditto. * testsuite/gas/riscv/march-help.l: Updated. * testsuite/gas/riscv/zcmp-push-pop-fail.d: New test. * testsuite/gas/riscv/zcmp-push-pop-fail.l: New test. * testsuite/gas/riscv/zcmp-push-pop-fail.s: New test. * testsuite/gas/riscv/zcmp-push-pop.d: New test. * testsuite/gas/riscv/zcmp-push-pop.s: New test. include/ChangeLog: * opcode/riscv-opc.h (MATCH/MASK_CM_PUSH): New macros for zcmp. (MATCH/MASK_CM_POP): Ditto. (MATCH/MASK_CM_POPRET): Ditto. (MATCH/MASK_CM_POPRETZ): Ditto. (DECLARE_INSN): New declarations for zcmp. * opcode/riscv.h (EXTRACT/ENCODE/VALID_ZCMP_SPIMM): Handle spimm operand for zcmp. (OP_MASK_REG_LIST): Handle operand for zcmp register list. (OP_SH_REG_LIST): Ditto. (ZCMP_SP_ALIGNMENT): New argument, used in riscv_get_sp_base. (X_S0, X_S1, X_S2, X_S10, X_S11): New register numbers. (enum riscv_insn_class): Added INSN_CLASS_ZCMP. (extern riscv_get_sp_base): Added. opcodes/ChangeLog: * riscv-dis.c (print_reg_list): New function, used to get zcmp reg_list field. (riscv_get_spimm): New function, used to get zcmp sp adjustment immediate. (print_insn_args): Handle new operands for zcmp. * riscv-opc.c (riscv_get_sp_base): New function, used by gas and objdump. Get sp base adjustment. (riscv_opcodes): Added zcmp instructions.
2024-04-09LoongArch: ld: Move .got .got.plt before .data and protect .got with relromengqinggang5-1/+29
Move .got .got.plt before .data so .got can be protected with -zrelro. And the first two entries of .got.plt (_dl_runtime_resolve and link map) are placed within the relro region.
2024-04-09Support {evex} pseudo prefix for decode evex promoted insns without egpr32.Hu, Lin112-42/+1500
This patch is based on APX NF patch and also adds test cases for Checking 64-bit insns not sizeable through register operands with evex. gas/ChangeLog: * testsuite/gas/i386/x86-64-apx-evex-promoted-intel.d: Added no-egpr testcases for movbe. * testsuite/gas/i386/x86-64-apx-evex-promoted-wig.d: Ditto. * testsuite/gas/i386/x86-64-apx-evex-promoted.d: Ditto. * testsuite/gas/i386/x86-64-apx-evex-promoted.s: Ditto. * testsuite/gas/i386/x86-64.exp: Added tests. * testsuite/gas/i386/noreg64-evex.d: New test. * testsuite/gas/i386/noreg64-evex.e: Ditto. * testsuite/gas/i386/noreg64-evex.s: Ditto. * testsuite/gas/i386/x86-64-apx_f-evex.d: Ditto. * testsuite/gas/i386/x86-64-apx_f-evex.s: Ditto. opcodes/ChangeLog: * i386-dis-evex.h: Added %ME to movbe. * i386-dis.c : Added %XE to evex_from_vex instructions to output {evex}. (struct dis386): New %ME. (putop): Handle %ME and output {evex} for evex_from_legacy instructions. * Return early when the instruction name is (bad).
2024-04-09Remove dead code in bfdwin.cAlan Modra1-10/+0
All of bfdwin.c is wrapped in USE_MMAP. There isn't any point in HAVE_MMAP tests inside USE_MMAP. * bfdwin.c (bfd_free_window, bfd_get_file_window): Delete HAVE_MMAP conditionals.
2024-04-09ld testsuite: Append NOSANITIZE_CFLAGS to CFLAGS_FOR_TARGETAlan Modra2-4/+7
The idea here is build tests without sanitizer flags, so they don't fail due to many not using the compiler to link and thus result in undefined symbols, since libasan is not supplied. We definitely do not want a compiler to perform linking in most cases, and it's complicated to supply libasan (and would possibly disturb testcase output). * testsuite/config/default.exp (CFLAGS_FOR_TARGET), (CXXFLAGS_FOR_TARGET): Append NOSANITIZE_CFLAGS. * testsuite/ld-bootstrap/bootstrap.exp: Use CC_FOR_TARGET and CFLAGS_FOR_TARGET throughout.
2024-04-09Automatic date update in version.inGDB Administrator1-1/+1
2024-04-08ld: Add PR ld/31615 testsH.J. Lu6-0/+66
PR ld/31615 * testsuite/ld-plugin/lto.exp: Run ld/31615 tests. * testsuite/ld-plugin/pr31615.ver: New file. * testsuite/ld-plugin/pr31615a.c: Likewise. * testsuite/ld-plugin/pr31615b.c: Likewise. * testsuite/ld-plugin/pr31615c.c: Likewise. * testsuite/ld-plugin/pr31615d.c: Likewise.
2024-04-08remote.c: Make packet_ok return struct packet_resultAlexandra Hájková1-103/+96
This allows the error message stored in a packet_result to be easily printed in the calling function. Approved-By: Andrew Burgess <aburgess@redhat.com>
2024-04-08remote.c: Use packet_check_resultAlexandra Hájková1-35/+46
when processing the GDBserver reply to qRcmd packet. Print error message or the error code. Currently, when qRcmd request returns an error, GDB just prints: Protocol error with Rcmd After this change, GDB will also print the error code: Protocol error with Rcmd: 01. Add an accept_msg argument to packet_check result. qRcmd request (such as many other packets) does not recognise "E.msg" form as an error right now. We want to recognise "E.msg" as an error response only for the packets where it's documented. Also use packet_check result in remote_read_bytes_1. Approved-By: Andrew Burgess <aburgess@redhat.com>
2024-04-08gdb/configure: realign the AC_ARG_ENABLE(sim, ....) blockAndrew Burgess2-16/+16
Following the suggestion in this review comment: https://inbox.sourceware.org/gdb-patches/9420bbb0-2614-4847-9157-8562f8a62d03@simark.ca this commit realigns the AC_ARG_ENABLE(sim, ....) block. I've added additional [...] quoting in a couple of places, which is inline with how other AC_ARG_ENABLE blocks are formatted within GDB's configure.ac file. There should be no change in how GDB configures or builds after this commit.
2024-04-08gdb/build: apply silent-rules.mk to the data-directory Makefile.inAndrew Burgess2-17/+27
This commit makes use of gdb/silent-rules.mk in the data-directory Makefile.in. I've only updated the rules that actually generate things, I've not touched the install or uninstall rules, this matches gdb/Makefile.in. I've not managed to completely silence all of the recipe output, the mkinstalldirs command outputs some diagnostic text which looks 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 have a patch for mkinstalldirs that fixes this (by adding a new --silent command line flag), but that patch needs to be submitted to automake, then an updated mkinstalldirs sync'd to the gcc repository, and then copied into the binutils-gdb repository... so I'm leaving that for a future project. Then the guild compiler also emits some diagnostic output, which looks like this: GEN stamp-guile mkdir -p -- ./guile/. mkdir -p -- ./guile/gdb wrote `./gdb.go' wrote `gdb/experimental.go' wrote `gdb/iterator.go' wrote `gdb/printing.go' wrote `gdb/support.go' wrote `gdb/types.go' The 'wrote' lines are from the guild compiler. The only way to silence these would be to redirect stdout to /dev/null I think. I did prototype this, but wasn't 100% convinced about that part of the patch, so I've decided to leave that for another day. I did need to add a new SILENT_ECHO variable to silent-rules.mk, this is set to a suitable 'echo' command to use within recipes. When we are in silent mode then I use the 'true' command, while in verbose mode we actually use 'echo'. So, other than the issues outlined above, the output when building the data-directory is now greatly reduced, and more inline with the output when building in the gdb/ directory. There should be no change in what is actually built after this commit. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-08gdb/configure: use AC_MSG_NOTICE not a direct echo callAndrew Burgess2-4/+6
After the recent commits, I noticed that GDB's configure script would still emit two lines even when run in silent mode. If you touch gdb/Makefile.in and then run 'make all' in the gdb/ build directory you'll see this: GEN config.status enable_sim = no enableval = no Obviously the 'no' might be 'yes' depending on how you actually configured GDB. This is caused by two direct invocations of 'echo' in GDB's configure.ac script. In this commit I replace these calls with use of AC_MSG_NOTICE instead. Now when configure is run with the --silent command line option these lines will not be printed. There should be no changes in the built GDB after this commit. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-08gdb/Makefile: Print 'GEN' message, and pass SILENT_FLAG moreAndrew Burgess1-8/+8
The targets that use config.status to regenerate themselves don't currently follow the silent rules that the rest of GDB's Makefile does. For example, touch the gdb/gcore.in file and then 'make all' in the gdb/ directory prints: /bin/sh config.status gcore config.status: creating gcore In this commit I make use of the silent-rules.mk mechanism for these targets, now we get: GEN gcore Which matches the rest of our Makefile. Obviously, if you pass 'V=1' to the build then you'll get the old output back. There's no change in what is generated after this commit. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-08gdb/Makefile: add some missing config.status dependenciesAndrew Burgess1-4/+4
I noticed that for the build targets jit-reader.h, gcore, gdb-gdb.py, and gdb-gdb.gdb the rules all use the config.status script, but don't have a dependency on the config.status target. This means we might fail to regenerate these targets in a case where config.status, or one of its dependencies changes. Two other targets that use config.status do correctly have a dependency on config.status. Fixed in this commit by adding the missing dependencies. There should be no changes in _what_ is generated after this commit. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-08gdb/Makefile: rewrite dependencies for config.status targetAndrew Burgess1-1/+12
I noticed something weird, the rule for the config.status target looks like this: config.status: $(srcdir)/configure configure.nat configure.tgt configure.host ../bfd/development.sh $(SHELL) config.status --recheck What bothered me is that 'configure' is specified as being in $(srcdir), while all of the other files are not, even though those files are in the same $(srcdir) as the configure script. However, I tried touching one of those files, and the config.status rule does trigger! This is thanks to the VPATH variable, which is set to $(srcdir), so make looks in $(srcdir) for any dependencies. However, this inconsistency bothers me. Better, I think, to add the $(srcdir) prefix to each of these files. I also spotted that the configure script also includes the files ../bfd/config.bfd, yet that is missing from the include list, so in this commit I plan to add this as a dependency. The configure script also pulls in two TCL and TK related files: . ${TCL_BIN_DIR}/tclConfig.sh . ${TK_BIN_DIR}/tkConfig.sh However, I don't think ${TCL_BIN_DIR} and ${TK_BIN_DIR} are currently visible in GDB's Makefile, so I'm not planning to add these dependencies at this time. In this commit I add a new variable config_status_deps which holds the list of all the dependencies for config.status, with the $(srcdir) prefix included, and then I use this in the config.status rule. After this commit config.status will regenerate if config.bfd changes, which it wouldn't before, but nothing else changes. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-08gdb/Makefile: add gcore to the 'all' target dependency listAndrew Burgess1-1/+1
The gcore script is initially generated by the configure process, just like gdb-gdb.gdb and gdb-gdb.py. However if the gdb/gcore.in input source is modified then 'make all' in the gdb/ directory does not regenerate the gcore script. This is different than the gdb-gdb.gdb and gdb-gdb.py files, if their input is updated then 'make all' will regenerate these files. The difference is that for gdb-gdb.* there is an explicit dependency between the 'all' target and the generated file, this dependency is missing for gcore. This commit adds the dependency. Now, if gcore.in is changed, running 'make all' will regenerate the gcore script. There is no change in _what_ is generated after this commit. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-07gdb: ignore -Wregister instead of -Wdeprecated-registerSimon Marchi3-12/+16
When building GDB on Centos 7 (which has flex 2.5.37) and Clang, I get: $ make ada-exp.o YACC ada-exp.c LEX ada-lex.c CXX ada-exp.o In file included from /home/smarchi/src/binutils-gdb/gdb/ada-exp.y:1179: <stdout>:1106:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister] 1106 | register yy_state_type yy_current_state; | ^~~~~~~~ In ada-lex.l, we already use `DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER`, which for Clang translates to ignoring `-Wdeprecated-register` [1]. I think that was produced when compiling as C++11, but now that we always compile as C++17, Clang produces a `-Wregister` error [2]. For GCC, `DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER` already translates to ignoring `-Wregister`. So, rename `DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER` to `DIAGNOSTIC_IGNORE_REGISTER` and ignore `-Wregister` for Clang too. [1] https://releases.llvm.org/17.0.1/tools/clang/docs/DiagnosticsReference.html#wdeprecated-register [2] https://releases.llvm.org/17.0.1/tools/clang/docs/DiagnosticsReference.html#wregister include/ChangeLog: * diagnostics.h (DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER): Rename to... (DIAGNOSTIC_IGNORE_REGISTER): ... this. Ignore `-Wregister` instead of `-Wdeprecated-register`. Change-Id: I8a4a51c7222c68577fa22ecacdddfcba32d9dbc5
2024-04-08Re: PR26978, Inconsistency for strong foo@v1 and weak foo@@v1Alan Modra1-2/+2
Commit 726d7d1ecf opened a hole that allowed a u.i.link loop to be created, resulting in _bfd_generic_link_add_one_symbol never returning. Fix that. Note that the MIND case handles two types of redefinition. For a new indirect symbol we'll have string non-NULL. For a new def, string will be NULL. So moving the string comparison earlier would work. However, we've already looked up inh in the first case so can dispense with name comparisons. Either way, for a new def we'll get to the defweak test and possibly cycle. Which is what we want here. PR 31615 PR 26978 * linker.c (_bfd_generic_link_add_one_symbol <MIND>): Test for exactly matching indirect symbols before cycling on a defweak.
2024-04-08Automatic date update in version.inGDB Administrator1-1/+1
2024-04-07Support APX NFCui, Lili17-407/+5037
For the case when NDD and NF are both 0 in evex-promoted format, we will fully support and test it in another patch. gas/ChangeLog: * NEWS: Support Intel APX NF. * config/tc-i386.c (enum i386_error): Add unsupported_nf. (struct _i386_insn): Add has_nf. (is_apx_evex_encoding): Ditto. (build_apx_evex_prefix): Encode the NF bit. (md_assemble): Handle unsupported_nf. (parse_insn): Handle Prefix_NF and report bad for illegal combination. (can_convert_NDD_to_legacy): Replace i.tm.opcode_modifier.nf with i.has_nf. (match_template): Support D for APX_F insns and check NF support. * testsuite/gas/i386/x86-64-apx-evex-promoted-bad.d: Add bad test for NF bit. * testsuite/gas/i386/x86-64-apx-evex-promoted-bad.s: Ditto. * testsuite/gas/i386/x86-64-apx-inval.l: Ditto. * testsuite/gas/i386/x86-64-apx-inval.s: Ditto. * testsuite/gas/i386/x86-64.exp: Add apx nf tests. * testsuite/gas/i386/x86-64-apx-nf-intel.d: New test. * testsuite/gas/i386/x86-64-apx-nf.d: Ditto. * testsuite/gas/i386/x86-64-apx-nf.s: Ditto. opcodes/ChangeLog: * i386-dis-evex.h: Add %NF to the instructions that support APX NF and add new instruction imul, popcnt, tzcnt and lzcnt to EVEX table. * i386-dis-evex-reg.h: Ditto. * i386-dis.c (struct instr_info): Add nf. (struct dis386): Add "NF" for EVEX.NF. (get_valid_dis386): Set ins->vex.nf and report bad-nf for illegal case. (print_insn): Handle ins.vex.nf. (putop): Handle "%NF". * i386-opc.h (Prefix_NF): New. * i386-opc.tbl: Added new entries to support full APX NF instructions. * i386-mnem.h: Regenerated. * i386-tbl.h: Regenerated.
2024-04-07Automatic date update in version.inGDB Administrator1-1/+1
2024-04-06elf: Call bfd_malloc instead xmallocH.J. Lu1-5/+6
* elflink.c (elf_link_add_object_symbols): Call bfd_malloc instead of xmalloc.
2024-04-06Revert "x86: Restore APX shift-double instructions with omitted shift count"H.J. Lu5-327/+284
This reverts commit c2d698fe03a6092d58a07de96068b87836daced0. GCC 14 has been changed to use explicit shift count in shift-double instructions by the commit: 06a7e7514af x86: Use explicit shift count in double-precision shifts gas/ PR gas/31606 * testsuite/gas/i386/x86-64-apx-ndd-wig.d: Updated. * testsuite/gas/i386/x86-64-apx-ndd.d: Likewise. * testsuite/gas/i386/x86-64-apx-ndd.s: Remove tests for APX shift-double instructions with omitted shift count. opcodes/ PR gas/31606 * i386-opc.tbl: Remove APX shift-double instructions with omitted shift count. * i386-tbl.h: Regenerated.
2024-04-06Don't have first_hash entries of strings that can be freed.Alan Modra1-4/+10
Seen running "LTO 1" under valgrind. ==1443263== Invalid read of size 1 ==1443263== at 0x484CFE4: strcmp (vg_replace_strmem.c:939) ==1443263== by 0x56E16C: bfd_hash_lookup (hash.c:564) ==1443263== by 0x5A3C8F: elf_link_add_to_first_hash (elflink.c:4316) ==1443263== by 0x5AE60F: elf_link_add_object_symbols (elflink.c:5663) ==1443263== by 0x5B0672: bfd_elf_link_add_symbols (elflink.c:6333) ==1443263== by 0x41448F: load_symbols (ldlang.c:3129) ==1443263== by 0x4149D8: open_input_bfds (ldlang.c:3621) ==1443263== by 0x414968: open_input_bfds (ldlang.c:3569) ==1443263== by 0x4166A2: lang_process (ldlang.c:8162) ==1443263== by 0x4194D5: main (ldmain.c:504) ==1443263== Address 0x525e230 is 192 bytes inside a block of size 4,064 free'd ==1443263== at 0x484810F: free (vg_replace_malloc.c:974) ==1443263== by 0x8D4D87: objalloc_free_block (objalloc.c:248) ==1443263== by 0x5AEACC: elf_link_add_object_symbols (elflink.c:5790) ==1443263== by 0x5B0672: bfd_elf_link_add_symbols (elflink.c:6333) ==1443263== by 0x41448F: load_symbols (ldlang.c:3129) ==1443263== by 0x4149D8: open_input_bfds (ldlang.c:3621) ==1443263== by 0x414968: open_input_bfds (ldlang.c:3569) ==1443263== by 0x4166A2: lang_process (ldlang.c:8162) ==1443263== by 0x4194D5: main (ldmain.c:504) PR ld/31482 PR ld/31489 * elflink.c (elf_link_add_to_first_hash): Add "copy" param. (elf_link_add_object_symbols): Flag that name must be copied when appending version string to symbol name.
2024-04-06Automatic date update in version.inGDB Administrator1-1/+1
2024-04-05elf: Use elf_link_first_hash_entry for first_hashH.J. Lu2-26/+63
Add elf_link_first_hash_entry and use it for first_hash. Free first_hash before freeing the main hash table. PR ld/31482 PR ld/31489 * elf-bfd.h (elf_link_hash_table): Change first_hash to bfd_hash_table. * elflink.c (elf_link_first_hash_entry): New. (elf_link_first_hash_newfunc): Likewise. (elf_link_add_to_first_hash): Updated. (elf_link_add_object_symbols): Initialize first_hash with elf_link_first_hash_newfunc. (elf_link_add_object_symbols): Updated. (elf_link_add_archive_symbols): Likewise. (_bfd_elf_link_hash_table_free): Free first_hash before freeing the main hash table.
2024-04-05elf: Always honor the first definition in shared object and archiveH.J. Lu12-38/+267
GCC doesn't put builtin function symbol references, which are defined in the shared C library, in the IR symbol table. When linker rescans shared objects and archives for newly added symbol references generated from the IR inputs, it skips definitions of the builtin functions in shared objects and archives. Add first_hash to elf_link_hash_table to track unreferenced definitions defined first in shared objects and archives. Always use them to resolve any references. bfd/ PR ld/31482 PR ld/31489 * elf-bfd.h (elf_link_hash_table): Add first_hash. * elflink.c (elf_link_add_to_first_hash): New function. (elf_link_add_object_symbols): Initialize first_hash for an IR input. Always use the first definition in shared object. Add the first unreferenced dynamic definition to first_hash. (_bfd_elf_archive_symbol_lookup): Add the first unreferenced definition to first_hash.. (elf_link_add_archive_symbols): Use the symbol definition in archive if symbol is defined first in this archive. (_bfd_elf_link_hash_table_free): Also free first_hash. ld/ PR ld/31482 PR ld/31489 * testsuite/ld-plugin/lto.exp: Add PR ld/31482 and PR ld/31489 tests. * testsuite/ld-elf/pr31482a-no-lto.c: New file. * testsuite/ld-elf/pr31482b-no-lto.c: Likewise. * testsuite/ld-elf/pr31482c-no-lto.c: Likewise. * testsuite/ld-elf/pr31482d-no-lto.c: Likewise. * testsuite/ld-plugin/pass1.out: Likewise. * testsuite/ld-plugin/pr31482a.c: Likewise. * testsuite/ld-plugin/pr31482b.c: Likewise. * testsuite/ld-plugin/pr31482c.c: Likewise.
2024-04-05Add support for Windows network paths to the UNC support in _bfd_real_open().Zhiqing Xiong1-36/+72
PR 31527
2024-04-05Add missing install-dvi and install-ps Makefie targets.Christophe Lyon7-0/+14
For some reason, these targets are missing although others from the same family are present. This looks like an oversight. This enables calling 'make install-dvi' from the top-level build directory.
2024-04-04bfd: Munmap readonly memory after bfd_free_cached_infoH.J. Lu1-10/+12
Munmap readonly memory after bfd_free_cached_info which may use munmapped readonly memory. PR ld/31608 * opncls.c (_bfd_delete_bfd): Munmap readonly memory after bfd_free_cached_info.
2024-04-05Automatic date update in version.inGDB Administrator1-1/+1
2024-04-04bfd_mmap_local: Check offset and sizeH.J. Lu1-8/+5
Update bfd_mmap_local to return NULL if filesize < offset or filesize - offset < rsize. * libbfd.c (bfd_mmap_local): Validate offset and size against the file size.
2024-04-04bfd: Handle bmmap failure in _bfd_mmap_read_temporaryH.J. Lu1-6/+12
iovec->bmmap may return MAP_FAILED, which happens in GDB on objects with iovec == opncls_iovec. Update _bfd_mmap_read_temporary to handle iovec->bmmap failure. * libbfd.c (_bfd_mmap_read_temporary): Handle iovec->bmmap failure.
2024-04-04x86: Restore APX shift-double instructions with omitted shift countH.J. Lu5-284/+327
Restore APX shift-double instructions with omitted shift count since they are generated by GCC as shown in: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114590 gas/ PR gas/31606 * testsuite/gas/i386/x86-64-apx-ndd-wig.d: Updated. * testsuite/gas/i386/x86-64-apx-ndd.d: Likewise. * testsuite/gas/i386/x86-64-apx-ndd.s: Add tests for APX shift-double instructions with omitted shift count. opcodes/ PR gas/31606 * i386-opc.tbl: Restore APX shift-double instructions with omitted shift count. * i386-tbl.h: Regenerated.
2024-04-04Add flake8 and isort to .pre-commit-config.yamlTom Tromey2-2/+19
This adds flake8 and isort to .pre-commit-config.yaml. This way, they will automatically be run on commit. I chose the most recent available versions after verifying that they don't cause any reports or changes in the current tree. Internally at AdaCore, we also use a few flake8 plugins as well, so perhaps that's another avenue for investigation. v2: Also update the various file-selection clauses to pick up gdb-gdb.py.in; include the isort change made to this file; and finally add a comment about the exclusions from flake8. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2024-04-04Fix a test failure in gdb.threads/stepi-over-clone.expBernd Edlinger1-0/+4
When the XML support was disabled at compile time, the test case gdb.threads/stepi-over-clone.exp fails with lots of time-outs, which can be annoying. This makes the test case unsupported instead. Approved-By: Tom Tromey <tom@tromey.com>
2024-04-04MIPS HI16 and LO16 reloc howtosAlan Modra3-91/+91
All the HI16 reloc howtos should have a rightshift of 16, and all the LO16 relocs shouldn't complain on overflow. This was correct for R_MIPS_LO16 and R_MIPS_LO16 (at least on the howto_table_rel entries), and corresponding MIPS16, MICROMIPS and MIPS64 relocs, but not on many other HI16 and LO16 relocs. While we're at it, fix the HIGHER and HIGHEST rightshift too. These changes are necessary to support addends outside the range [0,32767] when those addends are stored in section contents. Note that some of the reloc howtos changed here will always have zero addends (GOT_HI16, CALL_HI16). Those don't really need changing, but use what is clearly correct for hi16 relocs anyway. PR 19977 * elf32-mips.c: Correct rightshift for HI16, HIGHER and HIGHEST reloc howtos. Correct complain_on_overflow for LO16 relocs. * elf64-mips.c: Likewise. * elfn32-mips.c: Likewise.
2024-04-04Re: Update objcopy's --section-alignment optionAlan Modra1-2/+2
ubsan: left shift of 1 by 31 places cannot be represented in type 'int' * objcopy.c (setup_section): Avoid undefined behaviour when checking vma and lma for alignment.
2024-04-04dlltool: replace unchecked malloc with xmallocNandakumar Edamana1-1/+1
2024-04-04Memory corruption with USE_MMAPAlan Modra1-23/+32
mips64-linux-gnuabi64 +FAIL: GOT page 4 (two files) mipsel-linux-gnu +FAIL: GOT page 4 (two files) mipsisa32el-linux-gnu +FAIL: GOT page 4 (two files) mips-linux-gnu +FAIL: GOT page 4 (two files) powerpc64-freebsd +FAIL: relocatable relaxing large powerpc64le-linux-gnu +FAIL: relocatable relaxing large powerpc64-linux-gnu +FAIL: relocatable relaxing large powerpc-eabisim +FAIL: relocatable relaxing large powerpc-eabivle +FAIL: relocatable relaxing large powerpc-freebsd +FAIL: relocatable relaxing large powerpcle-elf +FAIL: relocatable relaxing large powerpc-linux-gnu +FAIL: relocatable relaxing large * elflink.c (bfd_elf_final_link): Heed bed->use_mmap when sizing buffers, not just USE_MMAP.
2024-04-04Re: USE_MMAP fuzzed object file attacksAlan Modra2-8/+6
I committed a broken patch. * aoutx.h (aout_get_external_symbols): Remove wrong #else and unneeded casts. * pdp11.c (aout_get_external_symbols): Likewise.