gas: change meaning of ; in the BPF assembler

The BPF assembler in clang uses semi-colon (;) to separate statements,
not to be begin line comments.  This patch adapts the GNU assembler
accordingly.

Testsuite and documentation updated accordingly.

2023-11-28  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* config/tc-bpf.c: Semicolon does not start a comment, but
	separates multiple commands on a single line.
	* testsuite/gas/bpf/alu-pseudoc.s: Adapt test accordingly.
	* testsuite/gas/bpf/spacing-pseudoc.s: Likewise.
	* testsuite/gas/bpf/offset16-overflow.s: Likewise.
	* testsuite/gas/bpf/jump-relax-jump.s: Likewise.
	* testsuite/gas/bpf/jump-relax-ja.s: Likewise.
	* testsuite/gas/bpf/imm32-overflow.s: Likewise.
	* testsuite/gas/bpf/disp32-overflow.s: Likewise.
	* testsuite/gas/bpf/disp16-overflow-relax.s: Likewise.
	* testsuite/gas/bpf/disp16-overflow.s: Likewise.
	* doc/c-bpf.texi (BPF Special Characters): Update.
This commit is contained in:
Jose E. Marchesi 2023-11-28 11:58:58 +01:00
parent 4a50820ee8
commit 4c5f2370fd
12 changed files with 57 additions and 35 deletions

View File

@ -1,3 +1,18 @@
2023-11-28 Jose E. Marchesi <jose.marchesi@oracle.com>
* config/tc-bpf.c: Semicolon does not start a comment, but
separates multiple commands on a single line.
* testsuite/gas/bpf/alu-pseudoc.s: Adapt test accordingly.
* testsuite/gas/bpf/spacing-pseudoc.s: Likewise.
* testsuite/gas/bpf/offset16-overflow.s: Likewise.
* testsuite/gas/bpf/jump-relax-jump.s: Likewise.
* testsuite/gas/bpf/jump-relax-ja.s: Likewise.
* testsuite/gas/bpf/imm32-overflow.s: Likewise.
* testsuite/gas/bpf/disp32-overflow.s: Likewise.
* testsuite/gas/bpf/disp16-overflow-relax.s: Likewise.
* testsuite/gas/bpf/disp16-overflow.s: Likewise.
* doc/c-bpf.texi (BPF Special Characters): Update.
2023-11-23 YunQiang Su <yunqiang.su@cipunited.com>
* testsuite/gas/mips/elf-rel.s: Use addiu in place of addi.

View File

@ -56,9 +56,9 @@ struct bpf_insn
expressionS *relaxed_exp;
};
const char comment_chars[] = ";#";
const char comment_chars[] = "#";
const char line_comment_chars[] = "#";
const char line_separator_chars[] = "`";
const char line_separator_chars[] = ";`";
const char EXP_CHARS[] = "eE";
const char FLT_CHARS[] = "fFdD";

View File

@ -68,11 +68,18 @@ the host endianness is used.
@cindex line comment character, BPF
@cindex BPF line comment character
The presence of a @samp{;} or a @samp{#} on a line indicates the start
of a comment that extends to the end of the current line.
The presence of a @samp{#} on a line indicates the start of a comment
that extends to the end of the current line.
@cindex block comments, BPF
@cindex BPF block comments
The presence of the @samp{/*} sequence indicates the beginning of a
block (multi-line) comment, whose contents span until the next
@samp{*/} sequence. It is not possible to nest block comments.
@cindex statement separator, BPF
Statements and assembly directives are separated by newlines.
Statements and assembly directives are separated by newlines and
@samp{;} characters.
@node BPF Registers
@section BPF Registers

View File

@ -61,5 +61,5 @@
r1 = bswap16 r1
r2 = bswap32 r2
r3 = bswap64 r3
;; The following is to be interpreted as a mov, not lddw.
/* The following is to be interpreted as a mov, not lddw. */
r2 = 666ll

View File

@ -1,4 +1,4 @@
jeq %r1,%r2,2147483647 ; Overflows.
jlt %r3,%r4,2147483648 ; Overflows.
jge %r5,10,-2147483648 ; Overflows.
ja -2147483649 ; Overflows.
jeq %r1,%r2,2147483647 /* Overflows. */
jlt %r3,%r4,2147483648 /* Overflows. */
jge %r5,10,-2147483648 /* Overflows. */
ja -2147483649 /* Overflows. */

View File

@ -1,4 +1,4 @@
ja 32767
jeq %r1,%r2,65536 ; Overflows
jeq %r1,%r2,65536 /* Overflows */
jlt %r3,%r4,-32768
jge %r5,10,-32769 ; Overflows
jge %r5,10,-32769 /* Overflows */

View File

@ -1,4 +1,4 @@
call -2147483648
call -2147483649 ; This overflows.
call -2147483649 /* This overflows. */
call 4294967295
call 4294967296 ; This overflows.
call 4294967296 /* This overflows. */

View File

@ -1,4 +1,4 @@
add %r1, 2147483647
or %r2, 4294967296 ; This overflows.
or %r2, 4294967296 /* This overflows. */
xor %r3, 4294967295
sub %r4, 4294967296 ; This overflows.
sub %r4, 4294967296 /* This overflows. */

View File

@ -1,16 +1,16 @@
;; The following two instructions have constant targets that
;; fix in the JA 16-bit signed displacement operand. These
;; are not relaxed.
/* The following two instructions have constant targets that
fix in the JA 16-bit signed displacement operand. These
are not relaxed. */
1: ja -32768
ja 32767
;; The following instruction refers to a defined symbol that
;; is on reach, so it should not be relaxed.
/* The following instruction refers to a defined symbol that
is on reach, so it should not be relaxed. */
ja 1b
;; The following instruction has an undefined symbol as a
;; target. It is not to be relaxed.
/* The following instruction has an undefined symbol as a
target. It is not to be relaxed. */
ja undefined + 10
;; The following instructions refer to a defined symbol that
;; is not on reach. They shall be relaxed to a JAL.
/* The following instructions refer to a defined symbol that
is not on reach. They shall be relaxed to a JAL. */
ja tail
tail = .text + 262160
ja tail

View File

@ -1,12 +1,12 @@
;; The following two instructions have constant targets that
;; fix in the jump 16-bit signed displacement operand.
/* The following two instructions have constant targets that
fix in the jump 16-bit signed displacement operand. */
1: jeq %r1, %r2, -32768
jlt %r1, %r2, 32767
;; The following instruction refers to a defined symbol that
;; is on reach, so it should not be relaxed.
/* The following instruction refers to a defined symbol that
is on reach, so it should not be relaxed. */
jle %r1, %r2, 1b
;; The following instructions refer to a defined symbol that
;; is not on reach. They shall be relaxed.
/* The following instructions refer to a defined symbol that
is not on reach. They shall be relaxed. */
jeq %r1, %r2, tail
tail = .text + 262160
jgt %r1, %r2, tail

View File

@ -1,4 +1,4 @@
ldxh %r2, [%r1 + 65535]
ldxw %r2, [%r1 + 65536] ; This overflows
ldxw %r2, [%r1 + 65536] /* This overflows. */
stxw [%r2 - 32768], %r1
stxdw [%r2 - 32769], %r1 ; This overflows
stxdw [%r2 - 32769], %r1 /* This overflows. */

View File

@ -1,5 +1,5 @@
;; This test checks that flexible spacing is supported in the
;; pseudoc syntax.
/* This test checks that flexible spacing is supported in the
pseudoc syntax. */
r4 = 0xdeadbeefll
r4 = 0xdeadbeef ll
goto +1