From f4a0582919c0fead055615e63283b9f2df80bf95 Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Fri, 29 Mar 2024 13:23:12 -0600 Subject: microblaze: binutils: Fix objdump/disassembly Signed-off-by: Mark Hatle --- .../binutils/binutils-microblaze.inc | 2 ++ .../0035-Fix-for-objdump-issue-for-mb32-el.patch | 37 ++++++++++++++++++++++ ...0036-Fix-for-missing-instructions-in-dump.patch | 34 ++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 meta-microblaze/recipes-devtools/binutils/binutils/0035-Fix-for-objdump-issue-for-mb32-el.patch create mode 100644 meta-microblaze/recipes-devtools/binutils/binutils/0036-Fix-for-missing-instructions-in-dump.patch diff --git a/meta-microblaze/recipes-devtools/binutils/binutils-microblaze.inc b/meta-microblaze/recipes-devtools/binutils/binutils-microblaze.inc index 5e85eedc..191d69ef 100644 --- a/meta-microblaze/recipes-devtools/binutils/binutils-microblaze.inc +++ b/meta-microblaze/recipes-devtools/binutils/binutils-microblaze.inc @@ -35,6 +35,8 @@ SRC_URI:append = " \ file://0032-Patch-MicroBlaze-Double-free-with-ld-no-keep-memory.patch \ file://0033-Patch-MB-MB-binutils-Upstream-port-issues.patch \ file://0034-Patch-MicroBlaze-By-default-the-linker-will-generate.patch \ + file://0035-Fix-for-objdump-issue-for-mb32-el.patch \ + file://0036-Fix-for-missing-instructions-in-dump.patch \ " LDGOLD_ALTS:microblaze = "" diff --git a/meta-microblaze/recipes-devtools/binutils/binutils/0035-Fix-for-objdump-issue-for-mb32-el.patch b/meta-microblaze/recipes-devtools/binutils/binutils/0035-Fix-for-objdump-issue-for-mb32-el.patch new file mode 100644 index 00000000..b63d368a --- /dev/null +++ b/meta-microblaze/recipes-devtools/binutils/binutils/0035-Fix-for-objdump-issue-for-mb32-el.patch @@ -0,0 +1,37 @@ +From f070f81107d4b1e497207c1668f079dabb0b4417 Mon Sep 17 00:00:00 2001 +From: Aayush Misra +Date: Mon, 24 Jul 2023 21:49:14 +0530 +Subject: [PATCH 35/36] Fix for objdump issue for mb32-el + +--- + opcodes/microblaze-dis.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/opcodes/microblaze-dis.c b/opcodes/microblaze-dis.c +index b76a5935a34..237a6081377 100644 +--- a/opcodes/microblaze-dis.c ++++ b/opcodes/microblaze-dis.c +@@ -36,7 +36,7 @@ + #define get_int_field_imml(instr) ((instr & IMML_MASK) >> IMM_LOW) + #define get_int_field_r1(instr) ((instr & RA_MASK) >> RA_LOW) + +-#define NUM_STRBUFS 3 ++#define NUM_STRBUFS 4 + #define STRBUF_SIZE 25 + + struct string_buf +@@ -466,8 +466,9 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info) + case INST_TYPE_NONE: + break; + case INST_TYPE_RD_IMML: +- print_func (stream, "\t%s, %s", get_field_rd (&buf, inst), get_field_imm16 (&buf, inst)); +- break; ++ if(info->insn_type != dis_noninsn) ++ print_func (stream, "\t%s, %s", get_field_rd (&buf, inst), get_field_imm16 (&buf, inst)); ++ break; + /* For bit field insns. */ + case INST_TYPE_RD_R1_IMMW_IMMS: + print_func (stream, "\t%s, %s, %s, %s", get_field_rd (&buf, inst),get_field_r1(&buf, inst),get_field_immw (&buf, inst), get_field_imms (&buf, inst)); +-- +2.34.1 + diff --git a/meta-microblaze/recipes-devtools/binutils/binutils/0036-Fix-for-missing-instructions-in-dump.patch b/meta-microblaze/recipes-devtools/binutils/binutils/0036-Fix-for-missing-instructions-in-dump.patch new file mode 100644 index 00000000..e48dfe84 --- /dev/null +++ b/meta-microblaze/recipes-devtools/binutils/binutils/0036-Fix-for-missing-instructions-in-dump.patch @@ -0,0 +1,34 @@ +From 834cc7ca420d3fb783fb813b336e76960eb5b28e Mon Sep 17 00:00:00 2001 +From: Aayush Misra +Date: Thu, 28 Mar 2024 16:33:40 +0530 +Subject: [PATCH 36/36] Fix for missing instructions in dump + +--- + opcodes/microblaze-dis.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/opcodes/microblaze-dis.c b/opcodes/microblaze-dis.c +index 237a6081377..a83e00e282b 100644 +--- a/opcodes/microblaze-dis.c ++++ b/opcodes/microblaze-dis.c +@@ -266,7 +266,7 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info) + + inst = read_insn_microblaze (memaddr, info, &op); + if (inst == 0) +- return -1; ++ return 4; + + if (prev_insn_vma == curr_insn_vma) + { +@@ -274,7 +274,7 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info) + { + prev_inst = read_insn_microblaze (prev_insn_addr, info, &pop); + if (prev_inst == 0) +- return -1; ++ return 4; + if (pop->instr == imm) + { + immval = (get_int_field_imm (prev_inst) << 16) & 0xffff0000; +-- +2.34.1 + -- cgit v1.2.3-54-g00ecf