1. Jan 05, 2021
    • Mike Frysinger's avatar
      sim: common: add a version output helper w/copyright+license info · 19b1c385
      Mike Frysinger authored
      This mirrors the existing sim_print_help function, and the behavior
      of all other GNU tools with their --version.
      19b1c385
    • Mike Frysinger's avatar
      sim: common: rename sim_print_config · dbed468b
      Mike Frysinger authored
      print_sim_config has never been used anywhere, so rename it to follow
      the sim_* naming style for all other symbols we export.
      dbed468b
    • H.J. Lu's avatar
      elf: Allow mixed ordered/unordered inputs for non-relocatable link · cd6d537c
      H.J. Lu authored
      For non-relocatable link with SHF_LINK_ORDER inputs, allow mixed indirect
      and data inputs with ordered and unordered inputs:
      
      1. Add pattern to bfd_section for the matching section name pattern in
      linker script and update BFD_FAKE_SECTION.
      2. Sort the consecutive bfd_indirect_link_order sections with the same
      pattern to allow linker script to overdide input section order.
      3. Place unordered sections before ordered sections.
      4. Change the offsets of the indirect input sections only.
      
      bfd/
      
      	PR ld/26256
      	* elflink.c (compare_link_order): Place unordered sections before
      	ordered sections.
      	(elf_fixup_link_order): Add a link info argument.  Allow mixed
      	ordered and unordered input sections for non-relocatable link.
      	Sort the consecutive bfd_indirect_link_order sections with the
      	same pattern.  Change the offsets of the bfd_indirect_link_order
      	sections only.
      	(bfd_elf_final_link): Pass info to elf_fixup_link_order.
      	* section.c (bfd_section): Add pattern.
      	(BFD_FAKE_SECTION): Initialize pattern to NULL.
      	* bfd-in2.h: Regenerated.
      
      gas/
      
      	PR ld/26256
      	* config/obj-elf.c (obj_elf_change_section): Also filter out
      	SHF_LINK_ORDER.
      
      ld/
      
      	PR ld/26256
      	* ldlang.c (gc_section_callback): Set pattern.
      	* testsuite/ld-elf/pr26256-1.s: New file.
      	* testsuite/ld-elf/pr26256-1.t: Likewise.
      	* testsuite/ld-elf/pr26256-1a.d: Likewise.
      	* testsuite/ld-elf/pr26256-1b.d: Likewise.
      	* testsuite/ld-elf/pr26256-2.s: Likewise.
      	* testsuite/ld-elf/pr26256-2.t: Likewise.
      	* testsuite/ld-elf/pr26256-2a.d: Likewise.
      	* testsuite/ld-elf/pr26256-2b-alt.d: Likewise.
      	* testsuite/ld-elf/pr26256-2b.d: Likewise.
      	* testsuite/ld-elf/pr26256-3.s: Likewise.
      	* testsuite/ld-elf/pr26256-3a.d: Likewise.
      	* testsuite/ld-elf/pr26256-3a.t: Likewise.
      	* testsuite/ld-elf/pr26256-3b.d: Likewise.
      	* testsuite/ld-elf/pr26256-3b.t: Likewise.
      cd6d537c
    • Tom de Vries's avatar
      [gdb/symtab] Remove superfluous end-of-sequence marker · e4ad960a
      Tom de Vries authored
      While working on PR26935 I noticed that when running test-case
      gdb.base/morestack.exp with target board unix/-m32/-fPIE/-pie and ld linker,
      I get this linetable fragment for morestack.S using readelf -wL:
      ...
      CU: ../../../../libgcc/config/i386/morestack.S:
      Line number    Starting address    View    Stmt
      109               0xc9c               x
        ...
      838               0xe03               x
        -               0xe04
      
      636                   0               x
      637                 0x3               x
        -                 0x4
      ...
      but with "maint info line-table" I get:
      ...
      INDEX  LINE   ADDRESS            IS-STMT
      0      END    0x00000004         Y
      1      109    0x00000c9c         Y
        ...
      110    838    0x00000e03         Y
      111    END    0x00000e04         Y
      ...
      
      So, apparently the entries with addresses 0x0 and 0x3 are filtered out
      because the addresses are out of range, but the same doesn't happen with the
      end-of-seq terminator.
      
      Fix this by filtering out end-of-seq terminators that do not actually
      terminate anything.
      
      Tested on x86_64-linux.
      
      gdb/ChangeLog:
      
      2021-01-04  Tom de Vries  <tdevries@suse.de>
      
      	* buildsym.c (buildsym_compunit::record_line): Filter out end-of-seq
      	terminators that do not terminate anything.
      
      gdb/testsuite/ChangeLog:
      
      2021-01-04  Tom de Vries  <tdevries@suse.de>
      
      	* gdb.dwarf2/dw2-out-of-range-end-of-seq.exp: New file.
      e4ad960a
    • Simon Marchi's avatar
      gdb: introduce scoped debug prints · 3ec3145c
      Simon Marchi authored
      I spent a lot of time reading infrun debug logs recently, and I think
      they could be made much more readable by being indented, to clearly see
      what operation is done as part of what other operation.  In the current
      format, there are no visual cues to tell where things start and end,
      it's just a big flat list.  It's also difficult to understand what
      caused a given operation (e.g. a call to resume_1) to be done.
      
      To help with this, I propose to add the new scoped_debug_start_end
      structure, along with a bunch of macros to make it convenient to use.
      
      The idea of scoped_debug_start_end is simply to print a start and end
      message at construction and destruction.  It also increments/decrements
      a depth counter in order to make debug statements printed during this
      range use some indentation.  Some care is taken to handle the fact that
      debug can be turned on or off in the middle of such a range.  For
      example, a "set debug foo 1" command in a breakpoint command, or a
      superior GDB manually changing the debug_foo variable.
      
      Two macros are added in gdbsupport/common-debug.h, which are helpers to
      define module-specific macros:
      
        - scoped_debug_start_end: takes a message that is printed both at
          construction / destruction, with "start: " and "end: " prefixes.
        - scoped_debug_enter_exit: prints hard-coded "enter" and "exit"
          messages, to denote the entry and exit of a function.
      
      I added some examples in the infrun module to give an idea of how it can
      be used and what the result looks like.  The macros are in capital
      letters (INFRUN_SCOPED_DEBUG_START_END and
      INFRUN_SCOPED_DEBUG_ENTER_EXIT) to mimic the existing SCOPE_EXIT, but
      that can be changed if you prefer something else.
      
      Here's an excerpt of the debug
      statements printed when doing "continue", where a displaced step is
      started:
      
          [infrun] proceed: enter
            [infrun] proceed: addr=0xffffffffffffffff, signal=GDB_SIGNAL_DEFAULT
            [infrun] global_thread_step_over_chain_enqueue: enqueueing thread Thread 0x7ffff75a5640 (LWP 2289301) in global step over chain
            [infrun] start_step_over: enter
              [infrun] start_step_over: stealing global queue of threads to step, length = 1
              [infrun] start_step_over: resuming [Thread 0x7ffff75a5640 (LWP 2289301)] for step-over
              [infrun] resume_1: step=1, signal=GDB_SIGNAL_0, trap_expected=1, current thread [Thread 0x7ffff75a5640 (LWP 2289301)] at 0x5555555551bd
              [displaced] displaced_step_prepare_throw: displaced-stepping Thread 0x7ffff75a5640 (LWP 2289301) now
              [displaced] prepare: selected buffer at 0x5555555550c2
              [displaced] prepare: saved 0x5555555550c2: 1e fa 31 ed 49 89 d1 5e 48 89 e2 48 83 e4 f0 50
              [displaced] amd64_displaced_step_copy_insn: copy 0x5555555551bd->0x5555555550c2: c7 45 fc 00 00 00 00 eb 13 8b 05 d4 2e 00 00 83
              [displaced] displaced_step_prepare_throw: prepared successfully thread=Thread 0x7ffff75a5640 (LWP 2289301), original_pc=0x5555555551bd, displaced_pc=0x5555555550c2
              [displaced] resume_1: run 0x5555555550c2: c7 45 fc 00
              [infrun] infrun_async: enable=1
              [infrun] prepare_to_wait: prepare_to_wait
              [infrun] start_step_over: [Thread 0x7ffff75a5640 (LWP 2289301)] was resumed.
              [infrun] operator(): step-over queue now empty
            [infrun] start_step_over: exit
            [infrun] proceed: start: resuming threads, all-stop-on-top-of-non-stop
              [infrun] proceed: resuming Thread 0x7ffff7da7740 (LWP 2289296)
              [infrun] resume_1: step=0, signal=GDB_SIGNAL_0, trap_expected=0, current thread [Thread 0x7ffff7da7740 (LWP 2289296)] at 0x7ffff7f7d9b7
              [infrun] prepare_to_wait: prepare_to_wait
              [infrun] proceed: resuming Thread 0x7ffff7da6640 (LWP 2289300)
              [infrun] resume_1: thread Thread 0x7ffff7da6640 (LWP 2289300) has pending wait status status->kind = stopped, signal = GDB_SIGNAL_TRAP (currently_stepping=0).
              [infrun] prepare_to_wait: prepare_to_wait
              [infrun] proceed: [Thread 0x7ffff75a5640 (LWP 2289301)] resumed
              [infrun] proceed: resuming Thread 0x7ffff6da4640 (LWP 2289302)
              [infrun] resume_1: thread Thread 0x7ffff6da4640 (LWP 2289302) has pending wait status status->kind = stopped, signal = GDB_SIGNAL_TRAP (currently_stepping=0).
              [infrun] prepare_to_wait: prepare_to_wait
            [infrun] proceed: end: resuming threads, all-stop-on-top-of-non-stop
          [infrun] proceed: exit
      
      We can easily see where the call to `proceed` starts and end.  We can
      also see why there are a bunch of resume_1 calls, it's because we are
      resuming threads, emulating all-stop on top of a non-stop target.
      
      We also see that debug statements nest well with other modules that have
      been migrated to use the "new" debug statement helpers (because they all
      use debug_prefixed_vprintf in the end.  I think this is desirable, for
      example we could see the debug statements about reading the DWARF info
      of a library nested under the debug statements about loading that
      library.
      
      Of course, modules that haven't been migrated to use the "new" helpers
      will still print without indentations.  This will be one good reason to
      migrate them.
      
      I think the runtime cost (when debug statements are disabled) of this is
      reasonable, given the improvement in readability.  There is the cost of
      the conditionals (like standard debug statements), one more condition
      (if (m_must_decrement_print_depth)) and the cost of constructing a stack
      object, which means copying a fews pointers.
      
      Adding the print in fetch_inferior_event breaks some tests that use "set
      debug infrun", because it prints a debug statement after the prompt.  I
      adapted these tests to cope with it, by using the "-prompt" switch of
      gdb_test_multiple to as if this debug statement is part of the expected
      prompt.  It's unfortunate that we have to do this, but I think the debug
      print is useful, and I don't want a few tests to get in the way of
      adding good debug output.
      
      gdbsupport/ChangeLog:
      
      	* common-debug.h (debug_print_depth): New.
      	(struct scoped_debug_start_end): New.
      	(scoped_debug_start_end): New.
      	(scoped_debug_enter_exit): New.
      	* common-debug.cc (debug_prefixed_vprintf): Print indentation.
      
      gdb/ChangeLog:
      
      	* debug.c (debug_print_depth): New.
      	* infrun.h (INFRUN_SCOPED_DEBUG_START_END): New.
      	(INFRUN_SCOPED_DEBUG_ENTER_EXIT): New.
      	* infrun.c (start_step_over): Use
      	INFRUN_SCOPED_DEBUG_ENTER_EXIT.
      	(proceed): Use INFRUN_SCOPED_DEBUG_ENTER_EXIT and
      	INFRUN_SCOPED_DEBUG_START_END.
      	(fetch_inferior_event): Use INFRUN_SCOPED_DEBUG_ENTER_EXIT.
      
      gdbserver/ChangeLog:
      
      	* debug.cc (debug_print_depth): New.
      
      gdb/testsuite/ChangeLog:
      
              * gdb.base/ui-redirect.exp: Expect infrun debug print after
      	prompt.
              * gdb.threads/ia64-sigill.exp: Likewise.
              * gdb.threads/watchthreads-reorder.exp: Likewise.
      
      Change-Id: I7c3805e6487807aa63a1bae318876a0c69dce949
      3ec3145c
    • Simon Marchi's avatar
      gdb: use infrun_debug_printf in print_target_wait_results · e71daf80
      Simon Marchi authored
      The code in print_target_wait_results uses a single call to debug_printf
      in order to make sure a single timestamp is emitted, despite printing
      multiple lines.  The result is:
      
          941502.043284 [infrun] target_wait (-1.0.0, status) =
          [infrun]   649832.649832.0 [process 649832],
          [infrun]   status->kind = stopped, signal = GDB_SIGNAL_TRAP
      
      I find this decision a bit counter productive, because it messes up the
      alignment of the three lines.  We don't care that three (slightly
      different) timestamps are printed.
      
      I suggest to change this function to use infrun_debug_printf, with this
      result:
      
          941601.425771 [infrun] print_target_wait_results: target_wait (-1.0.0 [process -1], status) =
          941601.425824 [infrun] print_target_wait_results:   651481.651481.0 [process 651481],
          941601.425867 [infrun] print_target_wait_results:   status->kind = stopped, signal = GDB_SIGNAL_TRAP
      
      Note that the current code only prints the waiton_ptid as a string
      between square brackets if pid != -1.  I don't think this complexity is
      needed in a debug print.  I made it so it's always printed, which I
      think results in a much simpler function.
      
      gdb/ChangeLog:
      
      	* infrun.c (print_target_wait_results): Use infrun_debug_printf.
      
      Change-Id: I817bd10286b8e641a6c751ac3a1bd1ddf9b18ce0
      e71daf80
    • Simon Marchi's avatar
      gdb: make "set debug timestamp" work nice with new debug printouts · 335709bc
      Simon Marchi authored
      New in v2:
      
      - implement by modifying vprintf_unfiltered rather than
        debug_prefixed_vprintf.
      
      I tried enabling debug timestamps, and realized that it doesn't play
      well with the revamp of the debug printouts I've been working on:
      
          $ ./gdb -q -nx --data-directory=data-directory -ex "set debug infrun" -ex "set debug timestamp" a.out
          Reading symbols from a.out...
          (gdb) start
          Temporary breakpoint 1 at 0x1131: file test.c, line 2.
          Starting program: /home/smarchi/build/binutils-gdb-all-targets/gdb/a.out
          939897.769338 [infrun] infrun_async:
          939897.769383 enable=1
          939897.769409
          939897.915218 [infrun] proceed:
          939897.915281 addr=0x7ffff7fd0100, signal=GDB_SIGNAL_0
          939897.915315
          939897.915417 [infrun] start_step_over:
          939897.915464 stealing global queue of threads to step, length = 0
          939897.915502
          939897.915567 [infrun] operator():
          939897.915601 step-over queue now empty
          939897.915633
          939897.915690 [infrun] proceed:
          939897.915729 resuming process 636244
          939897.915768
          939897.915892 [infrun] resume_1:
          939897.915954 step=0, signal=GDB_SIGNAL_0, trap_expected=0, current thread [process 636244] at 0x7ffff7fd0100
          939897.915991
          939897.916119 [infrun] prepare_to_wait:
          939897.916153 prepare_to_wait
          939897.916201
          939897.916661 [infrun] target_wait (-1.0.0, status) =
          [infrun]   636244.636244.0 [process 636244],
          [infrun]   status->kind = stopped, signal = GDB_SIGNAL_TRAP
          939897.916734 [infrun] handle_inferior_event:
          939897.916768 status->kind = stopped, signal = GDB_SIGNAL_TRAP
          939897.916799
      
      This is due to debug_prefixed_vprintf being implemented as three
      separate calls to debug_printf / debug_vprintf.  Each call gets its own
      timestamp and newline, curtesy of vprintf_unfiltered.
      
      My first idea was to add a "line_start" parameter to debug_vprintf,
      allowing the caller to say whether the print is the start of the line.
      A debug timestamp would only be printed if line_start was true.
      However, that was much more invasive than the simple fix implemented in
      this patch.
      
      My second idea was to make debug_prefixed_vprintf use string_printf and
      issue a single call to debug_printf.  That would however prevent future
      use of styling in the debug messages.
      
      What is implemented in this patch is the same as is implemented in
      GDBserver: the timestamp-printing code in GDB tracks whether the last
      debug output ended with a newline.  If so, it prints a timestamp on the
      next debug output.
      
      After the fix, it looks like this:
      
          $ ./gdb -q -nx --data-directory=data-directory -ex "set debug infrun" -ex "set debug timestamp" a.out
          Reading symbols from a.out...
          (gdb) start
          Temporary breakpoint 1 at 0x1131: file test.c, line 2.
          Starting program: /home/smarchi/build/binutils-gdb-all-targets/gdb/a.out
          941112.135662 [infrun] infrun_async: enable=1
          941112.279930 [infrun] proceed: addr=0x7ffff7fd0100, signal=GDB_SIGNAL_0
          941112.280064 [infrun] start_step_over: stealing global queue of threads to step, length = 0
          941112.280125 [infrun] operator(): step-over queue now empty
          941112.280194 [infrun] proceed: resuming process 646228
          941112.280332 [infrun] resume_1: step=0, signal=GDB_SIGNAL_0, trap_expected=0, current thread [process 646228] at 0x7ffff7fd0100
          941112.280480 [infrun] prepare_to_wait: prepare_to_wait
          941112.281004 [infrun] target_wait (-1.0.0, status) =
          [infrun]   646228.646228.0 [process 646228],
          [infrun]   status->kind = stopped, signal = GDB_SIGNAL_TRAP
          941112.281078 [infrun] handle_inferior_event: status->kind = stopped, signal = GDB_SIGNAL_TRAP
      
      gdb/ChangeLog:
      
      	* utils.c (vfprintf_unfiltered): Print timestamp only when
      	previous debug output ended with a newline.
      
      Change-Id: Idcfe3acc7e3d0f526a5f0a43a5e0884bf93c41ae
      335709bc
    • Simon Marchi's avatar
      gdb/testsuite: avoid reading files through the remote protocol in gdb.server/*.exp · 8dc558a0
      Simon Marchi authored
      When I run some tests in gdb.server (fox example
      gdb.server/ext-attach.exp) on Ubuntu 20.04 with separate debug info for
      glibc installed, they often time out.  This is because GDB reads the
      debug info through the remote protocol which is particularly slow:
      
          attach 316937
          Attaching to program: /home/smarchi/build/binutils-gdb-all-targets/gdb/testsuite/outputs/gdb.server/ext-attach/ext-attach, process 316937
          Reading /lib/x86_64-linux-gnu/libc.so.6 from remote target...
          warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
          Reading /lib64/ld-linux-x86-64.so.2 from remote target...
          Reading symbols from target:/lib/x86_64-linux-gnu/libc.so.6...
          Reading /lib/x86_64-linux-gnu/libc-2.31.so from remote target...
          Reading /lib/x86_64-linux-gnu/.debug/libc-2.31.so from remote target...
          Reading /usr/lib/debug//lib/x86_64-linux-gnu/libc-2.31.so from remote target...
          FAIL: gdb.server/ext-attach.exp: attach to remote program 1 (timeout)
      
      This is avoided in gdbserver boards by adding "set sysroot" to GDBFLAGS
      (see boards/local-board.exp), which makes GDB read files from the local
      filesystem.  But gdb.server tests spawn GDBserver directly, so are ran
      even when using the default unix board, where the "set sysroot" isn't
      used.
      
      Modify these tests to append "set sysroot" to the GDBFLAGS, a bit like
      lib/local-board.exp does.
      
      One special case is gdb.server/sysroot.exp, whose intent is to test
      different "set sysroot" values.  For this one, increase the timeout when
      testing the "target:" sysroot.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.server/abspath.exp: Append "set sysroot" to GDBFLAGS.
      	* gdb.server/connect-without-multi-process.exp: Likewise.
      	* gdb.server/exit-multiple-threads.exp: Likewise.
      	* gdb.server/ext-attach.exp: Likewise.
      	* gdb.server/ext-restart.exp: Likewise.
      	* gdb.server/ext-run.exp: Likewise.
      	* gdb.server/ext-wrapper.exp: Likewise.
      	* gdb.server/multi-ui-errors.exp: Likewise.
      	* gdb.server/no-thread-db.exp: Likewise.
      	* gdb.server/reconnect-ctrl-c.exp: Likewise.
      	* gdb.server/run-without-local-binary.exp: Likewise.
      	* gdb.server/server-kill.exp: Likewise.
      	* gdb.server/server-run.exp: Likewise.
      	* gdb.server/solib-list.exp: Likewise.
      	* gdb.server/stop-reply-no-thread.exp: Likewise.
      	* gdb.server/wrapper.exp: Likewise.
      	* gdb.server/sysroot.exp: Increase timeout when testing the
      	target: sysroot.
      
      Change-Id: I7451bcc737f90e2cd0b977e9f09da3710774b0bf
      8dc558a0
    • Simon Marchi's avatar
      gdb/testsuite: use clean_restart in gdb.server/server-run.exp · d8387cc8
      Simon Marchi authored
      I think this sequence of commands can be replaced with clean_restart.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.server/server-run.exp: Use clean_restart.
      
      Change-Id: If8c3eaa89f4ee58901282f5f1d5d4e1100ce7ac5
      d8387cc8
    • Simon Marchi's avatar
      gdb/testsuite: use clean_restart in gdb.server/ext-run.exp · 5169ae34
      Simon Marchi authored
      I think the sequence of commands here could be replaced with
      clean_restart.  The test starts with GDB not started, so it should not
      be started when we reach gdb_skip_xml_test.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.server/ext-run.exp: Use clean_restart.
      
      Change-Id: I8c033bad6c52f3d58d6aa377b8355fc633c7aede
      5169ae34
    • Simon Marchi's avatar
      gdb/testsuite: use build_executable in gdb.server/stop-reply-no-thread.exp · 7b0ff8a2
      Simon Marchi authored
      This test uses prepare_for_testing, then does a clean_restart for each
      test configuration.  prepare_for_testing does a build_executable plus a
      clean_restart.  So the clean_restart inside prepare_for_testing is done
      for nothing.
      
      Change prepare_for_testing to just build_executable to avoid the
      unnecessary clean_restart.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.server/stop-reply-no-thread.exp: Use build_executable
      	instead of prepare_for_testing.
      
      Change-Id: I8b2a2e90353c57c39c49a3665083331b4882fdd0
      7b0ff8a2
    • Simon Marchi's avatar
      gdb/testsuite: use clean_restart in gdb.server/solib-list.exp · a754fbdf
      Simon Marchi authored
      I think this sequence of commands can be replaced by clean_restart,
      despite what the comment says, as long as we don't use the `binfile`
      argument to clean_restart.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.server/solib-list.exp: Use clean_restart.
      
      Change-Id: I4930564c50a1865cbffe0d660a4296c9d2158084
      a754fbdf
  2. Jan 04, 2021
    • Tom de Vries's avatar
      [gdb/testsuite] Don't require gold for gdb.base/morestack.exp · c5e71b33
      Tom de Vries authored
      While working on PR26935 I noticed that the test-case requires the gold
      linker, but doesn't really need it.
      
      The -fuse-ld=gold was added to support the printf in the test-case, which
      prints some information but is not otherwise needed for the test-case.
      
      Fix this by removing the printf and the corresponding -fuse-ld=gold.
      
      Tested on x86_64-linux.
      
      Also checked that the test still fails when the fix from the commit that added
      the test-case is reverted.
      
      gdb/testsuite/ChangeLog:
      
      2021-01-04  Tom de Vries  <tdevries@suse.de>
      
      	* gdb.base/morestack.c: Remove printf.
      	* gdb.base/morestack.exp: Don't use -fuse-ld=gold.
      c5e71b33
    • Luis Machado's avatar
      Refactor struct trad_frame_saved_regs · 098caef4
      Luis Machado authored
      The following patch drops the overloading going on with the trad_frame_saved_reg
      struct and defines a new struct with a KIND enum and a union of different
      fields.
      
      The new struct looks like this:
      
      struct trad_frame_saved_reg
       {
        setters/getters
      
        ...
      
      private:
      
        trad_frame_saved_reg_kind m_kind;
      
        union {
          LONGEST value;
          int realreg;
          LONGEST addr;
          const gdb_byte *value_bytes;
        } m_reg;
      };
      
      And the enums look like this:
      
      /* Describes the kind of encoding a stored register has.  */
      enum class trad_frame_saved_reg_kind
      {
        /* Register value is unknown.  */
        UNKNOWN = 0,
        /* Register value is a constant.  */
        VALUE,
        /* Register value is in another register.  */
        REALREG,
        /* Register value is at an address.  */
        ADDR,
        /* Register value is a sequence of bytes.  */
        VALUE_BYTES
      };
      
      The patch also adds setters/getters and updates all the users of the old
      struct.
      
      It is worth mentioning that due to the previous overloaded nature of the
      fields, some tdep files like to store negative offsets and indexes in the ADDR
      field, so I kept the ADDR as LONGEST instead of CORE_ADDR. Those cases may
      be better supported by a new enum entry.
      
      I have not addressed those cases in this patch to prevent unwanted breakage,
      given I have no way to test some of the targets. But it would be nice to
      clean those up eventually.
      
      The change to frame-unwind.* is to constify the parameter being passed to the
      unwinding functions, given we now accept a "const gdb_byte *" for value bytes.
      
      Tested on aarch64-linux/Ubuntu 20.04/18.04 and by building GDB with
      --enable-targets=all.
      
      gdb/ChangeLog:
      
      2021-01-04  Luis Machado  <luis.machado@linaro.org>
      
      	Update all users of trad_frame_saved_reg to use the new member
      	functions.
      
      	Remote all struct keywords from declarations of trad_frame_saved_reg
      	types, except on forward declarations.
      
      	* aarch64-tdep.c: Update.
      	* alpha-mdebug-tdep.c: Update.
      	* alpha-tdep.c: Update.
      	* arc-tdep.c: Update.
      	* arm-tdep.c: Update.
      	* avr-tdep.c: Update.
      	* cris-tdep.c: Update.
      	* csky-tdep.c: Update.
      	* frv-tdep.c: Update.
      	* hppa-linux-tdep.c: Update.
      	* hppa-tdep.c: Update.
      	* hppa-tdep.h: Update.
      	* lm32-tdep.c: Update.
      	* m32r-linux-tdep.c: Update.
      	* m32r-tdep.c: Update.
      	* m68hc11-tdep.c: Update.
      	* mips-tdep.c: Update.
      	* moxie-tdep.c: Update.
      	* riscv-tdep.c: Update.
      	* rs6000-tdep.c: Update.
      	* s390-linux-tdep.c: Update.
      	* s390-tdep.c: Update.
      	* score-tdep.c: Update.
      	* sparc-netbsd-tdep.c: Update.
      	* sparc-sol2-tdep.c: Update.
      	* sparc64-fbsd-tdep.c: Update.
      	* sparc64-netbsd-tdep.c: Update.
      	* sparc64-obsd-tdep.c: Update.
      	* sparc64-sol2-tdep.c: Update.
      	* tilegx-tdep.c: Update.
      	* v850-tdep.c: Update.
      	* vax-tdep.c: Update.
      
      	* frame-unwind.c (frame_unwind_got_bytes): Make parameter const.
      	* frame-unwind.h (frame_unwind_got_bytes): Likewise.
      
      	* trad-frame.c: Update.
      	Remove TF_REG_* enum.
      	(trad_frame_alloc_saved_regs): Add a static assertion to check for
      	a trivially-constructible struct.
      	(trad_frame_reset_saved_regs): Adjust to use member function.
      	(trad_frame_value_p): Likewise.
      	(trad_frame_addr_p): Likewise.
      	(trad_frame_realreg_p): Likewise.
      	(trad_frame_value_bytes_p): Likewise.
      	(trad_frame_set_value): Likewise.
      	(trad_frame_set_realreg): Likewise.
      	(trad_frame_set_addr): Likewise.
      	(trad_frame_set_unknown): Likewise.
      	(trad_frame_set_value_bytes): Likewise.
      	(trad_frame_get_prev_register): Likewise.
      	* trad-frame.h: Update.
      	(trad_frame_saved_reg_kind): New enum.
      	(struct trad_frame_saved_reg) <addr, realreg, data>: Remove.
      	<m_kind, m_reg>: New member fields.
      	<set_value, set_realreg, set_addr, set_unknown, set_value_bytes>
      	<kind, value, realreg, addr, value_bytes, is_value, is_realreg>
      	<is_addr, is_unknown, is_value_bytes>: New member functions.
      098caef4
    • Alexander Fedotov's avatar
      When displaying ARM private file flag bits, use a 0x prefix. · dbb078f6
      Alexander Fedotov authored
      	* elf32-arm.c (elf32_arm_print_private_bfd_data): Prefix hex value
      	of private flags with 0x.
      	* elfnn-aarch64.c (elfNN_aarch64_print_private_bfd_data): Likewise.
      dbb078f6
    • Alan Modra's avatar
      PR26822, How to prevent a STT_FILE with absolute path in the linked image · 5b4293ba
      Alan Modra authored
      bfd/
      	PR 26822
      	* elflink.c (elf_link_input_bfd): Use the file base name in
      	linker generated STT_FILE symbols.
      ld/
      	PR 26822
      	* testsuite/ld-arm/non-contiguous-arm2.d: Adjust STT_FILE symbol match.
      	* testsuite/ld-arm/non-contiguous-arm3.d: Likewise.
      	* testsuite/ld-arm/non-contiguous-arm5.d: Likewise.
      	* testsuite/ld-arm/non-contiguous-arm6.d: Likewise.
      	* testsuite/ld-i386/tlsbin.rd: Likewise.
      	* testsuite/ld-i386/tlsbin2.rd: Likewise.
      	* testsuite/ld-i386/tlsbindesc.rd: Likewise.
      	* testsuite/ld-i386/tlsdesc.rd: Likewise.
      	* testsuite/ld-i386/tlsnopic.rd: Likewise.
      	* testsuite/ld-i386/tlspic.rd: Likewise.
      	* testsuite/ld-i386/tlspic2.rd: Likewise.
      	* testsuite/ld-mips-elf/global-local-symtab-sort-n64.d: Likewise.
      	* testsuite/ld-mips-elf/global-local-symtab-sort-n64t.d: Likewise.
      	* testsuite/ld-mips-elf/global-local-symtab-sort-o32.d: Likewise.
      	* testsuite/ld-mips-elf/global-local-symtab-sort-o32t.d: Likewise.
      	* testsuite/ld-plugin/pr17973.d: Likewise.
      	* testsuite/ld-tic6x/shlib-1.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-1b.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-1r.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-1rb.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-app-1.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-app-1b.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-app-1r.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-app-1rb.rd: Likewise.
      	* testsuite/ld-tic6x/shlib-noindex.rd: Likewise.
      	* testsuite/ld-tic6x/static-app-1.rd: Likewise.
      	* testsuite/ld-tic6x/static-app-1b.rd: Likewise.
      	* testsuite/ld-tic6x/static-app-1r.rd: Likewise.
      	* testsuite/ld-tic6x/static-app-1rb.rd: Likewise.
      	* testsuite/ld-x86-64/tlsbin.rd: Likewise.
      	* testsuite/ld-x86-64/tlsbin2.rd: Likewise.
      	* testsuite/ld-x86-64/tlsbindesc.rd: Likewise.
      	* testsuite/ld-x86-64/tlsdesc.rd: Likewise.
      	* testsuite/ld-x86-64/tlspic.rd: Likewise.
      	* testsuite/ld-x86-64/tlspic2.rd: Likewise.
      	* testsuite/ld-xtensa/tlsbin.rd: Likewise.
      	* testsuite/ld-xtensa/tlspic.rd: Likewise.
      5b4293ba
    • Alan Modra's avatar
      PR27102, gas: "section symbols are already global" · dd933805
      Alan Modra authored
      	PR 27102
      	* symbols.c (S_SET_EXTERNAL): Revise section symbol warning
      	message and register symbol error message.
      dd933805
    • Nelson Chu's avatar
      RISC-V: Fix the merged orders of Z* extension for linker. · 4c0e540e
      Nelson Chu authored
      Similar to the commit 6729e2c2,
      we have to check the first char of the Z* extensions, to make
      sure that they follow the order of the standard extensions.
      
      bfd/
          * elfxx-riscv.c (riscv_compare_subsets): Removed static.
          * elfxx-riscv.h: Add declaration.
          * elfnn-riscv.c (riscv_merge_multi_letter_ext): Use
          riscv_compare_subsets to check the orders.
          (riscv_skip_prefix): Removed.
          (riscv_prefix_cmp): Removed.
      4c0e540e
    • Alan Modra's avatar
      PR26741, benign use after free in riscv_parse_prefixed_ext · e9cf3691
      Alan Modra authored
      ISO/IEC 9899:1999 C standard "J.2 Undefined behavior" says the
      following is undefined behaviour:
      
      "The value of a pointer that refers to space deallocated by a call to
      the free or realloc function is used (7.20.3)."
      
      	PR 26741
      	* elfxx-riscv.c (riscv_parse_prefixed_ext): Free subset after
      	calculating subset version length.
      e9cf3691
    • Nicolas Boulenguez's avatar
      In libctf, make AC_CONFIG_MACRO_DIR consistent with ACLOCAL_AMFLAGS · a7c23ac9
      Nicolas Boulenguez authored
      	PR 27117
      	* configure.ac: Make AC_CONFIG_MACRO_DIR consistent with
      	ACLOCAL_AMFLAGS -I dirs.
      	* configure: Regenerate.
      a7c23ac9
    • Alan Modra's avatar
      PR27101, as: Reject (byte) .align 0x100000000 · 90320e40
      Alan Modra authored
      This allows alignments up to 2**TC_ALIGN_LIMIT, which might be larger
      than an unsigned int can hold.
      
      	PR 27101
      	* read.c (s_align): Use a large enough type for "align" to hold
      	the result of get_absolute_expression.
      90320e40
    • GDB Administrator's avatar
      Automatic date update in version.in · a68494db
      GDB Administrator authored
      a68494db
  3. Jan 03, 2021
    • Simon Marchi's avatar
      gdb: fix typos in comments in target-float.c · 9898e882
      Simon Marchi authored
      gdb/ChangeLog:
      
      	* target-float.c: Fix typos.
      
      Change-Id: Ib65e90746d0a7c77c3fbead81139facb40b91977
      9898e882
    • Alan Modra's avatar
      PR27140, ppc32 segmentation fault in make_stub · e3b53295
      Alan Modra authored
      This fixes a thinko in commit fa40fbe4.  st_other global entry bits
      are relevant only for 64-bit ELFv2.  PowerPC gold leaves local sym
      vector of st_other bits as NULL for 32-bit, hence the segfault.
      
      	PR 27140
      	* powerpc.cc (Target_powerpc::Branch_info::make_stub): Only access
      	object->st_other() when 64-bit.
      	(Stub_table::add_long_branch_entry): Ignore "other" when 32-bit.
      e3b53295
    • Mike Frysinger's avatar
      sim: common: add align_{up,down} to match gdb · 0ede24f2
      Mike Frysinger authored
      We have ALIGN_{8,16,PAGE} and FLOOR_PAGE macros (where PAGE is defined as
      4k) which were imported from the ppc sim.  But no other sim utilizes these
      and hardcoding the sizes in the name is a bit limiting.
      
      Let's delete these and import the two general macros that gdb uses:
      	align_up(addr, bytes)
      	align_down(addr, bytes)
      
      This in turn allows us to cut over the Blackfin code immediately.
      0ede24f2
    • GDB Administrator's avatar
      Automatic date update in version.in · 3b47e132
      GDB Administrator authored
      3b47e132
    • Hannes Domani's avatar
      Fix pretty printer of main_type.flds_bnds.bounds · b66b4e65
      Hannes Domani authored
      In struct dynamic_prop the members kind and data were renamed to m_kind and
      m_data.
      
      And flag_upper_bound_is_count is actually in bounds directly, not in its
      high member.
      
      gdb/ChangeLog:
      
      2021-01-02  Hannes Domani  <ssbssa@yahoo.de>
      
      	* gdb-gdb.py.in: Fix main_type.flds_bnds.bounds pretty printer.
      b66b4e65
  4. Jan 02, 2021
  5. Jan 01, 2021
    • Joel Brobecker's avatar
      Manual updates of copyright year range not covered by gdb/copyright.py · b5b5650a
      Joel Brobecker authored
      gdb/ChangeLog:
      
              * gdbarch.sh: Update copyright year range.
      
      gdb/doc/ChangeLog:
      
              * gdb.texinfo, refcard.tex: Update copyright year range.
      b5b5650a
    • Joel Brobecker's avatar
      Update copyright year range in all GDB files · 3666a048
      Joel Brobecker authored
      This commits the result of running gdb/copyright.py as per our Start
      of New Year procedure...
      
      gdb/ChangeLog
      
              Update copyright year range in copyright header of all GDB files.
      3666a048
    • Joel Brobecker's avatar
      gdb/copyright.py: Also update sources in "gdbserver" and "gdbsupport" · ff7e39b6
      Joel Brobecker authored
      This commit adjusts GDB's copyright.py script, following two past changes:
        - gdb/gdbserver/ being move to the toplevel directory;
        - gdb/common/ being renamed to gdbsupport/.
      
      gdb/ChangeLog:
      
              * copyright.py (get_update_list): Add "gdbserver" and "gdbsupport"
              to the list of directories to update.
      ff7e39b6
    • Joel Brobecker's avatar
      Update copyright year in version message for gdb, gdbserver and gdbreplay · 2b47c078
      Joel Brobecker authored
      gdb/ChangeLog:
      
              * top.c (print_gdb_version): Update copyright year.
      
      gdbserver/ChangeLog:
      
              * server.cc (gdbserver_version): Update copyright year.
              * gdbreplay.cc (gdbreplay_version): Likewise.
      2b47c078
    • Joel Brobecker's avatar
      Rotate gdb/ChangeLog · 476923f1
      Joel Brobecker authored
      As a results of the rotation, this introduces a new file which
      needed to be added to DJGPP's fnchange.lst.
      
      gdb/ChangeLog
      
             * config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2020.
      476923f1
    • Alan Modra's avatar
      PR27116, Spelling errors found by Debian style checker · f9a6a8f0
      Alan Modra authored
      	PR 27116
      bfd/
      	* xcofflink.c: Correct spelling in comments.
      binutils/
      	* coffgrok.c (do_type): Correct spelling of auxiliary in errors.
      	* doc/binutils.texi: Correct grammar.
      	* readelf.c (process_version_sections): Correct spelling of auxiliary
      	in warning.
      	* testsuite/binutils-all/vax/objdump.exp: Comment grammar fix.
      config/
      	* override.m4: Correct comment grammar.
      gas/
      	* config/tc-i386.c: Correct comment spelling.
      	* config/tc-riscv.c: Likewise.
      	* config/tc-s390.c: Correct comment grammar.
      	* doc/c-i386.texi: Correct spelling.
      	* doc/c-s390.texi: Correct grammar.
      gold/
      	* tilegx.cc: Correct comment spelling.
      gprof/
      	* README: Correct grammar.
      	* gprof.texi: Likewise.
      include/
      	* coff/internal.h: Correct comment spelling.
      	* coff/sym.h: Likewise.
      	* opcode/aarch64.h: Likewise.
      ld/
      	* configure.tgt: Correct comment grammar.
      	* emultempl/m68hc1xelf.em: Likewise.
      	* ld.texi: Correct grammar.
      f9a6a8f0
    • Alan Modra's avatar
      250d07de
    • Alan Modra's avatar
      Add libctf to update-copyright.py · f192b314
      Alan Modra authored
      f192b314
    • Alan Modra's avatar
      ChangeLog rotation · c2795844
      Alan Modra authored
      c2795844
    • GDB Administrator's avatar
      Automatic date update in version.in · 57f60d20
      GDB Administrator authored
      57f60d20
    • Hans-Peter Nilsson's avatar
      gas: Change to "swym 0" as canonical nop insn for MMIX · 64d05a43
      Hans-Peter Nilsson authored
      While "set $0, $0" works, that's not the documented instruction to do
      nothing for MMIX.  However, I'm not changing it for "nop_type 5" as
      seen in gas.exp and org-1.s, because "set $0, $0" seems like it could
      be re-used there, for some future ISA.
      
      gas/
      	* config/tc-mmix.h (md_single_noop_insn): Change to "swym 0".
      64d05a43
    • Tom Tromey's avatar
      Update gdb.rust tests for Rust 1.49 · 9b243007
      Tom Tromey authored
      Rust 1.49 was released today, and it includes some library changes
      which caused some gdb.rust tests to fail.  This patch adapts the test
      suite to the new output.  I also verified that this continues to work
      with Rust 1.48.
      
      gdb/testsuite/ChangeLog
      2020-12-31  Tom Tromey  <tom@tromey.com>
      
      	* gdb.rust/simple.exp: Update output for Rust 1.49.
      9b243007