aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-02-03arc: use is_whitespace()Jan Beulich1-6/+6
Wherever blanks are permissible in input, tabs ought to be permissible, too. This is particularly relevant when -f is passed to gas (alongside appropriate input). At the same time use is_end_of_stmt() instead of open-coded nul char checks.
2025-02-03Alpha/EVAX: use is_whitespace() / is_end_of_stmt()Jan Beulich1-1/+1
Don't open-code checking for ' ', '\t', and statement ending chars.
2025-02-03gas: consolidate whitespace recognitionJan Beulich7-51/+43
Let's extend lex_type[] to also cover whitespace, then having a simple macro to uniformly recognize both blanks and tabs (and \r when it's not EOL) as such. In macro.c use sb_skip_white() as appropriate, instead of open-coding it.
2025-02-03Automatic date update in version.inGDB Administrator1-1/+1
2025-02-02Avoid "text file busy" in dw2-using-debug-str.expTom Tromey1-0/+12
When I run: runtest dw2-using-debug-str.exp ... if I examine the gdb.log, I see: objcopy: unable to copy file '[...]/dw2-using-debug-str'; reason: Text file busy This happens because the inferior is still running, and objcopy -- despite the invocation seemingly not needing this -- tries to open it for writing. This patch works around the objcopy oddity by having gdb exit (killing the inferior) before the invocation. Fixing this points out that the test does not work in the --target_board=cc-with-gdb-index case. This patch also arranges to issue an "untested" here.
2025-02-02Automatic date update in version.inGDB Administrator1-1/+1
2025-01-31Remove obsolete test from gdb.cp/var-tag.expTom Tromey1-10/+1
There is a test in gdb.cp/var-tag.exp that is kfail'd. I happened across this while working on another series and found that the PR it referenced was closed as invalid. On that basis I think the test should be deleted. Reviewed-By: Keith Seitz <keiths@redhat.com>
2025-01-31Show type- and function-domain in maint print psymbolsTom Tromey1-0/+6
I neglected to update "maint print psymbols" when adding TYPE_DOMAIN and FUNCTION_DOMAIN. This would have been mildly helpful when debugging a series I am working on. This patch corrects the oversight. Approved-By: Andrew Burgess <aburgess@redhat.com>
2025-02-01Automatic date update in version.inGDB Administrator1-1/+1
2025-01-31Use "false" when setting cli_stylingTom Tromey1-1/+1
I noticed a spot that uses 0 where "false" is more appropriate.
2025-01-31Add space in name of Rust tuple typeTom Tromey1-1/+1
The Rust compiler emits tuple type names with a space after the comma, like "(i32, f64)". This changes rust-parse.c to follow. This isn't ideal -- probably the DWARF reader should canonicalize these names -- but it is a bit more robust if symbol lookup should change; and anyway this feature of gdb is probably rarely used.
2025-01-31aarch64: Support +sme+nosve permissivelyAndrew Carlotti4-3/+42
There is inconsistency regarding whether or not +sme implies +sve2 and whether +nosve2 implies +nosme. In particular, GCC 14 assumes the dependency exists, and canonicalises target strings accordingly, whereas LLVM treats the features as independent. This patch removes the positive implication while retaining the negative implication. This is the more permissive choice in each case, and allows us to support target strings written with either interpretation in mind. This reduces our ability to detect invalid instructions, but we already can't rely on this detection because gas doesn't know whether functions might be executed in streaming mode and/or non-streaming mode. The aarch64_feature_enable_set change is functionally redundant within this patch. It is included because the longer term intention is to instead remove the workaround in aarch64_parse_features, once the internal feature checks have been modified to support having both AARCH64_FEATURE_SME set and AARCH64_FEATURE_SVE unset. Similarly, the dependency from +sme to +fp16 is currently redundant, but this redundancy relies upon an incorrect dependency from +fcma to +fp16. This can be fixed in the future, but it might require modifying internal feature checks for a few FCMA instructions, so it's left unchanged for now.
2025-01-31aarch64: Fix fp8 feature dependenciesAndrew Carlotti5-16/+16
We agreed with LLVM that we shouldn't enforce the architectural dependencies between fp8 muliplication features, so remove them. Additionally, fix a typo in the gating for FEAT_SME_F8F16 instructions, which were mistakenly gated by +sme-f8f32 instead. Until now this mistake had been masked by the dependency between the features.
2025-01-31aarch64: Fix overly lax +frintts dependencyAndrew Carlotti2-2/+2
We agreed with LLVM that +frintts should only enable +fp, not +simd. This also matches the dependency used in GCC.
2025-01-31LoongArch: Do not relax against __[start|stop]_SECNAME symbolLulu Cai4-1/+29
2025-01-31x86/APX: correct libbfd's EVEX Rn -> Bn transformationsJan Beulich2-67/+59
In the recent GOTPCREL addition I screwed up, in clearing the Rn bits afterwards rather than setting them. While that ought to be benign (for the bits being ignored in situations like this), we still want to leave "canonical" encodings. The pre-existing GOTTPOFF conversion wasn't doing quite correctly either: We cannot assume the incoming Bn bits to be in a particular state, as for the addressing form in question they're ignored as well. To address both, introduce a helper function. This is then also an overall reduction of (source) code size (and use of "magic" numbers).
2025-01-31x86/APX: GETSEC cannot be used with REX2Jan Beulich1-1/+1
It lives in a "forbidden" row, yet its disassembler table entry was lacking a respective marker.
2025-01-31x86: support RMPREAD insnJan Beulich11-2160/+2224
Like for RMPUPDATE documentation is about to change as far as operands are concerned. They're merely the other way around here. While adjustind gas documentation, also add the missing RMPQUERY counterparts there.
2025-01-31x86: RMPUPDATE wants operands in different formJan Beulich7-69/+105
AMD are about to update their doc, to help clarify that what we currently do isn't quite right: In particular it is not %rax but %rcx which is affected by address size. In fact, that's a normal memory operand, just not expressed via ModR/M byte, but fixed to (%rcx) (or (%ecx) with 32-bit addressing). To support this in the assembler, generalize memory operand handling so far specific to XLAT (which isn't really a string insn, but requires its memory operand to be (%bx) / (%ebx) / (%rbx)). In the disassembler mimic handling after XLAT's, too.
2025-01-31x86-64: omit "default" segment prefixes from string insn disassemblyJan Beulich22-437/+343
Printing implicit %ds: and %es: prefixes is pretty meaningless in 64-bit mode. The SDM explicitly omits them for the 64-bit forms, and it obviously has them for the other ones only to cover non-64-bit modes (oddly enough the AMD PM has them present).
2025-01-31RISC-V: widen LEB128 supportJan Beulich3-15/+19
Do away with at least one of the limitations - all other targets permit multiple values to be specified with a single directive. Re-arrange the logic further to also overcome an internal error in riscv_insert_uleb128_fixes(), as e.g. observed by the all/sleb128-2 testcase. This way there's also no need to parse expressions twice, thus also not raising the same diagnostics (if any) twice. Note how this addresses a pre-existing XFAIL (where the comment wasn't really applicable either for RISC-V). Also update documentation, also to mention that differences between symbols may be used with .uleb128 (albeit I'm uncertain whether there are limitations).
2025-01-30Use "require" a two gdb.dwarf2 test filesTom Tromey2-9/+3
A couple of ".tcl" files in gdb.dwarf2 escaped notice during the "require" refactoring. This patch fixes these to use "require" rather than if/return.
2025-01-31Automatic date update in version.inGDB Administrator1-1/+1
2025-01-30gdb: add first gdbreplay test, connect.expAlexandra Hájková4-3/+296
When the changes on the remote protocol are made, we want to test all the corner cases to prevent regressions. Currently it can be tricky to simulate some corner case conditions that would expose possible regressions. When I want to add or change the remote protocol packet, I need to hack gdbserver to send a corrupted packet or an error to make sure GDB is able to handle such a case. This test makes it easy to send a corruped packet or an error message to GDB using the gdbreplay tool and check GDB deals with it as we expect it to. This test starts a communication with gdbsever setting the remotelog file. Then, it modifies the remotelog with update_log proc, injects an error message instead of the expected replay to the vMustReplyEmpty packet in order to test GDB reacts to the error response properly. After the remotelog modification, this test restarts GDB and starts communication with gdbreply instead of the gdbserver using the remotelog. Add a lib/gdbreplay-support.exp. update_log proc matches lines from GDB to gdbserver in a remotelogfile. Once a match is found then the custom line is used to build a replacement line to send from gdbserver to GDB. Approved-By: Andrew Burgess <aburgess@redhat.com>
2025-01-30Re-enable background readingTom Tromey1-1/+1
All the reported races have been fixed, so this patch re-enabled background DWARF reading. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31751 Tested-By: Tom de Vries <tdevries@suse.de>
2025-01-30gdb: remove unused includes from dwarf2/index-write.cSimon Marchi1-2/+0
These includes are reported as unused by clangd. Change-Id: Ibf3cdc881abad5f5969edca623412ceac7212149
2025-01-30gdb: remove includes from dwarf2/mapped-index.hSimon Marchi4-2/+3
They are unused, according to clangd. Add some includes to other files, which were relying on transitive includes. Change-Id: I3bcb4be93b3a18bf44a4068f4067e567f83e1d4f
2025-01-30gdb: remove unused include from dwarf2/read.cSimon Marchi1-1/+0
It is unused, according to clangd. Change-Id: Ieadb84a2b1953b70d82a28775472fd347a809a62
2025-01-30gdb: remove unused include, add forward declaration in dwarf2/parent-map.hSimon Marchi1-1/+1
dwarf2_per_bfd is used but never declared in this file, forward-declare it. dwarf2/types.h is unused, according to clangd. Change-Id: I324b68894008af20307030c9e36c5abe06e36a78
2025-01-30gdb: remove unused include in symtab.hSimon Marchi1-1/+0
This include is unused, according to clangd. Change-Id: Ifbc2fe75b02c9ae9b3e2f1184bbcc4dc7095a554
2025-01-30gdb: include symtab.h in quick-symbol.hSimon Marchi1-0/+2
quick-symbol.h uses domain_search_flags, defined in symtab.h. Change-Id: I5c4ae272da929eb6a8dd593bcd96a2aacf0ca99f
2025-01-30Remove a couple of entries in the binutils MAINTAINERS fileNick Clifton1-2/+0
2025-01-30[gdb/testsuite] Handle unordered dict in gdb.python/py-mi-notify.expTom de Vries1-1/+4
With test-case gdb.python/py-mi-notify.exp and python 3.4, I occasionally run into: ... python gdb.notify_mi('-test-notification', { 'data1' : 1 , 'data2' : 2 }) &"python gdb.notify_mi('-test-notification', { 'data1' : 1 , 'data2' : 2 })\n" =-test-notification,data2="2",data1="1" ^done (gdb) FAIL: $exp: python notification, with additional data (unexpected output) ... In contrast, a passing version looks like: ... python gdb.notify_mi('-test-notification', { 'data1' : 1 , 'data2' : 2 }) &"python gdb.notify_mi('-test-notification', { 'data1' : 1 , 'data2' : 2 })\n" =-test-notification,data1="1",data2="2" ^done (gdb) PASS: gdb.python/py-mi-notify.exp: python notification, with additional data ... The python method "gdb.notify_mi(name, data)" has parameter data which is a dictionary, and it iterates over that dictionary. The problem is that dictionaries are only guaranteed to be iterating in insertion order starting python 3.7 (though cpython does this starting python 3.6). Fix this in the same way as in commit 362a867f2ac ("[gdb/testsuite] Handle unordered dict in gdb.python/py-mi-cmd.exp"): by allowing the alternative order. Tested on x86_64-linux.
2025-01-30x86-64: Remove pr19609-4c.d and pr19609-4d.dH.J. Lu4-30/+11
Remove pr19609-4c.d and pr19609-4d.d since they are identical to pr19609-4a.d and pr19609-4b.d, respectively. * testsuite/ld-x86-64/pr19609-4c.d: Removed. * testsuite/ld-x86-64/pr19609-4d.d: Likewise. * testsuite/ld-x86-64/pr19609-4e.d: Renamed to ... * testsuite/ld-x86-64/pr19609-4c.d: This. * testsuite/ld-x86-64/x86-64.exp: Updated. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2025-01-30Automatic date update in version.inGDB Administrator1-1/+1
2025-01-29Use command style in cmd_show_listTom Tromey3-8/+13
cmd_show_list is a bit funny because it shows partial command names -- for a command like "show abc xyz", it will only show "abc xyz". Nevertheless, I think it makes some sense to highlight these with the command style. That is what this patch does.
2025-01-29Remove "enabled" output from show_index_cache_commandTom Tromey1-5/+0
show_index_cache_command prints whether the index-cache is enabled. This text was added back in 2018 in commit 87d6a7aa (Add DWARF index cache). Then in 2021, the enabling option was changed via commit 7bc5c369 (gdb: introduce "set index-cache enabled", deprecate "set index-cache on/off"). This latter change made this output, IMO, redundant. That is, currently gdb will show: (gdb) show index-cache ... index-cache enabled: The index cache is off. ... The index cache is currently disabled. This patch removes the redundant output.
2025-01-29Use command style in "help" commandTom Tromey9-70/+80
This changes the help command to use the new command style when displaying text like: List of "catch" subcommands: As a side effect, this mildly -- but not hugely -- cleans up some i18n issues in help_list. The header comment for that function is also changed to the gdb style. Finally, this function used to print something like: Type "help catch" followed by catch subcommand name for full documentation. The second "catch" here seems redundant to me, so this patch removes it.
2025-01-29Avoid calling help_list in more placesTom Tromey4-52/+11
I think there is no need to have a prefix command that simply calls help_list. Instead, add_basic_prefix_cmd can be used. This patch changes the relevant instances. In one spot, add_setshow_prefix_cmd is used instead.
2025-01-29gdb: include cli/cli-style.h in darwin-nat.cSimon Marchi1-0/+1
PR 32610 says: File gdb/darwin-nat.c is missing an #include statement of "cli/cli-style.h". It is needed because there is a reference to class object command_style in the .c file. I'm not able to build-test this change (I only have access to arm64 macos machines, which GDB doesn't support yet), but I don't think I'm doing things worse by adding this. Change-Id: I2a169664ff91b92caf27cb084334f2eb4df46aa5
2025-01-29gdb/testsuite: add comments to line table from DWARF assemblerAndrew Burgess1-7/+7
Add comments to the assembler generated by the DWARF assembler that builds the line table. I found these comments useful when debugging issues with the line table parsing. This patch should make no difference to what is being tested. The test binaries should be unchanged after this commit. Approved-By: Kevin Buettner <kevinb@redhat.com>
2025-01-29gdbserver: fix the declared type of register_status in regcacheTankut Baris Aktemur2-14/+18
The register_status field of regcache is declared as `unsigned char *`. This is incorrect, because `enum register_status` from gdbsupport/common-regcache.h is based on signed char and REG_UNAVAILABLE is defined as -1. Fix the declared type. Now that we are modifying the declaration, also use a unique_ptr and make the field private. The get/set methods already use the correct type, but we update cast operations in two places. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: refactor the definition and uses of supply_regblockTankut Baris Aktemur2-11/+8
The supply_regblock function takes a pointer to a buffer as an argument and implements two different behavior based on the pointer being null. There are two cases where we pass nullptr, all in tracepoint.cc, where we are essentially doing a reset on the regcache. In fast_tracepoint_ctx::regcache, register_status array does not even exist. Hence, that use simply boils down to zeroing of register data. Do this at the time of creating the buffer and remove the call to supply_regblock. In fetch_traceframe_registers, inline the use with a call to `reset`. Hence, there are no more cases left, where a nullptr would be passed to supply_regblock. Assert that the buffer argument is non-null and simplify the implementation. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: define and use regcache::resetTankut Baris Aktemur2-14/+21
Define a `reset` method for a regcache and use it for code simplification. This patch allows further simplification in the next patch. The reset method fills the register data with zeroes. For the use in get_thread_regcache, this is added behavior, making the patch not a pure refactoring, and may look like extra overhead. However, it is better to avoid having arbitrary values left in the data buffer. Hence, it is considered a behavioral improvement. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: use REG_UNKNOWN for a regcache's register statusesTankut Baris Aktemur2-3/+3
When a regcache is initialized, the values of registers are not fetched yet. Thus, initialize the register statuses to REG_UNKNOWN instead of REG_UNAVAILABLE, because the latter rather means "we attempted to fetch but could not obtain the value". The definitions of the reg status enums (from gdbsupport/common-regcache.h) as a reminder: /* The register value is not in the cache, and we don't know yet whether it's available in the target (or traceframe). */ REG_UNKNOWN = 0, /* The register value is valid and cached. */ REG_VALID = 1, /* The register value is unavailable. E.g., we're inspecting a traceframe, and this register wasn't collected. Note that this "unavailable" is different from saying the register does not exist in the target's architecture --- in that case, the target should have given us a target description that does not include the register in the first place. */ REG_UNAVAILABLE = -1 Similarly, when the regcache is invalidated, change all the statuses back to REG_UNKNOWN. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: use unique_ptr for thread_info's regcacheTankut Baris Aktemur2-12/+7
Store the regcache pointer in thread_info as a unique_ptr. This allows us delete the thread_info destructor. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: convert free_register_cache into a destructor of regcacheTankut Baris Aktemur4-20/+12
Convert the `free_register_cache` function into a destructor of the regcache struct. In one place, we completely remove the call to free the regcache object by stack-allocating the object. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: convert init_register_cache and new_register_cache into constructorsTankut Baris Aktemur4-64/+39
This is a refactoring that converts init_register_cache (struct regcache *regcache, const struct target_desc *tdesc, unsigned char *regbuf) into the constructor regcache (const target_desc *tdesc, unsigned char *regbuf) and converts new_register_cache (const struct target_desc *tdesc) into the constructor regcache (const target_desc *tdesc) Also use DISABLE_COPY_AND_ASSIGN for additional compile-time safety. Tested by rebuilding gdbserver with '--enable-inprocess-agent=no' and with '--enable-inprocess-agent=yes'. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: use inheritance more to define tracepoint contextsTankut Baris Aktemur1-58/+41
This is a continuation of the previous refactoring to use inheritance in the definition of tracepoints contexts. Again, no behavioral change is intended. Different tracepoint contexts are identified by the `type` field. The field is used only in `get_context_regcache`, where we essentially have 2 cases, each corresponding to a tracepoint context type. Remove the `type` field and split the `get_context_regcache` function into 2 virtual method implementations. Tested by rebuilding gdbserver with '--enable-inprocess-agent=no' and '--enable-inprocess-agent=yes'. Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-01-29gdbserver: use inheritance to define tracepoint contextsTankut Baris Aktemur1-31/+30
Use inheritance in the definition of tracepoint contexts. This is a refactoring that aims to improve the code. No behavior should be altered. Approved-By: Simon Marchi <simon.marchi@efficios.com>