Skip to content
Snippets Groups Projects
  1. Mar 14, 2023
    • Tom Tromey's avatar
      Rename gdb_mpq::val and make contents private · 81768386
      Tom Tromey authored
      This changes gdb_mpq to hide its data, and renames the data member
      from 'val' to 'm_val', following gdb convention.
      
      
      81768386
    • Tom Tromey's avatar
      Add operators and methods to gdb_mpq · 7607de94
      Tom Tromey authored
      This adds some operators and methods to gdb_mpq, in preparation for
      making its implementation private.
      
      This only adds the operators currently needed by gdb.  More could be
      added as necessary.
      
      
      7607de94
    • Tom Tromey's avatar
      Rename gdb_mpz::val and make contents private · 7aeae94f
      Tom Tromey authored
      This changes gdb_mpz to hide its data, and renames the data member
      from 'val' to 'm_val', following gdb convention.
      
      
      7aeae94f
    • Tom Tromey's avatar
      Add methods and operators to gdb_mpz · 302273ca
      Tom Tromey authored
      This adds various methods and operators to gdb_mpz, as a step toward
      hiding the implementation.
      
      This only adds the operators that were needed.  Many more could be
      added as required.
      
      
      302273ca
    • Tom Tromey's avatar
      Clean up gmp-utils.h includes · c8a67010
      Tom Tromey authored
      gmp-utils.h includes "defs.h", but normally the rule in gdb is that
      the .c files include this first.  This patch changes this code to
      match the rest of gdb.
      
      
      c8a67010
    • Tom Tromey's avatar
      Fix DAP frame bug with older versions of Python · 85c72d70
      Tom Tromey authored
      
      Tom de Vries pointed out that one DAP test failed on Python 3.6
      because gdb.Frame is not hashable.
      
      This patch fixes the problem by using a list to hold the frames.  This
      is less efficient but there normally won't be that many frames.
      
      Tested-by: default avatarTom de Vries <tdevries@suse.de>
      85c72d70
    • Nick Clifton's avatar
      Prevent an over large memory allocation in readelf when parsing a corrupt DWARF file. · 97b75c42
      Nick Clifton authored
        PR 30227
        * dwarf.c (process_cu_tu_index): Prevent excessive memory allocation when nused is large and ncols is zero.
      97b75c42
    • Tom de Vries's avatar
      [gdb/testsuite] Add gdb.testsuite/board-sanity.exp · ff581559
      Tom de Vries authored
      Add a test-case that tests the sanity of target/host boards.
      
      It contains a number of tests related to remote file manipulation, exercising:
      - remote_upload
      - remote_download
      - remote_file exists
      - remote_file delete
      which check that these work together as expected.
      
      Tested on x86_64-linux, with all relevant gdb/testsuite/boards/*.exp boards.
      
      For target board remote-stdio-gdbserver.exp, this revealed a trivial problem
      with the return value of proc ${board}_file for delete, so fix this.
      
      The test-case shows that the proc ${board}_download in
      local-remote-host-native.exp is broken, so remove it.
      
      Likewise for board local-remote-host.exp, so remove proc ${board}_download and
      associated ${board}_file.
      
      Tested on x86_64-linux.
      ff581559
    • Nick Clifton's avatar
      Adjust the decoded line output to fit into 80 columns. · 7506fc9b
      Nick Clifton authored
        PR 30216
        * dwarf.c (display_debug_lines_decoded): Reduce space for filenames.
        * testsuite/binutils-all/dw5.W: Adjust expected output.
        * testsuite/binutils-all/objdump.WL: Adjust expected output.
      7506fc9b
    • Nick Clifton's avatar
      Fix assembler documentation regarding data directives. · 2dd1c6e8
      Nick Clifton authored
       PR 30206
       * doc/as.texi (Pseudo Ops): Document that data directives such as .byte and .int are not intended for encoding instructions.
      2dd1c6e8
    • Alan Modra's avatar
      objdump segfault after symbol table error · c8b3d02c
      Alan Modra authored
      This memcpy segfaults if symcount is -1 (=> syms is NULL).
            memcpy (sorted_syms, symcount ? syms : dynsyms,
      	      sorted_symcount * sizeof (asymbol *));
      
      	* objdump.c (slurp_symtab): Don't leave symcount as -1 after
      	an error.
      	(slurp_dynamic_symtab): Likewise for dynsymcount.
      c8b3d02c
    • Alan Modra's avatar
      Sanity check read_section_stabs_debugging_info · 746598e0
      Alan Modra authored
      	* rddbg.c (read_section_stabs_debugging_info): Exclude sections
      	without contents.  Use bfd_malloc_and_get_section.  Don't alloc
      	one extra for strings.
      746598e0
    • Alan Modra's avatar
      gas/read.c: init more statics · f049c189
      Alan Modra authored
      	* read.c (current_name, current_label, dwarf_file, dwarf_line): Move
      	to file scope.
      	(pobegin): Tidy pop_override_ok.
      	(read_a_source_file): Make last_eol an auto var.
      	(s_reloc): Constify bfd_relocs.
      	(read_begin): Init more variables.
      f049c189
    • Alan Modra's avatar
      gas .include and .incbin · adb9ac5f
      Alan Modra authored
      This fixes a bug in .include and .incbin where given an absolute path
      the -I dirs would be searched for the path.
      
      	* read.c (include_dir_count, include_dir_maxlen): Make them size_t.
      	(search_and_open): New function.
      	(s_incbin, s_include): Use search_and_open.
      	(init_include_dir): New function.
      	(add_include_dir): Don't set initial "." dir here.
      	* read.h (include_dir_count, include_dir_maxlen): Update.
      	(init_include_dir, search_and_open): Declare.
      	* as.c (gas_early_init): Call init_include_dir.
      	* config/tc-rx.c (rx_include): Avoid warning by using size_t.
      	* config/tc-tic54x.c (tic54x_set_default_include): Simplify and
      	use notes for include path.
      	(tic54x_mlib): Use search_and_open.
      adb9ac5f
    • Alan Modra's avatar
      gas/dwarf2dbg.c init more statics · a2aee680
      Alan Modra authored
      	* dwarf2dbg.c (dw2_line, dw2_filename): Move to file scope and..
      	(dwarf2_gen_line_info): ..renamed from here.
      	(label_num, last_used, last_used_dir_len): Move to file scope.
      	(dwarf2_init): Init moved statics, except last_used_dir_len.
      a2aee680
    • Alan Modra's avatar
      gas/ecoff.c: don't use zero struct copies to init · fb977255
      Alan Modra authored
      It might have made sense once upon a time, but doesn't nowadays when
      compilers expand memset inline.
      
      	* ecoff.c (add_aux_sym_tir, allocate_scope, allocate_vlinks),
      	(allocate_shash, allocate_thash, allocate_tag, allocate_forward),
      	(allocate_thead, allocate_lineno_list): Use memset rather than
      	copying zero struct.
      fb977255
    • Alan Modra's avatar
      gas/compress-debug.c init all of strm · 4c6f9528
      Alan Modra authored
      	* compress-debug.c (compress_init): Clear all of strm.
      4c6f9528
    • GDB Administrator's avatar
      Automatic date update in version.in · 712d71a2
      GDB Administrator authored
      712d71a2
  2. Mar 13, 2023
    • Andrew Burgess's avatar
      gdb: add gdbarch::displaced_step_buffer_length · deb65a3c
      Andrew Burgess authored
      
      The gdbarch::max_insn_length field is used mostly to support displaced
      stepping; it controls the size of the buffers allocated for the
      displaced-step instruction, and is also used when first copying the
      instruction, and later, when fixing up the instruction, in order to
      read in and parse the instruction being stepped.
      
      However, it has started to be used in other places in GDB, for
      example, it's used in the Python disassembler API, and it is used on
      amd64 as part of branch-tracing instruction classification.
      
      The problem is that the value assigned to max_insn_length is not
      always the maximum instruction length, but sometimes is a multiple of
      that length, as required to support displaced stepping, see rs600,
      ARM, and AArch64 for examples of this.
      
      It seems to me that we are overloading the meaning of the
      max_insn_length field, and I think that could potentially lead to
      confusion.
      
      I propose that we add a new gdbarch field,
      gdbarch::displaced_step_buffer_length, this new field will do
      exactly what it says on the tin; represent the required displaced step
      buffer size.  The max_insn_length field can then do exactly what it
      claims to do; represent the maximum length of a single instruction.
      
      As some architectures (e.g. i386, and amd64) only require their
      displaced step buffers to be a single instruction in size, I propose
      that the default for displaced_step_buffer_length will be the
      value of max_insn_length.  Architectures than need more buffer space
      can then override this default as needed.
      
      I've updated all architectures to setup the new field if appropriate,
      and I've audited all calls to gdbarch_max_insn_length and switched to
      gdbarch_displaced_step_buffer_length where appropriate.
      
      There should be no user visible changes after this commit.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      deb65a3c
    • Andrew Burgess's avatar
      gdbarch: make invalid=True the default for all Components · 564cddf8
      Andrew Burgess authored
      
      This commit switches the default value for the 'invalid' field from
      False to True.  All components that previous set the invalid field to
      True explicitly have had the field removed.
      
      I think that True is a good choice for the default, this means that we
      now get the validity checks by default, and if anyone adds a new
      Component they need to make a choice to add an 'invalid=False' line
      and disable the validation.
      
      The flip side of this is that 'invalid=False' seems to be far more
      common than 'invalid=True'.  But I don't see a huge problem with this,
      we shouldn't be aiming to reduce our typing, rather we should choose
      based on which is least likely to introduce bugs.  I think assuming
      that we should do a validity check will achieve that.
      
      Some additional components need to have an 'invalid=False' line added
      to their definition, these are components that have a predefault
      value, which is sufficient; the tdep code doesn't need to replace this
      value if it doesn't want to.
      
      Without adding the 'invalid=False' these components would be
      considered to be invalid if they have not changed from their
      predefault value -- but the predefault is fine.
      
      There's no change in the generated code after this commit, so there
      will be no user visible changes after this commit.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      564cddf8
    • Andrew Burgess's avatar
      gdbarch: remove some unneeded predefault="0" from gdbarch_components.py · a3e200ef
      Andrew Burgess authored
      
      I noticed that there are a bunch of 'predefault="0"' lines in
      gdbarch_components.py, and that some (just some, not all) of these are
      not needed.
      
      The gdbarch is already zero initialized, but these lines seem to
      exists so that we can know when to compare against "0" and when to
      compare against "NULL".  At least, this seems to be useful in some
      places in the generated code.
      
      Specifically, if we remove the predefault="0" line from the
      max_insn_length component then we end up generating a line like:
      
        gdb_assert (gdbarch->max_insn_length != NULL);
      
      which doesn't compile as we compare a ULONGEST to NULL.
      
      In this commit I remove all the predefault="0" lines that I claim are
      obviously not needed.  These are lines for components that are not
      Values (i.e. the component holds a function pointer anyway), or for
      Value components that hold a pointer type, in which case using NULL is
      fine.
      
      The only changes after this commit are some fields that have nullptr
      as their initial value, and gcore_bfd_target now compares to NULL not
      0 in gdbarch_gcore_bfd_target_p, which, given the field is of type
      'const char *', seems like an improvement.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      a3e200ef
    • Andrew Burgess's avatar
      gdbarch: improve generation of validation in gdbarch getters · c317ea57
      Andrew Burgess authored
      
      We currently generate some validation code within the gdbarch getter
      methods.
      
      This commit adjusts the algorithm used to generate this validation
      slightly to make the gdbarch.py code (I think) clearer; there's no
      significant changes to what is generated.
      
      The validation algorithm for gdbarch values is now:
      
        - If the Value has an 'invalid' field that is a string, use that for
          validation,
      
        - If the Value has its 'predicate' field set to true, then check the
          predicate returns true, this ensures the predicate has been
          called,
      
        - If the Value has its 'invalid' field set to True, or the Value has
          'postdefault' field, then check the fields has changed from its
          initial value,
      
        - Otherwise no validation is performed.
      
      The only changes after this commit are:
      
        - Some comments change slightly, and
      
        - For 'gcore_bfd_target' and 'max_insn_length' we now validate by
          calling the predicate rather than checking the field value
          directly, the underlying check being performed is unchanged
          though.
      
      There should be no user visible changes after this commit.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      c317ea57
    • Andrew Burgess's avatar
      gdbarch: use predefault for more value components within gdbarch · 35079684
      Andrew Burgess authored
      
      For some reason the following value components of gdbarch:
      
        bfloat16_format
        half_format
        float_format
        double_format
        long_double_format
        so_ops
      
      All use a postdefault but no predefault to set the default value for
      the component.
      
      As the postdefault values for these components are all constant
      pointers that don't depend on other fields within the gdbarch, then I
      don't see any reason why we couldn't use a predefault instead.
      
      So lets do that.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      35079684
    • Andrew Burgess's avatar
      gdb/gdbarch: remove the 'invalid=None' state from gdbarch_components.py · 6e2d282d
      Andrew Burgess authored
      
      This commit ensures that the 'invalid' property of all components is
      either True, False, or a string.
      
      Additionally, this commit allows a component to have both a predicate
      and for the 'invalid' property to be a string.
      
      Removing the option for 'invalid' to be None allows us to simplify the
      algorithms in gdbarch.py a little.
      
      Allowing a component to have both a predicate and an 'invalid' string
      means that we can validate the value that a tdep sets into a field,
      but also allow a predicate to ensure that the field has changed from
      the default.
      
      This functionality isn't going to be used in this series, but I have
      tested it locally and believe that it would work, and this might make
      it easier for others to add new components in the future.
      
      In gdbarch_types.py, I've updated the type annotations to show that
      the 'invalid' field should not be None, and I've changed the default
      for this field from None to False.
      
      The change to using False as the default is temporary.  Later in this
      series I'm going to change the default to True, but we need more fixes
      before that can be done.
      
      Additionally, in gdbarch_types.py I've removed an assert from
      Component.get_predicate.  This assert ensured that we didn't have the
      predicate field set to True and the invalid field set to a string.
      However, no component currently uses this configuration, and after
      this commit, that combination is now supported, so the assert can be
      removed.
      
      As a consequence of the gdbarch_types.py changes we see some
      additional comments generated in gdbarch.c about verification being
      skipped due to the invalid field being False.  This comment is inline
      with plenty of other getters that also have a similar comment.  Plenty
      of the getters do have validation, so I think it is reasonable to have
      a comment noting that the validation has been skipped for a specific
      reason, rather than due to some bug.
      
      In gdbarch_components.py I've had to add 'invalid=True' for two
      components: gcore_bfd_target and max_insn_length, without this the
      validation in the gdbarch getter would disappear.
      
      And in gdbarch.py I've reworked the logic for generating the
      verify_gdbarch function, and for generating the getter functions.
      
      The logic for generating the getter functions is still not ideal,  I
      ended up having to add this additional logic block:
      
        elif c.postdefault is not None and c.predefault is not None:
            print("  /* Check variable changed from pre-default.  */", file=f)
            print(f"  gdb_assert (gdbarch->{c.name} != {c.predefault});", file=f)
      
      which was needed to ensure we continued to generate the same code as
      before, without this the fact that invalid is now False when it would
      previously have been None, meant that we dropped the gdb_assert in
      favour of a comment like:
      
        print(f"  /* Skip verify of {c.name}, invalid_p == 0 */", file=f)
      
      which is clearly not a good change.  We could potentially look at
      improving this in a later commit, but I don't plan to do that in this
      series.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      6e2d282d
    • Andrew Burgess's avatar
      gdb/gdbarch: split postdefault setup from invalid check in gdbarch.py · 74b1406e
      Andrew Burgess authored
      
      Restructure how gdbarch.py generates the verify_gdbarch function.
      Previously the postdefault handling was bundled together with the
      validation.  This means that a field can't have both a postdefault,
      and set its invalid attribute to a string.
      
      This doesn't seem reasonable to me, I see no reason why a field can't
      have both a postdefault (used when the tdep doesn't set the field),
      and an invalid expression, which can be used to validate the value
      that a tdep might set.
      
      In this commit I restructure the verify_gdbarch generation code to
      allow the above, there is no change in the actual generated code in
      this commit, that will come in later commit.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      74b1406e
    • Andrew Burgess's avatar
      gdb/gdbarch: remove yet more 'invalid=True' from gdbarch_components.py · 0605df70
      Andrew Burgess authored
      
      Following on from the previous commit, this commit removes yet more
      'invalid=True' lines from gdbarch_components.py where the invalid
      setting has no effect.
      
      Due to the algorithm used in gdbarch.py for generated verify_gdbarch,
      if a component has a postdefault value then no invalid check will ever
      be generated for the component, as such setting 'invalid=True' on the
      component is pointless.  This commit removes the setting of invalid.
      
      There is no change in the generated code after this commit.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      0605df70
    • Andrew Burgess's avatar
      gdb/gdbarch: remove unused 'invalid=True' from gdbarch_components.py · 021c14f6
      Andrew Burgess authored
      
      Due to the algorithm used to generate verify_gdbarch in gdbarch.py, if
      a component has a predicate, then a validation check will never be
      generated.
      
      There are a bunch of components that are declared with both a
      predicate AND have 'invalid=True' set.  The 'invalid=True' has no
      effect.
      
      In this commit I clean things up by removing all these additional
      'invalid=True' lines.  There's no change in any of the generated files
      after this commit.
      
      Approved-By: default avatarSimon Marchi <simon.marchi@efficios.com>
      021c14f6
    • Tom Tromey's avatar
      Fix crash in inside_main_func · 5f056fcb
      Tom Tromey authored
      gdb 13.1 crashes while running the rust compiler's debugger tests.
      The crash has a number of causes.
      
      First, the rust compiler still uses the C++-like _Z mangling, but with
      its own twist -- some hex digits added to the end of a symbol.  So,
      while gdb finds the correct name of "main":
      
      (top-gdb) p name
      $13 = 0x292e0c0 "rustc_gdb_1031745::main"
      
      It isn't found in the minsyms, because C++ demangling yields:
      
      [99] t 0x90c0 _ZN17rustc_gdb_10317454main17h5b5be7fe16a97225E section .text  rustc_gdb_1031745::main::h5b5be7fe16a97225  zko06yobckx336v
      
      This could perhaps be fixed.  I also filed a new PR to suggest
      preferring the linkage name of the main program.
      
      Next, the rust compiler emits both a DW_TAG_subprogram and a
      DW_TAG_namespace for "main".  This happens because the file is named
      "main.rs" -- i.e., the bug is specific to the source file name.  The
      crash also seems to require the nested function inside of 'main', at
      least for me.  The namespace always is generated, but perhaps this
      changes the ordering in the DWARF.
      
      When inside_main_func looks up the main symbol, it finds the namespace
      symbol rather than the function.  (I filed a bug about fixing gdb's
      symbol tables -- long overdue.)
      
      Meanwhile, as I think it's important to fix this crash sooner rather
      than later, this patch changes inside_main_func to check that the
      symbol that is found is LOC_BLOCK.  This perhaps should have been done
      in the first place, anyway.
      
      Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30158
      
      5f056fcb
    • Tom de Vries's avatar
      [gdb/testsuite] Fix gdb.python/tui-window-factory.exp for remote host · 7fee66ab
      Tom de Vries authored
      When running gdb.python/tui-window.exp with host board
      local-remote-host-notty and target board native-gdbserver, I get:
      ...
      FAIL: gdb.python/tui-window-factory.exp: msg_2: \
        check test_window box (box check: ul corner is l, not +)
      ...
      
      The problem is that the result of Term::prepare_for_tui is not checked.
      
      Fix this by adding the missing check.
      
      Tested on x86_64-linux.
      7fee66ab
    • Tom de Vries's avatar
      [gdb/testsuite] Fix gdb.python/tui-window.exp for remote host · 1cdf05cd
      Tom de Vries authored
      When running gdb.python/tui-window.exp with host board
      local-remote-host-notty and target board native-gdbserver, I get:
      ...
      UNSUPPORTED: gdb.python/tui-window.exp: TUI not supported
      FAIL: gdb.python/tui-window.exp: test title
      ...
      
      Fix this by adding the missing return after the unsupported.
      
      Tested on x86_64-linux.
      1cdf05cd
    • Tom de Vries's avatar
      [gdb/testsuite] Fix gdb.tui/completion.exp for local-remote-host-notty · 0020d62f
      Tom de Vries authored
      When running test-case gdb.tui/completion.exp with host board
      local-remote-host-notty and target board native-gdbserver, I get:
      ...
      FAIL: gdb.tui/completion.exp: completion of layout names: \
        tab completion (timeout)
      ...
      
      The test-case contains a few tests that do tab completion, which requires
      readline, which is unavailable with host board local-remote-host-notty.
      
      Fix this by adding the missing check for readline_is_used.
      
      Tested on x86_64-linux.
      0020d62f
    • Tom de Vries's avatar
      [gdb/testsuite] Fix gdb.tui/tui-layout.exp for remote host · e1b8f529
      Tom de Vries authored
      When running test-case gdb.tui/tui-layout.exp with host board
      local-remote-host-notty and target board native-gdbserver, I get:
      ...
      FAIL: gdb.tui/tui-layout.exp: terminal=dumb: execution=false: layout=asm: \
        layout asm (timeout)
      ...
      
      The problem is that the test-case expects that the default "setenv TERM dumb"
      has effect, which is not the case for remote host.
      
      Fix this by skipping the test for remote host.
      
      Tested on x86_64-linux.
      e1b8f529
    • Tom de Vries's avatar
      [gdb/testsuite] Fix gdb.tui/tui-nl-filtered-output.exp for remote host · b91f1604
      Tom de Vries authored
      When running test-case gdb.tui/tui-nl-filtered-output.exp with host board
      local-remote-host-notty and target board native-gdbserver, I get:
      ...
      FAIL: gdb.tui/tui-nl-filtered-output.exp: check printf output
      ...
      
      The problem is that Term::enter_tui is returning 0, but the test-case doesn't
      check for this, and consequently runs unsupported tests.
      
      Fix this by adding the missing check.
      
      Tested on x86_64-linux.
      b91f1604
    • Tom de Vries's avatar
      [gdb/testsuite] Require ![is_remote host] for TUI · 72f160d0
      Tom de Vries authored
      When running test-case gdb.tui/corefile-run.exp with both host and target board
      local-remote-host-native.exp, we run into:
      ...
      FAIL: gdb.tui/corefile-run.exp: load corefile
      ...
      while this passes with USE_TUI=0.
      
      The problem is that the TUI setup code uses "setenv TERM ansi", which has no
      effect on remote host.
      
      I can confirm this analysis by working around this problem in
      local-remote-host-native.exp like this:
      ...
      -    spawn $RSH -t -l $username $remote $cmd
      +    spawn $RSH -t -l $username $remote "export TERM=ansi; $cmd"
      ...
      
      For now, simply make TUI unsupported for remote host, by returning 0 in
      prepare_for_tui.
      
      Tested on x86_64-linux.
      72f160d0
    • Tom de Vries's avatar
      [gdb/testsuite] Handle USE_TUI in gdb.tui/corefile-run.exp · 6b81ded4
      Tom de Vries authored
      Once in a while I find myself rewriting a TUI test-case into a non-TUI
      test-case, to better understand whether the problem I'm looking at is
      related to the TUI or not.
      
      I've got the impression that I've done this sufficiently often that it's worth
      committing the non-TUI version, so having just written a non-TUI version of
      gdb.tui/corefile-run.exp, let's commit it.
      
      The non-TUI version can be enabled by doing:
      ...
      $ make check "RUNTESTFLAGS=gdb.tui/corefile-run.exp USE_TUI=0"
      ...
      
      Also remove hard-coding of a source line number.
      
      Tested on x86_64-linux.
      6b81ded4
    • Tom de Vries's avatar
      [gdb/testsuite] Fix untested message in gdb.tui/corefile-run.exp · ed7d5797
      Tom de Vries authored
      In test-case gdb.tui/corefile-run.exp, we have this bit:
      ...
      require !use_gdb_stub
      if { [target_info gdb_protocol] == "extended-remote" } {
          untested "not supported"
          return
      }
      ...
      
      So with target board native-gdbserver we get:
      ...
      UNSUPPORTED: gdb.tui/corefile-run.exp: require failed: !use_gdb_stub
      ...
      and with target board native-extended-gdbserver instead:
      ...
      UNTESTED: gdb.tui/corefile-run.exp: not supported
      ...
      
      Fix this by:
      - adding an optional argument target_description to proc
        target_can_use_run_cmd
      - handling the target_description == core &&
        [target_info gdb_protocol] == "extended-remote" case in the proc
      - using require {target_can_use_run_cmd core}
      such that now in both cases we have:
      ...
      UNSUPPORTED: gdb.tui/corefile-run.exp: require failed: \
        target_can_use_run_cmd core
      ...
      
      Tested on x86_64-linux.
      ed7d5797
    • Tom de Vries's avatar
      [gdb/testsuite] Fix gdb.threads/step-bg-decr-pc-switch-thread.exp for native-gdbserver · 275589d9
      Tom de Vries authored
      With test-case gdb.threads/step-bg-decr-pc-switch-thread.exp and target board
      native-gdbserver, I run into:
      ...
      (gdb) UNSUPPORTED: gdb.threads/step-bg-decr-pc-switch-thread.exp: \
        switch to main thread
      Remote debugging from host ::1, port 43914^M
      monitor exit^M
      Cannot execute this command while the target is running.^M
      Use the "interrupt" command to stop the target^M
      and then try again.^M
      (gdb) WARNING: Timed out waiting for EOF in server after monitor exit
      ...
      
      Fix this by following the advice and issuing an interrupt command, allowing
      the following monitor exit command to succeed.
      
      Tested on x86_64-linux.
      275589d9
    • Bruno Larsen's avatar
      [gdb/obvious]: fix python formatting for test gdb.python/py-typeprint.py · 1878b6b5
      Bruno Larsen authored
      python black formatter was complaining about the formatting of
      gdb.python/py-typeprint.py, so this commit corrects it.
      1878b6b5
    • Bruno Larsen's avatar
      gdb/testsuite: add regression test for per-objfile typeprinters · 83b75511
      Bruno Larsen authored
      
      PR python/17136 reported an unhandled exception when using typeprinters
      only valid on some objfiles, rather than being a global typeprinter. The
      fix was accepted without a regression test, and we've been carrying one
      out-of-tree for a while but I think it's worth upstreaming. The code
      itself was developed by Jan Kratochvil.
      
      Co-Authored-By: default avatarJan Kratochvil <jkratochvil@azul.com>
      Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17136
      
      
      Reviewed-By: default avatarAndrew Burgess <aburgess@redhat.com>
      Approved-By: default avatarTom Tromey <tom@tromey.com>
      83b75511
    • Tom Tromey's avatar
      Remove dead code from scalar_binop · 349a125d
      Tom Tromey authored
      
      scalar_binop has code for "&&" and "||", but I think this code can't
      currently be run -- and, furthermore, it doesn't make sense to have
      this code here, as the point of these operators is to short-circuit
      evaluation.
      
      This patch removes the dead code.
      
      Regression tested on x86-64 Fedora 36.
      
      Approved-by: default avatarKevin Buettner <kevinb@redhat.com>
      349a125d
Loading