mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
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:
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
.text
|
||||||
|
move $a0, $r21
|
||||||
|
ret
|
||||||
@@ -95,13 +95,18 @@ static int
|
|||||||
parse_loongarch_dis_option (const char *option)
|
parse_loongarch_dis_option (const char *option)
|
||||||
{
|
{
|
||||||
if (strcmp (option, "no-aliases") == 0)
|
if (strcmp (option, "no-aliases") == 0)
|
||||||
loongarch_dis_show_aliases = false;
|
{
|
||||||
|
loongarch_dis_show_aliases = false;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp (option, "numeric") == 0)
|
if (strcmp (option, "numeric") == 0)
|
||||||
{
|
{
|
||||||
loongarch_r_disname = loongarch_r_normal_name;
|
loongarch_r_disname = loongarch_r_normal_name;
|
||||||
loongarch_f_disname = loongarch_f_normal_name;
|
loongarch_f_disname = loongarch_f_normal_name;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user