aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-10-10Change GDB to use frame_info_ptrTom Tromey249-1522/+1527
This changes GDB to use frame_info_ptr instead of frame_info * The substitution was done with multiple sequential `sed` commands: sed 's/^struct frame_info;/class frame_info_ptr;/' sed 's/struct frame_info \*/frame_info_ptr /g' - which left some issues in a few files, that were manually fixed. sed 's/\<frame_info \*/frame_info_ptr /g' sed 's/frame_info_ptr $/frame_info_ptr/g' - used to remove whitespace problems. The changed files were then manually checked and some 'sed' changes undone, some constructors and some gets were added, according to what made sense, and what Tromey originally did Co-Authored-By: Bruno Larsen <blarsen@redhat.com> Approved-by: Tom Tomey <tom@tromey.com>
2022-10-10Introduce frame_info_ptr smart pointer classTom Tromey3-0/+187
This adds frame_info_ptr, a smart pointer class. Every instance of the class is kept on an intrusive list. When reinit_frame_cache is called, the list is traversed and all the pointers are invalidated. This should help catch the typical GDB bug of keeping a frame_info pointer alive where a frame ID was needed instead. Co-Authored-By: Bruno Larsen <blarsen@redhat.com> Approved-by: Tom Tomey <tom@tromey.com>
2022-10-10Remove frame_id_eqTom Tromey17-79/+65
This replaces frame_id_eq with operator== and operator!=. I wrote this for a version of this series that I later abandoned; but since it simplifies the code, I left this patch in. Approved-by: Tom Tomey <tom@tromey.com>
2022-10-10gdb/testsuite: use 'end' at the end of python blocksAndrew Burgess3-3/+3
Within the testsuite, use the keyword 'end' to terminate blocks of Python code being sent to GDB, rather than sending \004. I could only find three instances of this, all in tests that I originally wrote. I have no memory of there being any special reason why I used \004 instead of 'end' - I assume I copied this from somewhere else that has since changed. Non of the tests being changed here are specifically about whether \004 can be used to terminate a Python block, so I think switching to the more standard 'end' keyword is the right choice.
2022-10-09gdbsupport: re-generate configureSimon Marchi1-2/+2
I get this diff when re-generating configure, probably leftover from 67d1991b785 ("egrep in binutils"). Change-Id: I759c88c2bad648736d33ff98089db45c9b686356
2022-10-10Merge configure.ac from gcc projectAlan Modra3-174/+4481
To merge with gcc's copy of configure.ac we need to revert changes to configure.ac in the following gcc commits: dc832fb39fc0 2022-08-25 fc259b522c0f 2022-06-25 Then reapply configure.ac changes in binutils from these binutils commits: 50ad1254d503 2021-01-09 bb368aad297f 2022-03-11 e5f2f7d901ee 2022-07-26 2cac01e3ffff 2022-09-26 Plus copy over gcc's config/ax_cxx_compile_stdcxx.m4, then regenerate configure.
2022-10-10Automatic date update in version.inGDB Administrator1-1/+1
2022-10-09Automatic date update in version.inGDB Administrator1-1/+1
2022-10-08Merge both implementations of debug_names::insertTom Tromey1-27/+24
The class debug_names has two 'insert' overloads, but only one of them is ever called externally, and it simply forwards to the other implementation. It seems cleaner to me to have a single method, so this patch merges the two.
2022-10-08[gdb/testsuite] Fix silent fail in gdb.server/connect-with-no-symbol-file.expTom de Vries1-3/+13
With native and target boards native-gdbserver, remote-gdbserver-on-localhost and remote-stdio-gdbserver I have for gdb.server/connect-with-no-symbol-file.exp: ... # of expected passes 8 ... but with native-extended-gdbserver I have instead: ... # of expected passes 8 # of unexpected failures 4 ... The extra FAILs are of the form: ... (gdb) detach^M Detaching from pid process 28985^M [Inferior 1 (process 28985) detached]^M (gdb) FAIL: gdb.server/connect-with-no-symbol-file.exp: sysroot=: \ action=permission: connection to GDBserver succeeded ... and are due to the fact that the actual gdb output doesn't match the regexp: ... gdb_test "detach" \ ".*Detaching from program: , process.*Ending remote debugging.*" \ "connection to GDBserver succeeded" ... With native, the actual gdb output is: ... (gdb) detach^M Detaching from pid process 29657^M Ending remote debugging.^M [Inferior 1 (process 29657) detached]^M (gdb) Remote debugging from host ::1, port 51028^M ... and because the regexp doesn't match, it triggers an implicit clause for "Ending remote debugging" in gdb_test_multiple, which has the consequence that the FAIL is silent. Fix: - the regexp by making it less strict - the silent fail by rewriting into a gdb_test_multiple, and adding an explicit fail clause. Tested on x86_64-linux, using native and aforementioned target boards.
2022-10-08Automatic date update in version.inGDB Administrator1-1/+1
2022-10-07gdb/testsuite: fix gdb.threads/linux-dp.exp regexLancelot SIX1-1/+1
On ubuntu 22.04 with the libc6-dbg package installed, I have the following failure: where #0 print_philosopher (n=3, left=33 '!', right=33 '!') at .../gdb/testsuite/gdb.threads/linux-dp.c:105 #1 0x000055555555576a in philosopher (data=0x55555555937c) at .../gdb/testsuite/gdb.threads/linux-dp.c:148 #2 0x00007ffff7e11b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442 #3 0x00007ffff7ea3a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 (gdb) FAIL: gdb.threads/linux-dp.exp: first thread-specific breakpoint hit The regex for this test accounts for different situations (with / without debug symbol) but assumes that if debug info is present the backtrace shows execution under pthread_create. However, for the implementation under test, we are under start_thread. Update the regex to accept start_thread. Tested on Ubuntu-22.04 x86_64 with and without libc6-dbg debug symbols available. Change-Id: I1e1536279890bca2cd07f038e026b41e46af44e0
2022-10-07[gdb/testsuite] Handle host cleanfilesTom de Vries1-8/+19
When running test-case gdb.server/abspath.exp with host board local-remote-host-notty, I get: ... $ git sti ... deleted: gdb/testsuite/gdb.xml/trivial.xml ... This happens as follows. The test-case calls skip_gdbserver_test, which calls gdb_skip_xml_test, which does: ... set xml_file [gdb_remote_download host "${srcdir}/gdb.xml/trivial.xml"] ... Then proc gdb_remote_download appends $xml_file (which for this particular host board happens to be ${srcdir}/gdb.xml/trivial.xml) to cleanfiles, which ends up being handled in gdb_finish by: ... eval remote_file target delete $cleanfiles ... The problem is that a host file is deleted using target delete. Fix this by splitting cleanfiles up in cleanfiles_target and cleanfiles_host. Tested on x86_64-linux.
2022-10-07[gdb/testsuite] Remove unnecessary warning in gdb.base/default.expTom de Vries1-2/+0
When running test-case gdb.base/default.exp with target board native-gdbserver, we get: ... WARNING: Skipping backtrace and break tests because of GDB stub. ... There's no need for such a warning, so remove it. Tested on x86_64-linux with native and target board native-gdbserver.
2022-10-07[gdb/testsuite] Fix have_mpx with remote-gdbserver-on-localhostTom de Vries1-1/+1
With target board remote-gdbserver-on-localhost and gdb.arch/i386-mpx-call.exp I run into: ... FAIL: gdb.arch/i386-mpx-call.exp: upper_bnd0: continue to a bnd violation ... This is due to the have_mpx test which should return 0, but instead returns 1 because the captured output: ... No MPX support No MPX support ... does not match the used regexp: ... set status [expr ($status == 0) \ && ![regexp "^No MPX support\r\n" $output]] ... which does match the captured output with native: ... No MPX support^M No MPX support^M ... Fix this by making the \r in the regexp optional. Tested on x86_64-linux, with native and target board remote-gdbserver-on-localhost.
2022-10-07[gdb/testsuite] Fix DUPLICATEs with remote-gdbserver-on-localhostTom de Vries5-217/+247
Fix some DUPLICATEs that we run into with target board remote-gdbserver-on-localhost, by using test_with_prefix. Tested on x86_64-linux, with native and target board remote-gdbserver-on-localhost.
2022-10-07[gdb/testsuite] Fix path in test name in gdb_load_shlibTom de Vries1-1/+2
When running test-case gdb.server/solib-list.exp with target board remote-gdbserver-on-localhost, I run into: ... (gdb) set solib-search-path $outputs/gdb.server/solib-list^M (gdb) PASS: gdb.server/solib-list.exp: non-stop 0: \ set solib-search-path $outputs/gdb.server/solib-list PATH: gdb.server/solib-list.exp: non-stop 0: \ set solib-search-path $outputs/gdb.server/solib-list ... This is due to this code in gdb_load_shlib: ... gdb_test "set solib-search-path [file dirname $file]" "" "" ... Fix this by setting an explicit test name. Tested on x86_64-linux, with native and target boards remote-gdbserver-on-localhost, native-gdbserver and native-extended-gdbserver.
2022-10-07PR29653, objcopy/strip: fuzzed small input file induces large output fileAlan Modra2-43/+46
_bfd_check_format functions should not print errors or warnings if they return NULL. A NULL return means the particular target under test does not match, so there isn't any reason to make a complaint about the target. In fact there isn't a good reason to warn even if the target matches, except via the _bfd_per_xvec_warn mechanism; Some other target might be a better match. This patch tidies pe_bfd_object_p with the above in mind, and restricts the PE optional header SectionAlignment and FileAlignment fields somewhat. I chose to warn on nonsense values rather than refusing to match. Refusing to match would be OK too. PR 29653 * peXXigen.c (_bfd_XXi_swap_aouthdr_in): Don't emit error about invalid NumberOfRvaAndSizes here. Limit loop copying data directory to IMAGE_NUMBEROF_DIRECTORY_ENTRIES. * peicode.h (pe_bfd_object_p): Don't clear and test bfd_error around bfd_coff_swap_aouthdr_in. Warn on invalid SectionAlignment, FileAlignment and NumberOfRvaAndSizes. Don't return NULL on invalid NumberOfRvaAndSizes.
2022-10-07Automatic date update in version.inGDB Administrator1-1/+1
2022-10-06Fix indentation in riscv-tdep.cTom Tromey1-153/+153
This just fixes some indentation in riscv-tdep.c.
2022-10-06gdb/arm: Handle lazy FPU state preservationTorbjörn SVENSSON2-17/+46
Read LSPEN, ASPEN and LSPACT bits from FPCCR and use them together with FPCAR to identify if lazy FPU state preservation is active for the current frame. See "Lazy context save of FP state", in B1.5.7, also ARM AN298, supported by Cortex-M4F architecture for details on lazy FPU register stacking. The same conditions are valid for other Cortex-M cores with FPU. This patch has been verified on a STM32F4-Discovery board by: a) writing a non-zero value (lets use 0x1122334455667788 as an example) to all the D-registers in the main function b) configured the SysTick to fire c) in the SysTick_Handler, write some other value (lets use 0x0022446688aaccee as an example) to one of the D-registers (D0 as an example) and then do "SVC #0" d) in the SVC_Handler, write some other value (lets use 0x0099aabbccddeeff) to one of the D-registers (D0 as an example) In GDB, suspend the execution in the SVC_Handler function and compare the value of the D-registers for the SVC_handler frame and the SysTick_Handler frame. With the patch, the value of the modified D-register (D0) should be the new value (0x009..eff) on the SVC_Handler frame, and the intermediate value (0x002..cee) for the SysTick_Handler frame. Now compare the D-register value for the SysTick_Handler frame and the main frame. The main frame should have the initial value (0x112..788). Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> Signed-off-by: Yvan ROUX <yvan.roux@foss.st.com>
2022-10-06[gdb/symtab] Factor out have_complaintTom de Vries2-15/+27
After committing 8ba677d3560 ("[gdb/symtab] Don't complain about function decls") I noticed that quite a bit of code in read_func_scope is used to decide whether to issue the "cannot get low and high bounds for subprogram DIE at $hex" complaint, which executes unnecessarily if we have the default "set complaints 0". Fix this by (NFC): - factoring out new static function have_complaint from macro complaint, and - using it to wrap the relevant code in read_func_scope. Tested on x86_64-linux.
2022-10-06gdb: add missing nullptr checks in bpstat_check_breakpoint_conditionsAndrew Burgess1-2/+2
Add a couple of missing nullptr checks in the function bpstat_check_breakpoint_conditions. No user visible change after this commit.
2022-10-06gdb: more infrun debug from breakpoint.cAndrew Burgess1-2/+24
This commit adds additional infrun debug from the breakpoint.c file. The new debug output all relates to breakpoint condition evaluation. There is already some infrun debug emitted from the breakpoint.c file, so hopefully, adding more will not be contentious. I think the functions being instrumented make sense as part of the infrun process, the inferior stops, evaluates the condition, and then either stops or continues. This new debug gives more insight into that process. I had to make the bp_location* argument to find_loc_num_by_location const, and add a declaration for find_loc_num_by_location. There should be no user visible changes unless they turn on debug output.
2022-10-06gdb: add some additional debug in mark_async_event_handlerAndrew Burgess1-2/+4
Extend the existing debug printf call to include the previous state of the async_event_handler object.
2022-10-06RISC-V: Print XTheadMemPair literal as "immediate"Tsukasa OI1-1/+1
The operand type "Xl(...)" denotes that (...) is a literal. Specifically, they are intended to be a constant immediate value. This commit prints "Xl(...)" operand with dis_style_immediate style, not dis_style_text. opcodes/ChangeLog: * riscv-dis.c (print_insn_args): Use dis_style_immediate on the constant literal of the "Xl..." operand.
2022-10-06RISC-V: Fix T-Head immediate types on printingTsukasa OI1-4/+4
This commit fixes two minor typing-related issues for T-Head immediate operands. 1. A signed type must be specified when printing with %i. 2. unsigned/signed int is not portable enough for max 32-bit immediates. Instead, we should use unsigned/signed long. The format string is changed accordingly. opcodes/ChangeLog: * riscv-dis.c (print_insn_args): Fix T-Head immediate types on printing.
2022-10-06RISC-V: Print comma and tabs as the "text" styleTsukasa OI1-11/+20
On the RISC-V disassembler, some separators have non-text style when printed with another word with another style. This commit splits those, making sure that those comma and tabs are printed with the "text" style. opcodes/ChangeLog: * riscv-dis.c (print_insn_args): Split and print the comma as text. (riscv_disassemble_insn): Split and print tabs as text. (riscv_disassemble_data): Likewise.
2022-10-06RISC-V: Optimize riscv_disassemble_data printfTsukasa OI1-6/+4
This commit makes types of printf arguments on riscv_disassemble_data as small as possible (as long as we can preserve the portability) to reduce the cost of printf (especially on 32-bit host). opcodes/ChangeLog: * riscv-dis.c (riscv_disassemble_data): Use smallest possible type to printing data.
2022-10-06RISC-V: Fix printf argument types corresponding %xTsukasa OI1-7/+7
"%x" format specifier requires unsigned type, not int. This commit fixes this issue on the RISC-V disassembler. opcodes/ChangeLog: * riscv-dis.c (print_insn_args): Fix printf argument types where the format specifier is "%x".
2022-10-06RISC-V: Fix immediates to have "immediate" styleTsukasa OI1-5/+5
This commit fixes certain print calls on immediate operands to have dis_style_immediate. opcodes/ChangeLog: * riscv-dis.c (print_insn_args): Fix immediates to have "immediate" style. (riscv_disassemble_data): Likewise.
2022-10-06Automatic date update in version.inGDB Administrator1-1/+1
2022-10-06Re: bfd BLD-POTFILES.in dependenciesAlan Modra2-2/+2
Removing $BLD_POTFILES from BFD-POTFILES.in was correct, but left a hole in dependencies. make[4]: Entering directory '/home/alan/build/gas/all/bfd/po' make[4]: *** No rule to make target '../elf32-aarch64.c', needed by '/home/alan/src/binutils-gdb/bfd/po/bfd.pot'. Stop. * Makefile.am (BUILT_SOURCES): Add BUILD_CFILES. * Makefile.in: Regenerate.
2022-10-05x86/gas: support quoted address scale factor in AT&T syntaxJan Beulich4-12/+35
An earlier attempt (e68c3d59acd0 ["x86: better respect quotes in parse_operands()"]) needed undoing (cc0f96357e0b ["x86: permit parenthesized expressions again as addressing scale factor"]) as far its effect here went. As indicated back then, the issue is the backwards scanning of the operand string to find the matching opening parenthesis. Switch to forward scanning, finding the last outermost unquoted opening parenthesis (which is the one matching the trailing closing one).
2022-10-05Arm64: support CLEARBHB aliasJan Beulich6-1577/+1582
While the Arm v8 ARM (rev I-a) still doesn't mention this alias, it is (typically via a macro) already in use in kernels and alike.
2022-10-05PR29647, objdump -S loopingAlan Modra1-2/+3
Fuzzed input with this in .debug_line [0x0000003b] Special opcode 115: advance Address by 8 to 0x401180 and Line by -2 to -1 PR 29647 * objdump.c (print_line): Don't decrement line number here.. (dump_lines): ..do so here instead, ensuring loop terminates.
2022-10-05Re: stab nearest_line bfd_malloc_and_get_sectionAlan Modra1-0/+4
It didn't take long for the fuzzers to avoid size checks in bfd_malloc_and_get_section. Plug this hole. * syms.c (_bfd_stab_section_find_nearest_line): Ignore fuzzed sections with no contents.
2022-10-04gprofng: fix build with --enable-pgo-build=ltoVladimir Mezentsev5-28/+30
gprofng/ChangeLog 2022-10-04 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/29579 * libcollector/dispatcher.c: Fix the symbol version in SYMVER_ATTRIBUTE. * libcollector/iotrace.c: Likewise. * libcollector/linetrace.c: Likewise. * libcollector/mmaptrace.c: Likewise. * libcollector/synctrace.c: Likewise.
2022-10-05Automatic date update in version.inGDB Administrator1-1/+1
2022-10-04Remove decode_location_spec_defaultTom Tromey1-30/+15
This removes decode_location_spec_default, inlining it into its sole caller. Regression tested on x86-64 Fedora 34.
2022-10-04gas: NEWS: Mention the T-Head extensions that were recently addedPalmer Dabbelt1-0/+5
2022-10-04[gdb/symtab] Don't complain about function declsTom de Vries3-1/+67
[ Requires "[gdb/symtab] Don't complain about inlined functions" as submitted here ( https://sourceware.org/pipermail/gdb-patches/2022-September/191762.html ). ] With the test-case included in this patch, we get: ... (gdb) ptype main^M During symbol reading: cannot get low and high bounds for subprogram DIE \ at 0xc1^M type = int (void)^M (gdb) FAIL: gdb.dwarf2/anon-ns-fn.exp: ptype main without complaints ... The DIE causing the complaint is a function declaration: ... <2><c1>: Abbrev Number: 3 (DW_TAG_subprogram) <c2> DW_AT_name : foo <c8> DW_AT_declaration : 1 ... which is referred to from the DIE representing the function definition: ... <1><f4>: Abbrev Number: 7 (DW_TAG_subprogram) <f5> DW_AT_specification: <0xc1> <f9> DW_AT_low_pc : 0x4004c7 <101> DW_AT_high_pc : 0x7 ... which does contain the low and high bounds. Fix this by not complaining about function declarations. Tested on x86_64-linux.
2022-10-04[gdb/symtab] Don't complain about inlined functionsTom de Vries3-1/+74
With the test-case included in this patch, we get: ... (gdb) ptype main^M During symbol reading: cannot get low and high bounds for subprogram DIE \ at 0x113^M During symbol reading: cannot get low and high bounds for subprogram DIE \ at 0x11f^M type = int (void)^M (gdb) FAIL: gdb.dwarf2/inline.exp: ptype main ... The complaints are about foo, with DW_AT_inline == DW_INL_inlined: ... <1><11f>: Abbrev Number: 6 (DW_TAG_subprogram) <120> DW_AT_name : foo <126> DW_AT_prototyped : 1 <126> DW_AT_type : <0x10c> <12a> DW_AT_inline : 1 (inlined) ... and foo2, with DW_AT_inline == DW_INL_declared_inlined: ... <1><113>: Abbrev Number: 5 (DW_TAG_subprogram) <114> DW_AT_name : foo2 <11a> DW_AT_prototyped : 1 <11a> DW_AT_type : <0x10c> <11e> DW_AT_inline : 3 (declared as inline and inlined) ... Fix this by not complaining about inlined functions. Tested on x86_64-linux.
2022-10-04gdb/riscv: Partial support for instructions up to 176-bitTsukasa OI1-4/+5
Because riscv_insn_length started to support instructions up to 176-bit, we need to increase buf size to 176-bit in size. Also, that would break an assumption in riscv_insn::decode so this commit fixes it, noting that instructions longer than 64-bit are not fully supported yet.
2022-10-04RISC-V: Fix buffer overflow on print_insn_riscvTsukasa OI2-1/+3
Because riscv_insn_length started to support instructions up to 176-bit, we need to increase packet buffer size to 176-bit in size. include/ChangeLog: * opcode/riscv.h (RISCV_MAX_INSN_LEN): Max instruction length for use in buffer size. opcodes/ChangeLog: * riscv-dis.c (print_insn_riscv): Increase buffer size for max 176-bit length instructions.
2022-10-04RISC-V: Renamed INSN_CLASS for floating point in integer extensions.Nelson Chu3-244/+243
Just added suffix _INX for those INSN_CLASS should be enough to represent their fpr can be replaced by gpr.
2022-10-04Note that at least dejagnu version 1.5.3 is required in order to be ale to ↵Nick Clifton2-4/+18
run the testsuites. * README-maintainer-mode: Add a minimum version of dejagnu requirement.
2022-10-04opcodes/riscv: style csr names as registersAndrew Burgess1-1/+2
While reviewing another patch I noticed that RISC-V CSR names are given the text style, not the register style. This patch fixes this mistake.
2022-10-04[AArch64] Update FPSR/FPCR fields for FPU and SVELuis Machado3-2/+53
I noticed some missing flags/fields from FPSR and FPCR registers in both the FPU and SVE target descriptions. This patch adds those and makes the SVE versions of FPSR and FPCR use the proper flags/bitfields types.
2022-10-04Support objcopy changing compression to or from zstdAlan Modra3-169/+169
Commit 2cac01e3ffff lacked support for objcopy changing compression style. Add that support, which meant a rewrite of bfd_compress_section_contents. In the process I've fixed some memory leaks. * compress.c (bfd_is_section_compressed_info): Rename from bfd_is_section_compressed_with_header and add ch_type param to return compression header ch_type field. Update all callers. (decompress_section_contents): Remove buffer and size params. Rewrite. Update callers. (bfd_init_section_compress_status): Free contents on failure. (bfd_compress_section): Likewise. * elf.c (_bfd_elf_make_section_from_shdr): Support objcopy changing between any of the three compression schemes. Report "unable to compress/decompress" rather than "unable to initialize compress/decompress status" on compress/decompress failures. * bfd-in2.h: Regenerate.