1. Jul 07, 2022
    • Simon Marchi's avatar
      gdb: fix {rs6000_nat_target,aix_thread_target}::wait to not use inferior_ptid · c0abbd96
      Simon Marchi authored
      Trying to run a simple program (empty main) on AIX, I get:
      
          (gdb) run
          Starting program: /scratch/simark/build/gdb/a.out
          Child process unexpectedly missing: There are no child processes..
          ../../src/binutils-gdb/gdb/inferior.c:304: internal-error: find_inferior_pid: Assertion `pid != 0' failed.
          A problem internal to GDB has been detected,
          further debugging may prove unreliable.
          ----- Backtrace -----
          0x10ef12a8 gdb_internal_backtrace_1()
                  ../../src/binutils-gdb/gdb/bt-utils.c:122
          0x10ef1470 gdb_internal_backtrace()
                  ../../src/binutils-gdb/gdb/bt-utils.c:168
          0x1004d368 internal_vproblem(internal_problem*, char const*, int, char const*, char*)
                  ../../src/binutils-gdb/gdb/utils.c:396
          0x1004d8a8 internal_verror(char const*, int, char const*, char*)
                  ../../src/binutils-gdb/gdb/utils.c:476
          0x1004c424 internal_error(char const*, int, char const*, ...)
                  ../../src/binutils-gdb/gdbsupport/errors.cc:55
          0x102ab344 find_inferior_pid(process_stratum_target*, int)
                  ../../src/binutils-gdb/gdb/inferior.c:304
          0x102ab4a4 find_inferior_ptid(process_stratum_target*, ptid_t)
                  ../../src/binutils-gdb/gdb/inferior.c:318
          0x1061bae8 find_thread_ptid(process_stratum_target*, ptid_t)
                  ../../src/binutils-gdb/gdb/thread.c:519
          0x10319e98 handle_inferior_event(execution_control_state*)
                  ../../src/binutils-gdb/gdb/infrun.c:5532
          0x10315544 fetch_inferior_event()
                  ../../src/binutils-gdb/gdb/infrun.c:4221
          0x10952e34 inferior_event_handler(inferior_event_type)
                  ../../src/binutils-gdb/gdb/inf-loop.c:41
          0x1032640c infrun_async_inferior_event_handler(void*)
                  ../../src/binutils-gdb/gdb/infrun.c:9548
          0x10673188 check_async_event_handlers()
                  ../../src/binutils-gdb/gdb/async-event.c:335
          0x1066fce4 gdb_do_one_event()
                  ../../src/binutils-gdb/gdbsupport/event-loop.cc:214
          0x10001a94 start_event_loop()
                  ../../src/binutils-gdb/gdb/main.c:411
          0x10001ca0 captured_command_loop()
                  ../../src/binutils-gdb/gdb/main.c:471
          0x10003d74 captured_main(void*)
                  ../../src/binutils-gdb/gdb/main.c:1329
          0x10003e48 gdb_main(captured_main_args*)
                  ../../src/binutils-gdb/gdb/main.c:1344
          0x10000744 main
                  ../../src/binutils-gdb/gdb/gdb.c:32
          ---------------------
          ../../src/binutils-gdb/gdb/inferior.c:304: internal-error: find_inferior_pid: Assertion `pid != 0' failed.
          A problem internal to GDB has been detected,
          further debugging may prove unreliable.
          Quit this debugging session? (y or n)
      
      This is due to some bit-rot in the AIX port, still relying on the entry
      value of inferior_ptid in the wait methods.
      
      Problem #1 is in rs6000_nat_target::wait, here:
      
            /* Ignore terminated detached child processes.  */
            if (!WIFSTOPPED (status) && pid != inferior_ptid.pid ())
      	pid = -1;
      
      At this point, waitpid has returned an "exited" status for some pid, so
      pid is non-zero.  Since inferior_ptid is set to null_ptid on entry, the
      pid returned by wait is not equal to `inferior_ptid.pid ()`, so we reset
      pid to -1 and go to waiting again.  Since there are not more children to
      wait for, waitpid then returns -1 so we get here:
      
            if (pid == -1)
      	{
      	  gdb_printf (gdb_stderr,
      		      _("Child process unexpectedly missing: %s.\n"),
      		      safe_strerror (save_errno));
      
      	  /* Claim it exited with unknown signal.  */
      	  ourstatus->set_signalled (GDB_SIGNAL_UNKNOWN);
      	  return inferior_ptid;
      	}
      
      We therefore return a "signalled" status with a null_ptid (again,
      inferior_ptid is null_ptid).  This confuses infrun, because if the
      target returns a "signalled" status, it should be coupled with a ptid
      for an inferior that exists.
      
      So, the first step is to fix the snippets above to not use
      inferior_ptid.  In the first snippet, use find_inferior_pid to see if
      we know the event process.  If there is no inferior with that pid, we
      assume it's a detached child process to we ignore the event.  That
      should be enough to fix the problem, because it should make it so we
      won't go into the second snippet.  But still, fix the second snippet to
      return an "ignore" status.  This is copied from inf_ptrace_target::wait,
      which is where rs6000_nat_target::wait appears to be copied from in the
      first place.
      
      These changes, are not sufficient, as the aix_thread_target, which sits
      on top of rs6000_nat_target, also relies on inferior_ptid.
      aix_thread_target::wait, by calling pd_update, assumes that
      rs6000_nat_target has set inferior_ptid to the appropriate value (the
      ptid of the event thread), but that's not the case.  pd_update
      returns inferior_ptid - null_ptid - and therefore
      aix_thread_target::wait returns null_ptid too, and we still hit the
      assert shown above.
      
      Fix this by changing pd_activate, pd_update, sync_threadlists and
      get_signaled_thread to all avoid using inferior_ptid.  Instead, they
      accept as a parameter the pid of the process we are working on.
      
      With this patch, I am able to run the program to completion:
      
          (gdb) r
          Starting program: /scratch/simark/build/gdb/a.out
          [Inferior 1 (process 11010794) exited normally]
      
      As well as break on main:
      
          (gdb) b main
          Breakpoint 1 at 0x1000036c
          (gdb) r
          Starting program: /scratch/simark/build/gdb/a.out
      
          Breakpoint 1, 0x1000036c in main ()
          (gdb) c
          Continuing.
          [Inferior 1 (process 26083688) exited normally]
      
      Change-Id: I7c2613bbefe487d75fa1a0c0994423471d961ee9
      c0abbd96
    • Pedro Alves's avatar
      Fix pedantically invalid DWARF in gdb.trace/unavailable-dwarf-piece.exp · a2a176c4
      Pedro Alves authored
      The DWARF spec says:
      
        Any debugging information entry representing the declaration of an object,
        module, subprogram or type may have DW_AT_decl_file, DW_AT_decl_line and
        DW_AT_decl_column attributes, each of whose value is an unsigned integer
      							  ^^^^^^^^
        constant.
      
      Grepping around the DWARF-assembler-based testcases, I noticed that
      gdb.trace/unavailable-dwarf-piece.exp emits decl_line with
      DW_FORM_sdata, a signed integer form.  This commit tweaks it to use
      DW_FORM_udata instead.
      
      Unsurprisingly, this:
      
        $ make check \
            TESTS="gdb.trace/unavailable-dwarf-piece.exp" \
            RUNTESTFLAGS="--target_board=native-gdbserver"
      
      ... still passes cleanly for me after this change.
      
      I've noticed this because current llvm-dwarfdump crashed on an
      ROCm-internal DWARF-assembler-based testcase that incorrectly used
      signed forms for DW_AT_decl_file/DW_AT_decl_line.
      
      The older llvm-dwarfdump found on Ubuntu 20.04 (LLVM 10) reads the
      line numbers with signed forms as "0" instead of crashing.  Here's the
      before/after fix for gdb.trace/unavailable-dwarf-piece.exp with that
      llvm-dwarfdump version:
      
        $ diff -up before.txt after.txt
        --- before.txt    2022-07-07 13:21:28.387690334 +0100
        +++ after.txt     2022-07-07 13:21:39.379801092 +0100
        @@ -18,7 +18,7 @@
      		   DW_AT_name     ("s")
      		   DW_AT_byte_size        (3)
      		   DW_AT_decl_file        (0)
        -                DW_AT_decl_line        (0)
        +                DW_AT_decl_line        (1)
      
         0x0000002f:     DW_TAG_member
      		     DW_AT_name   ("a")
        @@ -41,7 +41,7 @@
      		   DW_AT_name     ("t")
      		   DW_AT_byte_size        (3)
      		   DW_AT_decl_file        (0)
        -                DW_AT_decl_line        (0)
        +                DW_AT_decl_line        (1)
      
         0x00000054:     DW_TAG_member
      		     DW_AT_name   ("a")
      
      Change-Id: I5c866946356da421ff944019d0eca2607b2b738f
      a2a176c4
    • Tiezhu Yang's avatar
      gdb: LoongArch: Fix typos in code comments · 83f477f2
      Tiezhu Yang authored
      
      
      "it’s" should be "it's".
      
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      83f477f2
    • Maciej W. Rozycki's avatar
      GDB/testsuite: Add coverage for `print -elements' command · 309e147f
      Maciej W. Rozycki authored
      We currently have no coverage for the `print -elements ...' command (or
      `p -elements ...' in the shortened form), so add a couple of test cases
      mimicking ones using corresponding `set print elements ...' values.
      309e147f
    • Tiezhu Yang's avatar
      gdb: LoongArch: Implement the push_dummy_call gdbarch method · 88de5835
      Tiezhu Yang authored
      According to "Procedure Calling Convention" in "LoongArch ELF ABI
      specification" [1], implement the push_dummy_call gdbarch method
      as clear as possible.
      
      [1] https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_procedure_calling_convention
      
      
      
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      88de5835
    • Tsukasa OI's avatar
      RISC-V: Added Zfhmin and Zhinxmin. · 045f385d
      Tsukasa OI authored
      This commit adds Zfhmin and Zhinxmin extensions (subsets of Zfh and
      Zhinx extensions, respectively).  In the process supporting Zfhmin and
      Zhinxmin extension, this commit also changes how instructions are
      categorized considering Zfhmin, Zhinx and Zhinxmin extensions.
      
      Detailed changes,
      
      * From INSN_CLASS_ZFH to INSN_CLASS_ZFHMIN:
      
      flh, fsh, fmv.x.h and fmv.h.x.
      
      * From INSN_CLASS_ZFH to INSN_CLASS_ZFH_OR_ZHINX:
      
      fmv.h.
      
      * From INSN_CLASS_ZFH_OR_ZHINX to INSN_CLASS_ZFH_OR_ZHINX:
      
      fneg.h, fabs.h, fsgnj.h, fsgnjn.h, fsgnjx.h,
      fadd.h, fsub.h, fmul.h, fdiv.h, fsqrt.h, fmin.h, fmax.h,
      fmadd.h, fnmadd.h, fmsub.h, fnmsub.h,
      fcvt.w.h, fcvt.wu.h, fcvt.h.w, fcvt.h.wu,
      fcvt.l.h, fcvt.lu.h, fcvt.h.l, fcvt.h.lu,
      feq.h, flt.h, fle.h, fgt.h, fge.h,
      fclass.h.
      
      * From INSN_CLASS_ZFH_OR_ZHINX to INSN_CLASS_ZFHMIN_OR_ZHINXMIN:
      
      fcvt.s.h and fcvt.h.s.
      
      * From INSN_CLASS_D_AND_ZFH_INX to INSN_CLASS_ZFHMIN_AND_D:
      
      fcvt.d.h and fcvt.h.d.
      
      * From INSN_CLASS_Q_AND_ZFH_INX to INSN_CLASS_ZFHMIN_AND_Q:
      
      fcvt.q.h and fcvt.h.q.
      
      bfd/ChangeLog:
      
      	* elfxx-riscv.c (riscv_implicit_subsets): Change implicit
      	subsets.  Zfh->Zicsr is not needed and Zfh->F is replaced with
      	Zfh->Zfhmin and Zfhmin->F.  Zhinx->Zicsr is not needed and
      	Zhinx->Zfinx is replaced with Zhinx->Zhinxmin and
      	Zhinxmin->Zfinx.
      	(riscv_supported_std_z_ext): Added zfhmin and zhinxmin.
      	(riscv_multi_subset_supports):  Rewrite handling for new
      	instruction classes.
      	(riscv_multi_subset_supports_ext): Updated.
      	(riscv_parse_check_conflicts): Change error message to include
      	zfh and zfhmin extensions.
      
      gas/ChangeLog:
      
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail.s: New complex
      	error handling test.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-1.d: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-1.l: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-2.d: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-2.l: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-3.d: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-3.l: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-4.d: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-4.l: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-5.d: Likewise.
      	* testsuite/gas/riscv/zfhmin-d-insn-class-fail-5.l: Likewise.
      	* testsuite/gas/riscv/zhinx.d: Renamed from fp-zhinx-insns.d
      	and refactored.
      	* testsuite/gas/riscv/zhinx.s: Likewise.
      
      include/ChangeLog:
      
      	* opcode/riscv.h (enum riscv_insn_class): Removed INSN_CLASS_ZFH,
      	INSN_CLASS_D_AND_ZFH_INX and INSN_CLASS_Q_AND_ZFH_INX.  Added
      	INSN_CLASS_ZFHMIN, INSN_CLASS_ZFHMIN_OR_ZHINXMIN,
      	INSN_CLASS_ZFHMIN_AND_D and INSN_CLASS_ZFHMIN_AND_Q.
      
      opcodes/ChangeLog:
      
      	* riscv-opc.c (riscv_opcodes): Change instruction classes for
      	Zfh and Zfhmin instructions.  Fix `fcvt.h.lu' instruction
      	(two operand variant) mask.
      045f385d
    • Vladimir Mezentsev's avatar
      gprofng: adjust GPROFNG_VARIANT · 1bb1f55d
      Vladimir Mezentsev authored
      GPROFNG_VARIANT depends on compiler options, not on $(host).
      
      gprofng/ChangeLog
      2022-07-06  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
      
      	PR gprofng/29116
      	* libcollector/configure.ac: Adjust GPROFNG_VARIANT.
      	* libcollector/configure: Rebuild.
      1bb1f55d
    • Tsukasa OI's avatar
      RISC-V: Fix disassembling Zfinx with -M numeric · 3d5d6bd5
      Tsukasa OI authored
      This commit fixes floating point operand register names from ABI ones
      to dynamically set ones.
      
      gas/ChangeLog:
      
      	* testsuite/gas/riscv/zfinx-dis-numeric.s: Test new behavior of
      	Zfinx extension and -M numeric disassembler option.
      	* testsuite/gas/riscv/zfinx-dis-numeric.d: Likewise.
      
      opcodes/ChangeLog:
      
      	* riscv-dis.c (riscv_disassemble_insn): Use dynamically set GPR
      	names to disassemble Zfinx instructions.
      3d5d6bd5
    • Tsukasa OI's avatar
      RISC-V: Fix requirement handling on Zhinx+{D,Q} · 37cf60c6
      Tsukasa OI authored
      This commit fixes how instructions are masked on Zhinx+Z{d,q}inx.
      fcvt.h.d and fcvt.d.h require ((D&&Zfh)||(Zdinx&&Zhinx)) and
      fcvt.h.q and fcvt.q.h require ((Q&&Zfh)||(Zqinx&&Zhinx)).
      
      bfd/ChangeLog:
      
      	* elfxx-riscv.c (riscv_multi_subset_supports): Fix feature gate
      	on INSN_CLASS_{D,Q}_AND_ZFH_INX.
      	(riscv_multi_subset_supports_ext): Fix feature gate diagnostics
      	on INSN_CLASS_{D,Q}_AND_ZFH_INX.
      
      gas/ChangeLog:
      
      	* testsuite/gas/riscv/fp-zhinx-insns.d: Add Zqinx to -march
      	for proper testing.
      37cf60c6
    • Alan Modra's avatar
      PR29320, 'struct obstack' declared inside parameter list · 9b5ebf65
      Alan Modra authored
      	PR 29320
      	* frags.h: Move declaration of struct obstack..
      	* as.h: ..to here.
      9b5ebf65
    • GDB Administrator's avatar
      Automatic date update in version.in · 2025522a
      GDB Administrator authored
      2025522a
    • Ruud van der Pas's avatar
      gprofng: implement a functional gp-display-html · 41bbac64
      Ruud van der Pas authored
      This patch enables the first support for the "gprofng display html" command.
      This command works for C/C++ applications on x86_64. Using one or more gprofng
      experiment directories as input, a new directory with html files is created.
      Through the index.html file in this directory, the performance results may be
      viewed in a browser.
      
      gprofng/Changelog:
      2022-06-28  Ruud van der Pas  <ruud.vanderpas@oracle.com>
      
      	* gp-display-html/gp-display-html.in: implement first support for x86_64 and C/C++
      41bbac64
    • H.J. Lu's avatar
      elf: Copy p_align of PT_GNU_STACK for stack alignment · fb5a4a58
      H.J. Lu authored
      commit 74e315db
      Author: H.J. Lu <hjl.tools@gmail.com>
      Date:   Mon Dec 13 19:46:04 2021 -0800
      
          elf: Set p_align to the minimum page size if possible
      
      may ignore p_align of PT_GNU_STACK when copying ELF program header if
      the maximum page size is larger than p_align of PT_LOAD segments.  Copy
      p_align of PT_GNU_STACK since p_align of PT_GNU_STACK describes stack
      alignment, not page size,
      
      	PR binutils/29319
      	* elf.c (copy_elf_program_header): Copy p_align of PT_GNU_STACK
      	for stack alignment.
      fb5a4a58
  2. Jul 06, 2022
    • Jan Beulich's avatar
      x86: make D attribute usable for XOP and FMA4 insns · 8bd915b7
      Jan Beulich authored
      This once again allows to reduce redundancy in (and size of) the opcode
      table.
      
      Don't go as far as also making D work on the two 5-operand XOP insns:
      This would significantly complicate the code, as there the first
      (immediate) operand would need special treatment in several places.
      
      Note that the .s suffix isn't being enabled to have any effect, for
      being deprecated. Whereas neither {load} nor {store} pseudo prefixes
      make sense here, as the respective operands are inputs (loads) only
      anyway, regardless of order. Hence there is (as before) no way for the
      programmer to request the alternative encoding to be used for register-
      only insns.
      
      Note further that it is always the first original template which is
      retained (and altered), to make sure the same encoding as before is
      used for register-only insns. This has the slightly odd (but pre-
      existing) effect of XOP register-only insns having XOP.W clear, but FMA4
      ones having VEX.W set.
      8bd915b7
    • Jan Beulich's avatar
      x86: fold two switch() statements in match_template() · 3d0738af
      Jan Beulich authored
      I don't see why two of them were introduced (very long ago) using
      similar fall-through logic.
      3d0738af
    • Jan Beulich's avatar
      x86: fix 3-operand insn reverse-matching · c975cec5
      Jan Beulich authored
      The middle operand would have gone entirely unchecked, allowing e.g.
      
      	vmovss		%xmm0, %esp, %xmm2
      
      to assemble successfully, or e.g.
      
      	vmovss		%xmm0, $4, %xmm2
      
      causing an internal error. Alongside dealing with this also drop a
      related comment, which hasn't been applicable anymore since the
      introduction of 3-operand patterns with D set (and which perhaps never
      had been logical to be there, as reverse-matched insns don't make it
      there in the first place).
      c975cec5
    • Bhuvanendra Kumar N's avatar
      Descriptive DWARF operations dump support for DW_AT_rank · ad349f24
      Bhuvanendra Kumar N authored
      DW_AT_rank is a dwarf-5 feature.
      ad349f24
    • Jan Beulich's avatar
      x86: introduce a state stack for .arch · f68697e8
      Jan Beulich authored
      When using just slightly non-trivial combinations of .arch, it can be
      quite useful to be able to go back to prior state without needing to
      re-invoke perhaps many earlier directives and without needing to invoke
      perhaps many "negative" ones. Like some other architectures allow
      saving (pushing) and restoring (popping) present/prior state.
      
      For now require the same .code<N> to be in effect for ".arch pop" that
      was in effect for the corresponding ".arch push".
      
      Also change the global "no_cond_jump_promotion" to be bool, to match the
      new struct field.
      f68697e8
    • Jan Beulich's avatar
      x86: generalize disabling of sub-architectures · ae89daec
      Jan Beulich authored
      I never really understood upon what basis ".arch .no*" options were made
      available. Let's not have any "criteria" at all, and simply allow
      disabling of all of them. Then we also have all data for a sub-arch in
      a single place, as we now only need a single table.
      ae89daec
    • Jan Beulich's avatar
      x86: permit "default" with .arch · 3ce2ebcf
      Jan Beulich authored
      So far there was no way to reset the architecture to that assembly would
      start with in the absence of any overrides (command line or directives).
      Note that for Intel MCU "default" is merely an alias of "iamcu".
      
      While there also zap a stray @item from the doc section, as noticed
      when inspecting the generated output (which still has some quirks, but
      those aren't easy to address without re-flowing almost the entire
      section).
      3ce2ebcf
    • Jan Beulich's avatar
      x86: don't leak sub-architecture accumulated strings · d92c7521
      Jan Beulich authored
      While it may not be necessary in i386_target_format() (but then setting
      the variable to NULL also wouldn't be necessary), at least in the other
      cases strings may already have accumulated.
      d92c7521
    • GDB Administrator's avatar
      Automatic date update in version.in · 8df97668
      GDB Administrator authored
      8df97668
    • Tom de Vries's avatar
      [gdb/exp] Fix internal error when printing C++ pointer-to-member · 22f8e2e7
      Tom de Vries authored
      When running the test-case included with this patch, we run into:
      ...
      (gdb) print ptm^M
      $1 = gdb/gdbtypes.h:695: internal-error: loc_bitpos: \
        Assertion `m_loc_kind == FIELD_LOC_KIND_BITPOS' failed.^M
      ...
      while printing a c++ pointer-to-member.
      
      Fix this by skipping static fields in cp_find_class_member, such that we have:
      ...
      (gdb) print ptm^M
      $1 = &A::i^M
      ...
      
      Tested on x86_64-linux.
      
      Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29294
      22f8e2e7
    • Tom Tromey's avatar
      Add gdb.Objfile.is_file attribute · 99298c95
      Tom Tromey authored
      Sometimes an objfile comes from memory and not from a file.  It can be
      useful to be able to check this from Python, so this patch adds a new
      "is_file" attribute.
      
      99298c95
    • Tom Tromey's avatar
      Make 'import gdb.events' work · 3acd9a69
      Tom Tromey authored
      Pierre-Marie noticed that, while gdb.events is a Python module, it
      can't be imported.  This patch changes how this module is created, so
      that it can be imported, while also ensuring that the module is always
      visible, just as it was in the past.
      
      This new approach required one non-obvious change -- when running
      gdb.base/warning.exp, where --data-directory is intentionally not
      found, the event registries can now be nullptr.  Consequently, this
      patch probably also requires
      
          https://sourceware.org/pipermail/gdb-patches/2022-June/189796.html
      
      Note that this patch obsoletes
      
          https://sourceware.org/pipermail/gdb-patches/2022-June/189797.html
      
      3acd9a69
  3. Jul 05, 2022
    • Xi Ruoyao's avatar
      gdb: LoongArch: add orig_a0 into register set · 73691823
      Xi Ruoyao authored
      The basic support for LoongArch has been merged into the upstream Linux
      kernel since 5.19-rc1 on June 5, 2022.  This commit adds orig_a0 which
      is added into struct user_pt_regs [1] to match the upstream kernel, and
      then the upstream GDB will work with the upstream kernel.
      
      Note that orig_a0 was added into struct user_pt_regs in the development
      cycle for merging LoongArch port into the upstream Linux kernel, so
      earlier kernels (notably, the product kernel with version 4.19 used in
      distros like UOS and Loongnix) don't have it.  Inspect
      arch/loongarch/include/uapi/asm/ptrace.h in the kernel tree to make sure.
      To build upstream GDB for a kernel lacking orig_a0, it's necessary to
      revert this commit locally.
      
      [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/loongarch/include/uapi/asm/ptrace.h#n24
      
      
      
      Signed-off-by: default avatarXi Ruoyao <xry111@xry111.site>
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      73691823
    • Bhuvanendra Kumar N's avatar
      Support for location and range lists for split-dwarf and dwarf-5. · 4694a0e5
      Bhuvanendra Kumar N authored
      Adding support for location and range lists for split-dwarf and dwarf-5.
      Following issues are taken care.
      1. Display of the index values for DW_FORM_loclistx and DW_FORM_rnglistx.
      2. Display of .debug_loclists.dwo and .debug_rnglists.dwo sections.
      
              * dwarf.c(read_and_display_attr_value): Handle DW_FORM_loclistx
              and DW_FORM_rnglistx for .dwo files.
              (process_debug_info): Load .debug_loclists.dwo and
              .debug_rnglists.dwo if exists.
              (load_separate_debug_files): Load .debug_loclists and
              .debug_rnglists if exists.
              Include 2 entries in debug_displays table.
              * dwarf.h (enum dwarf_section_display_enum): Include 2 entries.
      4694a0e5
    • Jan Beulich's avatar
      x86: introduce fake processor type to mark sub-arch entries in cpu_arch[] · c368d2a8
      Jan Beulich authored
      This is in preparation of dropping the leading . from the strings.
      
      While there also move PROCESSOR_GENERIC{32,64} from the middle of AMD
      entries to near the top.
      c368d2a8
    • Jan Beulich's avatar
      x86: macro-ize cpu_arch[] entries · 6ceeed25
      Jan Beulich authored
      Putting individual elements behind macros, besides (imo) improving
      readability, will make subsequent (and likely also future) changes less
      intrusive.
      
      Utilize this right away to pack the table a little more tightly, by
      converting "skip" to bool and putting it earlier in a group of bitfields
      together with "len".
      6ceeed25
    • Jan Beulich's avatar
      x86: de-duplicate sub-architecture strings accumulation · 8180707f
      Jan Beulich authored
      Introduce a helper function to replace 4 instances of similar code. Use
      reconcat() to cover the previously explicit free().
      8180707f
    • GDB Administrator's avatar
      Automatic date update in version.in · 10e52570
      GDB Administrator authored
      10e52570
  4. Jul 04, 2022
    • Nick Clifton's avatar
      96c33f79
    • Alan Modra's avatar
      alloc gas seginfo on notes obstack · eeeaf705
      Alan Modra authored
      Lots of memory used in gas should go on this obstack.  The patch also
      frees all the gas obstacks on exit, which isn't a completely trivial
      task.
      
      	* subsegs.c (alloc_seginfo): New function.
      	(subseg_change, subseg_get): Use it.
      	(subsegs_end): New function.
      	* as.h (subsegs_end): Declare.
      	* output-file.c: Include subsegs.h
      	(stash_frchain_obs): New function.
      	(output_file_close): Save obstacks attached to output bfd before
      	closing.  Call subsegs_end with the array of obstacks.
      eeeaf705
    • Alan Modra's avatar
      objcopy: bfd_alloc orelocation · 0772dacc
      Alan Modra authored
      This fixes an inconsequential objcopy memory leak.  I'd normally
      ignore reports of leaks like this one, that are merely one block or
      fewer per section processed, since objcopy soon exits and frees all
      memory.  However I thought it worth providing support for allocating
      memory on a bfd objalloc in objcopy and other utils.
      
      	PR 29233
      	* bucomm.c (bfd_xalloc): New function.
      	* bucomm.h (bfd_xalloc): Declare.
      	* objcopy.c (copy_relocations_in_section): Use it to allocate
      	array of reloc pointers.  Rewrite code stripping relocs to do
      	without extra memory allocation.
      0772dacc
    • Nick Clifton's avatar
      Synchronize libbierty sources with gcc. · d8efadbd
      Nick Clifton authored
      d8efadbd
    • Bhuvanendra Kumar N's avatar
      Modified changes for split-dwarf and dwarf-5. · 40711542
      Bhuvanendra Kumar N authored
              * dwarf.c(process_debug_info): Include DW_TAG_skeleton_unit.
              (display_debug_str_offsets): While dumping .debug_str_offsets.dwo,
              pass proper str_offsets_base to fetch_indexed_string().
              (load_separate_debug_files): Skip DWO ID dump for dwarf-5.
      40711542
    • Marcus Nilsson's avatar
      opcodes/avr: Implement style support in the disassembler · a0f3a4c6
      Marcus Nilsson authored
      	* disassemble.c: (disassemble_init_for_target): Set
      	created_styled_output for AVR based targets.
      	* avr-dis.c: (print_insn_avr): Use fprintf_styled_ftype
      	instead of fprintf_ftype throughout.
      	(avr_operand): Pass in and fill disassembler_style when
      	parsing operands.
      a0f3a4c6
    • Tom de Vries's avatar
      [gdb/symtab] Add get/set functions for per_cu->lang/unit_type · 2c474c46
      Tom de Vries authored
      The dwarf2_per_cu_data fields lang and unit_type both have a dont-know
      initial value (respectively language_unknown and (dwarf_unit_type)0), which
      allows us to add certain checks, f.i. checking that that a field is not read
      before written.
      
      Add get/set member functions for the two fields as a convenient location to
      add such checks, make the fields private to enforce using the member
      functions, and add the m_ prefix.
      
      Tested on x86_64-linux.
      2c474c46
    • Jan Beulich's avatar
      gas/testsuite: properly exclude aout in all/weakref1u · 58098fd7
      Jan Beulich authored
      Use the (wider) predicate rather than a triplet. This eliminates the sole
      i386-msdos failure in the testsuite.
      58098fd7
    • Jan Beulich's avatar
      x86: fold Disp32S and Disp32 · a775efc8
      Jan Beulich authored
      The only case where 64-bit code uses non-sign-extended (can also be
      considered zero-extended) displacements is when an address size override
      is in place for a memory operand (i.e. particularly excluding
      displacements of direct branches, which - if at all - are controlled by
      operand size, and then are still sign-extended, just from 16 bits).
      Hence the distinction in templates is unnecessary, allowing code to be
      simplified in a number of places. The only place where logic becomes
      more complicated is when signed-ness of relocations is determined in
      output_disp().
      
      The other caveat is that Disp64 cannot be specified anymore in an insn
      template at the same time as Disp32. Unlike for non-64-bit mode,
      templates don't specify displacements for both possible addressing
      modes; the necessary adjustment to the expected ones has already been
      done in match_template() anyway (but of course the logic there needs
      tweaking now). Hence the single template so far doing so is split.
      a775efc8