public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb/binutils-2_42-branch] Update version number to 2.42
@ 2024-01-29 14:51 Nick Clifton
0 siblings, 0 replies; only message in thread
From: Nick Clifton @ 2024-01-29 14:51 UTC (permalink / raw)
To: bfd-cvs, gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c7f28aad0c99d1d2fec4e52ebfa3735d90ceb8e9
commit c7f28aad0c99d1d2fec4e52ebfa3735d90ceb8e9
Author: Nick Clifton <nickc@redhat.com>
Date: Mon Jan 29 14:51:43 2024 +0000
Update version number to 2.42
Diff:
---
ChangeLog.git | 182465 ++++++++++++++++++++++++++++++++++++++
bfd/configure | 20 +-
bfd/development.sh | 6 +-
bfd/po/bfd.pot | 120 +-
bfd/version.m4 | 2 +-
binutils/configure | 20 +-
gas/configure | 20 +-
gas/po/gas.pot | 404 +-
gnulib/Makefile.in | 18 +-
gnulib/aclocal.m4 | 12 +-
gnulib/configure | 2 +-
gnulib/import/Makefile.in | 16 +-
gprof/configure | 20 +-
gprofng/configure | 20 +-
gprofng/doc/version.texi | 4 +-
gprofng/libcollector/configure | 20 +-
ld/configure | 20 +-
libiberty/functions.texi | 14 +-
opcodes/configure | 20 +-
opcodes/po/opcodes.pot | 90 +-
sim/Makefile.in | 4 +-
src-release.sh | 2 +-
22 files changed, 182892 insertions(+), 427 deletions(-)
diff --git a/ChangeLog.git b/ChangeLog.git
new file mode 100644
index 00000000000..bfd454f3e4d
--- /dev/null
+++ b/ChangeLog.git
@@ -0,0 +1,182465 @@
+2024-01-29 Indu Bhagat <indu.bhagat@oracle.com>
+
+ x86: testsuite: scfi: adjust COFI testcase and gas: scfi: untraceable control flow should be a hard error
+
+2024-01-29 Nick Clifton <nickc@redhat.com>
+
+ Updated French translations for GOLD and LD
+
+ LoongArch: update test cases about TLS
+
+2024-01-29 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-28 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-27 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-26 mengqinggang <mengqinggang@loongson.cn>
+
+ Backport commits 969f5c0e1 (LoongArch: gas: Add support for s9 register) and a0aa6f4ab (LoongArch: ld: Add support for TLS LE symbol with addend) to 2.42 branch.
+
+2024-01-26 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-25 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ gas: Update NEWS
+ Groups entries by architecture, and update AArch64 content.
+
+ aarch64: Update Architecture Extensions documentation
+ Restructure the architecture extensions table, add a new table for architecture
+ version dependencies, add missing architecture extensions, and improve some
+ extension descriptions.
+
+2024-01-25 mengqinggang <mengqinggang@loongson.cn>
+
+ LoongArch: gas: Start a new frag after instructions that can be relaxed
+ For R_LARCH_TLS_{LE_HI20_R,LE_ADD_R,LD_PC_HI20,GD_PC_HI20, DESC_PC_HI20}
+ relocations, start a new frag to get correct eh_frame Call Frame Information
+ FDE DW_CFA_advance_loc info.
+
+2024-01-25 mengqinggang <mengqinggang@loongson.cn>
+
+ LoongArch: gas: Don't define LoongArch .align
+ Gcc may generate "\t.align\t%d,54525952,4\n" before commit
+ b20c7ee066cb7d952fa193972e8bc6362c6e4063. To write 54525952 (NOP) to object
+ file, we call s_align_ptwo (-4). It result in alignment padding must be a
+ multiple of 4 if .align has second parameter.
+
+ Use default s_align_ptwo for .align.
+
+2024-01-25 Xi Ruoyao <xry111@xry111.site>
+
+ LoongArch: Fix some test failures about TLS desc and TLS relaxation
+ There are two issues causing 11 test failures:
+
+ 1. The TLS desc tests are matching the entire disassemble of a linked
+ executable. But if ld is configured --enable-default-hash-style=gnu
+ (note that most modern distros use this option), the layout of the
+ linked executables will be different and the immediate operands in
+ the linked executables will also be different. So we add
+ "--hash-style=both" for these tests to cancel the effect of
+ --enable-default-hash-style=gnu, like [x86_64 mark-plt tests].
+ 2. By default objdump disassemble uses [pseudo-instructions] so "addi.w"
+ is outputed as "li.w", causing mismatches in TLS relaxation tests.
+ We can turn off the pseudo-instruction usage in objdump using "-M
+ no-aliases" to fix them.
+
+ [x86_64 mark-plt tests]: 16666ccc91295d1568c5c2cb0e7600694840dfd9
+ [pseudo-instructions]: 17f9439038257b1de0c130a416a9a7645c653cb0
+
+2024-01-25 mengqinggang <mengqinggang@loongson.cn>
+
+ LoongArch: Do not emit R_LARCH_RELAX for two register macros
+ For two register macros (e.g. la.local $t0, $t1, symbol) used in extreme code
+ model, do not emit R_LARCH_RELAX relocations.
+
+2024-01-25 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-24 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ aarch64: Eliminate unused variable warnings with -DNDEBUG
+
+2024-01-24 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-23 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ aarch64: Include +predres2 in -march=armv8.9-a
+ This matches the dependencies in the architecture, in LLVM, and even in the
+ original Binutils commit message that mistakenly included it only in armv9.4-a.
+
+2024-01-23 Xi Ruoyao <xry111@xry111.site>
+
+ [PATCH v2] gas/NEWS, ld/NEWS: Announce LoongArch changes in 2.42
+
+2024-01-23 Jan Beulich <jbeulich@suse.com>
+
+ x86/APX: also amend the PUSH2/POP2 testcase
+ Commit f530d5f1bab6 ("Update x86/APX: VROUND{P,S}{S,D} can generally be
+ encoded") took care of only half of the remaining issue. Add #pass here
+ as well.
+
+2024-01-23 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-22 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ Fix 31252 gprofng causes testsuite parallel jobs fail
+ Before running our tests, we made a fake installation into ./tmpdir.
+ This installation changes libopcodes.la in the build area.
+ Gas testing may fail if gas and gprofng tests are run in parallel.
+
+ I create a script to run gprofng. Inside this script, LD_LIBRARY_PATH,
+ GPROFNG_SYSCONFDIR are set.
+ putenv_libcollector_ld_misc() first uses $GPROFNG_PRELOAD_LIBDIRS to create
+ directories for SP_COLLECTOR_LIBRARY_PATH ($SP_COLLECTOR_LIBRARY_PATH is used
+ to set up LD_PRELOAD).
+
+ gprofng/ChangeLog
+ 2024-01-19 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ PR gprofng/31252
+ PR gprofng/30808
+ * src/envsets.cc (putenv_libcollector_ld_misc): Use
+ $GPROFNG_PRELOAD_LIBDIRS first to build SP_COLLECTOR_LIBRARY_PATH.
+ * testsuite/config/default.exp: Create a script to run gprofng.
+ * testsuite/lib/display-lib.exp: Fix typo.
+
+2024-01-22 Nick Clifton <nickc@redhat.com>
+
+ Updated Serbian translations for th bfd, gold and opcodes directories
+
+2024-01-22 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-21 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-20 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-19 H.J. Lu <hjl.tools@gmail.com>
+
+ Update x86/APX: VROUND{P,S}{S,D} can generally be encoded
+ Append "#pass" to APX tests for targets which pad text sections with NOPs.
+
+ * testsuite/gas/i386/x86-64-apx-evex-promoted-intel.d: Append
+ "#pass".
+ * testsuite/gas/i386/x86-64-apx-evex-promoted.d: Likewise.
+
+ (cherry picked from commit f530d5f1bab6eb5adc65f422ef811fb278a21a4b)
+
+2024-01-19 Jan Beulich <jbeulich@suse.com>
+
+ x86/APX: VROUND{P,S}{S,D} can generally be encoded
+ VRNDSCALE{P,S}{S,D} is the AVX512 generalization of these AVX insns. As
+ long as the immediate has the top 4 bits clear, they are equivalent to
+ the earlier VEX-encoded insns, and hence can be used to permit use of
+ eGPR-s in the memory operand. Since this is the normal way of using
+ these insns, also alter the resulting diagnostic to complain about the
+ immediate, not the eGPR use.
+
+ x86/APX: be consistent with insn suffixes
+ When there's a suitably disambiguating register operand, suffixes are
+ generally omitted (unless in suffix-always mode). All NDD insns have a
+ suitable register operand, so they shouldn't have suffixes by default.
+
+ x86: support APX forms of U{RD,WR}MSR
+ This was missed in 6177c84d5edc ("Support APX GPR32 with extend evex
+ prefix").
+
+2024-01-19 Nick Clifton <nickc@redhat.com>
+
+ Add multilib.am to the list of top level files included in any release created by the src-release.sh script
+
+2024-01-19 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-18 Xi Ruoyao <xry111@xry111.site>
+
+ LoongArch: Adapt R_LARCH_{PCALA,GOT,TLS_IE,TLS_DESC}64_* handling per psABI v2.30
+ In LoongArch psABI v2.30, an offset (-8 for LO20 and -12 for HI12)
+ should be applied on PC for these reloc types to avoid wrong relocation
+ when the instruction sequence crosses a page boundary.
+
+ The lld linker has already adapted the change. Make it for the bfd
+ linker too.
+
+ Link: https://github.com/loongson/la-abi-specs/releases/v2.30
+ Link: https://github.com/loongson-community/discussions/issues/17
+ Link: https://github.com/llvm/llvm-project/pull/73387
+
+2024-01-18 Nick Clifton <nickc@redhat.com>
+
+ Updated translations for various sub-directories
+
+2024-01-17 Alan Modra <amodra@gmail.com>
+
+ PR30824 internal error with -z pack-relative-relocs
+ This corrects a counting problem, where prior to relocate_section relr
+ encoded relative relocs were allowed when it was known they were on
+ even boundaries, but relocate_section can only put relative relocs
+ (non-relr) on eight byte boundaries.
+
+ PR 30824
+ * elf64-ppc.c (RELR_ALIGN): Define, use throughout.
+ (maybe_relr): New function, use throughout.
+
+ (cherry picked from commit f91074ebd8dc8077c9c778a42360e77a636dce5e)
+
+2024-01-17 H.J. Lu <hjl.tools@gmail.com>
+
+ Update x86-64: Add -z mark-plt and -z nomark-plt
+ Pass --hash-style=both to ld for -z mark-plt tests to support linker
+ configured with --enable-default-hash-style=gnu.
+
+ * testsuite/ld-x86-64/mark-plt-1b-x32.d: Pass --hash-style=both
+ to ld.
+ * testsuite/ld-x86-64/mark-plt-1b.d: Likewise.
+ * testsuite/ld-x86-64/mark-plt-1d-x32.d: Likewise.
+ * testsuite/ld-x86-64/mark-plt-1d.d: Likewise.
+
+ (cherry picked from commit 16666ccc91295d1568c5c2cb0e7600694840dfd9)
+
+2024-01-17 Nick Clifton <nickc@redhat.com>
+
+ Import gcc commit 65388b28656d65595bdaf191df85af81c35ca63 which adds support for explicit object member function mangling.
+
+2024-01-15 H.J. Lu <hjl.tools@gmail.com>
+
+ x86-64: Skip SCFI tests for x32 targets
+ Since SCFI isn't supported on x32:
+
+ Fatal error: SCFI is not supported for this ABI
+
+ skip SCFI tests for x32 targets.
+
+ PR gas/31245
+ * testsuite/gas/scfi/x86_64/scfi-x86-64.exp: Skip for x32
+ targets.
+
+ (cherry picked from commit 7bd344dd0e0469a93cbbf50f797155278cb76a0b)
+
+2024-01-15 Nick Clifton <nickc@redhat.com>
+
+ fix typo
+
+ Update version number and regenerate configure files
+
+ Add markers for 2.42 branch
+
+ Update branch/release creation documentation
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ aarch64: rcpc3: Regenerate aarch64-*-2.c files
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ aarch64: rcpc3: Add FP load/store insns
+ Along with the relevant unit-tests, this adds the following rcpc3
+ instructions:
+
+ STL1 { <Vt>.D }[<index>], [<Xn|SP>]
+ LDAP1 { <Vt>.D }[<index>], [<Xn|SP>]
+
+ LDAPUR <Bt>, [<Xn|SP>{, #<simm>}]
+ LDAPUR <Ht>, [<Xn|SP>{, #<simm>}]
+ LDAPUR <St>, [<Xn|SP>{, #<simm>}]
+ LDAPUR <Dt>, [<Xn|SP>{, #<simm>}]
+ LDAPUR <Qt>, [<Xn|SP>{, #<simm>}]
+
+ STLUR <Bt>, [<Xn|SP>{, #<simm>}]
+ STLUR <Ht>, [<Xn|SP>{, #<simm>}]
+ STLUR <St>, [<Xn|SP>{, #<simm>}]
+ STLUR <Dt>, [<Xn|SP>{, #<simm>}]
+ STLUR <Qt>, [<Xn|SP>{, #<simm>}]
+
+ with `#<simm>' taking on a signed 8-bit integer value in the range
+ [-256,255] and `index' the values 0 or 1.
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ aarch64: rcpc3: Add integer load/store insns
+ Along with the relevant unit tests and updates to the existing
+ regression tests, this adds support for the following novel rcpc3
+ insns:
+
+ LDIAPP <Wt1>, <Wt2>, [<Xn|SP>]
+ LDIAPP <Wt1>, <Wt2>, [<Xn|SP>], #8
+ LDIAPP <Xt1>, <Xt2>, [<Xn|SP>]
+ LDIAPP <Xt1>, <Xt2>, [<Xn|SP>], #16
+
+ STILP <Wt1>, <Wt2>, [<Xn|SP>]
+ STILP <Wt1>, <Wt2>, [<Xn|SP>, #-8]!
+ STILP <Xt1>, <Xt2>, [<Xn|SP>]
+ STILP <Xt1>, <Xt2>, [<Xn|SP>, #-16]!
+
+ LDAPR <Wt>, [<Xn|SP>], #4
+ LDAPR <Xt>, [<Xn|SP>], #8
+
+ STLR <Wt>, [<Xn|SP>, #-4]!
+ STLR <Xt>, [<Xn|SP>, #-8]!
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ aarch64: rcpc3: Define RCPC3_INSN macro
+ This patch adds the necessary macro for encoding FEAT_RCPC3-dependent
+ instructions in Binutils.
+
+ aarch64: rcpc3: add support in general_constraint_met_p
+ Given the introduction of the new address operand types for rcpc3
+ instructions, this patch adds the necessary logic to teach
+ `general_constraint_met_p` how to proper handle these.
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ aarch64: rcpc3: New RCPC3_ADDR operand types
+ The particular choices of address indexing, along with their encoding
+ for RCPC3 instructions lead to the requirement of a new set of operand
+ descriptions, along with the relevant inserter/extractor set.
+
+ That is, for the integer load/stores, there is only a single valid
+ indexing offset quantity and offset mode is allowed - The value is
+ always equivalent to the amount of data read/stored by the
+ operation and the offset is post-indexed for Load-Acquire RCpc, and
+ pre-indexed with writeback for Store-Release insns.
+
+ This indexing quantity/mode pair is selected by the setting of a
+ single bit in the instruction. To represent these insns, we add the
+ following operand types:
+
+ - AARCH64_OPND_RCPC3_ADDR_OPT_POSTIND
+ - AARCH64_OPND_RCPC3_ADDR_OPT_PREIND_WB
+
+ In the case of loads and stores involving SIMD/FP registers, the
+ optional offset is encoded as an 8-bit signed immediate, but neither
+ post-indexing or pre-indexing with writeback is available. This
+ created the need for an operand type similar to
+ AARCH64_OPND_ADDR_OFFSET, with the difference that FLD_index should
+ not be checked.
+
+ We thus introduce the AARCH64_OPND_RCPC3_ADDR_OFFSET operand, a
+ variant of AARCH64_OPND_ADDR_OFFSET, w/o the FLD_index bitfield.
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ aarch64: rcpc3: Define address operand fields and inserter/extractors
+ Beyond the need to encode any registers involved in data transfer and
+ the address base register for load/stores, it is necessary to specify
+ the data register addressing mode and whether the address register is
+ to be pre/post-indexed, whereby loads may be post-indexed and stores
+ pre-indexed with write-back.
+
+ The use of a single bit to specify both the indexing mode and indexing
+ value requires a novel function be written to accommodate this for
+ address operand insertion in assembly and another for extraction in
+ disassembly, along with the definition of two insn fields for use with
+ these instructions.
+
+ This therefore defines the following functions:
+
+ - aarch64_ins_rcpc3_addr_opt_offset
+ - aarch64_ins_rcpc3_addr_offset
+ - aarch64_ext_rcpc3_addr_opt_offset
+ - aarch64_ext_rcpc3_addr_offset
+
+ It extends the `do_special_{encoding|decoding}' functions and defines
+ two rcpc3 instruction fields:
+
+ - FLD_opc2
+ - FLD_rcpc3_size
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ aarch64: rcpc3: Create implicit load/store size calc function
+ The allowed immediate offsets in integer rcpc3 load store instructions
+ are not encoded explicitly in the instruction itself, being rather
+ implicitly equivalent to the amount of data loaded/stored by the
+ instruction.
+
+ This leads to the requirement that this quantity be calculated based on
+ the number of registers involved in the transfer, either as data
+ source or destination registers and their respective qualifiers.
+
+ This is done via `calc_ldst_datasize (const aarch64_opnd_info *opnds)'
+ implemented here, using a cumulative sum of qualifier sizes preceding
+ the address operand in the OPNDS operand list argument.
+
+2024-01-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ aarch64: rcpc3: Add +rcpc3 architectural feature support flag
+ Indicating the presence of the Armv8.2-a feature adding further
+ support for the Release Consistency Model, the `+rcpc3' architectural
+ extension flag is added to the list of possible `-march' options in
+ Binutils, together with the necessary macro for encoding rcpc3
+ instructions.
+
+2024-01-15 Mark Wielaard <mark@klomp.org>
+
+ bfd: riscv_maybe_function_sym check _bfd_elf_is_local_label_name
+ This fixes the ld "Handle no DWARF information" testcase. Which
+ currently fails on riscv because a local label name is assumed
+ to be the current function name.
+
+ bfd/ChangeLog:
+
+ * elfnn-riscv.c (riscv_maybe_function_sym): Also check
+ _bfd_elf_is_local_label_name.
+
+2024-01-15 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ aarch64: Fix tlbi and tlbip instructions
+ There are some tlbi operations that don't have a corresponding tlbip operation,
+ but we were incorrectly using the same list for both. Add the missing tlbi
+ *nxs operations, and use the F_REG_128 flag to filter tlbi operations that
+ don't have a tlbip analogue. For increased clarity, I have also used a macro
+ to reduce duplication between the 'nxs' and non-'nxs' variants, and added a
+ test to verify that no invalid combinations are accepted.
+
+ Additionally, fix two missing checks for AARCH64_OPND_SYSREG_TLBIP that were
+ preventing disassembly of tlbip instructions.
+
+2024-01-15 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ aarch64: Refactor aarch64_sys_ins_reg_supported_p
+ Add an aarch64_feature_set field to aarch64_sys_ins_reg, and use this for
+ feature checks instead of testing against a list of operand codes.
+
+2024-01-15 Nick Clifton <nickc@redhat.com>
+
+ nm: Replace --with-symbol-versions with --without-symbol-versions in --help output
+ PR 31243
+ nm: Fix --help output
+
+2024-01-15 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ aarch64: Remove unused BTI feature bit
+ OK for master?
+
+2024-01-15 Nick Clifton <nickc@redhat.com>
+
+ Add generated source files and fix thinko in aarch64-asm.c
+
+2024-01-15 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ aarch64: Add SVE2.1 Contiguous load/store instructions.
+ Hi,
+
+ This patch add support for SVE2.1 instructions ld1q,
+ ld2q, ld3q and ld4q, st1q, st2q, st3q and st4q.
+
+ Regression testing for aarch64-none-elf target and found no regressions.
+
+ Ok for binutils-master?
+
+ Regards,
+ Srinath.
+
+2024-01-15 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ PATCH 5/6][Binutils] aarch64: Add SVE2.1 fmin and fmax instructions.
+ Hi,
+
+ This patch add support for SVE2.1 instruction faddqv,
+ fmaxnmqv, fmaxqv, fminnmqv and fminqv.
+
+ Regression testing for aarch64-none-elf target and found no regressions.
+
+ Ok for binutils-master?
+
+ Regards,
+ Srinath.
+
+2024-01-15 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ aarch64: Add SVE2.1 dupq, eorqv and extq instructions.
+ Hi,
+
+ This patch add support for SVE2.1 instruction dupq, eorqv and extq.
+
+ Regression testing for aarch64-none-elf target and found no regressions.
+
+ Ok for binutils-master?
+
+ Regards,
+ Srinath.
+
+2024-01-15 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ aarch64: Add support for FEAT_SVE2p1.
+ Hi,
+
+ This patch add support for FEAT_SVE2p1 (SVE2.1 Extension) feature
+ along with +sve2p1 optional flag to enabe this feature.
+
+ Also support for following SVE2p1 instructions is added
+ addqv, andqv, smaxqv, sminqv, umaxqv, uminqv and uminqv.
+
+ Regression testing for aarch64-none-elf target and found no regressions.
+
+ Ok for binutils-master?
+
+ Regards,
+ Srinath.
+
+2024-01-15 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ aarch64: Add support for FEAT_SME2p1 instructions.
+ Hi,
+
+ This patch add support for FEAT_SME2p1 and "movaz" instructions
+ along with the optional flag +sme2p1.
+
+ Following "movaz" instructions are add:
+ Move and zero two ZA tile slices to vector registers.
+ Move and zero four ZA tile slices to vector registers.
+
+ Regression testing for aarch64-none-elf target and found no regressions.
+
+ Ok for binutils-master?
+
+ Regards,
+ Srinath.
+
+2024-01-15 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ aarch64: Add support for FEAT_B16B16 instructions.
+ Hi,
+
+ This patch add support for SVE2.1 and SME2.1 non-widening BFloat16
+ (FEAT_B16B16) instructions.
+
+ Following instructions predicated, unpredicated and indexed
+ variants are added in this patch.
+
+ bfadd, bfclamp, bfmax bfmaxnm, bfmin,bfminnm,
+ bfmla,bfmls,bfmul and bfsub.
+
+ Regression testing for aarch64-none-elf target and found no regressions.
+
+ Ok for binutils-master?
+
+ Regards,
+ Srinath.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas/NEWS: announce the new SCFI command line option
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: testsuite: add an x86 testsuite for SCFI
+ The testsuite for SCFI contains target-specific tests.
+
+ When a test is executed with --scfi=experimental command line option,
+ the CFI annotations in the test .s files are skipped altogether by the
+ GAS for processing. The CFI directives in the input assembly files are,
+ however, validated by running the assembler one more time without
+ --scfi=experimental.
+
+ Some testcases are used to highlight those asm constructs that the SCFI
+ machinery in GAS currently does not support:
+
+ - Only System V AMD64 ABI is supported for now. Using either --32 or
+ --x32 with SCFI results in hard error.
+ See scfi-unsupported-1.s.
+
+ - Untraceable stack-pointer manipulation in function epilougue and prologue.
+ See scfi-unsupported-2.s.
+
+ - Using Dynamically Realigned Arguement Pointer (DRAP) register to
+ realign the stack. For SCFI, the CFA must be only REG_SP or REG_FP
+ based. See scfi-unsupported-drap-1.s
+
+ Some testcases are used to highlight some diagnostics that the SCFI
+ machinery in GAS currently issues, with an intent to help user correct
+ inadvertent errors in their hand-written asm. An error is issued when
+ GAS finds that input asm is not amenable to correct CFI synthesis.
+
+ - (#1) "Warning: SCFI: Asymetrical register restore"
+ - (#2) "Error: SCFI: usage of REG_FP as scratch not supported"
+ - (#3) "Error: SCFI: unsupported stack manipulation pattern"
+
+ In case of (#2) and (#3), SCFI generation is skipped for the respective
+ function. Above is a subset of the warnings/errors implemented in the
+ code.
+
+ gas/testsuite/:
+ * gas/scfi/README: New test.
+ * gas/scfi/x86_64/ginsn-add-1.l: New test.
+ * gas/scfi/x86_64/ginsn-add-1.s: New test.
+ * gas/scfi/x86_64/ginsn-dw2-regnum-1.l: New test.
+ * gas/scfi/x86_64/ginsn-dw2-regnum-1.s: New test.
+ * gas/scfi/x86_64/ginsn-pop-1.l: New test.
+ * gas/scfi/x86_64/ginsn-pop-1.s: New test.
+ * gas/scfi/x86_64/ginsn-push-1.l: New test.
+ * gas/scfi/x86_64/ginsn-push-1.s: New test.
+ * gas/scfi/x86_64/scfi-add-1.d: New test.
+ * gas/scfi/x86_64/scfi-add-1.l: New test.
+ * gas/scfi/x86_64/scfi-add-1.s: New test.
+ * gas/scfi/x86_64/scfi-add-2.d: New test.
+ * gas/scfi/x86_64/scfi-add-2.l: New test.
+ * gas/scfi/x86_64/scfi-add-2.s: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-1.d: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-1.l: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-1.s: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-2.d: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-2.l: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-2.s: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-3.d: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-3.l: New test.
+ * gas/scfi/x86_64/scfi-asm-marker-3.s: New test.
+ * gas/scfi/x86_64/scfi-bp-sp-1.d: New test.
+ * gas/scfi/x86_64/scfi-bp-sp-1.l: New test.
+ * gas/scfi/x86_64/scfi-bp-sp-1.s: New test.
+ * gas/scfi/x86_64/scfi-bp-sp-2.d: New test.
+ * gas/scfi/x86_64/scfi-bp-sp-2.l: New test.
+ * gas/scfi/x86_64/scfi-bp-sp-2.s: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-1.d: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-1.l: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-1.s: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-2.d: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-2.l: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-2.s: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-3.d: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-3.l: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-3.s: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-4.d: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-4.l: New test.
+ * gas/scfi/x86_64/scfi-callee-saved-4.s: New test.
+ * gas/scfi/x86_64/scfi-cfg-1.d: New test.
+ * gas/scfi/x86_64/scfi-cfg-1.l: New test.
+ * gas/scfi/x86_64/scfi-cfg-1.s: New test.
+ * gas/scfi/x86_64/scfi-cfg-2.d: New test.
+ * gas/scfi/x86_64/scfi-cfg-2.l: New test.
+ * gas/scfi/x86_64/scfi-cfg-2.s: New test.
+ * gas/scfi/x86_64/scfi-cfi-label-1.d: New test.
+ * gas/scfi/x86_64/scfi-cfi-label-1.l: New test.
+ * gas/scfi/x86_64/scfi-cfi-label-1.s: New test.
+ * gas/scfi/x86_64/scfi-cfi-sections-1.d: New test.
+ * gas/scfi/x86_64/scfi-cfi-sections-1.l: New test.
+ * gas/scfi/x86_64/scfi-cfi-sections-1.s: New test.
+ * gas/scfi/x86_64/scfi-cofi-1.d: New test.
+ * gas/scfi/x86_64/scfi-cofi-1.l: New test.
+ * gas/scfi/x86_64/scfi-cofi-1.s: New test.
+ * gas/scfi/x86_64/scfi-diag-1.l: New test.
+ * gas/scfi/x86_64/scfi-diag-1.s: New test.
+ * gas/scfi/x86_64/scfi-diag-2.l: New test.
+ * gas/scfi/x86_64/scfi-diag-2.s: New test.
+ * gas/scfi/x86_64/scfi-dyn-stack-1.d: New test.
+ * gas/scfi/x86_64/scfi-dyn-stack-1.l: New test.
+ * gas/scfi/x86_64/scfi-dyn-stack-1.s: New test.
+ * gas/scfi/x86_64/scfi-enter-1.d: New test.
+ * gas/scfi/x86_64/scfi-enter-1.l: New test.
+ * gas/scfi/x86_64/scfi-enter-1.s: New test.
+ * gas/scfi/x86_64/scfi-fp-diag-2.l: New test.
+ * gas/scfi/x86_64/scfi-fp-diag-2.s: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-1.d: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-1.l: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-1.s: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-2.d: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-2.l: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-2.s: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-3.d: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-3.l: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-3.s: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-4.d: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-4.l: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-4.s: New test.
+ * gas/scfi/x86_64/scfi-indirect-mov-5.s: New test.
+ * gas/scfi/x86_64/scfi-lea-1.d: New test.
+ * gas/scfi/x86_64/scfi-lea-1.l: New test.
+ * gas/scfi/x86_64/scfi-lea-1.s: New test.
+ * gas/scfi/x86_64/scfi-leave-1.d: New test.
+ * gas/scfi/x86_64/scfi-leave-1.l: New test.
+ * gas/scfi/x86_64/scfi-leave-1.s: New test.
+ * gas/scfi/x86_64/scfi-pushq-1.d: New test.
+ * gas/scfi/x86_64/scfi-pushq-1.l: New test.
+ * gas/scfi/x86_64/scfi-pushq-1.s: New test.
+ * gas/scfi/x86_64/scfi-pushsection-1.d: New test.
+ * gas/scfi/x86_64/scfi-pushsection-1.l: New test.
+ * gas/scfi/x86_64/scfi-pushsection-1.s: New test.
+ * gas/scfi/x86_64/scfi-pushsection-2.d: New test.
+ * gas/scfi/x86_64/scfi-pushsection-2.l: New test.
+ * gas/scfi/x86_64/scfi-pushsection-2.s: New test.
+ * gas/scfi/x86_64/scfi-selfalign-func-1.d: New test.
+ * gas/scfi/x86_64/scfi-selfalign-func-1.l: New test.
+ * gas/scfi/x86_64/scfi-selfalign-func-1.s: New test.
+ * gas/scfi/x86_64/scfi-simple-1.d: New test.
+ * gas/scfi/x86_64/scfi-simple-1.l: New test.
+ * gas/scfi/x86_64/scfi-simple-1.s: New test.
+ * gas/scfi/x86_64/scfi-simple-2.d: New test.
+ * gas/scfi/x86_64/scfi-simple-2.l: New test.
+ * gas/scfi/x86_64/scfi-simple-2.s: New test.
+ * gas/scfi/x86_64/scfi-sub-1.d: New test.
+ * gas/scfi/x86_64/scfi-sub-1.l: New test.
+ * gas/scfi/x86_64/scfi-sub-1.s: New test.
+ * gas/scfi/x86_64/scfi-sub-2.d: New test.
+ * gas/scfi/x86_64/scfi-sub-2.l: New test.
+ * gas/scfi/x86_64/scfi-sub-2.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-1.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-1.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-2.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-2.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-3.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-3.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-4.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-4.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-cfg-1.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-cfg-1.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-cfg-2.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-cfg-2.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-drap-1.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-drap-1.s: New test.
+ * gas/scfi/x86_64/scfi-unsupported-insn-1.l: New test.
+ * gas/scfi/x86_64/scfi-unsupported-insn-1.s: New test.
+ * gas/scfi/x86_64/scfi-x86-64.exp: New file.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ opcodes: i386-reg.tbl: Add a comment to reflect dependency on ordering
+ The ginsn representation keeps the DWARF register number of the
+ operands. The API ginsn_dw2_regnum relies on the the relative ordering
+ of these register entries in the table. Add a comment to make it clear.
+
+ opcodes/
+ * i386-reg.tbl: Add a comment.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: doc: update documentation for the new listing option
+ Add a new listing option, -i, to emit ginsn in the listing output. We
+ may also emit other SCFI information if necessary in the future.
+
+ ginsn are most useful when seen alongside the assembly instructions.
+ Hence, they are emitted when the user includes the assembly instructions
+ in the listing output, i.e., "-ali=FILE".
+
+ gas/doc/:
+ * as.texi: Add documentation for the new listing option, -i.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: x86: synthesize CFI for hand-written asm
+ This patch adds support in GAS to create generic GAS instructions
+ (a.k.a., the ginsn) for the x86 backend (AMD64 ABI only at this time).
+ Using this ginsn infrastructure, GAS can then synthesize CFI for
+ hand-written asm for x86_64.
+
+ A ginsn is a target-independent representation of the machine
+ instructions. One machine instruction may need one or more ginsn.
+
+ This patch also adds skeleton support for printing ginsn in the listing
+ output for debugging purposes.
+
+ Since the current use-case of ginsn is to synthesize CFI, the x86 target
+ needs to generate ginsns necessary for the following machine
+ instructions only:
+
+ - All change of flow instructions, including all conditional and
+ unconditional branches, call and return from functions.
+ - All register saves and unsaves to the stack.
+ - All instructions affecting the two registers that could potentially
+ be used as the base register for CFA tracking. For SCFI, the base
+ register for CFA tracking is limited to REG_SP and REG_FP only for
+ now.
+
+ The representation of ginsn is kept simple:
+
+ - GAS instruction has GINSN_NUM_SRC_OPNDS (defined to be 2 at this time)
+ number of source operands and one destination operand at this time.
+ - GAS instruction uses DWARF register numbers in its representation and
+ does not track register size.
+ - GAS instructions carry location information (file name and line
+ number).
+ - GAS instructions are ID's with a natural number in order of their
+ addtion to the list. This can be used as a proxy for the static
+ program order of the corresponding machine instructions.
+
+ Note that, GAS instruction (ginsn) format does not support
+ GINSN_TYPE_PUSH and GINSN_TYPE_POP. Some architectures, like aarch64,
+ do not have push and pop instructions, but rather STP/LDP/STR/LDR etc.
+ instructions. Further these instructions have a variety of addressing
+ modes, like offset, pre-indexing and post-indexing etc. Among other
+ things, one of differences in these addressing modes is _when_ the addr
+ register is updated with the result of the address calculation: before
+ or after the memory operation. To best support such needs, the generic
+ instructions like GINSN_TYPE_LOAD, GINSN_TYPE_STORE together with
+ GINSN_TYPE_ADD, and GINSN_TYPE_SUB may be used.
+
+ The functionality provided in ginsn.c and scfi.c is compiled in when a
+ target defines TARGET_USE_SCFI and TARGET_USE_GINSN. This can be
+ revisited later when there are other use-cases of creating ginsn's in
+ GAS, apart from the current use-case of synthesizing CFI for
+ hand-written asm.
+
+ Support is added only for System V AMD64 ABI for ELF at this time. If
+ the user enables SCFI with --32, GAS issues an error:
+
+ "Fatal error: SCFI is not supported for this ABI"
+
+ For synthesizing (DWARF) CFI, the SCFI machinery requires the programmer
+ to adhere to some pre-requisites for their asm:
+ - Hand-written asm block must begin with a .type foo, @function
+ It is highly recommended to, additionally, also ensure that:
+ - Hand-written asm block ends with a .size foo, .-foo
+
+ The SCFI machinery encodes some rules which align with the standard
+ calling convention specified by the ABI. Apart from the rules, the SCFI
+ machinery employs some heuristics. For example:
+ - The base register for CFA tracking may be either REG_SP or REG_FP.
+ - If the base register for CFA tracking is REG_SP, the precise amount of
+ stack usage (and hence, the value of REG_SP) must be known at all times.
+ - If using dynamic stack allocation, the function must switch to
+ FP-based CFA. This means using instructions like the following (in
+ AMD64) in prologue:
+ pushq %rbp
+ movq %rsp, %rbp
+ and analogous instructions in epilogue.
+ - Save and Restore of callee-saved registers must be symmetrical.
+ However, the SCFI machinery at this time only warns if any such
+ asymmetry is seen.
+
+ These heuristics/rules are architecture-independent and are meant to
+ employed for all architectures/ABIs using SCFI in the future.
+
+ gas/
+ * Makefile.am: Add new files.
+ * Makefile.in: Regenerated.
+ * as.c (defined): Handle documentation and listing option for
+ ginsns and SCFI.
+ * config/obj-elf.c (obj_elf_size): Invoke ginsn_data_end.
+ (obj_elf_type): Invoke ginsn_data_begin.
+ * config/tc-i386.c (x86_scfi_callee_saved_p): New function.
+ (ginsn_prefix_66H_p): Likewise.
+ (ginsn_dw2_regnum): Likewise.
+ (x86_ginsn_addsub_reg_mem): Likewise.
+ (x86_ginsn_addsub_mem_reg): Likewise.
+ (x86_ginsn_alu_imm): Likewise.
+ (x86_ginsn_move): Likewise.
+ (x86_ginsn_lea): Likewise.
+ (x86_ginsn_jump): Likewise.
+ (x86_ginsn_jump_cond): Likewise.
+ (x86_ginsn_enter): Likewise.
+ (x86_ginsn_safe_to_skip): Likewise.
+ (x86_ginsn_unhandled): Likewise.
+ (x86_ginsn_new): New functionality to generate ginsns.
+ (md_assemble): Invoke x86_ginsn_new.
+ (s_insn): Likewise.
+ (i386_target_format): Add hard error for usage of SCFI with non AMD64 ABIs.
+ * config/tc-i386.h (TARGET_USE_GINSN): New definition.
+ (TARGET_USE_SCFI): Likewise.
+ (SCFI_MAX_REG_ID): Likewise.
+ (REG_FP): Likewise.
+ (REG_SP): Likewise.
+ (SCFI_INIT_CFA_OFFSET): Likewise.
+ (SCFI_CALLEE_SAVED_REG_P): Likewise.
+ (x86_scfi_callee_saved_p): Likewise.
+ * gas/listing.h (LISTING_GINSN_SCFI): New define for ginsn and
+ SCFI.
+ * gas/read.c (read_a_source_file): Close SCFI processing at end
+ of file read.
+ * gas/scfidw2gen.c (scfi_process_cfi_label): Add implementation.
+ (scfi_process_cfi_signal_frame): Likewise.
+ * subsegs.h (struct frch_ginsn_data): New forward declaration.
+ (struct frchain): New member for ginsn data.
+ * gas/subsegs.c (subseg_set_rest): Initialize the new member.
+ * symbols.c (colon): Invoke ginsn_frob_label to convey
+ user-defined labels to ginsn infrastructure.
+ * ginsn.c: New file.
+ * ginsn.h: New file.
+ * scfi.c: New file.
+ * scfi.h: New file.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ opcodes: x86: new marker for insns that implicitly update stack pointer
+ Some x86 instructions affect the stack pointer implicitly. Add a new
+ operand constraint to reflect this. This will be useful for SCFI
+ implmentation to ensure its correctness.
+
+ Mark all push, pop, call, ret, enter, leave, INT, iret instructions.
+
+ opcodes/
+ * i386-gen.c: Update opcode_modifiers.
+ * i386-opc.h: Add a new constraint.
+ * i386-opc.tbl: Update the affected instructions.
+ * i386-tbl.h: Regenerated.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ opcodes: gas: x86: define and use Rex2 as attribute not constraint
+ Rex2 is currently an operand constraint. For the upcoming SCFI
+ implementation in GAS, we need to identify operations which implicitly
+ update the stack pointer. An operand constraint enumerator for implicit
+ stack op seems more appropriate than an attribute. However, two opcodes
+ currently necessitate both Rex2 and an implicit stack op marker; this
+ prompts revisiting the current representations a bit.
+
+ Make Rex2 a standalone attribute, so that later a new operand constraint
+ may be added for IMPLICIT_STACK_OP.
+
+ ChangeLog:
+ * gas/config/tc-i386.c (is_apx_rex2_encoding): Update the check.
+ * opcodes/i386-gen.c: Add a new BITFIELD for Rex2.
+ * opcodes/i386-opc.h (REX2_REQUIRED): Remove.
+ * opcodes/i386-opc.tbl: Remove Rex2 operand constraint.
+ * opcodes/i386-tbl.h: Regenerated.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: scfidw2gen: new functionality to prepare for SCFI
+ Define a new set of handlers for CFI directives for the purpose of SCFI.
+ The SCFI machinery ignores many of the user-specified CFI direcives when
+ SCFI is in effect. A warning ("Warning: SCFI ignores most
+ user-specified CFI directives") is issued once per file. The following
+ CFI directives, however, are not ignored:
+ - .cfi_sections
+ - .cfi_label
+ - .cfi_signal_frame
+
+ gas/
+ * Makefile.am: Add new files to GAS_CFILES and HFILES.
+ * Makefile.in: Likewise.
+ * gas/read.c (scfi_pop_insert): New define.
+ (pobegin): Use the SCFI handlers.
+ * scfidw2gen.c: New file.
+ * scfidw2gen.h: New file.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: add new command line option --scfi=experimental
+ When the command line option --scfi=experimenta is passed to the GNU
+ assembler, it will synthesize DWARF call frame information (CFI) for the
+ input assembly.
+
+ The option --scfi=experimental will also ignore most of the existing
+ .cfi_* directives, if already contained in the provided input file.
+ Only the following CFI directives will not be ignored:
+ - .cfi_sections,
+ - .cfi_label,
+ - .cfi_signal_frame
+
+ To use SCFI, a target will need to:
+ - define TARGET_USE_SCFI and TARGET_USE_GINSN, and other necessary
+ definitions,
+ - provide means to help GAS understand the target specific instruction
+ semantics by creating ginsns.
+
+ The upcoming support for SCFI is inteded to be experimental, hence the
+ option --scfi=experimental. The --scfi= may see more options like
+ --scfi=[all,none] added in future, once the SCFI support in GAS is
+ mature and robust. The offering may also see for example, an
+ --scfi=inline option for dealing with inline asm may be added in the
+ future. In --scfi=inline option, the GNU assembler may consume (and not
+ ignore) the compiler generated CFI for the code surrounding the inline
+ asm.
+
+ Also document the option.
+
+ gas/
+ * as.c (show_usage): Add support for --scfi=experimental.
+ (parse_args): Likewise.
+ * as.h (enum synth_cfi_type): Define new type.
+ * doc/as.texi: Document the new option.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: dw2gencfi: externalize the all_cfi_sections
+ gas/
+ * dw2gencfi.h: Declare all_cfi_sections as extern.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: dw2gencfi: expose dot_cfi_sections for scfidw2gen
+ scfidw2gen will use this for processing the .cfi_sections directive.
+
+ gas/
+ * dw2gencfi.c (dot_cfi_sections): Not static anymore.
+ * dw2gencfi.h (dot_cfi_sections): Mark as extern.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: dw2gencfi: move some tc_* defines to the header file
+ Move the following three defines to the header file, so the SCFI
+ machinery can use them:
+ - tc_cfi_frame_initial_instructions
+ - tc_cfi_startproc
+ - tc_cfi_endproc
+
+ gas/
+ * dw2gencfi.c: Move from ...
+ * dw2gencfi.h: ... to here.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: dw2gencfi: expose a new cfi_set_last_fde API
+ gas/
+ * dw2gencfi.c (cfi_set_last_fde): New definition.
+ (dot_cfi_endproc): Use it.
+ (dot_cfi_fde_data): Likewise.
+ (dot_cfi_inline_lsda): Likewise.
+ * dw2gencfi.h (struct fde_entry): New declaration.
+ (cfi_set_last_fde): Likewise.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: dw2gencfi: use all_cfi_sections instead of cfi_sections
+ The code in dw2gencfi.c was checking variable cfi_sections and
+ all_cfi_sections seemingly randomly. Accessing all_cfi_sections seems
+ to the correct variable to access.
+
+ The data in cfi_sections has already been propagated to all_cfi_sections
+ once cfi_dot_startproc () has been called.
+
+ gas/
+ * dw2gencfi.c (dot_cfi_startproc): Use all_cfi_sections
+ instead.
+ (dot_cfi_endproc): Likewise.
+ (dot_cfi_fde_data): Likewise.
+
+2024-01-15 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: dw2gencfi: minor rejig for cfi_sections_set and all_cfi_sections
+ cfi_sections_set is best set to true in cfi_dot_startproc (). Setting
+ it to true again in other APIs (dot_cfi_endproc, dot_cfi_fde_data, and
+ cfi_finish) is unnecessary. Also, move setting the global var
+ all_cfi_sections into cfi_set_sections ().
+
+ gas/
+ * dw2gencfi.c (cfi_set_sections): Set cfi_sections_set and
+ cfi_sections here.
+ (dot_cfi_startproc): Remove unnecessarily setting
+ cfi_set_sections to true.
+ (dot_cfi_endproc): Likewise.
+ (dot_cfi_fde_data): Likewise.
+ (cfi_finish): Likewise.
+
+2024-01-15 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-14 Tom de Vries <tdevries@suse.de>
+
+ [gdb/testsuite] Fix gdb.mi/mi-dprintf.exp with read1
+ When running test-case gdb.mi/mi-dprintf.exp with check-read1, I run into:
+ ...
+ (gdb) ^M
+ PASS: gdb.mi/mi-dprintf.exp: gdb: mi 2nd dprintf stop
+ -data-evaluate-expression stderr^M
+ ^done,value="0x7ffff7e4a420 <_IO_2_1_stderr_>"^M
+ (gdb) FAIL: gdb.mi/mi-dprintf.exp: stderr symbol check
+ ...
+
+ The problem is in proc mi_gdb_is_stderr_available:
+ ...
+ proc mi_gdb_is_stderr_available {} {
+ set has_stderr_symbol false
+ gdb_test_multiple "-data-evaluate-expression stderr" "stderr symbol check" {
+ -re "\\^error,msg=\"'stderr' has unknown type; cast it to its declared type\"\r\n$::mi_gdb_prompt$" {
+ }
+ -re "$::mi_gdb_prompt$" {
+ set has_stderr_symbol true
+ }
+ }
+ ...
+ which uses a gdb_test_multiple that is supposed to use the mi prompt, but
+ doesn't use -prompt to indicate this. Consequently, the default patterns use
+ the regular gdb prompt, which trigger earlier than the two custom patterns
+ which use "$::mi_gdb_prompt$".
+
+ Fix this by adding the missing -prompt "$::mi_gdb_prompt$" arguments.
+
+ While we're at it, make the gdb_test_multiple call a bit more readable by
+ using variables, and by using -wrap.
+
+ Tested on x86_64-linux, with:
+ - gcc and clang (to trigger both the has_stderr_symbol true and false cases)
+ - make check and make check-read1.
+
+2024-01-14 Tom de Vries <tdevries@suse.de>
+
+ [gdb/testsuite] Fix gdb.cp/namespace.exp with read1
+ With check-read1 we run into:
+ ...
+ (gdb) break DNE>::DNE^M
+ Function "DNE>::DNE" not defined.^M
+ Make breakpoint pending on future shared library load? (y or [n]) y^M
+ Breakpoint 9 (DNE>::DNE) pending.^M
+ n^M
+ (gdb) FAIL: gdb.cp/namespace.exp: br malformed '>' (got interactive prompt)
+ n^M
+ ...
+
+ The question is supposed to be handled by the question and response arguments
+ to this gdb_test call:
+ ...
+ gdb_test "break DNE>::DNE" "" "br malformed \'>\'" \
+ "Make breakpoint pending on future shared library load?.*" "y"
+ ...
+ but both this and the builtin handling in gdb_test_multiple triggers.
+
+ The cause of this is that the question argument regexp is incomplete.
+
+ Fix this by making sure that the entire question is matched in the regexp:
+ ...
+ set yn_re [string_to_regexp {(y or [n])}]
+ ...
+ "Make breakpoint pending on future shared library load\\? $yn_re " "Y"
+ ...
+
+ Tested on x86_64-linux.
+
+2024-01-14 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-13 Yang Liu <liuyang22@iscas.ac.cn>
+
+ gdb: RISC-V: Refine lr/sc sequence support
+ Per RISC-V spec, the lr/sc sequence can consist of up to 16 instructions, and we
+ cannot insert breakpoints in the middle of this sequence. Before this, we only
+ detected a specific pattern (the most common one). This patch improves this part
+ and now supports more complex pattern detection.
+
+ Approved-By: Andrew Burgess <aburgess@redhat.com>
+ Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>
+
+2024-01-13 Yang Liu <liuyang22@iscas.ac.cn>
+
+ Add myself to gdb/MAINTAINERS
+
+2024-01-13 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ gprofng: 30889 can't compile without large file support
+ gprofng/ChangeLog
+ 2024-01-12 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ PR 30889
+ * src/util.h (O_LARGEFILE): Define to 0, if not defined.
+
+2024-01-13 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-12 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ gprofng: fix 3 bugzillas against gp-display-html
+ Fix two cases where gp-display-html terminates prematurely because the
+ input format is not recognized. This problem occurs in the function
+ overview and caller-callee parts of the code.
+ The fix consists of new regular expressions and a different approach
+ in handling the input from gp-display-text.
+ Also fix a performance problem in the caller-callee part that has a
+ noticeable impact on the performance for large applications.
+
+ gprofng/ChangeLog
+ 2024-01-10 Ruud van der Pas <ruud.vanderpas@oracle.com>
+
+ PR gprofng/30438
+ PR gprofng/30439
+ PR gprofng/30942
+ * gp-display-html/gp-display-html.in: fixes the issues.
+
+2024-01-12 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ sim: Fix compile errors
+ The following change broke simulator testsuite with host GCC 13:
+ commit 435ad222b3de93fa647fba7221eece36b1b395eb
+ sim: warnings: compile build tools with -Werror too
+
+ Host GCC13 complains about missing function prototypes:
+
+ binutils/sim/testsuite/common/bits-gen.c:26:1: error: no previous prototype for ‘gen_struct’ [-Werror=missing-prototypes]
+ 26 | gen_struct (void)
+ | ^~~~~~~~~~
+
+ Fix by making the functions static, which instructs the compiler that
+ there is no need for a prototype.
+
+2024-01-12 David Faust <david.faust@oracle.com>
+
+ bpf: fix relocation addend incorrect symbol value
+ Relocations installed by the BPF ELF backend were sometimes incorrectly
+ adding the symbol value to the relocation entry addend, when the correct
+ relocation value was already stored in the addend. This could lead to a
+ relocation effectively adding the symbol value twice.
+
+ Fix that by making bpf_elf_generic_reloc () more similar to the flow of
+ bfd_install_relocation in the case where howto->install_addend is set,
+ which is how it ought to behave.
+
+ bfd/
+ * bpf-reloc.def (R_BPF_64_ABS32, R_BPF_64_ABS64)
+ (R_BPF_64_NODYLD32): Set partial_inplace to true.
+ * elf64-bpf.c (bpf_elf_generic_reloc): Do not include the value
+ of the symbol when installing relocation. Copy some additional
+ logic from bfd_elf_generic_reloc.
+
+ gas/
+ * testsuite/gas/bpf/bpf.exp: Run new test.
+ * testsuite/gas/bpf/elf-relo-1.d: New.
+ * testsuite/gas/bpf/elf-relo-1.s: New.
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/testsuite: fix failure in gdb.python/py-inferior.exp
+ After this commit:
+
+ commit 1925bba80edd37c2ef90ef1d2c599dfc2fc17f72
+ Date: Thu Jan 4 10:01:24 2024 +0000
+
+ gdb/python: add gdb.InferiorThread.__repr__() method
+
+ failures were reported for gdb.python/py-inferior.exp.
+
+ The test grabs a gdb.InferiorThread object representing an inferior
+ thread, and then, later in the test, expects this Python object to
+ become invalid when the inferior thread has exited.
+
+ The gdb.InferiorThread object was obtained from the list returned by
+ calling gdb.Inferior.threads().
+
+ The mistake I made in the original commit was to assume that the order
+ of the threads returned from gdb.Inferior.threads() somehow reflected
+ the thread creation order. Specifically, I was expecting the main
+ thread to be first in the list, and "other" threads to appear ... not
+ first.
+
+ However, the gdb.Inferior.threads() function creates a list and
+ populates it from a map. The order of the threads in the returned
+ list has no obvious relationship to the thread creation order, and can
+ vary from host to host.
+
+ On my machine the ordering was as I expected, so the test passed for
+ me. For others the ordering was not as expected, and it just happened
+ that we ended up recording the gdb.InferiorThread for the main thread.
+
+ As the main thread doesn't exit (until the test is over), the
+ gdb.InferiorThread object never became invalid, and the test failed.
+
+ Fixed in this commit by taking more care to correctly find a non-main
+ thread. I do this by recording the main thread early on (when there
+ is only one inferior thread), and then finding any thread that is not
+ this main thread.
+
+ Then, once all of the secondary threads have exited, I know that the
+ second InferiorThread object I found should now be invalid.
+
+ The test still passes for me, and I believe this should fix the issue
+ for everyone else too.
+
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31238
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ Update copyright year range in header of all files managed by GDB
+ This commit is the result of the following actions:
+
+ - Running gdb/copyright.py to update all of the copyright headers to
+ include 2024,
+
+ - Manually updating a few files the copyright.py script told me to
+ update, these files had copyright headers embedded within the
+ file,
+
+ - Regenerating gdbsupport/Makefile.in to refresh it's copyright
+ date,
+
+ - Using grep to find other files that still mentioned 2023. If
+ these files were updated last year from 2022 to 2023 then I've
+ updated them this year to 2024.
+
+ I'm sure I've probably missed some dates. Feel free to fix them up as
+ you spot them.
+
+2024-01-12 Andrew Carlotti <andrew.carlotti@arm.com>
+
+ aarch64: Remove unused code
+ Most of this code became redundant in my previous commits, but ARMV8_6A_SVE was
+ already dead when it was first added.
+
+ aarch64: Make FEAT_ASMv8p2 instruction aliases always available
+ There's no reason to disallow the aliases when the aliased instructions are
+ always available. The new behaviour matches existing LLVM behaviour.
+
+ aarch64: Add +xs flag for existing instructions
+ Additionally, change FEAT_XS tlbi variants to be gated on "+xs" instead of
+ "+d128". This is an incremental improvement; there are still some FEAT_XS tlbi
+ variants that are gated incorrectly or missing entirely.
+
+ aarch64: Add +wfxt flag for existing instructions
+
+ aarch64: Add +rcpc2 flag for existing instructions
+
+ aarch64: Add +flagm2 flag for existing instructions
+
+ aarch64: Add +frintts flag for existing instructions
+
+ aarch64: Add +jscvt flag for existing fjcvtzs instruction
+
+ aarch64: Fix option parsing to disallow prefixes of valid options
+ Add "+rdm" as an explicit alias for "+rdma", to maintain existing compatibility
+ with Clang.
+
+ aarch64: Add +fcma alias for +compnum
+
+ aarch64: Fix +lse feature flag dependency
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/doc: update examples in gdb.Progspace and gdb.Objfile docs
+ This commit updates the Python example code in the gdb.Progspace and
+ gdb.Objfile sections of the docs. Changes made:
+
+ 1. Use @value{GDBP} for the GDB prompt rather than
+ hard-coding (gdB),
+
+ 2. Use @group...@end group to split the example code into
+ unbreakable chunks, and
+
+ 3. Add parenthesis to the Python print() calls in the examples. In
+ Python 2 it was OK to drop the parenthesis, but now GDB is Python 3
+ only, example code should include the parenthesis.
+
+ Approved-By: Eli Zaretskii <eliz@gnu.org>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/doc: add some notes on selecting suitable attribute names
+ In previous commits I've added Object.__dict__ support to gdb.Inferior
+ and gdb.InferiorThread, this is similar to the existing support for
+ gdb.Objfile and gdb.Progspace.
+
+ This commit extends the documentation to offer the user some guidance
+ on selecting good names for their custom attributes so they
+ can (hopefully) avoid conflicting with any future attributes that GDB
+ might add.
+
+ The rules I've proposed are:
+
+ 1. Don't start user attributes with a lower case letter, all the
+ current GDB attributes start with a lower case letter, and I suspect
+ all future attributes would also start with a lower case letter, and
+
+ 2. Don't start user attributes with a double underscore, this risks
+ conflicting with Python built in attributes (e.g. __dict__) - though
+ clearly the user would need to start and end with a double
+ underscore, but it seemed easier just to say no double underscores.
+
+ I'm doing this as a separate commit as I've updated the docs for the
+ existing gdb.Objfile and gdb.Progspace so they all reference a single
+ paragraph on selecting attribute names.
+
+ Reviewed-By: Eli Zaretskii <eliz@gnu.org>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/python: Add gdb.InferiorThread.__dict__ attribute
+ The gdb.Objfile, gdb.Progspace, gdb.Type, and gdb.Inferior Python
+ types already have a __dict__ attribute, which allows users to create
+ user defined attributes within the objects. This is useful if the
+ user wants to cache information within an object.
+
+ This commit adds the same functionality to the gdb.InferiorThread
+ type.
+
+ After this commit there is a new gdb.InferiorThread.__dict__
+ attribute, which is a dictionary. A user can, for example, do this:
+
+ (gdb) pi
+ >>> t = gdb.selected_thread()
+ >>> t._user_attribute = 123
+ >>> t._user_attribute
+ 123
+ >>>
+
+ There's a new test included.
+
+ Reviewed-By: Eli Zaretskii <eliz@gnu.org>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/python: Add gdb.Inferior.__dict__ attribute
+ The gdb.Objfile, gdb.Progspace, and gdb.Type Python types already have
+ a __dict__ attribute, which allows users to create user defined
+ attributes within the objects. This is useful if the user wants to
+ cache information within an object.
+
+ This commit adds the same functionality to the gdb.Inferior type.
+
+ After this commit there is a new gdb.Inferior.__dict__ attribute,
+ which is a dictionary. A user can, for example, do this:
+
+ (gdb) pi
+ >>> i = gdb.selected_inferior()
+ >>> i._user_attribute = 123
+ >>> i._user_attribute
+ 123
+ >>>
+
+ There's a new test included.
+
+ Reviewed-By: Eli Zaretskii <eliz@gnu.org>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/python: remove users ability to create gdb.Progspace objects
+ I noticed that it is possible for the user to create a new
+ gdb.Progspace object, like this:
+
+ (gdb) pi
+ >>> p = gdb.Progspace()
+ >>> p
+ <gdb.Progspace object at 0x7ffad4219c10>
+ >>> p.is_valid()
+ False
+
+ As the new gdb.Progspace object is not associated with an actual C++
+ program_space object within GDB core, then the new gdb.Progspace is
+ created invalid, and there is no way in which the new object can ever
+ become valid.
+
+ Nor do I believe there's anywhere in the Python API where it makes
+ sense to consume an invalid gdb.Progspace created in this way, for
+ example, the gdb.Progspace could be passed as the locus to
+ register_type_printer, but all that would happen is that the
+ registered printer would never be used.
+
+ In this commit I propose to remove the ability to create new
+ gdb.Progspace objects. Attempting to do so now gives an error, like
+ this:
+
+ (gdb) pi
+ >>> gdb.Progspace()
+ Traceback (most recent call last):
+ File "<stdin>", line 1, in <module>
+ TypeError: cannot create 'gdb.Progspace' instances
+
+ Of course, there is a small risk here that some existing user code
+ might break ... but if that happens I don't believe the user code can
+ have been doing anything useful, so I see this as a small risk.
+
+ Reviewed-By: Eli Zaretskii <eliz@gnu.org>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/python: add gdb.Frame.__repr__() method
+ Add a gdb.Frame.__repr__() method. Before this patch we would see
+ output like this:
+
+ (gdb) pi
+ >>> gdb.selected_frame()
+ <gdb.Frame object at 0x7fa8cc2df270>
+
+ After this patch, we now see:
+
+ (gdb) pi
+ >>> gdb.selected_frame()
+ <gdb.Frame level=0 frame-id={stack=0x7ffff7da0ed0,code=0x000000000040115d,!special}>
+
+ More verbose, but, I hope, more useful.
+
+ If the gdb.Frame becomes invalid, then we will see:
+
+ (gdb) pi
+ >>> invalid_frame_variable
+ <gdb.Frame (invalid)>
+
+ which is inline with how other invalid objects are displayed.
+
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/python: add gdb.InferiorThread.__repr__() method
+ Add a gdb.InferiorThread.__repr__() method. Before this patch we
+ would see output like this:
+
+ (gdb) pi
+ >>> gdb.selected_thread()
+ <gdb.InferiorThread object at 0x7f4dcc49b970>
+
+ After this patch, we now see:
+
+ (gdb) pi
+ >>> gdb.selected_thread()
+ <gdb.InferiorThread id=1.2 target-id="Thread 0x7ffff7da1700 (LWP 458134)">
+
+ More verbose, but, I hope, more useful.
+
+ If the gdb.InferiorThread becomes invalid, then we will see:
+
+ (gdb) pi
+ >>> invalid_thread_variable
+ <gdb.InferiorThread (invalid)>
+
+ Which is inline with how other invalid objects are displayed.
+
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/python: hoist common invalid object repr code into py-utils.c
+ Many object types now have a __repr__() function implementation. A
+ common pattern is that, if an object is invalid, we print its
+ representation as: <TYPENAME (invalid)>.
+
+ I thought it might be a good idea to move the formatting of this
+ specific representation into a utility function, and then update all
+ of our existing code to call the new function.
+
+ The only place where I haven't made use of the new function is in
+ unwind_infopy_repr, where we currently return a different string.
+ This case is a little different as the UnwindInfo is invalid because
+ it references a frame, and it is the frame itself which is invalid.
+ That said, I think it would be fine to switch to using the standard
+ format; if the UnwindInfo references an invalid frame, then the
+ UnwindInfo is itself invalid. But changing this would be an actual
+ change in behaviour, while all the other changes in this commit are
+ just refactoring.
+
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb: add trailing '/' when using 'complete' with directory names
+ This patch contains work pulled from this previously proposed patch:
+
+ https://inbox.sourceware.org/gdb-patches/20210213220752.32581-2-lsix@lancelotsix.com/
+
+ But has been modified by me. Credit for the original idea and
+ implementation goes to Lancelot, any bugs in this new iteration belong
+ to me.
+
+ Consider the executable `/tmp/foo/my_exec', and if we assume `/tmp' is
+ empty other than the `foo' sub-directory, then currently within GDB,
+ if I type:
+
+ (gdb) file /tmp/f
+
+ and then hit TAB, GDB completes this to:
+
+ (gdb) file /tmp/foo/
+
+ notice that not only did GDB fill in the whole of `foo', but GDB also
+ added a trailing '/' character. This is done within readline when the
+ path that was just completed is a directory. However, if I instead
+ do:
+
+ (gdb) complete file /tmp/f
+ file /tmp/foo
+
+ I now see the completed directory name, but the trailing '/' is
+ missing. The reason is that, in this case, the completions are not
+ offered via readline, but are handled entirely within GDB, and so
+ readline never gets the chance to add the trailing '/' character.
+
+ The above patch added filename option support to GDB, which included
+ completion of the filename options. This initially suffered from the
+ same problem that I've outlined above, but the above patch proposed a
+ solution to this problem, but this solution only applied to filename
+ options (which have still not been added to GDB), and was mixed in
+ with the complete filename options support.
+
+ This patch pulls out just the fix for the trailing "/" problem, and
+ applies it to GDB's general filename completion. This patch does not
+ add filename options to GDB, that can always be done later, but I
+ think this small part is itself a useful fix.
+
+ One of the biggest changes I made in this version is that I got rid of
+ the set_from_readline member function, instead, I now pass the value
+ of m_from_readline into the completion_tracker constructor.
+
+ I then moved the addition of the trailing '/' into filename_completer
+ so that it is applied in the general filename completion case. I also
+ added a call to gdb_tilde_expand which was missing from the original
+ patch, I haven't tested, but I suspect that this meant that the
+ original patch would not add the trailing '/' if the user entered a
+ path starting with a tilde character.
+
+ When writing the test for this patch I ran into two problems.
+
+ The first was that the procedures in lib/completion-support.exp relied
+ on the command being completed for the test name. This is fine for
+ many commands, but not when completing a filename, if we use the
+ command in this case the test name will (potentially) include the name
+ of the directory in which the test is being run, which means we can't
+ compare results between two runs of GDB from different directories.
+
+ So in this commit I've gone through completion-support.exp and added a
+ new (optional) testname argument to many of the procedures, this
+ allows me to give a unique test name, that doesn't include the path
+ for my new tests.
+
+ The second issue was in the procedure make_tab_completion_list_re,
+ this builds the completion list which is displayed after a double tab
+ when there are multiple possible completions.
+
+ The procedure added the regexp ' +' after each completion, and then
+ added another ' +' at the very end of the expected output. So, if we
+ expected to match the name of two functions 'f1' and 'f2' the
+ generated regexp would be: 'f1 +f2 + +'. This would match just fine,
+ the actual output would be: 'f1 f2 ', notice that we get two spaces
+ after each function name.
+
+ However, if we complete two directory names 'd1' and 'd2' then the
+ output will be 'd1/ d2/ '. Notice that now we only have a single
+ space between each match, however, we do get the '/' added instead.
+
+ What happens is that when presenting the matches, readline always adds
+ the appropriate trailing character; if we performed tab completion of
+ 'break f1' then, as 'f1' is a unique match, we'd get 'break f1 ' with
+ a trailing space added. However, if we complete 'file d1' then we get
+ 'file d1/'. Then readline is adding a single space after each
+ possible match, including the last one, which accounts for the
+ trailing space character.
+
+ To resolve this I've simply remove the addition o the second ' +'
+ within make_tab_completion_list_re, for the function completion
+ example I gave above the expected pattern is now 'f1 +f2 +', which for
+ the directory case we expect 'd1/ +d2/ +', both of which work just
+ fine.
+
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=16265
+ Co-Authored-By: Lancelot SIX <lsix@lancelotsix.com>
+ Approved-By: Tom Tromey <tom@tromey.com>
+ Reviewed-By: John Baldwin <jhb@FreeBSD.org>
+
+2024-01-12 Andrew Burgess <aburgess@redhat.com>
+
+ gdb/python: New InferiorThread.ptid_string attribute
+ This commit adds a new InferiorThread.ptid_string attribute. This
+ read-only attribute contains the string returned by target_pid_to_str,
+ which actually converts a ptid (not pid) to a string.
+
+ This is the string that appears (at least in part) in the output of
+ 'info threads' in the 'Target Id' column, but also in the thread
+ exited message that GDB prints.
+
+ Having access to this string from Python is useful for allowing
+ extensions identify threads in a similar way to how GDB core would
+ identify the thread.
+
+ Reviewed-By: Eli Zaretskii <eliz@gnu.org>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-12 Tom de Vries <tdevries@suse.de>
+
+ [gdb/testsuite] Use require in gdb.dwarf2/assign-variable-value-to-register.exp
+ In test-case gdb.dwarf2/assign-variable-value-to-register.exp a return is
+ missing here after the unsupported:
+ ...
+ if { ![is_x86_64_m64_target] } {
+ unsupported "unsupported architecture"
+ }
+ ...
+ and consequently on aarch64-linux I ran into an UNSUPPORTED followed by 3
+ FAILs.
+
+ Fix this by simply using require:
+ ...
+ require is_x86_64_m64_target
+ ...
+
+ Tested on x86_64-linux and aarch64-linux.
+
+2024-01-12 Indu Bhagat <indu.bhagat@oracle.com>
+
+ gas: sframe: warn when skipping SFrame FDE generation
+ Fix PR gas/31213.
+
+ gas/
+ PR gas/31213
+ * gen-sframe.c (sframe_do_cfi_insn): Add new warning.
+
+ gas/testsuite/
+ * gas/cfi-sframe/common-empty-1.d: Test the new warning as well.
+ * gas/cfi-sframe/common-empty-2.d: Likewise.
+
+2024-01-12 mengqinggang <mengqinggang@loongson.cn>
+
+ LoongArch: Fix relaxation overflow caused by section alignment
+ When deleting NOP instructions addend by .align at second pass, this may cause
+ the PC decrease but the symbol address to remain unchanged due to section
+ alignment.
+
+ To solve this question, we subtract a maximux alignment of all sections like
+ RISC-V.
+
+2024-01-12 Cui, Lili <lili.cui@intel.com>
+
+ x86: Fix indentation and use true/false instead of 1/0
+ gas/ChangeLog:
+
+ * config/tc-i386.c (establish_rex): Fix indentation.
+ (check_EgprOperands): Use true/false instead of 1/0.
+
+2024-01-12 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-11 Simon Marchi <simon.marchi@efficios.com>
+
+ gdb: fix frame passed to gdbarch_value_to_register in value_assign
+ Commit 78f2fd84e83 ("gdb: remove VALUE_REGNUM, add value::regnum")
+ introduced an unexpected change in value_assign. It replaced
+ `get_prev_frame_always (next_frame)` with `next_frame`in the call to
+ gdbarch_value_to_register.
+
+ This is the result of a merge error, since I previously had a patch to
+ change gdbarch_value_to_register to take the next frame, and later
+ decided to drop it. Revert that change.
+
+ Add a test based on the DWARF assembler to expose the problem and test
+ the fix. I also tested on ppc64le to make sure the problem reported in
+ PR 31231 was fixed.
+
+ Change-Id: Ib8b851287ac27a4b2e386f7b680cf65865e6aee6
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31231
+
+2024-01-11 Tom de Vries <tdevries@suse.de>
+
+ [gdb/testsuite] Fix gdb.dwarf2/dw2-entry-points.exp on ppc64le
+ On ppc64le-linux, I run into:
+ ...
+ (gdb) bt^M
+ #0 0x00000000100006dc in foobar (J=2)^M
+ #1 0x000000001000070c in prog ()^M
+ (gdb) FAIL: gdb.dwarf2/dw2-entry-points.exp: bt foo
+ ...
+
+ The test-case attemps to emulate additional entry points of a function, with
+ function bar having entry points foo and foobar:
+ ...
+ (gdb) p bar
+ $1 = {void (int, int)} 0x1000064c <bar>
+ (gdb) p foo
+ $2 = {void (int, int)} 0x10000698 <foo>
+ (gdb) p foobar
+ $3 = {void (int)} 0x100006d0 <foobar>
+ ...
+
+ However, when setting a breakpoint on the entry point foo:
+ ...
+ (gdb) b foo
+ Breakpoint 1 at 0x100006dc
+ ...
+ it ends up in foobar instead of in foo, due to prologue skipping, and
+ consequently the backtrace show foobar instead foo.
+
+ The problem is that the test-case does not emulate an actual prologue at each
+ entry point.
+
+ Fix this by disabling the prologue skipping when setting a breakpoint, using
+ "break *foo".
+
+ Tested on ppc64le-linux and x86_64-linux.
+
+ Tested-By: Guinevere Larsen <blarsen@redhat.com>
+ Approved-By: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ PR testsuite/31232
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31232
+
+2024-01-11 Tom de Vries <tdevries@suse.de>
+
+ [gdb/testsuite] Extend gdb.base/kill-during-detach.exp
+ I ran into the following FAIL:
+ ...
+ (gdb) python kill_and_detach()^M
+ Traceback (most recent call last):^M
+ File "<string>", line 1, in <module>^M
+ File "<string>", line 7, in kill_and_detach^M
+ gdb.error: Selected thread is running.^M
+ Error while executing Python code.^M
+ (gdb) FAIL: gdb.base/kill-during-detach.exp: exit_p=true: checkpoint_p=true: \
+ python kill_and_detach()
+ ...
+
+ The FAIL happens as follows:
+ - gdb is debugging a process A
+ - a checkpoint is created, in other words, fork is called in the inferior,
+ after which we have:
+ - checkpoint 0 (the fork parent, process A), and
+ - checkpoint 1 (the fork child, process B).
+ - during checkpoint creation, lseek is called in the inferior (process A) for
+ all file descriptors, and it returns != -1 for at least one file descriptor.
+ - the process A continues in the background
+ - gdb detaches, from process A
+ - gdb switches to process B, in other words, it restarts checkpoint 1
+ - while restarting checkpoint 1, gdb tries to call lseek in the inferior
+ (process B), but this fails because gdb incorrectly thinks that inferior B
+ is running.
+
+ This happens because linux_nat_switch_fork patches the pid of process B into
+ the current inferior and current thread which where originally representing
+ process A. So, because process A was running in the background, the
+ thread_info fields executing and resumed are set accordingly, but they are not
+ correct for process B.
+
+ There's a line in fork_load_infrun_state that fixes up the thread_info field
+ stop_pc, so fix this by adding similar fixups for the executing and resumed
+ fields alongside.
+
+ The FAIL did not always reproduce, so extend the test-case to reliably
+ trigger this scenario.
+
+ Tested on x86_64-linux.
+
+ Approved-By: Kevin Buettner <kevinb@redhat.com>
+
+ PR gdb/31203
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31203
+
+2024-01-11 changjiachen <changjiachen@stu.xupt.edu.cn>
+
+ LoongArch: ld: Adjusted some code order in relax.exp.
+ ld/testsuite/ChangeLog:
+
+ * ld/testsuite/ld-loongarch-elf/relax.exp: Modify test.
+
+2024-01-11 Lulu Cai <cailulu@loongson.cn>
+
+ LoongArch: Discard extra spaces in objdump output
+ Due to the formatted output of objdump, some instructions
+ that do not require output operands (such as nop/ret) will
+ have extra spaces added after them.
+
+ Determine whether to output operands through the format
+ of opcodes. When opc->format is an empty string, no extra
+ spaces are output.
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ sim: ppc: return register error when unhandled
+ We don't want to fallthru and use cooked_buf when we haven't initialized
+ it to anything. Returning 0 indicates the register wasn't recognized.
+
+ sim: m32r: enable warnings in traps.c
+ File should be clean now!
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ sim: m32r: fixup some of the int<->pointer casts
+ The m32r trap code was written for a 32-bit Linux host (and really, one
+ whose Linux ABI matched pretty exactly). This has lead to conversions
+ between integers and pointers which breaks down hard on 64-bit hosts.
+
+ Clean up some of the functions where possible to avoid unnecessary
+ conversions, use uintptr_t to cast 32-bit target pointers to host
+ pointers in some places, and just stub out a few functions that can't
+ easily be salvaged currently when sizeof(void*) is not 32-bits. This
+ is a bit ugly, but lets us enable warnings for the whole file.
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ sim: m32r: fix missing break statement
+ The ftime syscall should not fallthrough to the sync syscall.
+ Clearly the code was missing a break statement.
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ sim: m32r: migrate ftime() to clock_gettime()
+ The ftime() function has been deprecated since POSIX-1-2004, and
+ removed in POSIX.1-2008. It's also been deprecated/removed in glibc
+ since 2.33. POSIX has always said the function is not portable, and
+ its return value, timezone, and dstflag fields are unspecified. Even
+ if Linux/glibc & m32r had defined behavior, those aren't the host for
+ the sim runtime.
+
+ So let's stop using the function and switch to clock_gettime. gnulib
+ already has detection support for it, and it's been around since at
+ least POSIX-1-2004.
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ sim: m32r: cleanup unused variables
+ We've been building this file with -Wno-error, so clean up unused
+ variable warnings.
+
+ sim: igen: add printf attributes to the prototypes too
+ While gcc propagates the printf attribute via the typedef, clang
+ doesn't seem to, so add it to the prototypes themselves too. We
+ still keep it on the prototype for cases where it's used as a
+ variable.
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ gdbsupport: tighten up libiberty code a bit with dnl
+ No functional change here, just touch up generated output slightly.
+
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ sim: build: switch to gdbsupport/libiberty.m4
+ Leverage this common logic to find all the libiberty settings rather
+ than duplicate it ourselves.
+
+ sim: ppc: rework defines.h to handle HAVE symbols defined to 0
+ The HAVE_DECL_xxx defines are always defined to 0 or 1. The current
+ defines.h logic assumes every HAVE_xxx symbol is only defined iff it's
+ defined to 1 which causes this to break. Tweak the sed logic to only
+ match defines of 1.
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ gdb: libiberty: switch to AC_CHECK_DECLS_ONCE
+ Only check these decls once in case other m4 macros also look for them.
+
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-11 Mike Frysinger <vapier@gentoo.org>
+
+ gdb: move libiberty.m4 to gdbsupport
+ This is used by gdb, gdbsupport, and gdbserver. We want to use it
+ in the sim tree too. Move it to gdbsupport which is meant as the
+ common sharing space for these projects.
+
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-11 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-10 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ gprofng: add an examples directory
+ This directory contains example programs for the user to experiment with.
+ Initially there is one application written in C. The plan is to include
+ more examples, also in other langauges, over time.
+ In addition to the sources and a make file, a sample script how to make
+ a profile is included. There is also a README.md file.
+
+ gprofng/ChangeLog
+ 2024-01-08 Ruud van der Pas <ruud.vanderpas@oracle.com>
+
+ * examples: Top level directory.
+ * examples/mxv-pthreads: Example program written in C.
+
+2024-01-10 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ gprofng: 31123 improvements to hardware event implementation
+ Our hardware counter profiling is based on perf_event_open().
+ Our HWC tables are absent for new machines.
+ I have added HWC tables for the following events: PERF_TYPE_HARDWARE,
+ PERF_TYPE_SOFTWARE, PERF_TYPE_HW_CACHE. Other events require additional fixes.
+
+ Did a little cleaning: marked the symbols as static, used Stringbuilder,
+ created a function to read /proc/cpuinfo.
+
+ gprofng/ChangeLog
+ 2024-01-08 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
+
+ PR gprofng/31123
+ * common/core_pcbe.c: Mark the symbols as static. Add events_generic[].
+ * common/hwc_cpus.h: Declare a new function read_cpuinfo.
+ * common/hwcdrv.c: Add a new parameter in init_perf_event().
+ * common/hwcentry.h: Add use_perf_event_type in Hwcentry.
+ * common/hwcfuncs.c (process_data_descriptor): Read use_perf_event_type,
+ type, config.
+ * common/hwctable.c: Add a new HWC table generic_list[].
+ * common/opteron_pcbe.c (opt_pcbe_init): Accept AMD machines.
+ * src/collctrl.cc: Use StringBuilder in Coll_Ctrl::build_data_desc().
+ Add a new function read_cpuinfo.
+
+2024-01-10 Aditya Vidyadhar Kamath <Aditya.Kamath1@ibm.com>
+
+ Fix AIX catchpoint warning during fork () event
+ In AIX we were missing some hooks needed to catch a fork () event
+ in rs6000-aix-nat.c. Due to their absence we were returning 1 while we
+ insert the breakpoint/catchpoint location. This patch is a fix to the same.
+
+2024-01-10 Nick Clifton <nickc@redhat.com>
+
+ Sync top level configure and makefiles
+ This update brings in the following commits from the gcc mainline:
+
+ commit b7e5a29602143b53267efcd9c8d5ecc78cd5a62f
+ Author: Tom Tromey <tom@tromey.com>
+ Date: Tue Jan 9 06:25:26 2024 -0700
+
+ Pass GUILE down to subdirectories
+
+ When I enable cgen rebuilding in the binutils-gdb tree, the default is
+ to run cgen using 'guile'. However, on my host, guile is guile 2.2,
+ which doesn't work for me -- I have to use guile3.0.
+
+ This patch arranges to pass "GUILE" down to subdirectories, so I can
+ use 'make GUILE=guile3.0'.
+
+ commit 725fb3595622a4ad8cd078a42fab1c395cbf90cb
+ Author: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
+ Date: Wed Oct 25 13:06:48 2023 +0200
+
+ build: Add libgrust as compilation modules
+
+ Define the libgrust directory as a host compilation module as well as
+ for targets. Disable target libgrust if we're not building target
+ libstdc++.
+
+ commit 56ca59a03150cf44cea340f58967c990ed6bf43c
+ Author: Lewis Hyatt <lhyatt@gmail.com>
+ Date: Thu Nov 16 11:18:37 2023 -0500
+
+ Makefile.tpl: Avoid race condition in generating site.exp from the top level
+
+ A command like "make -j 2 check-gcc-c check-gcc-c++" run in the top level of
+ a fresh build directory does not work reliably. That will spawn two
+ independent make processes inside the "gcc" directory, and each of those
+ will attempt to create site.exp if it doesn't exist and will interfere with
+ each other, producing often a corrupted or empty site.exp. Resolve that by
+ making these targets depend on a new phony target which makes sure site.exp
+ is created first before starting the recursive makes.
+
+ commit 6a6d3817afa02bbcd2388c8e005da6faf88932f1
+ Author: Iain Sandoe <iain@sandoe.co.uk>
+ Date: Sun Mar 28 14:48:17 2021 +0100
+
+ Config,Darwin: Allow for configuring Darwin to use embedded runpath.
+
+ Recent Darwin versions place contraints on the use of run paths
+ specified in environment variables. This breaks some assumptions
+ in the GCC build.
+
+ This change allows the user to configure a Darwin build to use
+ '@rpath/libraryname.dylib' in library names and then to add an
+ embedded runpath to executables (and libraries with dependents).
+
+ The embedded runpath is added by default unless the user adds
+ '-nodefaultrpaths' to the link line.
+
+ For an installed compiler, it means that any executable built with
+ that compiler will reference the runtimes installed with the
+ compiler (equivalent to hard-coding the library path into the name
+ of the library).
+
+ During build-time configurations any "-B" entries will be added to
+ the runpath thus the newly-built libraries will be found by exes.
+
+ Since the install name is set in libtool, that decision needs to be
+ available here (but might also cause dependent ones in Makefiles,
+ so we need to export a conditional).
+
+ This facility is not available for Darwin 8 or earlier, however the
+ existing environment variable runpath does work there.
+
+ We default this on for systems where the external DYLD_LIBRARY_PATH
+ does not work and off for Darwin 8 or earlier. For systems that can
+ use either method, if the value is unset, we use the default (which
+ is currently DYLD_LIBRARY_PATH).
+
+ commit 2551e10038a70901f30b2168e6e3af4536748f3c
+ Author: Sergei Trofimovich <siarheit@google.com>
+ Date: Mon Oct 2 12:08:17 2023 +0100
+
+ Makefile.tpl: disable -Werror for feedback stage [PR111663]
+
+ Without the change profiled bootstrap fails for various warnings on
+ master branch as:
+
+ $ ../gcc/configure
+ $ make profiledbootstrap
+ ...
+ gcc/genmodes.cc: In function ‘int main(int, char**)’:
+ gcc/genmodes.cc:2152:1: error: ‘gcc/build/genmodes.gcda’ profile count data file not found [-Werror=missing-profile]
+ ...
+ gcc/gengtype-parse.cc: In function ‘void parse_error(const char*, ...)’:
+ gcc/gengtype-parse.cc:142:21: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
+
+ The change removes -Werror just like autofeedback does today.
+
+ commit d1bff1ba4d470f6723be83c0e3c4d5083e51877a
+ Author: Thomas Schwinge <thomas@codesourcery.com>
+ Date: Thu Jun 1 23:07:37 2023 +0200
+
+ Pass 'SYSROOT_CFLAGS_FOR_TARGET' down to target libraries [PR109951]
+
+ ..., where we need to use it (separate commits) for build-tree testing, similar
+ to 'gcc/Makefile.in:site.exp':
+
+ # TEST_ALWAYS_FLAGS are flags that should be passed to every compilation.
+ # They are passed first to allow individual tests to override them.
+ @echo "set TEST_ALWAYS_FLAGS \"$(SYSROOT_CFLAGS_FOR_TARGET)\"" >> ./site.tmp
+
+ PR testsuite/109951
+ * Makefile.tpl (BASE_TARGET_EXPORTS): Add
+ 'SYSROOT_CFLAGS_FOR_TARGET'.
+ * Makefile.in: Regenerate.
+
+2024-01-10 Saurabh Jha <saurabh.jha@arm.com>
+
+ gas: aarch64: Add system registers for Debug and PMU extensions
+ This patch adds support for the new AArch64 system registers that are part of the following extensions:
+ * FEAT_DEBUGv8p9
+ * FEAT_PMUv3p9
+ * FEAT_PMUv3_SS
+ * FEAT_PMUv3_ICNTR
+ * FEAT_SEBEP
+
+2024-01-10 Tom de Vries <tdevries@suse.de>
+
+ [gdb] Fix assertion failure for checkpoint delete 0
+ When doing "checkpoint delete 0" we run into an assertion failure:
+ ...
+ +delete checkpoint 0
+ inferior.c:406: internal-error: find_inferior_pid: Assertion `pid != 0' failed.
+ ...
+
+ Fix this by handling the "pptid == null_ptid" case in
+ delete_checkpoint_command.
+
+ Tested on x86_64-linux.
+
+ Approved-By: Kevin Buettner <kevinb@redhat.com>
+
+ PR gdb/31209
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31209
+
+2024-01-10 Tom de Vries <tdevries@suse.de>
+
+ [gdb] Fix info checkpoints
+ Consider test-case gdb.base/checkpoint.exp. At some point, it issues an info
+ checkpoints command:
+ ...
+ (gdb) info checkpoints^M
+ * 0 process 30570 (main process) at 0x0^M
+ 1 process 30573 at 0x4008bb, file checkpoint.c, line 49^M
+ 2 process 30574 at 0x4008bb, file checkpoint.c, line 49^M
+ 3 process 30575 at 0x4008bb, file checkpoint.c, line 49^M
+ 4 process 30576 at 0x4008bb, file checkpoint.c, line 49^M
+ 5 process 30577 at 0x4008bb, file checkpoint.c, line 49^M
+ 6 process 30578 at 0x4008bb, file checkpoint.c, line 49^M
+ 7 process 30579 at 0x4008bb, file checkpoint.c, line 49^M
+ 8 process 30580 at 0x4008bb, file checkpoint.c, line 49^M
+ 9 process 30582 at 0x4008bb, file checkpoint.c, line 49^M
+ 10 process 30583 at 0x4008bb, file checkpoint.c, line 49^M
+ ...
+
+ According to the docs, each of these (0-10) is a checkpoint.
+
+ But the pc address (as well as the file name and line number) is missing for
+ checkpoint 0.
+
+ Fix this by sampling the pc value for the current process in
+ info_checkpoints_command, such that we have instead:
+ ...
+ * 0 process 30570 (main process) at 0x4008bb, file checkpoint.c, line 49^M
+ ...
+
+ Tested on x86_64-linux.
+
+ Approved-By: Kevin Buettner <kevinb@redhat.com>
+
+ PR gdb/31211
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31211
+
+2024-01-10 Tom de Vries <tdevries@suse.de>
+
+ [gdb] Make variable printed bool in info_checkpoints_command
+ While reading info_checkpoints_command, I noticed variable printed:
+ ...
+ const fork_info *printed = NULL;
+ ...
+ for (const fork_info &fi : fork_list)
+ {
+ if (requested > 0 && fi.num != requested)
+ continue;
+
+ printed = &fi;
+ ...
+ }
+ if (printed == NULL)
+ ...
+ has pointer type, but is just used as bool.
+
+ Make this explicit by changing the variable type to bool.
+
+ Tested on x86_64-linux.
+
+ Approved-By: Kevin Buettner <kevinb@redhat.com>
+
+2024-01-10 Tom de Vries <tdevries@suse.de>
+
+ gdb/symtab: Eliminate deferred_entry
+ Currently cooked_index entry creation is either:
+ - done immediately if the parent_entry is known, or
+ - deferred if the parent_entry is not yet known, and done later while
+ resolving the deferred entries.
+
+ Instead, create all cooked_index entries immediately, and keep track of which
+ entries have a parent_entry that needs resolving later using the new
+ IS_PARENT_DEFERRED flag.
+
+ Tested on x86_64-linux.
+
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-10 Tom de Vries <tdevries@suse.de>
+
+ gdb/symtab: Make cooked_index_entry::parent_entry private
+ Make cooked_index_entry::parent_entry private, and add member functions to
+ access it.
+
+ Tested on x86_64-linux and ppc64le-linux.
+ Tested-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-10 Tom de Vries <tdevries@suse.de>
+
+ gdb/symtab: Allow changing of added cooked_index entries
+ Make cooked_index_storage::add and cooked_index_entry::add return a
+ "cooked_index_entry *" instead of a "const cooked_index_entry *".
+
+ Tested on x86_64-linux and ppc64le-linux.
+ Tested-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>
+ Approved-By: Tom Tromey <tom@tromey.com>
+
+2024-01-10 Tom Tromey <tom@tromey.com>
+
+ Fix ASAN failure in DWO code
+ Simon pointed out that my recent change to the DWO code caused a
+ failure in ASAN testing.
+
+ The bug here was I updated the code to use a different search type in
+ the hash table; but then did not change the search code to use
+ htab_find_slot_with_hash.
+
+ Note that this bug would not be possible with my type-safe hash table
+ series, hint, hint.
+
+ Approved-By: Simon Marchi <simon.marchi@efficios.com>
+
+2024-01-10 GDB Administrator <gdbadmin@sourceware.org>
+
+ Automatic date update in version.in
+
+2024-01-09 Tom Tromey <tom@tromey.com>
+
+ Fix thread-less build
+ A user pointed out that the recent background DWARF reader series
+ broke the build when --disable-threading is in use. This patch fixes
+ the problem. I am checking it in.
+
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31223
+
+2024-01-09 Tom Tromey <tom@tromey.com>
+
+ Pass GUILE down to subdirectories
+ When I enable cgen rebuilding in the binutils-gdb tree, the default is
+ to run cgen using 'guile'. However, on my host, guile is guile 2.2,
+ which doesn't work for me -- I have to use guile3.0.
+
+ This patch arranges to pass "GUILE" down to subdirectories, so I can
+ use 'make GUILE=guile3.0'.
+
+ * Makefile.in: Rebuild.
+ * Makefile.tpl (BASE_EXPORTS): Add GUILE.
+ (GUILE): New variable.
+ * Makefile.def (flags_to_pass): Add GUILE.
+
+2024-01-09 H.J. Lu <hjl.tools@gmail.com>
+
+ ld: Add --enable-mark-plt configure option
+ Add --enable-mark-plt linker configure option to mark PLT entries with
+ DT_X86_64_PLT, DT_X86_64_PLTSZ and DT_X86_64_PLTENT dynamic tags by
+ default.
+
+ * NEWS: Mention -z mark-plt/-z nomark-plt and --enable-mark-plt.
+ * config.in: Regenerated.
+ * configure: Likewise.
+ * configure.ac: Add --enable-mark-plt.
+ (DEFAULT_LD_Z_MARK_PLT): New AC_DEFINE_UNQUOTED.
+ * emulparams/x86-64-plt.sh (PARSE_AND_LIST_OPTIONS_X86_64_PLT):
+ Support DEFAULT_LD_Z_MARK_PLT.
+ * emultempl/elf-x86.em (elf_x86_64_before_parse): New function.
+ (LDEMUL_BEFORE_PARSE): New. Set to elf_x86_64_before_parse for
+ x86-64 targets.
+
+2024-01-09 H.J. Lu <hjl.tools@gmail.com>
+
+ elf: Add elf_backend_add_glibc_version_dependency
+ When -z mark-plt is used to add DT_X86_64_PLT, DT_X86_64_PLTSZ and
+ DT_X86_64_PLTENT, the r_addend field of the R_X86_64_JUMP_SLOT relocation
+ stores the offset of the indirect branch instruction. However, glibc
+ versions which don't have this commit in glibc 2.36:
+
+ commit f8587a61892cbafd98ce599131bf4f103466f084
+ Author: H.J. Lu <hjl.tools@gmail.com>
+ Date: Fri May 20 19:21:48 2022 -0700
+
+ x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT
+
+ According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT
+ and R_X86_64_JUMP_SLOT. Since linkers always set their r_addends to 0, we
+ can ignore their r_addends.
+
+ Reviewed-by: Fangrui Song <maskray@google.com>
+
+ won't ignore the r_addend value in the R_X86_64_JUMP_SLOT relocation.
+ Although this commit has been backported to glibc 2.33/2.34/2.35 release
+ branches, it is safer to require glibc 2.36 for such binaries.
+
+ Extend the glibc version dependency of GLIBC_ABI_DT_RELR for DT_RELR to
+ also add GLIBC_2.36 version dependency for -z mark-plt on the shared C
+ library if it provides a GLIBC_2.XX symbol version.
+
+ * elflink.c (elf_find_verdep_info): Moved to ...
+ * elf-bfd.h (elf_find_verdep_info): Here.
+ (elf_backend_data): Add elf_backend_add_glibc_version_dependency.
+ (_bfd_elf_link_add_glibc_version_dependency): New function.
+ (_bfd_elf_link_add_dt_relr_dependency): Likewise.
+ * elf64-x86-64.c (elf_x86_64_add_glibc_version_dependency):
+ Likewise.
+ (elf_backend_add_glibc_version_dependency): New.
+ * elflink.c (elf_link_add_dt_relr_dependency): Renamed to ...
+ (elf_link_add_glibc_verneed): This. Modified to support other
+ glibc dependencies.
+ (_bfd_elf_link_add_glibc_version_dependency): Likewise.
+ (_bfd_elf_link_add_dt_relr_dependency): Likewise.
+ (bfd_elf_size_dynamic_sections): Call
+ elf_backend_add_glibc_version_dependency instead of
+ elf_link_add_dt_relr_dependency.
+ * elfxx-target.h (elf_backend_add_glibc_version_dependency): New.
+ (elfNN_bed): Add elf_backend_add_glibc_version_dependency.
+
+ ld/
+
+ * testsuite/ld-x86-64/mark-plt-1a.rd: New file.
+ * testsuite/ld-x86-64/mark-plt-1b.rd: Likewise.
+ * testsuite/ld-x86-64/x86-64.exp: Run -z mark-plt test for
+ GLIBC_2.36 dependency.
+
+2024-01-09 H.J. Lu <hjl.tools@gmail.com>
+
+ x86: Don't check R_386_NONE nor R_X86_64_NONE
+ Update x86 ELF linker to skip R_386_NONE/R_X86_64_NONE when scanning
+ relocations.
+
+ bfd/
+
+ * PR ld/31047
+ * elf32-i386.c (elf_i386_scan_relocs): Don't check R_386_NONE.
+ * elf64-x86-64.c (elf_x86_64_scan_relocs): Don't check
+ R_X86_64_NONE.
+
+ ld/
+
+ * PR ld/31047
+ * testsuite/ld-i386/i386.exp: Run PR ld/31047 test.
+ * testsuite/ld-x86-64/x86-64.exp: Likewise.
+ * testsuite/ld-i386/pr31047.d: New file.
+ * testsuite/ld-x86-64/pr31047-x32.d: Likewise.
+ * testsuite/ld-x86-64/pr31047.d: Likewise.
+ * testsuite/ld-x86-64/pr31047a.s: Likewise.
+ * testsuite/ld-x86-64/pr31047b.s: Likewise.
+
+2024-01-09 Tom Tromey <tromey@adacore.com>
+
+ Fix two bugs in gdbserver thread name handling
+ Simon pointed out that my earlier patch to gdbserver's thread name
+ code:
+
+ commit 07b3255c3bae7126a0d679f957788560351eb236
+ Author: Tom Tromey <tom@tromey.com>
+ Date: Thu Jul 13 17:28:48 2023 -0600
+
+ Filter invalid encodings from Linux thread names
+
+ ... introduced a regression. This bug was that the iconv output was
+ not \0-terminated.
+
+ Looking at it, I found another bug as well -- replace_non_ascii would
+ not \0-terminate, and also would return the wrong pointer
+
+ This patch fixes both of them.
+
+ Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31153
+
+2024-01-09 Tom Tromey <tromey@adacore.com>
+
+ Use unrelocated_addr in dwarf2_base_index_functions::find_per_cu
+ dwarf2_base_index_functions::find_per_cu is documented as using an
+ unrelocated address. This patch changes the interface to use the
+ unrelocated_addr type, just to be a bit more type-safe.
+
+ Regression tested on x86-64 Fedora 38.
+
+2024-01-09 Jan Beulich <jbeulich@suse.com>
+
+ x86: add missing APX logic to cpu_flags_match()
+ As already indicated during review, we can't get away without certain
+ adjustments here: Without these, respective {evex}-prefixed insns are
+ assembled to APX encodings even when APX_F is turned off.
+
+ While there also extend the respective comment in the opcode table, to
+ explain why this construct is used.
+
+2024-01-09 Jan Beulich <jbeulich@suse.com>
+
+ x86: FMA insns aren't eligible to VEX2 encoding
+ PR gas/31178
+
+ In da0784f961d8 ("x86: fold FMA VEX and EVEX templates") I overlooked
+ that C aliases StaticRounding, and hence build_vex_prefix() now needs to
+ be aware of that aliasing. Disambiguation is easy, as StaticRounding is
+ only ever used together with SAE (hence why the overlaying works in the
+ first place).
+
+2024-01-09 Jan Beulich <jbeulich@suse.com>
+
+ PPC64/ELF: adjust comment wrt ABI versions
+ While having been moved a couple of times since its introduction in
+ f6c7c3e8b742 ("Referencing a function's address on PowerPC64 ELFv2"),
+ the wording has always remained the same. In particular ELFv1 and ELFv2
+ have always been the wrong way round.
+
+2024-01-09 Nick Clifton <nickc@redhat.com>
+
+ Synchronize sourceware version of the libiberty sources with the master gcc versions.
+ This brings in the following commits:
+
+ commit c73cc6fe6207b2863afa31a3be8ad87b70d3df0a
+ Author: Jakub Jelinek <jakub@redhat.com>
+ Date: Tue Dec 5 23:32:19 2023 +0100
+
+ libiberty: Fix build with GCC < 7
+
+ Tobias reported on IRC that the linker fails to build with GCC 4.8.5.
+ In configure I've tried to use everything actually used in the sha1.c
+ x86 hw implementation, but unfortunately I forgot about implicit function
+ declarations. GCC before 7 did have <cpuid.h> header and bit_SHA define
+ and __get_cpuid function defined inline, but it didn't define
+ __get_cpuid_count, which compiled fine (and the configure test is
+ intentionally compile time only) due to implicit function declaration,
+ but then failed to link when linking the linker, because
+ __get_cpuid_count wasn't defined anywhere.
+
+ The following patch fixes that by using what autoconf uses in AC_CHECK_DECL
+ to make sure the functions are declared.
+
+ commit 691858d279335eeeeed3afafdf872b1c5f8f4201
+ Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ Date: Tue Dec 5 11:04:06 2023 +0100
+
+ libiberty: Fix pex_unix_wait return type
+
+ The recent warning patches broke Solaris bootstrap:
+
+ /vol/gcc/src/hg/master/local/libiberty/pex-unix.c:326:3: error: initialization of 'pid_t (*)(struct pex_obj *, pid_t, int *, struct pex_time *, int, const char **, int *)' {aka 'long int (*)(struct pex_obj *, long int, int *, struct pex_time *, int, const char **, int *)'} from incompatible pointer type 'int (*)(struct pex_obj *, pid_t, int *, struct pex_time *, int, const char **, int *)' {aka 'int (*)(struct pex_obj *, long int, int *, struct pex_time *, int, const char **, int *)'} [-Wincompatible-pointer-types]
+ 326 | pex_unix_wait,
+ | ^~~~~~~~~~~~~
+ /vol/gcc/src/hg/master/local/libiberty/pex-unix.c:326:3: note: (near initialization for 'funcs.wait')
+
+ While pex_funcs.wait expects a function returning pid_t, pex_unix_wait
+ currently returns int. However, on Solaris pid_t is long for 32-bit,
+ but int for 64-bit.
+
+ This patches fixes this by having pex_unix_wait return pid_t as
+ expected, and like every other variant already does.
+
+ Bootstrapped without regressions on i386-pc-solaris2.11,
+ sparc-sun-solaris2.11, x86_64-pc-linux-gnu, and
+ x86_64-apple-darwin23.1.0.
+
+ commit c3f281a0c1ca50e4df5049923aa2f5d1c3c39ff6
+ Author: Jason Merrill <jason@redhat.com>
+ Date: Mon Sep 25 10:15:02 2023 +0100
+
+ c++: mangle function template constraints
+
+ Per https://github.com/itanium-cxx-abi/cxx-abi/issues/24 and
+ https://github.com/itanium-cxx-abi/cxx-abi/pull/166
+
+ We need to mangle constraints to be able to distinguish between function
+ templates that only differ in constraints. From the latter link, we want to
+ use the template parameter mangling previously specified for lambdas to also
+ make explicit the form of a template parameter where the argument is not a
+ "natural" fit for it, such as when the parameter is constrained or deduced.
+
+ I'm concerned about how the latter link changes the mangling for some C++98
+ and C++11 patterns, so I've limited template_parm_natural_p to avoid two
+ cases found by running the testsuite with -Wabi forced on:
+
+ template <class T, T V> T f() { return V; }
+ int main() { return f<int,42>(); }
+
+ template <int i> int max() { return i; }
+ template <int i, int j, int... rest> int max()
+ {
+ int sub = max<j, rest...>();
+ return i > sub ? i : sub;
+ }
+ int main() { return max<1,2,3>(); }
+
+ A third C++11 pattern is changed by this patch:
+
+ template <template <typename...> class TT, typename... Ts> TT<Ts...> f();
+ template <typename> struct A { };
+ int main() { f<A,int>(); }
+
+ I aim to resolve these with the ABI committee before GCC 14.1.
+
+ We also need to resolve https://github.com/itanium-cxx-abi/cxx-abi/issues/38
+ (mangling references to dependent template-ids where the name is fully
+ resolved) as references to concepts in std:: will consistently run into this
+ area. This is why mangle-concepts1.C only refers to concepts in the global
+ namespace so far.
+
+ The library changes are to avoid trying to mangle builtins, which fails.
+
+ Demangler support and test c[...]
[diff truncated at 100000 bytes]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-01-29 14:51 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-29 14:51 [binutils-gdb/binutils-2_42-branch] Update version number to 2.42 Nick Clifton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).