aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-09-29gdb: make fprint_target_auxv staticSimon Marchi2-4/+1
It's only used in auxv.c. Change-Id: I4992d9aae37b6631a074ab99bbab2f619725b642
2022-09-29gdb: constify auxv parse functionsSimon Marchi10-43/+43
Constify the input parameters of the various auxv parse functions, they don't need to modify the raw auxv data. Change-Id: I13eacd5ab8e925ec2b5c1f7722cbab39c41516ec
2022-09-29gdb: constify target_stack::is_pushedSimon Marchi2-2/+2
The target_ops parameters here can be made const. Change-Id: Ibc18b17d6b21d06145251a03e68aca90538117d6
2022-09-29Constify target_desc declarationsKeith Seitz78-115/+116
This patch changes various global target_desc declarations to const, thereby correcting a prominent source of ODR violations in PowerPC-related target code. The majority of files/changes are mechanical const-ifications accomplished by regenerating the C files in features/. This also required manually updating mips-linux-tdep.h, s390-linux-tdep.h, nios2-tdep.h, s390-tdep.h, arch/ppc-linux-tdesc.h, arch/ppc-linux-common.c, and rs6000-tdep.c. Patch tested against the sourceware trybot, and fully regression tested against our (Red Hat's) internal test infrastructure on Rawhide aarch64, s390x, x86_64, and powerpcle. With this patch, I can finally enable LTO in our GDB package builds. [Tested with a rawhide scratch build containing this patch.] Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=24835
2022-09-29cleanup: Add missing feature/ XML files to MakefileKeith Seitz4-20/+24
This patch adds some missing .xml files to features/Makefile so that when the directory's C files are regenerated, all files are appropriately remade. This has demonstrated that there have been several "misses" in regenerating files in this directory. Namely, arm-secext.c and sparc{32,64}-solaris.c. For the former case, there was what essentially amounts to a typo regarding the create feature function's name. In the later case, this file has missed at least one important update in July, 2020, when allocate_target_description was changed to return a unique pointer. Those corrections are included.
2022-09-29Add -B to the help output from gprof, and add suitable documentation.Nick Clifton3-2/+12
PR 29627 * gprof.c (usage): Add -B. * gprof.texi (synopsis): Add -B. (Output Options): Add entry for -B.
2022-09-29Automatic date update in version.inGDB Administrator1-1/+1
2022-09-28Fix GDB build: ELF support check & -lzstdPedro Alves2-6/+6
GDB fails to build for me, on Ubuntu 20.04. I get: ... CXXLD gdb /usr/bin/ld: linux-tdep.o: in function `linux_corefile_thread(thread_info*, linux_corefile_thread_data*)': /home/pedro/gdb/binutils-gdb/src/gdb/linux-tdep.c:1831: undefined reference to `gcore_elf_build_thread_register_notes(gdbarch*, thread_info*, gdb_signal, bfd*, std::unique_ptr<char, gdb::xfree_deleter<char> >*, int*)' /usr/bin/ld: linux-tdep.o: in function `linux_make_corefile_notes(gdbarch*, bfd*, int*)': /home/pedro/gdb/binutils-gdb/src/gdb/linux-tdep.c:2117: undefined reference to `gcore_elf_make_tdesc_note(bfd*, std::unique_ptr<char, gdb::xfree_deleter<char> >*, int*)' collect2: error: ld returned 1 exit status make[2]: *** [Makefile:2149: gdb] Error 1 make[2]: Leaving directory '/home/pedro/gdb/binutils-gdb/build/gdb' make[1]: *** [Makefile:11847: all-gdb] Error 2 make[1]: Leaving directory '/home/pedro/gdb/binutils-gdb/build' make: *** [Makefile:1004: all] Error 2 Those undefined functions exist in gdb/gcore-elf.c, which is only included in the build if GDB's configure thinks that the target you're configuring for is an ELF target. GDB's configure thinks my system isn't ELF, which is incorrect. For the ELF support check, gdb/config.log shows: configure:17387: checking for ELF support in BFD configure:17407: gcc -o conftest -I/home/pedro/gdb/binutils-gdb/src/gdb/../include -I../bfd -I/home/pedro/gdb/binutils-gdb/src/gdb/../bfd -g3 -O0 -L../bfd -L../libiberty -lzstd conftest.c -lbfd -liberty -lz -lncursesw -lm -ldl >&5 /usr/bin/ld: ../bfd/libbfd.a(compress.o): in function `decompress_contents': /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:42: undefined reference to `ZSTD_decompress' /usr/bin/ld: /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:44: undefined reference to `ZSTD_isError' /usr/bin/ld: ../bfd/libbfd.a(compress.o): in function `bfd_compress_section_contents': /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:195: undefined reference to `ZSTD_compress' /usr/bin/ld: /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:198: undefined reference to `ZSTD_isError' collect2: error: ld returned 1 exit status configure:17407: $? = 1 ... configure:17417: result: no Note how above, in the gcc command line, "-lzstd" appears before "-lbfd". That explain the link failure. It should appear after, like -lz does. This commit fixes it, by moving ZSTD_LIBS from LDFLAGS to LIBS, next to -lz, in GDB_AC_CHECK_BFD, and regenerating gdb/configure. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29630 Change-Id: I1f4128dde634e8ea04c9002904f1005a8b3a6863
2022-09-28gdb: remove trailing spaces in READMESimon Marchi1-4/+4
Change-Id: Ic7f8e415acd1bff6194cf08ed646bff45571f165
2022-09-28Treat Character as a discrete type in AdaTom Tromey3-1/+69
A user noticed that gdb would assert when printing a certain array with array-indexes enabled. This turned out to be caused by the array having an index type of Character, which is completely valid in Ada. This patch changes the Ada support to recognize Character as a discrete type, and adds some tests. Because this is Ada-specific and was also reviewed internally, I am checking it in.
2022-09-28The help document of size misses an option.Nick Clifton3-2/+19
PR 29628 * size.c (usage): Add -f. * doc/binutils.texi (size): Add -f.
2022-09-28ld/testsuite: force warnings when dealing with execstack testsClément Chigot1-10/+3
Binutils can be configured to avoid printing the execstack or RWD segment warnings. In this case, the first test of PR ld/29072 will fail. Fix that by always manually forcing the warnings for it. ld/ChangeLog: * testsuite/ld-elf/elf.exp (PR ld/29072): Force execstack and RWD segment warnings.
2022-09-28Re: egrep in binutilsAlan Modra2-8/+2
Multi-line patterns for grep are not supported on some old versions of grep. binutils/ * embedspu.sh: Replace multi-line grep with sed. ld/ * testsuite/ld-elfvers/vers.exp: Replace multi-line grep with sed.
2022-09-28Renenerate {gdb,gdbserver}/configurePedro Alves2-4/+4
Pick up config/lib-ld.m4 changes from: commit 67d1991b785bdfef1d70cddfa0202b99b43ccce9 Author: Alan Modra <amodra@gmail.com> AuthorDate: Wed Sep 28 13:37:31 2022 +0930 Commit: Alan Modra <amodra@gmail.com> CommitDate: Wed Sep 28 13:37:31 2022 +0930 egrep in binutils Change-Id: Ifc84d30f1fca015e80bafa80f9a35616b0077220
2022-09-28The help document of as misses some many optionsNick Clifton4-34/+90
PR 29623 * as.c (show_usage): Document the --dump-config, --gdwarf-cie-version, --hash-size, --multibyte-handling, and --reduce-memory-overheads options. * config/tc-i386.c (md_show_usage): Document the -O option. * doc/as.texi: Document the --dump-config, --emulation, --hash-size, and --reduce-memory-overheads options.
2022-09-28egrep in binutilsAlan Modra21-35/+41
Apparently some distros have a nagging egrep that helpfully tells you egrep is deprecated and to use "grep -E". The nag message causes a ld testsuite failure. What's more the advice isn't that good. The "-E" flag may not be available with older versions of grep. This patch fixes bare invocation of egrep within binutils, replacing it with the autoconf $EGREP or with grep. config/ * lib-ld.m4 (AC_LIB_PROG_LD_GNU): Require AC_PROG_EGREP and invoke $EGREP. (AC_LIB_PROG_LD): Likewise. binutils/ * configure: Regenerate. * embedspu.sh: Replace egrep with grep. gold/ * testsuite/Makefile.am (flagstest_compress_debug_sections.check): Replace egrep with grep. * testsuite/Makefile.in: Regenerate. * testsuite/bnd_ifunc_1.sh: Replace egrep with $EGREP. * testsuite/bnd_ifunc_2.sh: Likewise. * testsuite/bnd_plt_1.sh: Likewise. * testsuite/discard_locals_test.sh: Likewise. * testsuite/gnu_property_test.sh: Likewise. * testsuite/no_version_test.sh: Likewise. * testsuite/pr18689.sh: Likewise. * testsuite/pr26936.sh: Likewise. * testsuite/retain.sh: Likewise. * testsuite/split_i386.sh: Likewise. * testsuite/split_s390.sh: Likewise. * testsuite/split_x32.sh: Likewise. * testsuite/split_x86_64.sh: Likewise. * testsuite/ver_test_pr16504.sh: Likewise. intl/ * configure: Regenerate. ld/ * testsuite/ld-elfvers/vers.exp (test_ar): Replace egrep with grep.
2022-09-28regen bfd/configureAlan Modra1-1/+2
2022-09-28asan: _bfd_stab_section_find_nearest_line segvAlan Modra1-0/+3
The segv was on "info->strs[strsize - 1] = 0;" with strsize zero. OK, if strsize is zero we don't have any filenames in stabs so no useful info. * syms.c (_bfd_stab_section_find_nearest_line): Exit if either stabsize or strsize is zero.
2022-09-28asan: segv in _bfd_archive_close_and_cleanupAlan Modra1-1/+1
Uninitialised arelt_data->parent_cache led to this segv. * pdb.c (pdb_get_elt_at_index): Clear arelt_data.
2022-09-28Automatic date update in version.inGDB Administrator1-1/+1
2022-09-27sim: Link ZSTD_LIBSFangrui Song8-5/+144
This fixes linker errors in a `../../configure --enable-targets --enable-sim; make all-gdb` build.
2022-09-27gold: Suppress "unused" variable warning on ClangTsukasa OI1-0/+3
Clang generates a warning if there is a variable that is set but not used otherwise ("-Wunused-but-set-variable"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). Because the cause of this error is in the Bison-generated code ($(srcdir)/gold/yyscript.y -> $(builddir)/gold/yyscript.c), this commit suppresses this warning ("-Wunused-but-set-variable") by placing DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE macro at the end of user prologue on yyscript.y. * yyscript.y: Suppress -Wunused-but-set-variable warning on the Bison-generated code.
2022-09-26libctf: Add ZSTD_LIBS to LIBS so that ac_cv_libctf_bfd_elf can be trueFangrui Song5-6/+280
2022-09-26binutils, gdb: support zstd compressed debug sectionsFangrui Song56-254/+1490
PR29397 PR29563: Add new configure option --with-zstd which defaults to auto. If pkgconfig/libzstd.pc is found, define HAVE_ZSTD and support zstd compressed debug sections for most tools. * bfd: for addr2line, objdump --dwarf, gdb, etc * gas: support --compress-debug-sections=zstd * ld: support ELFCOMPRESS_ZSTD input and --compress-debug-sections=zstd * objcopy: support ELFCOMPRESS_ZSTD input for --decompress-debug-sections and --compress-debug-sections=zstd * gdb: support ELFCOMPRESS_ZSTD input. The bfd change references zstd symbols, so gdb has to link against -lzstd in this patch. If zstd is not supported, ELFCOMPRESS_ZSTD input triggers an error. We can avoid HAVE_ZSTD if binutils-gdb imports zstd/ like zlib/, but this is too heavyweight, so don't do it for now. ``` % ld/ld-new a.o ld/ld-new: a.o: section .debug_abbrev is compressed with zstd, but BFD is not built with zstd support ... % ld/ld-new a.o --compress-debug-sections=zstd ld/ld-new: --compress-debug-sections=zstd: ld is not built with zstd support % binutils/objcopy --compress-debug-sections=zstd a.o b.o binutils/objcopy: --compress-debug-sections=zstd: binutils is not built with zstd support % binutils/objcopy b.o --decompress-debug-sections binutils/objcopy: zstd.o: section .debug_abbrev is compressed with zstd, but BFD is not built with zstd support ... ```
2022-09-27PR29617, ld segfaults when bfd_close failsAlan Modra1-1/+1
PR 29617 * ldmain.c (main): Don't access output_bfd after bfd_close.
2022-09-27Automatic date update in version.inGDB Administrator1-1/+1
2022-09-26gdb/testsuite: update field names in gdb-gdb.py.inSimon Marchi1-2/+2
Patches that renamed the type::length and type::target_type fields didn't update gdb-gdb.py.in accordingly, do that. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29599 Change-Id: I0f3f37a94d43497789156b0ded4d2f2dd5b89496
2022-09-26gdb/testsuite: use gdb_test in gdb.gdb/python-helper.expSimon Marchi2-75/+21
If some command in there gives the wrong answer, we currently have to wait for a timeout for the test to continue. For instance, I currently see: print *val->type $1 = Python Exception <class 'gdb.error'>: Cannot take address of method length. (outer-gdb) FAIL: gdb.gdb/python-helper.exp: pretty print type (timeout) We can avoid this and modernize the test at the same time by using the -prompt option of gdb_test. gdb_test_no_output currently accepts a -prompt_re option (the variable name passed to parse_args defines the option name), but I think it's a typo. It's supposed to be -prompt, like gdb_test. I can't find anything using -prompt_re using grep. Change it to just "prompt". Change-Id: Icc0a9a0ef482e62460c708bccdd544c11d711eca
2022-09-26gdb/testsuite: bump duration for the whole test in do_self_testsSimon Marchi1-28/+8
When running gdb.gdb/python-helper.exp, I get some timeouts: continue Continuing. print 1 FAIL: gdb.gdb/python-helper.exp: hit breakpoint in outer gdb (timeout) At this time, GDB is actually processing the stop and reading in some CUs. selftest_setup does bump the timeout, but it's not for the whole test. Since debugging GDB with GDB is (unfortunately) a bit slow, bump the timeout for the whole duration of the setup and body. On my optimized build, the command takes just a bit more than the current timeout of 10 seconds. But it's much slower if running the test on an unoptimized build, so I think it's necessary to bump the timeout for that in any case. Change-Id: I4d38285870e76c94f9d0bfdb60648a2e7f2cfa5d
2022-09-26binutils/testsuite: handle the different install names of c++filtClément Chigot1-1/+4
c++filt is always named cxxfilt in a build directory, but in a install directory it would be named either cxxfilt or c++filt (depending on the host). Handle this last case in testsuite. binutils/ChangeLog: * testsuite/config/default.exp (CXXFILE): if cxxfilt not found, try c++filt.
2022-09-26binutils/testsuite: skip gentestdlls related tests if missingClément Chigot1-0/+6
When launching the testsuite through runtest outside the build tree, gentestdlls might not be available, this binary being created by make check. Simply untested the related tests instead of crashing. binutils/ChangeLog: * testsuite/binutils-all/objdump.exp: Skip dotnet tests if gentestdlls is not available.
2022-09-26[gdb/testsuite] Fix gdb.dwarf2/dw2-unspecified-type-foo.c with -m32Tom de Vries1-0/+1
When running test-case gdb.dwarf2/dw2-unspecified-type-foo.c with target board unix/-m32, I run into: ... (gdb) PASS: gdb.dwarf2/dw2-unspecified-type.exp: ptype foo p ((int (*) ()) foo) ()^M $1 = -135698472^M ... Add the missing "return 0" in foo, which fixes this. Tested on x86_64-linux.
2022-09-26PR29613, use of uninitialized value in objcopyAlan Modra1-8/+9
PR 29613 * elf.c (_bfd_elf_write_secondary_reloc_section): Trim sh_size back to relocs written. Use better types for vars.
2022-09-26PR29542, PowerPC gold internal error in get_output_view,Alan Modra1-1/+2
We were attempting to set a BSS style section contents. PR 29542 * powerpc.cc (Output_data_plt_powerpc::do_write): Don't set .plt, .iplt or .lplt section contents when position independent.
2022-09-26stab nearest_line bfd_malloc_and_get_sectionAlan Modra5-27/+52
bfd_malloc_and_get_section performs some sanity checks on the section size before allocating memory. This patch avails the stab nearest_line code of that sanity checking, and tidies up memory afterward. * coffgen.c (_bfd_coff_close_and_cleanup): Call _bfd_stab_cleanup. * elf.c (_bfd_elf_close_and_cleanup): Likewise. * syms.c (_bfd_stab_section_find_nearest_line): Set *pinfo earlier. Use bfd_malloc_and_get_section. Free malloc'd buffers on failure. Malloc indextable. (_bfd_stab_cleanup): New function. * libbfd-in.h (_bfd_stab_cleanup): Declare. * libbfd.h: Regnerate.
2022-09-26PKG_CHECK_MODULES for msgpack and janssonAlan Modra4-54/+22
Using AS_IF rather than shell "if" is recommended for conditionals that contain non-trivial autoconf macros, because autoconf will emit any AC_REQUIREd autoconf macro expansions outside of the conditional. This makes them available elsewhere in the configure script. binutils/ * configure.ac (msgpack): Use "AS_IF" rather than "if". * configure: Regenerate. ld/ * configure.ac (jansson): Use "AS_IF" rather than "if". * configure: Regenerate.
2022-09-26Automatic date update in version.inGDB Administrator1-1/+1
2022-09-25Automatic date update in version.inGDB Administrator1-1/+1
2022-09-24gdb/source.c: Fix undefined behaviour dereferencing empty stringMagne Hov1-9/+1
When a source file's dirname is solely made up of directory separators we end up trying to dereference the last character of an empty string with std::string::back, which results in undefined behaviour. A typical use case where this can happen is when the root directory "/" is used as a compilation directory. With libstdc++.so.6.0.28 we get no out-of-bounds checks and the byte preceding the storage of the empty string is returned. The character value of this byte depends on heap implementation and usage, but when this byte happens to hold the value of the directory separator character we go on to call std::string::pop_back on the empty string which results in an out_of_range exception which terminates GDB. Fix this by using path_join. prepare_path_for_appending ensures that the filename component is relative. The testsuite has been run before and after the change and no regressions were found.
2022-09-24gdbserver: remove unused for loopEnze Li1-3/+0
In this commit, commit cf6c1e710ee162a5adb0ae47acb731f2bfecc956 Date: Mon Jul 11 20:53:48 2022 +0800 gdbserver: remove unused variable I removed an unused variable in handle_v_run. Pedro then pointed out that the for loop after it was also unused. After a period of smoke testing, no exceptions were found. Tested on x86_64-linux.
2022-09-24The problem with warning in elf_object_pAlan Modra6-15/+68
elfcode.h can emit three warnings in elf_object_p for various things, "section extending past end of file", "corrupt string table index", and "program header with invalid alignment". The problem with doing this is that the warning can be emitted for multiple possible targets as each one is tried. I was looking at a fuzzer testcase that had an object file with 6144 program headers, 5316 of which had invalid alignment. It would be bad enough to get 5316 messages all the same, but this object was contained in an archive and resulted in 4975776 repeats. Some trimming can be done by not warning if the bfd is already marked read_only, as is done for the "section extending past end of file" warning, but that still results in an unacceptable number of warnings for object files in archives. Besides that, it is just wrong to warn about a problem detected by a target elf_object_p other than the one that actually matches. At some point we might have more target specific warnings. So what to do? One obvious solution is to remove the warnings. Another is to poke any warning strings into the target xvec, emitting them if that xvec is the final one chosen. This also has the benefit of solving the archive problem. A warning when recursing into _bfd_check_format for the first element of the archive (to find the correct target for the archive) will still be on the xvec at the point that target is chosen for the archive. However, target xvecs are read-only. Thus the need for per_xvec_warn to logically extend bfd_target with a writable field. I've made per_xvec_warn one larger than bfd_target_vector to provide one place for user code that makes private copies of target xvecs. * elfcode.h (elf_swap_shdr_in, elf_object_p): Stash potential warnings in _bfd_per_xvec_warn location. * format.c (clear_warnmsg): New function. (bfd_check_format_matches): Call clear_warnmsg before trying a new xvec. Print warnings for the successful non-archive match. * targets.c: Include libiberty.h. (_bfd_target_vector_entries): Use ARRAY_SIZE. (per_xvec_warn): New. (_bfd_per_xvec_warn): New function. * Makefile.am (LIBBFD_H_FILES): Add targets.c. * Makefile.in: Regenerate. * libbfd.h: Regenerate.
2022-09-24Re: bfd_cleanup for object_pAlan Modra3-4/+4
Bits still missing from commit cb001c0d283d. * aoutx.h (aout_@var{size}_some_aout_object_p): Correct synopsis. * i386lynx.c (lynx_core_file_p): Correct return type. * ptrace-core.c (ptrace_unix_core_file_p): Likewise.
2022-09-24Automatic date update in version.inGDB Administrator1-1/+1
2022-09-23Support AT_USRSTACKBASE and AT_USRSTACKLIM.John Baldwin2-0/+4
FreeBSD's kernel has recently added two new ELF auxiliary vector entries to describe the location of the user stack for the initial thread in a process. This change displays the proper name and description of these entries in 'info auxv'.
2022-09-23RISC-V: Add Zawrs ISA extension supportChristoph Müllner7-0/+43
This patch adds support for the Zawrs ISA extension ("wrs.nto" and "wrs.sto" instructions). The specification can be found here: https://github.com/riscv/riscv-zawrs/blob/main/zawrs.adoc Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
2022-09-23gdb/testsuite/tui: start GDB with "set filename-display basename"Simon Marchi1-1/+7
The test gdb.tui/tui-missing-src.exp fails on my CI machine, and I concluded that it is caused by the long source directory name: /home/jenkins/workspace/binutils-gdb_master_linuxbuild/platform/jammy-amd64/target_board/unix/src/binutils-gdb The long name causes some particular redrawing that doesn't happen for shorter directories, and causes a Term::command call to return too early. This can be reproduced by cloning the binutils-gdb repo in a directory with a name similar to the one shown above. $ pwd /home/simark/workspace/binutils-gdb_master_linuxbuild/platform/jammy-amd64/target_board/unix/src/binutils-gdb/build/gdb $ make check-read1 TESTS="gdb.tui/tui-missing-src.exp" FAIL: gdb.tui/tui-missing-src.exp: checking if inside f2 () FAIL: gdb.tui/tui-missing-src.exp: f2.c must be displayed in source window FAIL: gdb.tui/tui-missing-src.exp: check source box is empty after return FAIL: gdb.tui/tui-missing-src.exp: Back in main Note that using "make check" instead of "make check-read1" only shows the last 2 failures for me. When running gdb.tui/tui-missing-src.exp in a directory with a shorter name, the terminal looks like this by the time the "checking if inside f2" test runs: Screen Dump (size 80 columns x 24 rows, cursor at column 6, row 23): 0 +-...ld/binutils-gdb-noasan/gdb/testsuite/outputs/gdb.tui/tui-missing-src/f2.c-+ 1 | 1 | 2 | 2 int | 3 | 3 f2 (int x) | 4 | 4 { | 5 | > 5 x <<= 1; | 6 | 6 return x+5; | 7 | 7 } | 8 | 8 | 9 | 9 | 10 | 10 | 11 | 11 | 12 | 12 | 13 | 13 | 14 +------------------------------------------------------------------------------+ 15 multi-thre Thread 0x7ffff7cc07 In: f2 L5 PC: 0x555555555143 16 at /home/simark/build/binutils-gdb-noasan/gdb/testsuite/outputs/gdb.tui/tui- 17 missing-src/main.c:6 18 (gdb) next 19 (gdb) step 20 f2 (x=4) 21 at /home/simark/build/binutils-gdb-noasan/gdb/testsuite/outputs/gdb.tui/tui- 22 missing-src/f2.c:5 23 (gdb) PASS: gdb.tui/tui-missing-src.exp: checking if inside f2 () When running the `Term::command "step"` just before, GDB writes the "step", which makes the `wait_for` proc go in the "looking for the prompt" mode, to know when the command's execution is complete. As some new output appears, lines that must disappear are deleted using the "Delete Line" operation [1] and some new ones are drawn. The source window gets redrawn with the contents of the f2.c file. Then, GDB writes the prompt (at line 23 above), which satisfies `wait_for`, which then returns. The state of the terminal is therefore correct for the "check if inside f2" and "f2.c must be displayed in the source window" tests. In the non-working case, the terminal looks like this by the time the "check if inside f2" test runs: Screen Dump (size 80 columns x 24 rows, cursor at column 6, row 17): 0 +------------------------------------------------------------------------------+ 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | [ No Source Available ] | 8 | | 9 | | 10 | | 11 | | 12 | | 13 | | 14 +------------------------------------------------------------------------------+ 15 multi-thre Thread 0x7ffff7cc1b In: main L7 PC: 0x555555555128 16 sing-src/main.c:6 17 (gdb) ary breakpoint 1, main () 18 at /home/simark/workspace/binutils-gdb_master_linuxbuild/platform/jammy-amd6 19 4/target_board/unix/src/binutils-gdb/build/gdb/testsuite/outputs/gdb.tui/tui-mis 20 sing-src/main.c:6 21 (gdb) next 22 (gdb) step 23 FAIL: gdb.tui/tui-missing-src.exp: checking if inside f2 () What happened is: GDB wrote the "step" command, which make the `wait_for` proc go in its "looking for the prompt" mode. However, curses decided to redraw whatever scrolled up to line 17 using some standard character insertion operations: +++ Cursor Down (1), cursor: (16, 0) -> (17, 0) +++ Inserting string '(' +++ Inserted char '(', cursor: (17, 0) -> (17, 1) +++ Inserted string '(', cursor: (17, 0) -> (17, 1) +++ Inserting string 'g' +++ Inserted char 'g', cursor: (17, 1) -> (17, 2) +++ Inserted string 'g', cursor: (17, 1) -> (17, 2) +++ Inserting string 'd' +++ Inserted char 'd', cursor: (17, 2) -> (17, 3) +++ Inserted string 'd', cursor: (17, 2) -> (17, 3) +++ Inserting string 'b' +++ Inserted char 'b', cursor: (17, 3) -> (17, 4) +++ Inserted string 'b', cursor: (17, 3) -> (17, 4) +++ Inserting string ')' +++ Inserted char ')', cursor: (17, 4) -> (17, 5) +++ Inserted string ')', cursor: (17, 4) -> (17, 5) +++ Inserting string ' ' +++ Inserted char ' ', cursor: (17, 5) -> (17, 6) +++ Inserted string ' ', cursor: (17, 5) -> (17, 6) And that causes `wait_for` to think the "step" command is complete. This is wrong, as the prompt at line 17 isn't the prompt drawn after the completion of the "step" command. The subsequent tests now run with a partially updated screen (what is shown above) and obviously fail. The ideal way to fix this would be for `wait_for` to be smarter, to avoid it confusing the different prompts drawn. However, I would also like to reduce the variations in TUI test results due to the directories (source and build) in which tests are ran. TUI tests are more prone to differences in test results due to variations in directory names than other tests, as it makes curses take different redrawing decisions. So in this patch, I propose to make TUI tests use "set filename-display basename", which makes GDB omit directory names when it prints file names. This way, regardless of where you run the tests, you should get the same results (all other things being equal). Doing this happens to fix my failures and makes my CI happy (which in turns makes me happy). To be clear, I understand that this does not fix the root issue of `proc wait_for` being confused. However, it makes TUI test runs be more similar for everyone, such that there's less chance of TUI tests randomly failing for somebody. If some other change triggers the `wait_for` problem again in the future, hopefully everybody will see the problem and we can work on getting it fixed more easily than if just one unlucky person sees the problem. Note that there are other reasons why TUI tests could vary, like different curses library versions taking different re-drawing decisions. However, I think my change is a good step towards more stable test results. [1] https://vt100.net/docs/vt510-rm/DL.html Change-Id: Ib18da83317e7b78a46f77892af0d2e39bd261bf5
2022-09-23gdb/csky add cskyv2-linux.xml for cskyv2-linux.cJiangshuai Li4-82/+185
Add cskyv2-linux.xml for re-generating cskyv2-linux.c if needed. Also update cskyv2-linux.c.
2022-09-23pdb: _bfd_generic_close_and_cleanupAlan Modra1-1/+6
Every format that might appear inside a generic archive needs to call _bfd_generic_close_and_cleanup, so that the archive element lookup htab can be tidied on closing an element. Otherwise you get stale entries in the htab pointing at freed and perhaps reused memory, resulting in segfaults when the archive is closed. Calling _bfd_generic_close_and_cleanup on close means tdata needs to be set up too, since pdb claims to be of format bfd_archive. * pdb.c (pdb_close_and_cleanup): Define as _bfd_generic_close_and_cleanup. (pdb_archive_p): Set up tdata for bfd_archive format.
2022-09-23Don't attempt to compress bss sectionsAlan Modra2-2/+4
It doesn't make sense to try to compress a section without contents since those sections take no space on disk. Compression can only increase the disk image size. * coffgen.c (make_a_section_from_file): Exclude !SEC_HAS_CONTENTS sections from compression and decompression. * elf.c (_bfd_elf_make_section_from_shdr): Likewise.
2022-09-23Automatic date update in version.inGDB Administrator1-1/+1