LoongArch: Fix disassembly option parsing stopping at the first option

Turns out the return value of parse_loongarch_dis_option acts as an
error code, and previously the function always signified failure with
a non-zero return value, making only the first disassembly option get
to take effect.

Fix by adding the missing `return 0`'s to the two success code paths.

Signed-off-by: WANG Xuerui <git@xen0n.name>
This commit is contained in:
WANG Xuerui
2025-03-24 15:54:25 +08:00
committed by cailulu
parent a393de33f2
commit 6d1823dc89
5 changed files with 39 additions and 1 deletions

View File

@@ -0,0 +1,10 @@
#name: LoongArch disassembler options: multiple
#source: dis-options.s
#objdump: -d --no-show-raw-insn -M no-aliases,numeric
#...
Disassembly of section \.text:
[0-9a-f]+ <\.text>:
[0-9a-f]+:[ ]+or[ ]+\$r4, \$r21, \$r0
[0-9a-f]+:[ ]+jirl[ ]+\$r0, \$r1, 0

View File

@@ -0,0 +1,10 @@
#name: LoongArch disassembler options: no-aliases
#source: dis-options.s
#objdump: -d --no-show-raw-insn -M no-aliases
#...
Disassembly of section \.text:
[0-9a-f]+ <\.text>:
[0-9a-f]+:[ ]+or[ ]+\$a0, \$r21, \$zero
[0-9a-f]+:[ ]+jirl[ ]+\$zero, \$ra, 0

View File

@@ -0,0 +1,10 @@
#name: LoongArch disassembler options: numeric
#source: dis-options.s
#objdump: -d --no-show-raw-insn -M numeric
#...
Disassembly of section \.text:
[0-9a-f]+ <\.text>:
[0-9a-f]+:[ ]+move[ ]+\$r4, \$r21
[0-9a-f]+:[ ]+ret

View File

@@ -0,0 +1,3 @@
.text
move $a0, $r21
ret

View File

@@ -95,13 +95,18 @@ static int
parse_loongarch_dis_option (const char *option)
{
if (strcmp (option, "no-aliases") == 0)
loongarch_dis_show_aliases = false;
{
loongarch_dis_show_aliases = false;
return 0;
}
if (strcmp (option, "numeric") == 0)
{
loongarch_r_disname = loongarch_r_normal_name;
loongarch_f_disname = loongarch_f_normal_name;
return 0;
}
return -1;
}