aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose E. Marchesi <jose.marchesi@oracle.com>2023-07-31 15:44:36 +0200
committerJose E. Marchesi <jose.marchesi@oracle.com>2023-07-31 15:46:43 +0200
commit5b512234c874d5f82734dc6115765bc691c2c982 (patch)
tree82c58f58c4b413eb4b90c745e92942a8f4f14018
parent6a6e82dc75afc3d6d72e925ad562fba8f297251c (diff)
downloadgdb-5b512234c874d5f82734dc6115765bc691c2c982.zip
gdb-5b512234c874d5f82734dc6115765bc691c2c982.tar.gz
gdb-5b512234c874d5f82734dc6115765bc691c2c982.tar.bz2
bpf: opcodes: fix regression in BPF disassembler
This patch fixes a regression recently introduced in the BPF disassembler, that was assuming an abfd was always available in info->section->owner. Apparently this is not so in GDB, and therefore https://sourceware.org/bugzilla/show_bug.cgi?id=30705. Tested in bpf-unkonwn-none. opcodes/ChangeLog: 2023-07-31 Jose E. Marchesi <jose.marchesi@oracle.com> PR 30705 * bpf-dis.c (print_insn_bpf): Check that info->section->owner is actually available before using it.
-rw-r--r--opcodes/ChangeLog6
-rw-r--r--opcodes/bpf-dis.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 9d33da2..99f95c6 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2023-07-31 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ PR 30705
+ * bpf-dis.c (print_insn_bpf): Check that info->section->owner is
+ actually available before using it.
+
2023-07-30 Jose E. Marchesi <jose.marchesi@oracle.com>
* bpf-dis.c: Initialize asm_bpf_version to -1.
diff --git a/opcodes/bpf-dis.c b/opcodes/bpf-dis.c
index a8cb9e8..1b1a532 100644
--- a/opcodes/bpf-dis.c
+++ b/opcodes/bpf-dis.c
@@ -147,7 +147,7 @@ print_insn_bpf (bfd_vma pc, disassemble_info *info)
If the user didn't explicitly specify an ISA version, then derive
it from the CPU Version flag in the ELF header. A CPU version of
0 in the header means "latest version". */
- if (asm_bpf_version == -1)
+ if (asm_bpf_version == -1 && info->section && info->section->owner)
{
struct bfd *abfd = info->section->owner;
Elf_Internal_Ehdr *header = elf_elfheader (abfd);