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:
parent
4a50820ee8
commit
4c5f2370fd
@ -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.
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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 */
|
||||
|
@ -1,4 +1,4 @@
|
||||
call -2147483648
|
||||
call -2147483649 ; This overflows.
|
||||
call -2147483649 /* This overflows. */
|
||||
call 4294967295
|
||||
call 4294967296 ; This overflows.
|
||||
call 4294967296 /* This overflows. */
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user