summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-08-07Automatic date update in version.inlinaro-local/ci/tcwg_kernel/llvm-master-aarch64-next-defconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-mainline-defconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-next-allnoconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-norov-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-next-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-lts-allyesconfigGDB Administrator
2022-08-06asan: heap buffer overflow in _bfd_error_handlerlinaro-local/ci/tcwg_kernel/llvm-master-arm-next-defconfiglinaro-local/ci/tcwg_kernel/llvm-master-arm-next-allnoconfiglinaro-local/ci/tcwg_kernel/llvm-master-arm-lts-allyesconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-stable-defconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-stable-allnoconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-next-allmodconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-mainline-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-stable-allyesconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-mainline-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-stable-defconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-next-defconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-lts-defconfiglinaro-local/ci/tcwg_bmk_llvm_tx1/llvm-master-aarch64-spec2k6-O2_LTOlinaro-local/ci/tcwg_bmk_llvm_tk1/llvm-master-arm-spec2k6-O3linaro-local/ci/tcwg_bmk_gnu_tx1/gnu-master-aarch64-spec2k6-O2_LTOlinaro-local/ci/tcwg_bmk_gnu_tk1/gnu-master-arm-spec2k6-O2_LTOAlan Modra
On coff_slurp_symbol_table printing "unrecognized storage class" for a symbol error. If the symbol name is the last string in its section and not terminated, we run off the end of the buffer. * coffgen.c (build_debug_section): Terminate the section with an extra 0.
2022-08-06asan: segfault in coff_write_auxent_fnameAlan Modra
More fuzzed input file nonsense. * coffgen.c (coff_write_symbol): Don't call coff_write_auxent_fname when extrap is NULL.
2022-08-06msan: bfd_mach_o_layout_commands use of uninitialised valueAlan Modra
Catches fuzzed input with unterminated strings that later run off the end of their buffers when calling strlen. * mach-o.c: Use size_t vars where approprite. (bfd_mach_o_alloc_and_read): Add "extra" param. Allocate that much extra and clear. Update all callers, those that set up strings with one extra byte.
2022-08-06objcopy section alignmentAlan Modra
bfd_set_section_alignment currently always returns true. This patch changes it to return false on silly alignment values, avoiding yet another way to trigger ubsan errors like coffcode.h:3192:12: runtime error: shift exponent 299 is too large for 32-bit type 'int'. We'll catch that one in objcopy.c:setup_sections. However, setup_sections gives up on other setup operations that are necessary even after an error of some sort. Change that to keep going, which might change the error message but that shouldn't matter in the least. bfd/ * section.c (bfd_set_section_alignment): Return false and don't set alignment_power for stupidly large alignments. * bfd-in2.h: Regenerate. * coffcode.h (coff_compute_section_file_positions): Don't use an int constant when calculating alignment. binutils/ * objcopy.c (setup_section): Keep on going after hitting non-fatal errors.
2022-08-06ubsan: som.c undefined shift in som_set_reloc_infoAlan Modra
Do the shift using unsigned variables to avoid UB on << 8. * som.c (som_set_reloc_info): Make v unsigned. Localise some variables to their blocks.
2022-08-06Automatic date update in version.inlinaro-local/ci/tcwg_kernel/llvm-master-arm-stable-allyesconfiglinaro-local/ci/tcwg_kernel/llvm-master-arm-lts-allnoconfiglinaro-local/ci/tcwg_kernel/llvm-master-arm-lts-allmodconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-norov-defconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-mainline-allnoconfiglinaro-local/ci/tcwg_bmk_llvm_fx/llvm-master-aarch64-cpu2017-O3linaro-local/ci/tcwg_bmk_gnu_tx1/gnu-master-aarch64-spec2k6-O2linaro-local/ci/tcwg_bmk_gnu_apm/gnu-master-aarch64-spec2k6-OsGDB Administrator
2022-08-06Get rid of BFD_VMA_FMTlinaro-local/ci/tcwg_bmk_gnu_fx/gnu-master-aarch64-cpu2017-O3Alan Modra
Remove the BFD_VMA_FMT defines in bfd.h and configure support. * bfd-in.h (BFD_VMA_FMT): Don't define. * configure.ac (BFD_INT64_FMT): Remove configure test. * configure.com: Likewise. * Makefile.in: Regenerate. * bfd-in2.h: Regenerate. * configure: Regenerate.
2022-08-06Don't use BFD_VMA_FMT in gdb and simAlan Modra
Like commit b82817674f, this replaces BFD_VMA_FMT "x" in sim/ with PRIx64 and casts to promote bfd_vma to uint64_t. The one file using BFD_VMA_FMT in gdb/ instead now uses hex_string, and a typo in the warning message is fixed.
2022-08-05[gdb/build] Fix build breaker in language.c with gcc 7.5.0linaro-local/ci/tcwg_kernel/llvm-master-arm-mainline-allnoconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-stable-allnoconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-norov-defconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-stable-allyesconfigTom de Vries
When building gdb on openSUSE Leap 15.3, using gcc 7.5.0, I run into: ... gdb/language.c: In constructor ‘constexpr language_gdbarch::language_gdbarch()’: gdb/language.c:921:8: error: use of deleted function \ ‘language_arch_info::language_arch_info(const language_arch_info&)’ struct language_gdbarch ^~~~~~~~~~~~~~~~ In file included from gdbsupport/common-defs.h:104:0, from gdb/defs.h:28, from gdb/language.c:31: gdb/language.h:95:28: note: declared here DISABLE_COPY_AND_ASSIGN (language_arch_info); ^ include/ansidecl.h:342:3: note: in definition of macro \ ‘DISABLE_COPY_AND_ASSIGN’ TYPE (const TYPE&) = delete; \ ^~~~ gdb/language.c: In function ‘language_gdbarch* get_language_gdbarch(gdbarch*)’: gdb/language.c:936:22: note: synthesized method ‘constexpr \ language_gdbarch::language_gdbarch()’ first required here l = new struct language_gdbarch; ^~~~~~~~~~~~~~~~ ... This seems to be fixed by this change in the struct language_gdbarch definition: ... - struct language_arch_info arch_info[nr_languages] {}; + struct language_arch_info arch_info[nr_languages]; ... Tested on x86_64-linux.
2022-08-05[gdb] Add unit test for gdb::sequential_for_eachlinaro-local/ci/tcwg_kernel/gnu-master-aarch64-next-allyesconfigTom de Vries
With commit 18a5766d09c ("[gdbsupport] Add sequential_for_each") I added a drop-in replacement for gdb::parallel_for_each, but there's nothing making sure that the two remain in sync. Extend the unit test for gdb::parallel_for_each to test both. Do this using a slightly unusual file-self-inclusion. Doing so keep things readable and maintainable, and avoids macrofying functions. Tested on x86_64-linux.
2022-08-05[gdb/symtab] Use task size in parallel_for_each in dwarf2_build_psymtabs_hardTom de Vries
In dwarf2_build_psymtabs_hard, we use a parallel_for_each to distribute CUs over threads. Ensuring a fair distribution over the worker threads and main thread in terms of number of CUs might not be the most efficient way, given that CUs can vary in size. Fix this by using per_cu->get_length () as the task size. I've used this experiment to verify the performance impact: ... $ for n in $(seq 1 10); do \ time gdb -q -batch ~/firefox/libxul.so-93.0-1.1.x86_64.debug \ 2>&1 \ | grep "real:"; \ done ... and without the patch got: ... real: 4.71 real: 4.88 real: 4.29 real: 4.30 real: 4.65 real: 4.27 real: 4.27 real: 4.27 real: 4.75 real: 4.41 ... and with the patch: ... real: 3.68 real: 3.81 real: 3.80 real: 3.68 real: 3.75 real: 3.69 real: 3.69 real: 3.74 real: 3.67 real: 3.74 ... so that seems a reasonable improvement. With parallel_for_each_debug set to true, we get some more detail about the difference in behaviour. Without the patch we have: ... Parallel for: n_elements: 2818 Parallel for: minimum elements per thread: 1 Parallel for: elts_per_thread: 704 Parallel for: elements on worker thread 0 : 705 Parallel for: elements on worker thread 1 : 705 Parallel for: elements on worker thread 2 : 704 Parallel for: elements on worker thread 3 : 0 Parallel for: elements on main thread : 704 ... and with the patch: ... Parallel for: n_elements: 2818 Parallel for: total_size: 1483674865 Parallel for: size_per_thread: 370918716 Parallel for: elements on worker thread 0 : 752 (size: 371811790) Parallel for: elements on worker thread 1 : 360 (size: 371509370) Parallel for: elements on worker thread 2 : 1130 (size: 372681710) Parallel for: elements on worker thread 3 : 0 (size: 0) Parallel for: elements on main thread : 576 (size: 367671995) ... Tested on x86_64-linux.
2022-08-05[gdbsupport] Add task size parameter in parallel_for_eachTom de Vries
Add a task_size parameter to parallel_for_each, defaulting to nullptr, and use the task size to distribute similarly-sized chunks to the threads. Tested on x86_64-linux.
2022-08-05Introduce gdb::make_function_viewPedro Alves
This adds gdb::make_function_view, which lets you create a function view from a callable without specifying the function_view's template parameter. For example, this: auto lambda = [&] (int) { ... }; auto fv = gdb::make_function_view (lambda); instead of: auto lambda = [&] (int) { ... }; gdb::function_view<void (int)> fv = lambda; It is particularly useful if you have a template function with an optional function_view parameter, whose type depends on the function's template parameters. Like: template<typename T> void my_function (T v, gdb::function_view<void(T)> callback = nullptr); For such a function, the type of the callback argument you pass must already be a function_view. I.e., this wouldn't compile: auto lambda = [&] (int) { ... }; my_function (1, lambda); With gdb::make_function_view, you can write the call like so: auto lambda = [&] (int) { ... }; my_function (1, gdb::make_function_view (lambda)); Unit tests included. Tested by building with GCC 9.4, Clang 10, and GCC 4.8.5, on x86_64 GNU/Linux, and running the unit tests. Change-Id: I5c4b3b4455ed6f0d8878cf1be189bea3ee63f626
2022-08-05Update following 2.39 releaselinaro-local/ci/tcwg_kernel/llvm-master-aarch64-stable-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-stable-allmodconfigNick Clifton
2022-08-05asan: ppc64_elf_get_synthetic_symtab heap buffer overflowlinaro-local/ci/tcwg_kernel/llvm-master-arm-norov-allnoconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-norov-allnoconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-norov-defconfigAlan Modra
Fuzzed input files with sizes of .dynamic not a multiple of dynamic tag size can result in reading past the end of the buffer with the current simple checks. Fix that, and use the same check in other files that process input object .dynamic section. (There is no need for buffer overflow checks in the linker's generated .dynamic section.) * elf32-ppc.c (ppc_elf_get_synthetic_symtab): Sanity check .dynamic content buffer reads. * elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Likewise. * elf64-ia64-vms.c (elf64_vms_link_add_object_symbols): Likewise. * elf.c (_bfd_elf_print_private_bfd_data): Simplify .dynamic buffer sanity checks. * elflink.c (elf_link_add_object_symbols): Avoid possible UB subtracting sizeof_dyn from pointer.
2022-08-05Sanity check loc_offsets indexAlan Modra
Fixes a segfault found by the fuzzers. * dwarf.c (fetch_indexed_value): Return -1 on error. (read_and_display_attr_value): Don't display string when fetch_indexed_value returns an error. Sanity check loc_offsets index.
2022-08-05binutils/Dwarf: avoid "shadowing" of glibc function nameJan Beulich
As before: Old enough glibc has an (unguarded) declaration of index() in string.h, which triggers a "shadows a global declaration" warning.
2022-08-05gas: fix a testcase broken by new ZSTD supportTsukasa OI
The commit 1369522f36eece1b37139a81f7f2139ba3915172 ("Recognize the new ELF compression type for ZSTD.") added the new ELF compression type but it accidentally broke a GAS testcase. Since testing for the section type "2048" (SHF_COMPRESSED) is not going to be portable in the long term, it now tests SHF_LINK_ORDER ("128") instead. Using SHF_LINK_ORDER (with possibly sh_link == 0) is an idea by Jan Beulich. gas/ChangeLog: * testsuite/gas/elf/section10.s: Use SHF_LINK_ORDER to test mixed numeric and alpha values. * testsuite/gas/elf/section10.d: Reflect the change above.
2022-08-05When gas/read.c calls mbstowcs with a NULL destination, it should set size to 0Nick Clifton
PR 29447 * read.c (read_symbol_name): Pass 0 as the length parameter when invoking mbstowc in order to check the validity of a wide string.
2022-08-05[gdb] Add debug_{exp,val}linaro-local/ci/tcwg_kernel/llvm-master-arm-next-allmodconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-lts-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-lts-allyesconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-stable-allnoconfiglinaro-local/ci/tcwg_bmk_llvm_fx/llvm-master-aarch64-spec2k6-O2Tom de Vries
When debugging cc1 I heavily rely on simple one-parameter debug functions that allow me to inspect a variable of a common type, like: - debug_generic_expr - debug_gimple_stmt - debug_rtx and I miss similar functions in gdb. Add functions to dump variables of types 'value' and 'expression': - debug_exp, and - debug_val. Tested on x86_64-linux, by breaking on varobj_create, and doing: ... (gdb) call debug_exp (var->root->exp.get ()) &"Operation: OP_VAR_VALUE\n" &" Block symbol:\n" &" Symbol: aaa\n" &" Block: 0x2d064f0\n" (gdb) ... and: ... (gdb) call debug_val (value) &"5" (gdb) ...
2022-08-04Add gold support for --package-metadata option.Luca Boccassi
Following the same format as the implementation in ld: 9e2bb0cb5e74aed4158f08495534922d7108f928 Generate a .note.package FDO package metadata ELF note, following the spec: https://systemd.io/ELF_PACKAGE_METADATA/ If the jansson library is available at build time (and it is explicitly enabled), link ld to it, and use it to validate that the input is correct JSON, to avoid writing garbage to the file. The configure option --enable-jansson has to be used to explicitly enable it (error out when not found). This allows bootstrappers (or others who are not interested) to seamlessly skip it without issues. elfcpp/ * elfcpp.h: Add FDO_PACKAGING_METADATA note type. gold/ * Makefile.am: Add jansson flags and libraries. * configure.ac: Check for jansson library. * layout.cc (Layout::create_notes): Call create_package_metadata(). (Layout::create_package_metadata): New function. * layout.h (Layout::create_package_metadata): New function. (Layout::package_metadata_note_): New data member. * options.h (class General_options): Add --package-metadata option. * testsuite/Makefile.am (object_unittest): Add jansson libraries. (binary_unittest): Likewise. (leb128_unittest): Likewise. (overflow_unittest): Likewise. (package_metadata_test): New test. * testsuite/package_metadata_main.c: New test source.
2022-08-04Recognize the new ELF compression type for ZSTD.Cary Coutant
There is more work to be done to actually support compression and decompression using the zstd library, but I will leave that to the champions of the new compression option. binutils/ * binutils/readelf.c (process_section_headers): Add support for ELFCOMPRESS_ZSTD.
2022-08-05Automatic date update in version.inGDB Administrator
2022-08-04Use registry in gdbarchTom Tromey
gdbarch implements its own registry-like approach. This patch changes it to instead use registry.h. It's a rather large patch but largely uninteresting -- it's mostly a straightforward conversion from the old approach to the new one. The main benefit of this change is that it introduces type safety to the gdbarch registry. It also removes a bunch of code. One possible drawback is that, previously, the gdbarch registry differentiated between pre- and post-initialization setup. This doesn't seem very important to me, though.
2022-08-04Allow registry to refer to const typesTom Tromey
So far, the registry hasn't been used to refer to a 'const' type, but this changes with the gdbarch change. This patch arranges to let the registry store a pointer-to-const, by removing const in the 'set' method.
2022-08-04Use new and delete for gdbarchTom Tromey
This changes gdbarch to use new and delete.
2022-08-04Use bool in gdbarchTom Tromey
This changes gdbarch to use bool for initialized_p.
2022-08-04[gdb/testsuite] Fix .debug_aranges in gdb.dwarf2/fission-loclists.Slinaro-local/ci/tcwg_bmk_llvm_fx/llvm-master-aarch64-cpu2017-O2Tom de Vries
When running test-case gdb.dwarf2/fission-loclists.exp, I noticed: ... warning: Section .debug_aranges in fission-loclists has duplicate \ debug_info_offset 0x8f, ignoring .debug_aranges.^M ... Fix this by removing the duplicate .debug_aranges entry. Tested on x86_64-linux.
2022-08-04[gdb/testsuite] Fix ERROR in gdb.base/watchpoint-unaligned.expTom de Vries
In PR23888 an error is reported: ... ERROR: tcl error sourcing watchpoint-unaligned.exp. ERROR: expected boolean value but got "" while executing "if {$wpnum} { ... This presumably happens when: - skip_hw_watchpoint_tests returns 0 meaning hw watchpoints are supported - gdb fails to set a hw watchpoint and instead sets a sw watchpoint That particular situation is handled for arm: ... -re "Watchpoint (\[0-9\]+): .*\r\n$gdb_prompt $" { if {[istarget "arm*-*-*"]} { untested $test set wpnum 0 } } ... but not for any other targets so wpnum remains "", triggering the ERROR. Possibly this has been fixed for powerpc by commit 8d4e4d13afb ("gdb Power 9 add test for HW watchpoint support."), but it's still possible for other targets. Fix this by: - initializing wpnum to 0 instead of "" - signalling the failure to set a hw watchpoint by a fail Tested on x86_64-linux, also by adding: ... gdb_test_no_output "set can-use-hw-watchpoints 0" ... and verifying that it triggers the fail. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23888
2022-08-04[gdb/tdep] Fix gdb.base/large-frame.exp for aarch64Tom de Vries
On aarch64, I run into: ... FAIL: gdb.base/large-frame.exp: optimize=-O0: backtrace ... The problem is that the architecture-specific prologue analyzer fails to handle the first two insns in the prologue properly: ... 0000000000400610 <func>: 400610: d2880210 mov x16, #0x4010 400614: cb3063ff sub sp, sp, x16 400618: a9007bfd stp x29, x30, [sp] 40061c: 910003fd mov x29, sp 400620: 910043a0 add x0, x29, #0x10 400624: 97fffff0 bl 4005e4 <blah> ... so we get: ... $ gdb -q -batch ./outputs/gdb.base/large-frame/large-frame-O0 -ex "b func" Breakpoint 1 at 0x400614 ... Fix this by: - fixing the support for the first insn to extract the immediate operand, and - adding support for the second insn, such that we have: ... Breakpoint 1 at 0x400624 ... Note that we're overshooting by one insn (0x400620 is the first insn after the prologue), but that's a pre-existing problem. Tested on aarch64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29408
2022-08-04Don't use BFD_VMA_FMT in binutilsAlan Modra
BFD_VMA_FMT can't be used in format strings that need to be translated, because the translation won't work when the type of bfd_vma differs from the machine used to compile .pot files. We've known about this for a long time, but patches slip through review. So just get rid of BFD_VMA_FMT, instead using the appropriate PRId64, PRIu64, PRIx64 or PRIo64 and SCN variants for scanf. The patch is mostly mechanical, the only thing requiring any thought is casts needed to preserve PRId64 output from bfd_vma values, or to preserve one of the unsigned output formats from bfd_signed_vma values.
2022-08-04Re: Get rid of fprintf_vma and sprintf_vmaAlan Modra
Commit f493c2174e messed the formatting in linker map files, particularly for 32-bit builds where a number of tests using map files regressed. I should have noticed the BFD64 conditional printing of spaces to line up output due to the original %V printing hex vmas with 16 digits when BFD64 and 8 digits when not. Besides that, it is nicer to print 32-bit vmas for 32-bit targets. So change %V back to be target dependent, now using bfd_sprintf_vma. Since minfo doesn't return the number of chars printed, that means some places that currently use %V must instead sprintf to a buffer in order to find the length printed. * ldmisc.h (print_spaces): Declare. (print_space): Change to a macro. * ldmisc.c (vfinfo): Use bfd_sprintf_vma for %V. Tidy %W case. (print_space): Delete. (print_spaces): New function. * emultempl/aix.em (print_symbol): Use print_spaces. * ldctor.c (ldctor_build_sets): Likewise. * ldmain.c (add_archive_element): Likewise. * ldlang.c (print_one_symbol, lang_print_asneeded): Likewise. (print_output_section_statement, print_data_statement): Likewise. (print_reloc_statement, print_padding_statement): Likewise. (print_assignment): Likewise. Also replace %V printing of vmas with printing to a buffer in order to properly format output. (print_input_section, lang_one_common): Likewise.
2022-08-04MIPS: Use R_MIPS_REL16 for BFD_RELOC_16Alan Modra
R_MIPS_REL16 isn't a pc-relative reloc as the name might indicate. * elf64-mips.c (mips_reloc_map): Map BFD_RELOC_16 to R_MIPS_REL16. * elfn32-mips.c (mips_reloc_map): Likewise.
2022-08-04Automatic date update in version.inGDB Administrator
2022-08-03elf: Reset alignment for each PT_LOAD segmentH.J. Lu
Reset alignment for each PT_LOAD segment to avoid using alignment from the previous PT_LOAD segment. bfd/ PR ld/29435 * elf.c (assign_file_positions_for_load_sections): Reset alignment for each PT_LOAD segment. ld/ PR ld/29435 * testsuite/ld-elf/pr29435.d: New file. * testsuite/ld-elf/pr29435.s: Likewise.
2022-08-03Use unique_ptr to destroy per-bfd objectTom Tromey
In some cases, the objfile owns the per-bfd object. This is yet another object that can sometimes be destroyed before the registry is destroyed, possibly reslting in a use-after-free. Also, I noticed that the condition for deleting the object is not the same as the condition used to create it -- so it could possibly result in a memory leak in some situations. This patch fixes the problem by introducing a new unique_ptr that holds this object when necessary.
2022-08-03Use auto_obstack in objfileTom Tromey
This changes objfile to use an auto_obstack. This helps prevent use-after-free bugs, because it ensures that anything allocated on the objfile obstack will live past the point at which the registry object is destroyed.
2022-08-03Use gdb_bfd_ref_ptr in objfileTom Tromey
This changes struct objfile to use a gdb_bfd_ref_ptr. In addition to removing some manual memory management, this fixes a use-after-free that was introduced by the registry rewrite series. The issue there was that, in some cases, registry shutdown could refer to memory that had already been freed. This help fix the bug by delaying the destruction of the BFD reference (and thus the per-bfd object) until after the registry has been shut down.
2022-08-03gprofng: fix bug 29410 - Argument "&nbsp;0." isn't numeric in numeric gt (>)Ruud van der Pas
gprofng/Changelog: 2022-08-02 Ruud van der Pas <ruud.vanderpas@oracle.com> PR gprofng/29410 * gp-display-html/gp-display-html.in: Remove non-breaking spaces.
2022-08-03Fix a conflict between the linker's need to rename some PE format input ↵Alan Modra
libraries and the BFD library's file caching mechanism. PR 29389 bfd * bfd.c (BFD_CLOSED_BY_CACHE): New bfd flag. * cache.c (bfd_cache_delete): Set BFD_CLOSED_BY_DELETE on the closed bfd. (bfd_cache_lookup_worker): Clear BFD_CLOSED_BY_DELETE on the newly reopened bfd. * opncls.c (bfd_set_filename): Refuse to change the name of a bfd that has been closed by bfd_cache_delete. Mark changed bfds as uncacheable. * bfd-in2.h: Regenerate. ld * ldlang.h (lang_input_statement_struct): Add sort_key field. * emultempl/pe.em (after_open): If multiple import libraries refer to the same bfd, store their names in the sort_key field. * emultempl/pep.em (after_open): Likewise. * ldlang.c (sort_filename): New function. Returns the filename to be used when sorting input files. (wild_sort): Use the sort_filename function.
2022-08-03gdb/amd64: clean up unused variableEnze Li
When building with clang 15, I got this, CXX amd64-tdep.o amd64-tdep.c:1410:13: error: variable 'insn' set but not used[-Werror,-Wunused-but-set-variable] gdb_byte *insn = insn_details->raw_insn + modrm_offset; ^ 1 error generated. The function that uses this variable has been removed in this commit, commit 870f88f7551b0f2d6aaaa36fb684b5ff8f468107 Date: Mon Apr 18 13:16:27 2016 -0400 remove trivialy unused variables Fix this by removing unused variable. Tested by rebuilding on x86_64-linux with clang 15 and gcc 12.
2022-08-03gdb: Fix regression in varobj recreationLancelot SIX
Commit bc20e562ec0 "Fix use after free in varobj" introduced a regression. This commit makes sure that the varobj object does not keeps stale references to object being freed when we unload an objfile. This includes the "valid_block" field which is reset to nullptr if the pointed to block is tied to an objfile being freed. However, at some point varobj_invalidate_iter might try to recreate varobjs tracking either floating or globals. Varobj tracking globals are identified as having the "valid_block" field set nullptr, but as bc20e562ec0 might clear this field, we have lost the ability to distinguish between varobj referring to globals and non globals. Fix this by introducing a "global" flag which tracks if a given varobj was initially created as tracking a global. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29426
2022-08-03Re: PE objdump -xAlan Modra
All of these buffer overrun tests are better written as a comparison against size remaining, due to ISO C 9899 standard 6.5.2 para 8 regarding adding a constant to a pointer: "If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined." So "ex_dta + 4" might be undefined behaviour, if you interpret "the array object" in this case to be the malloc'd section contents! * pei-x86_64.c (pex64_get_unwind_info): Tidy sanity checks. (pex64_xdata_print_uwd_codes): Likewise.
2022-08-03x86: improve/shorten vector zeroing-idiom optimization conditionalJan Beulich
- Drop the rounding type check: We're past template matching, and none of the involved insns support embedded rounding. - Drop the extension opcode check: None of the involved opcodes have variants with it being other than None. - Instead check opcode space, even if just to be on the safe side going forward. - Reduce the number of comparisons by folding two groups.
2022-08-03x86: properly mark i386-only insnsJan Beulich
Just like all Size64 insns are marked Cpu64, all Size32 insns ought to be marked Cpu386.
2022-08-03x86: also use D for MOVBEJan Beulich
First of all rename the meanwhile misleading Opcode_SIMD_FloatD, as it has also been used for KMOV* and BNDMOV. Then simplify the condition selecting which form if "reversing" to use - except for the MOV to/from control/debug/test registers all extended opcode space insns use bit 0 (rather than bit 1) to indicate the direction (from/to memory) of an operation. With that, D can simply be set on the first of the two templates, while the other can be dropped.
2022-08-03Automatic date update in version.inGDB Administrator
2022-08-02Add ELFCOMPRESS_ZSTD.Cary Coutant
include/elf/ * common.h: Add ELFCOMPRESS_ZSTD.
2022-08-02fbsd-nat: Correct the return type of the have_regset method.John Baldwin
During the development of 40c23d880386d6e8202567eaa2a6b041feb1a652, the return value of fbsd_nat_target::have_regset was changed from a simple boolean to returning the size of the register set. The comments and callers were all updated for this change, but the actual return type was accidentally left as a bool. This change fixes the return type to be a size_t. Current callers of this only checked the value against 0 and thus still worked correctly.