[PATCH, V1 1/2] gas: ginsn: do not emit an unnecessary trailing comma in textual dump
Indu Bhagat
indu.bhagat@oracle.com
Mon Jul 29 19:04:01 GMT 2024
For ginsns with less than 2 source operands or no destination operands,
the current textual dump contains a superfluous comma, like the relevant
testcases show.
Adjust the code a bit to not emit the lone trailing comma. Also, adjust
the aarch64 and x86_64 testcases.
gas/
* ginsn.c (ginsn_src_print): Do not use a trailing comma when
printing the src of ginsn.
(ginsn_print): Check the strlen and prefix a comma before the
src string.
gas/testsuite/
* gas/scfi/aarch64/ginsn-cofi-1.l: Adjust the expected textual
dump of the ginsn.
* gas/scfi/x86_64/ginsn-cofi-1.l: Likewise.
---
gas/ginsn.c | 20 ++++++++++++-------
gas/testsuite/gas/scfi/aarch64/ginsn-cofi-1.l | 2 +-
gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l | 8 ++++----
3 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/gas/ginsn.c b/gas/ginsn.c
index 20e83c5d51e..08c8e5ac3f8 100644
--- a/gas/ginsn.c
+++ b/gas/ginsn.c
@@ -477,14 +477,14 @@ ginsn_src_print (struct ginsn_src *src)
switch (src->type)
{
case GINSN_SRC_REG:
- snprintf (src_str, len, "%%r%d, ", ginsn_get_src_reg (src));
+ snprintf (src_str, len, "%%r%d", ginsn_get_src_reg (src));
break;
case GINSN_SRC_IMM:
- snprintf (src_str, len, "%lld, ",
+ snprintf (src_str, len, "%lld",
(long long int) ginsn_get_src_imm (src));
break;
case GINSN_SRC_INDIRECT:
- snprintf (src_str, len, "[%%r%d+%lld], ", ginsn_get_src_reg (src),
+ snprintf (src_str, len, "[%%r%d+%lld]", ginsn_get_src_reg (src),
(long long int) ginsn_get_src_disp (src));
break;
default:
@@ -578,16 +578,22 @@ ginsn_print (ginsnS *ginsn)
/* src 2. */
src = ginsn_get_src2 (ginsn);
src_buf = ginsn_src_print (src);
- str_size += snprintf (ginsn_str + str_size, GINSN_LISTING_LEN - str_size,
- "%s", src_buf);
+ if (strlen (src_buf))
+ {
+ str_size += snprintf (ginsn_str + str_size, GINSN_LISTING_LEN - str_size,
+ ", %s", src_buf);
+ }
free (src_buf);
gas_assert (str_size >= 0 && str_size < GINSN_LISTING_LEN);
/* dst. */
dst = ginsn_get_dst (ginsn);
char *dst_buf = ginsn_dst_print (dst);
- str_size += snprintf (ginsn_str + str_size, GINSN_LISTING_LEN - str_size,
- "%s", dst_buf);
+ if (strlen (dst_buf))
+ {
+ str_size += snprintf (ginsn_str + str_size, GINSN_LISTING_LEN - str_size,
+ ", %s", dst_buf);
+ }
free (dst_buf);
end:
diff --git a/gas/testsuite/gas/scfi/aarch64/ginsn-cofi-1.l b/gas/testsuite/gas/scfi/aarch64/ginsn-cofi-1.l
index d05e19d059d..168547cf938 100644
--- a/gas/testsuite/gas/scfi/aarch64/ginsn-cofi-1.l
+++ b/gas/testsuite/gas/scfi/aarch64/ginsn-cofi-1.l
@@ -19,7 +19,7 @@ AARCH64 GAS .*
11 \?\?\?\? 02000014 b .L3
11 ginsn: JMP
12 \?\?\?\? 20021FD6 br x17
- 12 ginsn: JMP %r17,
+ 12 ginsn: JMP %r17
13 .L3:
13 ginsn: SYM .L3
14 \?\?\?\? 60003FD6 blr x3
diff --git a/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l b/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l
index f6632445c5d..6ed0b21f82c 100644
--- a/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l
+++ b/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l
@@ -18,7 +18,7 @@ GAS LISTING .*
11 \?\?\?\? E200 loop foo
11 ginsn: JCC
12 \?\?\?\? 3EFFE0 notrack jmp \*%rax
- 12 ginsn: JMP %r0,
+ 12 ginsn: JMP %r0
13 \?\?\?\? 41FFD0 call \*%r8
13 ginsn: CALL
14 \?\?\?\? FF14C500 call \*cost_arr\(,%rax,8\)
@@ -30,13 +30,13 @@ GAS LISTING .*
16 \?\?\?\? 67E313 jecxz .L179
16 ginsn: JCC
17 \?\?\?\? FF6730 jmp \*48\(%rdi\)
- 17 ginsn: JMP %r5,
+ 17 ginsn: JMP %r5
18 \?\?\?\? FF24C500 jmp \*cost_arr\(,%rax,8\)
18 000000
- 18 ginsn: JMP %r0,
+ 18 ginsn: JMP %r0
19 \?\?\?\? FF242500 jmp \*symbol\+1
19 000000
- 19 ginsn: JMP %r4,
+ 19 ginsn: JMP %r4
20 \?\?\?\? 7000 jo .L179
20 ginsn: JCC
21 .L179:
--
2.43.0
More information about the Binutils
mailing list