- Jan 06, 2022
-
-
Tom Tromey authored
Change language_info to use filtered output. This is ok because the sole caller uses filtered output elsewhere, and because this function calls show_language_command, which also uses filtered output.
-
Tom Tromey authored
This changes the implementations of the target files_info method to use filtered output. This makes sense because the sole caller of this method is an ordinary command (info_program_command). This patch changes this command to use filtered output as well.
-
Tom Tromey authored
target-descriptions.c uses unfiltered output. However, if you happen to invoke this command interactively, it's probably better for it to use filtering. For non-interactive use, this doesn't matter.
-
Tom Tromey authored
This changes gdbarch dumping to use filtered output. This seems a bit better to me, both on the principle that this is an ordinary command, and because the output can be voluminous, so it may be nice to stop in the middle.
-
Tom Tromey authored
In my tour of the ui_file subsystem, I found that fputstr and fputstrn can be simplified. The _filtered forms are never used (and IMO unlikely to ever be used) and so can be removed. And, the interface can be simplified by removing a callback function and moving the implementation directly to ui_file. A new self-test is included. Previously, I think nothing was testing this code. Regression tested on x86-64 Fedora 34.
-
Tom Tromey authored
A change to BFD caused a gdb regression when using the Ada "catch exception" feature. The bug is visible when a shared library throws an exception that is caught in the main executable. This was discussed here: https://sourceware.org/pipermail/binutils/2021-July/117538.html This patch implements Alan's proposed fix, namely to use VERSYM_HIDDEN rather than the name when deciding to install a version-less symbol. The internal test case is identical to the catch_ex_std.exp that is in-tree, so I haven't added a new test. I could not make that one fail on x86-64 Linux, though. It's possible that maybe I'd have to update the system linker first, but I didn't want to try that. Regression tested on x86-64 Fedora 32.
-
Hannes Domani authored
Commit 72ee03ff fixed a use-after-move bug in add_thread_object, but it changed the inferior_thread attribute to contain the inferior instead of the actual thread. This now uses the thread_obj in its new location instead. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28429
-
Tom Tromey authored
execute_control_commands_to_string can be rewritten in terms of execute_fn_to_string, which consolidates some knowledge about which streams to redirect. Regression tested on x86-64 Fedora 34.
-
Tom Tromey authored
Right now, gdb's self-backtrace feature will still print something when a backtrace is unavailable: sig_write (_("----- Backtrace -----\n")); [...] sig_write (_("Backtrace unavailable\n")); sig_write ("---------------------\n"); However, if GDB_PRINT_INTERNAL_BACKTRACE is undefined, it seems better to me to print nothing at all. This patch implements this change. It also makes a couple of other small changes in this same module: it adds a header guard to bt-utils.h, and it protects the definitions of gdb_internal_backtrace_1 with a check of GDB_PRINT_INTERNAL_BACKTRACE.
-
- Jan 05, 2022
-
-
Tom Tromey authored
The patch to fix paging with redirection caused a regression in the internal AdaCore test suite. The problem occurs when running an MI command from the CLI using interpreter-exec, when paging is enabled. This scenario isn't covered by the current test suite, so this patch includes a new test. The problem is that, in this situation, MI does: fputs_unfiltered (strcmp (context->command, "target-select") == 0 ? "^connected" : "^done", mi->raw_stdout); Here raw_stdout is a stdio_file wrapping stdout, so the pager thinks that it is ok to buffer the output. However, in this setup, it isn't ok, and flushing the wrap buffer doesn't really work properly. Also, MI next does: mi_out_put (uiout, mi->raw_stdout); ... but this uses ui_file::write, which also doesn't flush the wrap buffer. I think all this will be fixed by the pager rewrite series I'm working on. However, in the meantime, adding the old gdb_stdout check back to the pager fixes this problem. Regression tested on x86-64 Fedora 34.
-
H.J. Lu authored
Currently, on 32-bit and 64-bit ARM, it seems that ld generates p_align values of 0x10000 even if no section alignment is greater than 0x1000. The issue is more general and probably affects other targets with multiple page sizes. While file layout absolutely must take 64K page size into account, that does not have to be reflected in the p_align value. If running on a 64K kernel, the file will be loaded at a 64K page boundary by necessity. On a 4K kernel, 64K alignment is not needed. The glibc loader has been fixed to honor p_align: https://sourceware.org/bugzilla/show_bug.cgi?id=28676 similar to kernel: commit ce81bb256a224259ab686742a6284930cbe4f1fa Author: Chris Kennelly <ckennelly@google.com> Date: Thu Oct 15 20:12:32 2020 -0700 fs/binfmt_elf: use PT_LOAD p_align values for suitable start address This means that on 4K kernels, we will start to do extra work for 64K p_align, but this pointless for pretty much all binaries (whose section alignment rarely exceeds 16). The minimum page size is used, instead of the maximum section alignment due to this glibc bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28688 It has been fixed in glibc 2.35. But linker output must work on existing glibc binaries. 1. Set p_align to the minimum page size while laying out segments aligning to the maximum page size or section alignment. The run-time loader can align segments to the minimum page size or above, depending on system page size. 2. If -z max-page-size=NNN is used, p_align will be set to the maximum page size or the largest section alignment. 3. If a section requires alignment higher than the minimum page size, don't set p_align to the minimum page size. 4. If a section requires alignment higher than the maximum page size, set p_align to the section alignment. 5. For objcopy, when the minimum page size != the maximum page size, p_align may be set to the minimum page size while segments are aligned to the maximum page size. In this case, the input p_align will be ignored and the maximum page size will be used to align the ouput segments. 6. Update linker to disallow the common page size > the maximum page size. 7. Update linker to avoid the common page size > the maximum page size. 8. Adjust pru_irq_map-1.d to expect p_align == sh_addralign: Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .text PROGBITS 20000000 00007c 000004 00 AX 0 0 4 ... Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000074 0x00000000 0x00000000 0x00008 0x00008 RW 0x1 LOAD 0x00007c 0x20000000 0x20000000 0x00004 0x00004 R E 0x4 vs. Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .text PROGBITS 20000000 00007c 000004 00 AX 0 0 4 ... Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000074 0x00000000 0x00000000 0x00008 0x00008 RW 0x1 LOAD 0x00007c 0x20000000 0x20000000 0x00004 0x00004 R E 0x1 To enable this linker optimization, the backend should define ELF_P_ALIGN to ELF_MINPAGESIZE. bfd/ PR ld/28689 PR ld/28695 * elf-bfd.h (elf_backend_data): Add p_align. * elf.c (assign_file_positions_for_load_sections): Set p_align to the default p_align value while laying out segments aligning to maximum page size or section alignment. (elf_is_p_align_valid): New function. (copy_elf_program_header): Call elf_is_p_align_valid to determine if p_align is valid. * elfxx-target.h (ELF_P_ALIGN): New. Default to 0. (elfNN_bed): Add ELF_P_ALIGN. * elfxx-x86.h (ELF_P_ALIGN): New. Set to ELF_MINPAGESIZE. include/ PR ld/28689 PR ld/28695 * bfdlink.h (bfd_link_info): Add maxpagesize_is_set. ld/ PR ld/28689 PR ld/28695 * emultempl/elf.em (gld${EMULATION_NAME}_handle_option): Set link_info.maxpagesize_is_set for -z max-page-size=NNN. * ldelf.c (ldelf_after_parse): Disallow link_info.commonpagesize > link_info.maxpagesize. * testsuite/ld-elf/elf.exp: Pass -z max-page-size=0x4000 to linker to build mbind2a and mbind2b. * testsuite/ld-elf/header.d: Add -z common-page-size=0x100. * testsuite/ld-elf/linux-x86.exp: Add PR ld/28689 tests. * testsuite/ld-elf/p_align-1.c: New file. * testsuite/ld-elf/page-size-1.d: New test. * testsuite/ld-elf/pr26936.d: Add -z common-page-size=0x1000. * testsuite/ld-elf/seg.d: Likewise. * testsuite/ld-scripts/rgn-at5.d: Likewise. * testsuite/ld-pru/pru_irq_map-1.d: Append 1 to name. Adjust expected PT_LOAD segment alignment. * testsuite/ld-pru/pru_irq_map-2.d: Append 2 to name. * testsuite/ld-scripts/pr23571.d: Add -z max-page-size=0x1000.
-
Alan Modra authored
Some targets restrict symbol addresses in .text to instruction boundaries. * testsuite/gas/all/quoted-sym-names.s: Define syms in .data. * testsuite/gas/all/quoted-sym-names.d: Adjust to suit.
-
Alan Modra authored
gold/testsuite/icf_test.cc:32:5: error: infinite recursion detected [-Werror=infinite-recursion] 32 | int kept_func() | ^~~~~~~~~ * testsuite/icf_test.cc: Avoid infinite recursion error. -
GDB Administrator authored
-
H.J. Lu authored
Use 0x%v, instead of bfd_sprintf_vma, to report relative relocations. Change linker relative relocations report from tmpdir/dump: R_X86_64_IRELATIVE (offset: 0x0000000000002000, info: 0x0000000000000025, addend: 0x0000000000001007) against 'ifunc' for section '.data.rel.ro.local' in tmpdir/report-reloc-1.o to tmpdir/dump: R_X86_64_IRELATIVE (offset: 0x2000, info: 0x25, addend: 0x1007) against 'ifunc' for section '.data.rel.ro.local' in tmpdir/report-reloc-1.o bfd/ * elfxx-x86.c (_bfd_x86_elf_link_report_relative_reloc): Use 0x%v instead of bfd_sprintf_vma. ld/ * testsuite/ld-i386/report-reloc-1.l: Updated. * testsuite/ld-x86-64/report-reloc-1.l: Likewise.
-
H.J. Lu authored
Improve thin archive member error message with: ld: libbar.a(bar.o): error opening thin archive member: No such file or directory instead of ld: libbar.a: error adding symbols: No such file or directory PR ld/28722 * archive.c (_bfd_get_elt_at_filepos): Add a pointer argument for struct bfd_link_info. Call linker callback when failing to open thin archive member. (_bfd_generic_get_elt_at_index): Pass NULL to _bfd_get_elt_at_filepos. (bfd_generic_openr_next_archived_file): Likewise. * coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Add a pointer argument for struct bfd_link_info and pass it to _bfd_get_elt_at_filepos. (alpha_ecoff_openr_next_archived_file): Pass NULL to _bfd_get_elt_at_filepos. (alpha_ecoff_get_elt_at_index): Likewise. * coff-rs6000.c (_bfd_xcoff_openr_next_archived_file): Likewise. * ecoff.c (ecoff_link_add_archive_symbols): Pass info to backend->get_elt_at_filepos. * elflink.c (elf_link_is_defined_archive_symbol): info to _bfd_get_elt_at_filepos. * libbfd-in.h (_bfd_get_elt_at_filepos): Add a pointer argument for struct bfd_link_info. * libbfd.h: Regenerate. * libecoff.h (ecoff_backend_data): Add a pointer argument for struct bfd_link_info to get_elt_at_filepos. * linker.c (_bfd_generic_link_add_archive_symbols): Pass info to _bfd_get_elt_at_filepos.
-
- Jan 04, 2022
-
-
Lancelot SIX authored
003aae07 (gdb: Copy inferior properties in clone-inferior) introduced a testcase that fails when testing with the native-extended-gdbserver board: Running ../gdb/testsuite/gdb.base/inferior-clone.exp ... FAIL: gdb.base/inferior-clone.exp: inferior 2: clone-inferior FAIL: gdb.base/inferior-clone.exp: inferior 3: clone-inferior The error is as follows: clone-inferior [New inferior 2] Added inferior 2 on connection 1 (extended-remote localhost:2346) (gdb) FAIL: gdb.base/inferior-clone.exp: inferior 2: clone-inferior This fails because the testcase only expect the 'Added inferior 2' part of the message. The 'on connection 1 [...]' part is unexpected. Fix by adjusting the testcase to a account for the possible trailing part of the message. Tested on x86_64-linux with native-extende-gdbserver and unix boards. Change-Id: Ie3d6f04c9ffe9cab1fbda8ddf4935ee09b858c7a
-
Nick Clifton authored
-
Andrew Burgess authored
I tried building GDB on GNU/Hurd, and ran into this warning: gdbsupport/scoped_ignore_signal.h:78:16: error: null argument where non-null required (argument 2) [-Werror=nonnull] This is because in this commit: commit 99624310 Date: Sun Jun 27 15:13:14 2021 -0400 gdb: fall back on sigpending + sigwait if sigtimedwait is not available A call to sigwait was introduced that passes nullptr as the second argument, this call is only reached if sigtimedwait is not supported. The original patch was written for macOS, I assume on that target passing nullptr as the second argument is fine. On my GNU/Linux box, the man-page for sigwait doesn't mention that nullptr is allowed for the second argument, so my assumption would be that nullptr is not OK, and, if I change the '#ifdef HAVE_SIGTIMEDWAIT' introduced by the above patch to '#if 0', and rebuild on GNU/Linux, I see the same warning that I see on GNU/Hurd. I propose that we stop passing nullptr as the second argument to sigwait, and instead pass a valid int pointer. The value returned in the int can then be used in an assert. For testing, I (locally) made the change to the #ifdef I mentioned above, compiled GDB, and ran the usual tests, this meant I was using sigwait instead on sigtimedwait on GNU/Linux, I saw no regressions.
-
Nick Clifton authored
PR 28716 * dwarf.c (load_build_id_debug_file): Remove spurious printf.
-
Tom de Vries authored
Fix build breaker in gdb/cli/cli-logging.c: ... gdb/cli/cli-logging.c: In function \ ‘void show_logging_enabled(ui_file*, int, cmd_list_element*, const char*)’: gdb/gdbsupport/gdb_locale.h:28:28: error: cannot convert ‘char*’ to ‘ui_file*’ 28 | # define _(String) gettext (String) | ~~~~~~~~^~~~~~~~ | | | char* gdb/cli/cli-logging.c:202:25: note: in expansion of macro ‘_’ 202 | fprintf_unfiltered (_("on: Logging is enabled.\n")); | ^ ... Build and tested on x86_64-linux. Fixes: 45aec4e5 ("[gdb/cli] Improve show logging output") -
Jan Beulich authored
fits_in_disp8() can be called before ambiguous operands get resolved or rejected (in process_suffix()), which requires that i.memshift be non-negative to avoid an internal error. This case wasn't covered by 6c0946d0 ("x86: correct VFPCLASSP{S,D} operand size handling").
-
Jan Beulich authored
Strange effects can result from the present handling, e.g.: .if 1 "backslash\\": .endif yields first (correctly) "missing closing `"'" but then also "invalid character '\' in mnemonic" and further "end of file inside conditional". Symbols names ending in \ are in principle not expressable with that scheme. Instead of recording whether a backslash was seen, inspect the subsequent character right away. Only accept \\ (meaning a single backslash in the resulting symbol name) and \" (meaning an embedded double quote in the resulting symbol name) for now, warning about any other combination. While perhaps not necessary immediately, also permit concatenated strings to form a symbol name. This may become useful if going forward we would want to support \<octal> or \x<hex> sequences, where closing and re-opening quotes can be useful to delimit such sequences. The ELF "Multibyte symbol names" test gets switched away from using .set, as that would now also mean excluding nios2 and pru. By using .equiv instead, even the existing #notarget can be dropped. (For h8300 the .section directive additionally needs attributes specified, to avoid a target specific warning.)
-
GDB Administrator authored
-
Tom de Vries authored
Before commit 3b6acaee "Update more calls to add_prefix_cmd" we had the following output for "show logging": ... $ gdb -q -batch -ex "set trace-commands on" \ -ex "set logging off" \ -ex "show logging" \ -ex "set logging on" \ -ex "show logging" +set logging off +show logging Future logs will be written to gdb.txt. Logs will be appended to the log file. Output will be logged and displayed. Debug output will be logged and displayed. +set logging on +show logging Currently logging to "gdb.txt". Logs will be appended to the log file. Output will be logged and displayed. Debug output will be logged and displayed. ... After that commit we have instead: ... +set logging off +show logging debugredirect: The logging output mode is off. file: The current logfile is "gdb.txt". overwrite: Whether logging overwrites or appends to the log file is off. redirect: The logging output mode is off. +set logging on +show logging debugredirect: The logging output mode is off. file: The current logfile is "gdb.txt". overwrite: Whether logging overwrites or appends to the log file is off. redirect: The logging output mode is off. ... which gives less clear output for some subcommands. OTOH, it's explicit about whether boolean values are on or off. The new text seems to have been chosen to match the set/show help texts: ... (gdb) help show logging Show logging options. List of show logging subcommands: show logging debugredirect -- Show the logging debug output mode. show logging file -- Show the current logfile. show logging overwrite -- \ Show whether logging overwrites or appends to the log file. show logging redirect -- Show the logging output mode. ... Make the show logging messages more clear, while still keep the boolean values explicit, such that we have: ... $ ./gdb.sh -q -batch -ex "show logging" logging debugredirect: off: \ Debug output will go to both the screen and the log file. logging enabled: off: Logging is disabled. logging file: The current logfile is "gdb.txt". logging overwrite: off: Logging appends to the log file. logging redirect: off: Output will go to both the screen and the log file. ... Tested on x86_64-linux.
-
Tom Tromey authored
An earlier patch of mine, commit 64b7cc50 ("Remove gdb_print_host_address") inadvertently changed a function in gdbtypes.c to use printf rather than printf_filtered. This patch fixes the problem.
-
Tom Tromey authored
Simon and Tom pointed out that page-logging.exp failed on their machines. Tom tracked this down to the "width" setting. Since there's no need in the test to change the width, it seems simplest to remove the setting. I confirmed that the test still fails if the fix is backed out, ensuring that the test is still testing what it purports to.
-
- Jan 03, 2022
-
-
Tom Tromey authored
I noticed that the AdaCore tree had a small divergence in eval.c -- it had a fix for an indentation problem in binop_promote. I'm checking in this small fix as obvious.
-
Tom de Vries authored
When running test-case gdb.threads/schedlock-thread-exit.exp on a system with system compiler gcc 4.8.5, I run into: ... src/gdb/testsuite/gdb.threads/schedlock-thread-exit.c:33:3: error: \ 'for' loop initial declarations are only allowed in C99 mode ... Fix this by: - using -std=c99, or - using -std=gnu99, in case that's required, or - in the case of the jit test-cases, rewriting the for loops. Tested on x86_64-linux, both with gcc 4.8.5 and gcc 7.5.0.
-
GDB Administrator authored
-
Tom Tromey authored
Commit 6c265988 ("gdb: add back declarations for _initialize functions") modified copying.c, but not copying.awk. This patch updates copying.awk to backport the appropriate fix. This way, if copying.awk is run again, it will create the correct output. I'm checking this in as obvious.
-
Tom Tromey authored
print_i387_ext mostly uses filtered output, but one call in the middle of the function uses the _unfiltered form. This patch fixes this call. I'm checking this in as obvious.
-
- Jan 02, 2022
-
-
Alan Modra authored
The result of running etc/update-copyright.py --this-year, fixing all the files whose mode is changed by the script, plus a build with --enable-maintainer-mode --enable-cgen-maint=yes, then checking out */po/*.pot which we don't update frequently. The copy of cgen was with commit d1dd5fcc38ead reverted as that commit breaks building of bfp opcodes files.
-
GDB Administrator authored
-
Mike Frysinger authored
-
Mike Frysinger authored
These are almost entirely unused. For the very few places using them, replace with explicit signed types. This matches what was done in the common sim code.
-
Mike Frysinger authored
This doesn't fix all the problems, but grabs a bunch of the more obvious ones.
-
Mike Frysinger authored
The regex it uses does not like so many leading spaces which causes it to think the files lack copyright. Trim them down so the script can find & update them accordingly.
-
Mike Frysinger authored
The sim testsuite was reorganized last year, so update the path.
-
Mike Frysinger authored
Move the 64-bit bfd logic out of bfd/configure.ac and into bfd64.m4 under config so it can be shared between all the other subdirs. This replaces want64 with enable_64_bit_bfd which was already being declared, but not used directly.
-