summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Automatic date update in version.inGDB Administrator2022-12-131-1/+1
|
* libctf: remove unnecessary zstd constructsIndu Bhagat2022-12-125-280/+6
| | | | | | | | | | | | | | | | | | This patch is essentially a revert of commit-id: 8818c80cbd4116ef5af171ec47c61167179e225c (libctf: Add ZSTD_LIBS to LIBS so that ac_cv_libctf_bfd_elf can be true) As the specific configure check now uses libtool, this explicit mention of the dependency $ZSTD_LIBS is not needed anymore. ChangeLog: * libctf/Makefile.in: Regenerated. * libctf/aclocal.m4: Likewise. * libctf/config.h.in: Likewise. * libctf/configure: Likewise. * libctf/configure.ac: Remove ZSTD_LIBS from LIBS. Cleanup unused AC_ZSTD.
* libctf: remove AC_CONFIG_MACRO_DIRIndu Bhagat2022-12-122-8/+2
| | | | | | | | | | ACLOCAL_AMFLAGS is being set already. So using AC_CONFIG_MACRO_DIR is unnecessary. ChangeLog: * libctf/configure: Regenerated. * libctf/configure.ac: remove AC_CONFIG_MACRO_DIR usage.
* libctf: remove unnecessary zlib constructsIndu Bhagat2022-12-122-6/+4
| | | | | | | | | | This dependency is managed via libtool. So explicit addition to LDFLAGS and LIBS is not necessary anymore. ChangeLog: * libctf/configure: Regenerated. * libctf/configure.ac: remove zlib from LDFLAGS and LIBS.
* [gdb/testsuite] Fix PR20630 regression test in gdb.base/printcmds.expTom de Vries2022-12-121-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On s390x-linux, I run into: ... (gdb) print {unsigned char}{65}^M $749 = 0 '\000'^M (gdb) FAIL: gdb.base/printcmds.exp: print {unsigned char}{65} ... In contrast, on x86_64-linux, we have: ... (gdb) print {unsigned char}{65}^M $749 = 65 'A'^M (gdb) PASS: gdb.base/printcmds.exp: print {unsigned char}{65} ... The first problem here is that the test is supposed to be a regression test for PR20630, which can be reproduced (for an unfixed gdb) like this: ... (gdb) p {unsigned char[]}{0x17} gdbtypes.c:4641: internal-error: copy_type: \ Assertion `TYPE_OBJFILE_OWNED (type)' failed. ... but it's not due to insufficient quoting (note the dropped '[]'). That's easy to fix, but after that we have on s390 (big endian): ... (gdb) print {unsigned char[]}{65}^M $749 = ""^M ... and on x86_64 (little endian): ... (gdb) print {unsigned char[]}{65}^M $749 = "A"^M ... Fix this by using 0xffffffff, such that in both cases we have: ... (gdb) print {unsigned char[]}{0xffffffff}^M $749 = "\377\377\377\377"^M ... Tested on x86_64-linux and s390x-linux.
* PR29893, buffer overflow in display_debug_addrAlan Modra2022-12-131-2/+7
| | | | | | PR 29893 * dwarf.c (display_debug_addr): Sanity check dwarf5 unit_length field. Don't read past end.
* Another Rust operator precedence bugTom Tromey2022-12-122-2/+11
| | | | | | | | | | | | My earlier patch to fix PR rust/29859 introduced a new operator precedence bug in the Rust parser. Assignment operators are right-associative in Rust. And, while this doesn't often matter, as Rust assignments always have the value (), still as a matter of principle we should get this correct. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29859
* [gdb/testsuite] Fix gdb.base/write_mem.exp for big endianTom de Vries2022-12-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On s390x-linux (big endian), I run into: ... (gdb) x /xh main^M 0x1000638 <main>: 0x0000^M (gdb) FAIL: gdb.base/write_mem.exp: x /xh main ... In contrast, on x86_64-linux (little endian), we have the expected: ... (gdb) x /xh main^M 0x4004a7 <main>: 0x4242^M (gdb) PASS: gdb.base/write_mem.exp: x /xh main ... The problem is that the test-case hard-codes expectations about endiannes by writing an int-sized value (4 bytes in this case) and then printing only a halfword by using "/h" (so, two bytes). If we print 4 bytes, we have for s390x: ... 0x1000638 <main>: 0x00004242^M ... and for x86_64: ... 0x4004a7 <main>: 0x00004242^M ... Fix this by removing the "/h". Tested on x86_64-linux and s390x-linux.
* gdb: fix possible use-after-free when executing commandsJan Vrany2022-12-121-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | In principle, `execute_command()` does following: struct cmd_list_element *c; c = lookup_cmd ( ... ); ... /* If this command has been pre-hooked, run the hook first. */ execute_cmd_pre_hook (c); ... /* ...execute the command `c` ...*/ ... execute_cmd_post_hook (c); This may lead into use-after-free error. Imagine the command being executed is a user-defined Python command that redefines itself. In that case, struct `cmd_list_element` pointed to by `c` is deallocated during its execution so it is no longer valid when post hook is executed. To fix this case, this commit looks up the command once again after it is executed to get pointer to (possibly newly allocated) `cmd_list_element`.
* x86: further re-work insn/suffix recognition to also cover MOVSXJan Beulich2022-12-1211-957/+1081
| | | | | | | | | PR gas/29524 Having templates with a suffix explicitly present has always been quirky. After prior adjustment all that's left to also eliminate the anomaly from move-with-sign-extend is to consolidate the insn templates and to make may_need_pass2() cope (plus extend testsuite coverage).
* x86: drop (now) stray IsStringJan Beulich2022-12-123-35/+33
| | | | | | | | The need for them on the operand-less string insns has gone away with the removal of maybe_adjust_templates() and associated logic. Since i386_index_check() needs adjustment then anyway, take the opportunity and also simplify it, possible again as a result of said removal (plus the opcode template adjustments done here).
* x86: move bad-use-of-TLS-reloc checkJan Beulich2022-12-121-32/+35
| | | | | | | | | | | | | | | Having it in match_template() is unhelpful. Neither does looking for the next template to possibly match make any sense in that case, nor is the resulting diagnostic making clear what the problem is. While moving the check, also generalize it to include all SIMD and VEX- encoded insns. This way an existing conditional can be re-used in md_assemble(). Note though that this still leaves a lof of insns which are also wrong to use with these relocations. Further fold the remaining check (BFD_RELOC_386_GOT32) with the XRELEASE related one a few lines down. This again allows re-using an existing conditional.
* x86-64: allow HLE store of accumulator to absolute 32-bit addressJan Beulich2022-12-124-5/+26
| | | | | | | | | | | | | In commit 1212781b35c9 ("ix86: allow HLE store of accumulator to absolute address") I was wrong to exclude 64-bit code. Dropping the check also leads to better diagnostics in 64-bit code ("MOV", after all, isn't invalid with "XRELEASE"). While there also limit the amount of further checks done: The operand type checks that were there were effectively redundant with other ones anyway, plus it's quite fine to also have "xrelease mov <disp>, %eax" look for the next MOV template (in fact again also improving diagnostics).
* ix86: don't recognize/derive Q suffix in the common caseJan Beulich2022-12-1214-51/+140
| | | | | | | | | | | | | | | | | | Have its use, except where actually legitimate, result in the same "only supported in 64-bit mode" diagnostic as emitted for other 64-bit only insns. Also suppress deriving of the suffix in Intel mode except in the legitimate cases. This in exchange allows dropping the respective code from match_template(). To maintain reasonable diagnostics (in particular to avoid "`mov' is only supported in 64-bit mode" on the SIMD forms of MOVQ) we need to defer parse_insn()'s emitting of errors unrelated to prefix parsing. Utilize i.error just like match_template() does. Oddly enough despite gcc's preference towards FILDQ and FIST{,T}Q we had no testcase whatsoever for these. Therefore such tests are being added. Note that the removed line in the x86-64-lfence-load testcase was redundant with the exact same one a few lines up.
* x86: re-work insn/suffix recognitionJan Beulich2022-12-129-1453/+1313
| | | | | | | | | | | | | | | | | | | | | | | | | Having templates with a suffix explicitly present has always been quirky. Introduce a 2nd matching pass in case the 1st one couldn't find a suitable template _and_ didn't itself already need to trim off a suffix to find a match at all. This requires error reporting adjustments (albeit luckily fewer than I was afraid might be necessary), as errors previously reported during matching now need deferring until after the 2nd pass (because, obviously, we must not emit any error if the 2nd pass succeeds). While also related to PR gas/29524, it was requested that move-with-sign-extend be left as broken as it always was. PR gas/29525 Note that with the dropped CMPSD and MOVSD Intel Syntax string insn templates taking operands, mixed IsString/non-IsString template groups (with memory operands) cannot occur anymore. With that maybe_adjust_templates() becomes unnecessary (and is hence being removed). PR gas/29526 Note further that while the additions to the intel16 testcase aren't really proper Intel syntax, we've been permitting all of those except for the MOVD variant. The test therefore is to avoid re-introducing such an inconsistency.
* x86: constify parse_insn()'s inputJan Beulich2022-12-121-7/+8
| | | | | | The function doesn't alter its input buffer: Reflect this in its prototype. To avoid using any kind of cast, simply calculate the update of "line" from the function's input and output.
* x86: revert disassembler parts of "x86: Allow 16-bit register source for LAR ↵Jan Beulich2022-12-127-54/+66
| | | | | | | | | | | | and LSL" This reverts the disassembler parts of 859aa2c86dc9 ("x86: Allow 16-bit register source for LAR and LSL"), adjusting testcases as necessary. That change was itself a partial revert of c9f5b96bdab0 ("x86: correct handling of LAR and LSL"), without actually saying so. While the earlier commit was properly agreed upon, the partial revert was not, and hence should not have been committed. This is even more so that the revert part of that change wasn't even necessary to address PR gas/29844.
* PR29892, Field file_table of struct module is uninitializedAlan Modra2022-12-121-3/+6
| | | | | | PR 29892 * vms-alphs.c (new_module): Use bfd_zmalloc to alloc file_table. (parse_module): Rewrite file_table reallocation code and clear.
* Lack of bounds checking in vms-alpha.c parse_moduleAlan Modra2022-12-121-45/+168
| | | | | | | | | | | | | | | | | | | | | | | | | | | | PR 29873 PR 29874 PR 29875 PR 29876 PR 29877 PR 29878 PR 29879 PR 29880 PR 29881 PR 29882 PR 29883 PR 29884 PR 29885 PR 29886 PR 29887 PR 29888 PR 29889 PR 29890 PR 29891 * vms-alpha.c (parse_module): Make length param bfd_size_type. Delete length == -1 checks. Sanity check record_length. Sanity check DST__K_MODBEG, DST__K_RTNBEG, DST__K_RTNEND lengths. Sanity check DST__K_SOURCE and DST__K_LINE_NUM elements before accessing. (build_module_list): Pass dst_section size to parse_module.
* PR29872, uninitialised value in display_debug_lines_decoded dwarf.c:5413Alan Modra2022-12-121-27/+38
| | | | | | | | | | | Plus segvs if the C-library doesn't handle printf %s of NULL. PR 29872 * dwarf.c (null_name): New function. (process_debug_info): Use it here.. (display_debug_lines_raw): ..and here.. (display_debug_lines_decoded): ..and here. xcalloc directory_table. Simplify xcalloc of file_table.
* gas/codeview: avoid "shadowing" of glibc function nameJan Beulich2022-12-121-4/+4
| | | | | | | While not "index" this time, old enough glibc also has an (unguarded) declaration of fileno() in stdio.h, which triggers a "shadows a global declaration" warning with our choice of warning level and with at least some gcc versions.
* x86: generate template sets data at build timeJan Beulich2022-12-123-16/+2360
| | | | | | | | Speed up gas startup by avoiding runtime allocation of the instances of type "templates". At the same time cut the memory requirement to just very little over half (not even accounting for any overhead notes_alloc() may incur) by reusing the "end" slot of a preceding entry for the "start" slot of the subsequent one.
* x86: drop sentinel from i386_optab[]Jan Beulich2022-12-123-45/+11
| | | | | | | Now that the table is local to gas, ARRAY_SIZE() can be used to determine the end of the table. Re-arrange the processing loop in md_begin() accordingly, at the same time folding the two calls to notes_alloc() into just one.
* x86: add generated tables dependency check to gasJan Beulich2022-12-122-0/+22
| | | | | | | | As requested by H.J., just for the sake of people potentially building in gas/ alone, add a check that the generated files in opcodes/ are actually up-to-date. Personally I think this should at best be a warning, but I can see how this may not be easily noticable among other make output (depending in particular on the verbosity level).
* x86: break gas dependency on libopcodesJan Beulich2022-12-122-2/+2
| | | | | gas doesn't use anything from libopcodes anymore - suppress linking in that library.
* x86: remove i386-opc.cJan Beulich2022-12-125-36/+8
| | | | | | Remove the now empty i386-opc.c. To compensate, tie table generation in opcodes/ to the building of i386-dis.o, despite the file not really depending on the generated data.
* x86: instantiate i386_{op,reg}tab[] in gas instead of in libopcodesJan Beulich2022-12-125-13/+9
| | | | | | | | | | | | Unlike many other architectures, x86 does not share an opcode table between assembly and disassembly. Any consumer of libopcodes would only ever access one of the two. Since gas is the only consumer of the assembly data, move it there. While doing so mark respective entities "static" in i386-gen (we may want to do away with i386_regtab_size altogether). This also shrinks the number of relocations to be processed for libopcodes.so by about 30%.
* Automatic date update in version.inGDB Administrator2022-12-121-1/+1
|
* PR29870, objdump SEGV in display_debug_lines_decoded dwarf.c:5524Alan Modra2022-12-111-2/+2
| | | | | | | | | | DWARF5 directory and file table allow more opportunity for fuzzers to break things. There are likely other places in dwarf.c that should be fixed too. PR 29870 * dwarf.c (display_debug_lines_decoded): Handle NULL file_table name entry.
* Automatic date update in version.inGDB Administrator2022-12-111-1/+1
|
* [gdb/tdep] Fix larl handling in s390_displaced_step_fixupTom de Vries2022-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On s390x-linux with target board unix/-m31, I run into: ... (gdb) PASS: gdb.guile/scm-lazy-string.exp: bad length print ptr^M $1 = 0x804006b0 <error: Cannot access memory at address 0x804006b0>^M (gdb) FAIL: gdb.guile/scm-lazy-string.exp: ptr: print ptr ... A minimal example is: ... $ gdb -q -batch -ex "set trace-commands on" -x gdb.in +file scm-lazy-string +break main Breakpoint 1 at 0x4005d2: file scm-lazy-string.c, line 23. +run Breakpoint 1, main () at scm-lazy-string.c:23 23 const char *ptr = "pointer"; +step 24 const char array[] = "array"; +print ptr $1 = 0x804006b0 <error: Cannot access memory at address 0x804006b0> ... If we delete the breakpoint after running to it, we have instead the expected: ... +delete +step 24 const char array[] = "array"; +print ptr $1 = 0x4006b0 "pointer" ... The problem is in displaced stepping, forced by the presence of the breakpoint, when stepping over this insn: ... 0x4005d2 <main+10> larl %r1,0x4006b0 ... With normal stepping we have: ... (gdb) p /x $r1 $2 = 0x3ff004006b0 ... but with displaced stepping we have instead (note the 0x80000000 difference): ... (gdb) p /x $r1 $1 = 0x3ff804006b0 (gdb) ... The difference comes from this code in s390_displaced_step_fixup: ... /* Handle LOAD ADDRESS RELATIVE LONG. */ else if (is_ril (insn, op1_larl, op2_larl, &r1, &i2)) { /* Update PC. */ regcache_write_pc (regs, from + insnlen); /* Recompute output address in R1. */ regcache_cooked_write_unsigned (regs, S390_R0_REGNUM + r1, amode | (from + i2 * 2)); } ... where the "amode |" adds the 0x80000000. Fix this by removing the "amode |". Tested on s390-linux, with native and target board unix/-m31. Approved-By: Ulrich Weigand <uweigand@de.ibm.com>
* Automatic date update in version.inGDB Administrator2022-12-101-1/+1
|
* objdump: sframe: fix memory leaksIndu Bhagat2022-12-091-1/+7
| | | | | | | ChangeLog: * binutils/objdump.c (dump_section_sframe): free up contents and SFrame decoder context on exit.
* libsframe: rename API sframe_fde_func_info to sframe_fde_create_func_infoIndu Bhagat2022-12-094-12/+12
| | | | | | | | | | | | | | | | | The new name better reflects the purpose of the function. ChangeLog: * bfd/elfxx-x86.c (_bfd_x86_elf_create_sframe_plt): Use new name. * libsframe/sframe.c (sframe_fde_create_func_info): Rename sframe_fde_func_info to this. * libsframe/testsuite/libsframe.encode/encode-1.c: Use new name. include/ChangeLog: * sframe-api.h (sframe_fde_create_func_info): Rename sframe_fde_func_info to this.
* gas: sframe: fine tune the fragment fixup for SFrame func infoIndu Bhagat2022-12-092-21/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SFrame function info is an unsigned 8-bit field comprising of the following (from LSB to MSB): - 4-bits: FRE type - 1-bit: FRE start address encoding - 3-bits: Unused At the moment, the most-significat 4-bits are zero (The FRE start address encoding of SFRAME_FDE_TYPE_PCINC has a value of zero, and the upper 3-bits are unused). So the current implementation works without this patch. To be precise, however, the fragment fixup logic is meant to fixup only the least-significant 4-bits (i.e., only the FRE type needs to be updated according to the function size). This patch makes the gas implementation a bit more resilient: In the future, when the format does evolve to make use of the currently unused 3-bits in various ways, the values in those 3-bits can be propagated unchanged while the fragment fixup continues to update the lowermost 4-bits to indicate the selected FRE type. ChangeLog: * gas/gen-sframe.c (create_func_info_exp): New definition. (output_sframe_funcdesc): Call create_func_info_exp. * gas/sframe-opt.c (sframe_estimate_size_before_relax): The associated fragment uses O_modulus now. (sframe_convert_frag): Adjust the fragment fixup code according to the new composite exp.
* sframe: gas: libsframe: define constants and remove magic numbersIndu Bhagat2022-12-093-9/+24
| | | | | | | | | | | | | | | | | | | | | | Define constants in sframe.h for the various limits associated with the range of offsets that can be encoded in the start address of an SFrame FRE. E.g., sframe_frame_row_entry_addr1 is used when start address offset can be encoded as 1-byte unsigned value. Update the code in gas to use these defined constants as it checks for these limits, and remove the usage of magic numbers. ChangeLog: * gas/sframe-opt.c (sframe_estimate_size_before_relax): (sframe_convert_frag): Do not use magic numbers. * libsframe/sframe.c (sframe_calc_fre_type): Likewise. include/ChangeLog: * sframe.h (SFRAME_FRE_TYPE_ADDR1_LIMIT): New constant. (SFRAME_FRE_TYPE_ADDR2_LIMIT): Likewise. (SFRAME_FRE_TYPE_ADDR4_LIMIT): Likewise.
* sframe.h: make some macros more preciseIndu Bhagat2022-12-091-3/+4
| | | | | | | include/ChangeLog: * sframe.h (SFRAME_V1_FUNC_INFO): Use specific bits only. (SFRAME_V1_FRE_INFO): Likewise.
* libsframe: minor formatting nitsIndu Bhagat2022-12-091-16/+14
| | | | | | ChangeLog: * libsframe/sframe.c: Fix formatting nits.
* [aarch64] Add TPIDR2 register support for LinuxLuis Machado2022-12-0917-81/+215
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the AArch64 Scalable Matrix Extension we have a new TPIDR2 register, and it will be added to the existing NT_ARM_TLS register set. Kernel patches are being reviewed here: https://lore.kernel.org/linux-arm-kernel/20220818170111.351889-1-broonie@kernel.org/ From GDB's perspective, we handle it in a similar way to the existing TPIDR register. But we need to consider cases of systems that only have TPIDR and systems that have both TPIDR and TPIDR2. With that in mind, the following patch adds the required code to support TPIDR2 and turns the org.gnu.gdb.aarch64.tls feature into a dynamically-generated target description as opposed to a static target description containing only TPIDR. That means we can remove the gdb/features/aarch64-tls.xml file and replace the existing gdb/features/aarch64-tls.c auto-generated file with a new file that dynamically generates the target description containing either TPIDR alone or TPIDR and TPIDR2. In the future, when *BSD's start to support this register, they can just enable it as is being done for the AArch64 Linux target. The core file read/write code has been updated to support TPIDR2 as well. On GDBserver's side, there is a small change to the find_regno function to expose a non-throwing version of it. It always seemed strange to me how find_regno causes the whole operation to abort if it doesn't find a particular register name. The patch moves code from find_regno into find_regno_no_throw and makes find_regno call find_regno_no_throw instead. This allows us to do register name lookups to find a particular register number without risking erroring out if nothing is found. The patch also adjusts the feature detection code for aarch64-fbsd, since the infrastructure is shared amongst all aarch64 targets. I haven't added code to support TPIDR2 in aarch64-fbsd though, as I'm not sure when/if that will happen.
* PR28306, segfault in _bfd_mips_elf_reloc_unshuffleAlan Modra2022-12-095-22/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Access to section data during relocation processing should be bounds checked, as it is in bfd_perform_relocation. bfd_perform_relocation does these checks after any special_function is called. So a reloc special_function needs to do its own bounds checking before accessing section data. This patch adds many such checks to the mips backend. Checking mips relocs is not without some difficulty. See the comment in _bfd_mips_reloc_offset_in_range. In a multitple reloc sequence applied to the same location, relocs that may appear somewhere other than the last one of the sequence need to be treated specially since they apply to the addend for the next relocation rather than the section contents. If the addend is in the section then it needs to be checked but not when the addend is in the reloc. check_inplace handles this situation. _bfd_mips_reloc_offset_in_range with check_shuffle handles the case where contents are shuffled before applying the relocation. PR 28306 * elf32-mips.c (_bfd_mips_elf32_gprel16_reloc): Check reloc address using _bfd_mips_reloc_offset_in_range. (gprel32_with_gp, mips16_gprel_reloc): Likewise. * elf64-mips.c (mips_elf64_gprel32_reloc): Likewise. (mips16_gprel_reloc): Likewise. * elfn32-mips.c (mips16_gprel_reloc): Likewise. (gprel32_with_gp): Check reloc address using bfd_reloc_offset_in_range. * elfxx-mips.h (enum reloc_check): Define. (_bfd_mips_reloc_offset_in_range): Declare. * elfxx-mips.c (needs_shuffle): New function. (_bfd_mips_elf_reloc_unshuffle, _bfd_mips_elf_reloc_shuffle): Use it. (_bfd_mips_reloc_offset_in_range): New function. (_bfd_mips_elf_gprel16_with_gp): Move reloc address checks to partial_inplace handling. Use bfd_reloc_offset_in_range. (_bfd_mips_elf_lo16_reloc): Check reloc address using bfd_reloc_offset_in_range. (_bfd_mips_elf_generic_reloc): Check reloc address using _bfd_mips_reloc_offset_in_range. (mips_elf_calculate_relocation): Check reloc address before calling mips_elf_nullify_got_load. (_bfd_mips_elf_check_relocs): Likewise. (mips_elf_read_rel_addend): Add sec param, check reloc address before reading. Adjust callers. (mips_elf_add_lo16_rel_addend): Add sec param, adjust callers.
* [gdb/testsuite] Fix gdb.guile/scm-symtab.exp for ppc64leTom de Vries2022-12-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On powerpc64le-linux, I run into: ... (gdb) PASS: gdb.guile/scm-symtab.exp: step out of func2 guile (print (> (sal-line (find-pc-line (frame-pc (selected-frame)))) line))^M = #f^M (gdb) FAIL: gdb.guile/scm-symtab.exp: test find-pc-line with resume address ... The problem is as follows: the instructions for the call to func2 are: ... 1000070c: 39 00 00 48 bl 10000744 <func1> 10000710: 00 00 00 60 nop 10000714: 59 00 00 48 bl 1000076c <func2> 10000718: 00 00 00 60 nop 1000071c: 00 00 20 39 li r9,0 ... and the corresponding line number info is: ... scm-symtab.c: File name Line number Starting address View Stmt scm-symtab.c 42 0x1000070c x scm-symtab.c 43 0x10000714 x scm-symtab.c 44 0x1000071c x ... The test-case looks at the line numbers for two insns: - the insn of the call to func2 (0x10000714), and - the insn after that (0x10000718), and expects the line number of the latter to be greater than the line number of the former. However, both insns have the same line number: 43. Fix this by replacing ">" with ">=". Tested on x86_64-linux and powerpc64le-linux.
* Automatic date update in version.inGDB Administrator2022-12-091-1/+1
|
* x86-64: Remove BND from 64-bit IBT PLTH.J. Lu2022-12-0813-80/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Since MPX support has been removed from x86-64 psABI, remove BND from 64-bit IBT PLT by using x32 IBT PLT. bfd/ PR ld/29851 * elf64-x86-64.c (elf_x86_64_get_synthetic_symtab): Also check x32 IBT PLT for 64-bit. (elf_x86_64_link_setup_gnu_properties): Always use x32 IBT PLT. ld/ PR ld/29851 * testsuite/ld-x86-64/ibt-plt-1.d: Updated. * testsuite/ld-x86-64/ibt-plt-2a.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2b.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2c.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2d.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3a.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3b.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3c.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3d.d: Likewise. * testsuite/ld-x86-64/plt-main-ibt-x32.dd: Moved to ... * testsuite/ld-x86-64/plt-main-ibt.dd: This. * testsuite/ld-x86-64/x86-64.exp: Don't use plt-main-ibt-x32.dd.
* [gdb/testsuite] Require debug info for gdb.tui/tui-layout-asm-short-prog.expTom de Vries2022-12-081-0/+5
| | | | | | | | | | | | | | | | | | | | | | When running test-case gdb.tui/tui-layout-asm-short-prog.exp on SLE-12-SP3 aarch64, I run into: ... FAIL: gdb.tui/tui-layout-asm-short-prog.exp: check asm box contents FAIL: gdb.tui/tui-layout-asm-short-prog.exp: check asm box contents again ... due to: ... (gdb) file tui-layout-asm-short-prog^M Reading symbols from tui-layout-asm-short-prog...^M (No debugging symbols found in tui-layout-asm-short-prog)^M ... I managed to reproduce the same behaviour on openSUSE Leap 15.4 x86_64, by removing the debug option. Fix this by making the test-case unsupported if no debug info is found. Tested on x86_64-linux.
* gdb/testsuite: update a pattern in gdb_file_cmdEnze Li2022-12-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building GDB with the following CFLAGS and CXXFLAGS as part of configure line: CFLAGS=-std=gnu11 CXXFLAGS=-std=gnu++11 Then run the selftest.exp, I see: ====== Running /home/lee/dev/binutils-gdb/gdb/testsuite/gdb.gdb/selftest.exp ... FAIL: gdb.gdb/selftest.exp: run until breakpoint at captured_main WARNING: Couldn't test self === gdb Summary === # of unexpected failures 1 /home/lee/dev/binutils-gdb/gdb/gdb version 13.0.50.20221206-git -nw -nx -iex "set height 0" -iex "set width 0" -data-directory /home/lee/dev/binutils-gdb/gdb/testsuite/../data-directory ====== It is the fact that when I use the previously mentioned CFLAGS and CXXFLAGS as part of the configuration line, the default value (-O2 -g) is overridden, then GDB has no debug information. When there's no debug information, GDB should not run the testcase in selftest.exp. The root cause of this FAIL is that the $gdb_file_cmd_debug_info didn't get the right value ("nodebug") during the gdb_file_cmd procedure. That's because in this commit, commit 3453e7e409f44a79ac6695589836edb8a49bfb08 Date: Sat May 19 11:25:20 2018 -0600 Clean up "Reading symbols" output It changed "no debugging..." to "No debugging..." which causes the above problem. This patch only updates the corresponding pattern to fix this issue. With this patch applied, I see: ====== Running /home/lee/dev/binutils-gdb/gdb/testsuite/gdb.gdb/selftest.exp ... === gdb Summary === # of untested testcases 1 /home/lee/dev/binutils-gdb/gdb/gdb version 13.0.50.20221206-git -nw -nx -iex "set height 0" -iex "set width 0" -data-directory /home/lee/dev/binutils-gdb/gdb/testsuite/../data-directory ====== Tested on x86_64-linux. Approved-By: Simon Marchi <simon.marchi@efficios.com>
* Update the description of the linker script's TYPE directive.Nick Clifton2022-12-082-0/+30
| | | | | | PR 29861 * ld.texi (Output Section Type): Note that setting the output section type only works if the section contains untyped data.
* gdb: skip objfiles with no BFD in DWARF unwinderJan Vrany2022-12-083-1/+19
| | | | | | | | | | | | | | | | | While playing with JIT reader I experienced GDB to crash on null-pointer dereference when stepping through non-jitted code. The problem was that dwarf2_frame_find_fde () assumed that all objfiles have BFD but that's not always true. To address this problem, this commit skips such objfiles. To test the fix we put breakpoint in jit_function_add (). The JIT reader does not know how unwind this function so unwinding eventually falls back to DWARF unwinder which in turn iterates over objfiles. Since the the code is jitted, it is guaranteed it would eventually process JIT objfile. Approved-By: Simon Marchi <simon.marchi@efficios.com>
* libctf: avoid potential double freeAlan Modra2022-12-081-1/+4
| | | | * ctf-link.c (ctf_link_add_cu_mapping): Set t NULL after free.
* Automatic date update in version.inGDB Administrator2022-12-081-1/+1
|
* PowerPC: Add support for RFC02655 - Saturating Subtract InstructionPeter Bergner2022-12-076-0/+61
| | | | | | | | | | | | | | opcodes/ * ppc-opc.c (XOL): New define. (XOL_MASK): Likewise. (powerpc_opcodes): Add subfus, subfus., subwus, subwus., subdus, subdus. gas/ * testsuite/gas/ppc/rfc02655.s: New test. * testsuite/gas/ppc/rfc02655.d: Likewise * testsuite/gas/ppc/future-raw.s: Likewise. * testsuite/gas/ppc/future-raw.d: Likewise. * testsuite/gas/ppc/ppc.exp: Run them.