diff options
author | Tom Tromey <tromey@adacore.com> | 2022-08-08 09:56:47 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2022-08-08 10:00:57 -0600 |
commit | ce81f9d6fa885a3faa41613debc8771304dc469b (patch) | |
tree | 64a09a47e85c4d07c7719c29c9cec0f31d6adfc3 | |
parent | e441b55e94c905c6ee4417be3e5d88021d9c5aa6 (diff) |
Fix regression from gdbarch registry changelinaro-local/ci/tcwg_kernel/llvm-master-arm-stable-allmodconfiglinaro-local/ci/tcwg_kernel/llvm-master-arm-norov-defconfiglinaro-local/ci/tcwg_kernel/llvm-master-aarch64-lts-defconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-next-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-mainline-allyesconfiglinaro-local/ci/tcwg_kernel/gnu-master-arm-lts-allmodconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-lts-allnoconfiglinaro-local/ci/tcwg_kernel/gnu-master-aarch64-lts-allmodconfiglinaro-local/ci/tcwg_gnu_native_check_gdb/master-armlinaro-local/ci/tcwg_gnu_native_check_gcc/master-armlinaro-local/ci/tcwg_gnu_native_check_gcc/master-aarch64linaro-local/ci/tcwg_gnu_native_build/master-armlinaro-local/ci/tcwg_gcc_bootstrap/master-arm-bootstrap_profiledlinaro-local/ci/tcwg_gcc_bootstrap/master-aarch64-bootstrap_profiledlinaro-local/ci/tcwg_gcc_bootstrap/master-aarch64-bootstrap_ltolinaro-local/ci/tcwg_gcc_bootstrap/master-aarch64-bootstrap_O3linaro-local/ci/tcwg_bmk_llvm_tx1/llvm-master-aarch64-spec2k6-O3_LTOlinaro-local/ci/tcwg_bmk_llvm_tx1/llvm-master-aarch64-spec2k6-O2linaro-local/ci/tcwg_bmk_llvm_tk1/llvm-master-arm-spec2k6-O3_LTOlinaro-local/ci/tcwg_bmk_llvm_apm/llvm-master-arm-spec2k6-Oslinaro-local/ci/tcwg_bmk_gnu_eabi_stm32/gnu_eabi-master-arm_eabi-coremark-O2_LTO
The gdbarch registry patch introduced a regression that could cause a
crash when opening files in gdb. The bug is that, previously, the
solib ops would default to current_target_so_ops; but the patch
changed this code to default to nullptr. This patch fixes the bug by
reintroducing the earlier behavior. This is PR gdb/29449.
I managed to reproduce the bug with a riscv-elf build and then
verified that this fixes the problem.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29449
-rw-r--r-- | gdb/solib.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/solib.c b/gdb/solib.c index d889673dab..25adf586a0 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -64,7 +64,13 @@ static const registry<gdbarch>::key<const struct target_so_ops, static const struct target_so_ops * solib_ops (struct gdbarch *gdbarch) { - return solib_data.get (gdbarch); + const struct target_so_ops *result = solib_data.get (gdbarch); + if (result == nullptr) + { + result = current_target_so_ops; + set_solib_ops (gdbarch, current_target_so_ops); + } + return result; } /* Set the solib operations for GDBARCH to NEW_OPS. */ |