aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2022-06-06Remove "-break-insert -r" testsTom Tromey2-76/+0
PR mi/14270 points out that mi-break.exp has some tests for an unimplemented "-r" switch for "-break-insert". This switch was never implemented, and is not documented -- though it is mentioned in a comment in the documentation. This patch removes the test and the doc comment. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=14270
2022-06-06[gdb] Name arch selftests more clearlyTom de Vries1-5/+22
When running some all archs selftest I get: ... $ gdb -q -batch -ex "maint selftest unpack_field_as_long" Running selftest unpack_field_as_long::A6. ... By now I know that A6 is an arc architecture, but for others that's less clear. Fix this by using unpack_field_as_long::arc::A6 instead. This then introduces redundant names like arm::arm, so try to avoid those, though I'm not entirely convinced that that's worth the trouble. This introduces the following new names: ... +Running selftest unpack_field_as_long::am33_2::am33-2. +Running selftest unpack_field_as_long::arc::A6. +Running selftest unpack_field_as_long::arc::A7. +Running selftest unpack_field_as_long::arc::EM. +Running selftest unpack_field_as_long::arc::HS. +Running selftest unpack_field_as_long::arm::ep9312. +Running selftest unpack_field_as_long::arm::iwmmxt. +Running selftest unpack_field_as_long::arm::iwmmxt2. +Running selftest unpack_field_as_long::arm::xscale. +Running selftest unpack_field_as_long::bpf::xbpf. +Running selftest unpack_field_as_long::frv::fr400. +Running selftest unpack_field_as_long::frv::fr450. +Running selftest unpack_field_as_long::frv::fr500. +Running selftest unpack_field_as_long::frv::fr550. +Running selftest unpack_field_as_long::frv::simple. +Running selftest unpack_field_as_long::frv::tomcat. +Running selftest unpack_field_as_long::iq2000::iq10. +Running selftest unpack_field_as_long::m32c::m16c. +Running selftest unpack_field_as_long::mep::c5. +Running selftest unpack_field_as_long::mep::h1. +Running selftest unpack_field_as_long::nds32::n1. +Running selftest unpack_field_as_long::nds32::n1h. +Running selftest unpack_field_as_long::nds32::n1h_v2. +Running selftest unpack_field_as_long::nds32::n1h_v3. +Running selftest unpack_field_as_long::nds32::n1h_v3m. +Running selftest unpack_field_as_long::z80::ez80-adl. +Running selftest unpack_field_as_long::z80::ez80-z80. +Running selftest unpack_field_as_long::z80::gbz80. +Running selftest unpack_field_as_long::z80::r800. +Running selftest unpack_field_as_long::z80::z180. ... Tested on x86_64-linux.
2022-06-06[gdb] Enable some more print_one_insn selftestsTom de Vries1-0/+18
In print_one_insn_test we have this cluster of skipped tests: ... case bfd_arch_ia64: case bfd_arch_mep: case bfd_arch_mips: case bfd_arch_tic6x: case bfd_arch_xtensa: return; ... Enable some of these, and document in more detail why they're enabled or skipped. Likewise, document bfd_arch_or1k because it's an odd case. Tested on x86_64-linux.
2022-06-06[gdb] Fix maint selftest -v print_one_insnTom de Vries1-8/+2
When running the print_one_insn selftests with -v, I get: ... $ gdb -q -batch -ex "maint selftest -v print_one_insn" Running selftest print_one_insn::A6. .shor 0x783eRunning selftest print_one_insn::A7. trap_s 0x1Running selftest print_one_insn::ARC600. .shor 0x783eRunning selftest print_one_insn::ARC601. Running selftest print_one_insn::ARC700. trap_s 0x1Running selftest print_one_insn::ARCv2. trap_s 0x1Running selftest print_one_insn::EM. trap_s 0x1Running selftest print_one_insn::HS. trap_s 0x1Running selftest print_one_insn::Loongarch32. ... The insn is written to gdb_stdout, and there is code in the selftest to add a newline after the insn, which writes to stream(). The stream() ui_file points into a string buffer, which the disassembler uses before writing to gdb_stdout, so writing into it after the disassembler has finished has no effect. Fix this by using gdb_stdlog and debug_printf (which is what the unit test infrastructure itself uses) instead, such that we have: ... Running selftest print_one_insn::A6. .shor 0x783e Running selftest print_one_insn::A7. trap_s 0x1 Running selftest print_one_insn::ARC600. .shor 0x783e Running selftest print_one_insn::ARC601. Running selftest print_one_insn::ARC700. trap_s 0x1 Running selftest print_one_insn::ARCv2. trap_s 0x1 Running selftest print_one_insn::Loongarch32. ... Note: I've also removed the printing of arch_name, which would give us otherwise the redundant: ... Running selftest print_one_insn::A6. arc .shor 0x783e Running selftest print_one_insn::A7. arc trap_s 0x1 ... Tested on x86_64-linux.
2022-06-06gdb/testsuite: add missing skip_python_tests call in py-doc-reformat.expAndrew Burgess1-0/+4
In commit: commit 51e8dbe1fbe7d8955589703140ca5eba7b4f1bd7 Date: Mon May 16 19:26:54 2022 +0100 gdb/python: improve formatting of help text for user defined commands the test that was added (gdb.python/py-doc-reformat.exp) was missing a call to skip_python_tests. As a result, this test would fail for any GDB built within Python support. This commit adds a call to skip_python_tests.
2022-06-05Remove obsolete Python 2 commentTom Tromey1-7/+0
I found a comment that referred to Python 2, but that is now obsolete -- the code it refers to is gone. I'm checking in this patch to remove the comment. There's a similar comment elsewhere, but I plan to remove that one in another patch I'm going to submit shortly.
2022-06-04[gdb/ada] Fix literal truncationTom de Vries2-7/+24
Make sure we error out on overflow instead of truncating in all cases. Tested on x86_64-linux, with a build with --enable-targets=all.
2022-06-04[gdb/m2] Fix UB and literal truncationTom de Vries2-26/+24
Rewrite parse_number to use ULONGEST instead of LONGEST, to fix UB errors as mentioned in PR29163. Furthermore, make sure we error out on overflow instead of truncating in all cases. Tested on x86_64-linux, with a build with --enable-targets=all. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29163
2022-06-04[gdb/rust] Fix literal truncationTom de Vries2-3/+7
Make sure we error out on overflow instead of truncating in all cases. I've used as overflow string: "Integer literal is too large", based on what I found at <rust-lang/rust>/src/test/ui/parser/int-literal-too-large-span.rs but perhaps someone has a better idea. Tested on x86_64-linux, with a build with --enable-targets=all.
2022-06-04[gdb/pascal] Fix literal truncationTom de Vries2-73/+30
Make sure we error out on overflow instead of truncating in all cases. The current implementation of parse_number contains a comment about PR16377, but that's related to C-like languages. In absence of information of whether the same fix is needed for pascal, take the conservative approach and keep behaviour for decimals unchanged. Tested on x86_64-linux, with a build with --enable-targets=all.
2022-06-04[gdb/go] Fix literal truncationTom de Vries2-67/+30
Make sure we error out on overflow instead of truncating in all cases. The current implementation of parse_number contains a comment about PR16377, but that's related to C-like languages. In absence of information of whether the same fix is needed for go, take the conservative approach and keep behaviour for decimals unchanged. Tested on x86_64-linux, with a build with --enable-targets=all.
2022-06-04[gdb/fortran] Fix literal truncationTom de Vries2-19/+16
As mentioned in commit 5b758627a18 ("Make gdb.base/parse_number.exp test all architectures"): ... There might be a bug that 32-bit fortran truncates 64-bit values to 32-bit, given "p/x 0xffffffffffffffff" returns "0xffffffff". ... More concretely, we have: ... $ for arch in i386:x86-64 i386; do \ gdb -q -batch -ex "set arch $arch" -ex "set lang fortran" \ -ex "p /x 0xffffffffffffffff"; \ done The target architecture is set to "i386:x86-64". $1 = 0xffffffffffffffff The target architecture is set to "i386". $1 = 0xffffffff ... Fix this by adding a range check in parse_number in gdb/f-exp.y. Furthermore, make sure we error out on overflow instead of truncating in all other cases. Tested on x86_64-linux.
2022-06-04[gdb/c] Fix type of 2147483648 and literal truncationTom de Vries4-76/+130
[ Assuming arch i386:x86-64, sizeof (int) == 4, sizeof (long) == sizeof (long long) == 8. ] Currently we have (decimal for 0x80000000): ... (gdb) ptype 2147483648 type = unsigned int ... According to C language rules, unsigned types cannot be used for decimal constants, so the type should be long instead (reported in PR16377). Fix this by making sure the type of 2147483648 is long. The next interesting case is (decimal for 0x8000000000000000): ... (gdb) ptype 9223372036854775808 type = unsigned long ... According to the same rules, unsigned long is incorrect. Current gcc uses __int128 as type, which is allowed, but we don't have that available in gdb, so the strict response here would be erroring out with overflow. Older gcc without __int128 support, as well as clang use an unsigned type, but with a warning. Interestingly, clang uses "unsigned long long" while gcc uses "unsigned long", which seems the better choice. Given that the compilers allow this as a convience, do the same in gdb and keep type "unsigned long", and make this explicit in parser and test-case. Furthermore, make sure we error out on overflow instead of truncating in all cases. Tested on x86_64-linux with --enable-targets=all. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=16377
2022-06-04[gdb/testsuite] Test more values in gdb.base/parse_numbers.expTom de Vries1-42/+260
Currently we only test value 0xffffffffffffffff in test-case gdb.base/parse_numbers.exp. Test more interesting values, both in decimal and hex format, as well as negative decimals for language modula-2. This results in an increase in total tests from 15572 to 847448 (55 times more tests). Balance out the increase in runtime by reducing the number of architectures tested: only test one architecture per sizeof longlong/long/int/short combination, while keeping the possibility intact to run with all architectures (through setting a variable in the test-case) Results in slight reduction of total tests: 15572 -> 13853. Document interesting cases in the expected results: - wrapping from unsigned to signed - truncation - PR16377: using unsigned types to represent decimal constants in C Running the test-case with a gdb build with -fsanitize=undefined, we trigger two UB errors in the modula-2 parser, filed as PR29163. Tested on x86_64-linux with --enable-targets=all.
2022-06-04[gdb/testsuite] Fix ERROR in gdb.ctf/funcreturn.expTom de Vries1-14/+12
On openSUSE Tumbleweed (with gcc-12, enabling ctf tests) I run into: ... ERROR: tcl error sourcing src/gdb/testsuite/gdb.ctf/funcreturn.exp. ERROR: tcl error code NONE ERROR: Unexpected arguments: \ {print v_double_func} \ {[0-9]+ = {double \(\)} 0x[0-9a-z]+.*} \ {print double function} \ } ... The problem is a curly brace as fourth argument to gdb_test, which errors out due to recently introduced more strict argument checking in gdb_test. Fix the error by removing the brace. Though this fixes the error for me, due to PR29160 I get only FAILs, so I can't claim proper testing on x86_64-linux.
2022-06-04[gdb/testsuite] Fix gdb.threads/manythreads.exp with check-read1Tom de Vries1-15/+19
When running test-case gdb.threads/manythreads.exp with check-read1, I ran into this hard-to-reproduce FAIL: ... [New Thread 0x7ffff7318700 (LWP 31125)]^M [Thread 0x7ffff7321700 (LWP 31124) exited]^M [New T^C^M ^M Thread 769 "manythreads" received signal SIGINT, Interrupt.^M [Switching to Thread 0x7ffff6d66700 (LWP 31287)]^M 0x00007ffff7586a81 in clone () from /lib64/libc.so.6^M (gdb) FAIL: gdb.threads/manythreads.exp: stop threads 1 ... The matching in the failing gdb_test_multiple is done in an intricate way, trying to pass on some order and fail on another order. Fix this by rewriting the regexps to match one line at most, and detecting invalid order by setting and checking state variables. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29177
2022-06-04[gdb] Fix warning in print_one_insn::ez80-adlTom de Vries1-0/+7
When running selftest print_one_insn::ez80-adl we run into this warning: ... Running selftest print_one_insn::ez80-adl. warning: Unable to determine inferior's software breakpoint type: couldn't find `_break_handler' function in inferior. Will be used default software \ breakpoint instruction RST 0x08. ... Fix this by explicitly handling bfd_arch_z80 in print_one_insn_test. Tested on x86_64-linux.
2022-06-03Use bool for evregpy_no_listeners_pTom Tromey2-2/+2
I noticed that evregpy_no_listeners_p should return a bool. This patch makes this change. I'm checking it in.
2022-06-03[gdb] Fix warning in foreach_arch selftestsTom de Vries4-9/+76
When running the selftests, I run into: ... $ gdb -q -batch -ex "maint selftest" ... Running selftest execute_cfa_program::aarch64:ilp32. warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration of GDB. Attempting to continue with the default aarch64:ilp32 settings. ... and likewise for execute_cfa_program::i8086 and execute_cfa_program::ia64-elf32. The warning can easily be reproduced outside the selftests by doing: ... $ gdb -q -batch -ex "set arch aarch64:ilp32" ... and can be prevented by first doing "set osabi none". Fix the warning by setting osabi to none while doing selftests that iterate over all architectures. This causes a regression in the print_one_insn selftests for the ARC architecture. The problem is pre-existing, and can be demonstrated (already without this patch) using: ... $ gdb -q -batch -ex "set osabi none" -ex "maint selftest print_one_insn::A6" Running selftest print_one_insn::A6. Self test failed: Cannot access memory at address 0x0 Ran 1 unit tests, 1 failed $ ... For ARC, we use the generic case in print_one_insn_test, containing this code: ... int kind = gdbarch_breakpoint_kind_from_pc (gdbarch, &pc); ... insn = gdbarch_sw_breakpoint_from_kind (gdbarch, kind, &bplen); ... The problem is that with osabi linux we trigger: ... static int arc_linux_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr) { return trap_size; } ... but with osabi none: ... arc_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr) { size_t length_with_limm = gdb_insn_length (gdbarch, *pcptr); ... which needs access to memory, and will consequently fail. Fix this in print_one_insn_test, in the default case, by iterating over supported osabi's to makes sure we trigger arc_linux_breakpoint_kind_from_pc which will give us a usable instruction to disassemble. Tested on x86_64-linux.
2022-06-03Revert "[gdb] Fix warning in foreach_arch selftests"Tom de Vries3-68/+13
This reverts commit fc18b1c5afd ("[gdb] Fix warning in foreach_arch selftests"). The commit introduced regressions for an --enable-targets=all build: ... Running selftest print_one_insn::A6.^M Self test failed: Cannot access memory at address 0x0^M ... and while investigating those I realized that the commit fc18b1c5afd complicates things by trying to set the current osabi. So, revert the patch in preparation for a simpler solution. Tested on x86_64-linux.
2022-06-02gdb: LoongArch: Remove nonportable #includeRoland McGrath1-1/+0
Don't use gregset.h in *-tdep.c since it's not usable on hosts that don't have <sys/procfs.h>. It's not needed by this file, and should only be needed by *-nat.c files.
2022-06-02[gdb/testsuite] Detect change instead of init in gdb.mi/mi-var-block.expTom de Vries2-1/+7
On openSUSE Tumbleweed with target board unix/-m32, I run into: ... PASS: gdb.mi/mi-var-block.exp: step at do_block_test 2 Expecting: ^(-var-update \*[^M ]+)?(\^done,changelist=\[{name="foo",in_scope="true",type_changed="false",has_more="0"}, {name="cb",in_scope="true",type_changed="false",has_more="0"}\][^M ]+[(]gdb[)] ^M [ ]*) -var-update *^M ^done,changelist=[{name="foo",in_scope="true",type_changed="false",has_more="0"}]^M (gdb) ^M FAIL: gdb.mi/mi-var-block.exp: update all vars: cb foo changed (unexpected output) ... The problem is that the test-case attempts to detect a change in the cb variable caused by this initialization: ... void do_block_tests () { int cb = 12; ... but that only works if the stack location happens to be unequal to 12 before the initialization. Fix this by first initializing to 0, and then changing the value to 12: ... - int cb = 12; + int cb = 0; + cb = 12; ... and detecting that change. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29195
2022-06-02Rearrange and slightly reword the "Location Specification" sectionEli Zaretskii1-66/+63
This rearranges and changes the wording of the "Location Specification" section of the GDB manual in minor ways.
2022-06-02ODR warning for "main"Tom Tromey1-1/+1
"main" is redeclared with a different type in maint.c. I think this might have come from my first gdb patch, many many years ago. While I wonder if this profiling code is actually useful at all any more, in the meantime it's simple to fix the declaration. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warnings for "struct coff_symbol"Tom Tromey1-10/+10
"struct coff_symbol" is defined in multiple .c files, causing ODR warnings. This patch renames just the xcoffread.c type. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warnings for "struct insn_decode_record_t"Tom Tromey2-61/+62
"struct insn_decode_record_t" is defined in multiple .c files, causing ODR warnings. This patch renames the types, and removes the use of "typedef" here -- this is a C-ism that's no longer needed. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warnings for "struct insn_info"Tom Tromey1-14/+14
"struct insn_info" is defined in multiple .c files, causing ODR warnings. This patch renames the type in z80-tdep.c, leaving the other one alone. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warnings from overlay constantsTom Tromey1-6/+6
Some overlay-related constants are duplicated in z80-tdep.c, causing ODR warnings. This patch renames just the z80-specific ones. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warning for "enum string_repr_result"Tom Tromey2-8/+8
"enum string_repr_result" is defined in multiple .c files, causing ODR warnings. This patch renames the types. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warning for "struct find_targ_sec_arg"Tom Tromey2-7/+8
"struct find_targ_sec_arg" is defined in multiple .c files, causing ODR warnings. This patch renames the types. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warning for "struct stack_item"Tom Tromey4-34/+36
"struct stack_item" is defined in multiple .c files, causing ODR warnings. This patch renames these types. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warning for "struct instruction_type"Tom Tromey2-6/+6
"struct instruction_type" is defined in multiple .c files, causing an ODR warning. This patch renames the types. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warning for struct ext_link_mapTom Tromey1-2/+2
This renames the solib-dsbt.c copy of "struct ext_link_map" to avoid an ODR warning. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warning for struct field_infoTom Tromey1-8/+8
This renames one of the instance of "struct field_info" to avoid an ODR warning. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warnings for struct nextfieldTom Tromey1-8/+8
"struct nextfield" is defined in multiple places in GDB. This patch renames just the stabs one, leaving the DWARF one untouched. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02ODR warnings for struct symlocTom Tromey2-19/+19
"struct symloc" is defined in multiple spots in gdb, causing ODR warnings. This patch renames these. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02Fix ODR warning in observable.hTom Tromey1-0/+1
observable.h triggers an ODR warning because this line: extern observable<struct target_ops */* target */> target_changed; ... may be the only declaration of "struct target_ops" in scope (depending on the particular .c file) -- and this declares it in a namespace, resulting in confusion. This patch fixes the problem by adding a forward declaration. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
2022-06-02gdb: LoongArch: Implement the software_single_step gdbarch methodTiezhu Yang1-0/+105
When execute the following command on LoongArch: make check-gdb TESTS="gdb.base/branch-to-self.exp" there exist the following failed testcases: FAIL: gdb.base/branch-to-self.exp: single-step: si (timeout) FAIL: gdb.base/branch-to-self.exp: break-cond: side=host: continue to breakpoint: continue to break (timeout) FAIL: gdb.base/branch-to-self.exp: break-cond: side=host: p counter (timeout) Implement the software_single_step gdbarch method to decode the current branch instruction and determine the address of the next instruction on LoongArch to fix the above failed testcases. Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
2022-06-02gdb: Do not add empty sections to the section mapIlya Leoshkevich1-1/+7
From: Ulrich Weigand <ulrich.weigand@de.ibm.com> build_objfile_section_table () creates four synthetic sections per objfile, which are collected by update_section_map () and passed to std::sort (). When there are a lot of objfiles, for example, when debugging JITs, the presence of these sections slows down the sorting significantly. The output of update_section_map () is used by find_pc_section (), which can never return any of these sections: their size is 0, so they cannot be accepted by bsearch_cmp (). Filter them (and all the other empty sections) out in insert_section_p (), which is used only by update_section_map ().
2022-06-02Fix a new warning on CygwinJon Turney1-3/+3
> ../../gdb/windows-nat.c: In function ‘windows_solib* windows_make_so(const char*, LPVOID)’: > ../../gdb/windows-nat.c:714:12: error: declaration of ‘char name [512]’ shadows a parameter [-Werror=shadow=compatible-local] > 714 | char name[SO_NAME_MAX_PATH_SIZE]; > | ^~~~ > ../../gdb/windows-nat.c:655:30: note: shadowed declaration is here > 655 | windows_make_so (const char *name, LPVOID load_addr) > | ~~~~~~~~~~~~^~~~
2022-06-02Fix Cygwin build after 85b25bd9Jon Turney1-2/+2
Fix Cygwin build after 85b25bd9 ("Simplify windows-nat.c solib handling").
2022-06-02Fix Cygwin build after 0578e87fJon Turney2-2/+2
Fix Cygwin build after 0578e87f ("Remove some globals from nat/windows-nat.c"). Update code under ifdef __CYGWIN__ for globals moved to members of struct windows_process_info.
2022-06-02Fix Cygwin build after fcab5839Jon Turney2-4/+8
Fix Cygwin build after fcab5839 ("Implement pid_to_exec_file for Windows in gdbserver"). That change moves code from gdb/windows-nat.c to gdb/nat/windows-nat.c, but doesn't add the required typedefs and includes for parts of that code under ifdef __CYGWIN__.
2022-06-01[gdb] Fix warning in foreach_arch selftestsTom de Vries3-13/+68
When running the selftests, I run into: ... $ gdb -q -batch -ex "maint selftest" ... Running selftest execute_cfa_program::aarch64:ilp32. warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration of GDB. Attempting to continue with the default aarch64:ilp32 settings. ... and likewise for execute_cfa_program::i8086 and execute_cfa_program::ia64-elf32. The warning can easily be reproduced outside the selftests by doing: ... $ gdb -q -batch -ex "set arch aarch64:ilp32" ... and can be prevented by first doing "set osabi none". Fix the warning by setting osabi to none while doing selftests that iterate over all architectures. Tested on x86_64-linux.
2022-06-01Add gdb.current_language and gdb.Frame.languageTom Tromey7-0/+78
This adds the gdb.current_language function, which can be used to find the current language without (1) ever having the value "auto" or (2) having to parse the output of "show language". It also adds the gdb.Frame.language, which can be used to find the language of a given frame. This is normally preferable if one has a Frame object handy.
2022-06-01[arm] Don't use special treatment for PCYvan Roux1-9/+0
In an exception frame the PC register is extracted from the stack just like other base registers, so there is no need for a special treatment. Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@st.com> Signed-off-by: Yvan Roux <yvan.roux@foss.st.com>
2022-06-01[arm] Add support for FPU registers in prologue unwinderYvan Roux1-1/+1
The prologue unwinder had support for FPU registers, but only to calculate the correct offset on the stack, the values were not saved. Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@st.com> Signed-off-by: Yvan Roux <yvan.roux@foss.st.com>
2022-06-01[arm] d0..d15 are 64-bit each, not 32-bitYvan Roux1-4/+4
When unwinding the stack, the floating point registers d0 to d15 need to be handled as double words, not words. Only the first 8 registers have been confirmed fixed with this patch on a STM32F407-DISC0 board, but the upper 8 registers on Cortex-M33 should be handled in the same way. The test consisted of running a program compiled with float-abi=hard. In the main function, a function taking a double as an argument was called. After the function call, a hardware timer was used to trigger an interrupt. In the debug session, a breakpoint was set in the function called from main to verify the content of the registers using "info float" and another breakpoint in the interrupt handler was used to check the same registers using "info float" on frame 2 (the frame just before the dummy frame created for the signal handler in gdb). Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@st.com> Signed-off-by: Yvan Roux <yvan.roux@foss.st.com>
2022-06-01[arm] Cleanup: use hex for offsetsYvan Roux1-8/+9
Changed offset from decimal to hex to match architecture reference manual terminology and keep coherency with the rest of the code. Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@st.com> Signed-off-by: Yvan Roux <yvan.roux@foss.st.com>
2022-06-01gdb:csky save fpu and vdsp info to struct csky_gdbarch_tdepJiangshuai Li2-4/+43
First, add three variables fpu_abi, fpu_hardfp and vdsp_version to csky_gdbarch_tdep. They will be initialized from info.abfd in cskg_gdbarch_init. Now, they are just used to find a candidate among the list of pre-declared architectures Later, they will be used in gdbarch_return_value and gdbarch_push_dummy_call for funtions described below: fpu_abi: to check if the bfd is using VAL_CSKY_FPU_ABI_HARD or VAL_CSKY_FPU_ABI_SOFT fpu_hardfp: to check if the bfd is using VAL_CSKY_FPU_HARDFP_SINGLE or VAL_CSKY_FPU_HARDFP_DOUBLE vdsp_version: to check if a function is returned with CSKY_VRET_REGNUM