aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose E. Marchesi <jose.marchesi@oracle.com>2023-11-30 08:34:09 +0100
committerJose E. Marchesi <jose.marchesi@oracle.com>2023-11-30 08:48:56 +0100
commitdd2947e76aa285a12aa26de63a59f5fb8092ef82 (patch)
tree0396fb73027f495f8637b873f75530d3577f25f4
parent0e78c95c497487aee110dbfc7ca2417b6b2e522d (diff)
downloadbinutils-dd2947e76aa285a12aa26de63a59f5fb8092ef82.zip
binutils-dd2947e76aa285a12aa26de63a59f5fb8092ef82.tar.gz
binutils-dd2947e76aa285a12aa26de63a59f5fb8092ef82.tar.bz2
gas: support double-slash line comments in BPF assembly
This patch makes the BPF assembler to support double-slash line comments, like the llvm BPF assembler does. At this point both assemblers support the same commenting styles: - Line comments preceded by # or //. - Non-nestable block comments delimited by /* and */. This patch also adds a couple of tests to make sure all the comment styles work in both normal and pseudoc syntax. The manual is also updated to mention double-slash line comments.
-rw-r--r--gas/ChangeLog11
-rw-r--r--gas/NEWS3
-rw-r--r--gas/config/tc-bpf.h3
-rw-r--r--gas/doc/c-bpf.texi4
-rw-r--r--gas/testsuite/gas/bpf/bpf.exp4
-rw-r--r--gas/testsuite/gas/bpf/comments-pseudoc.d12
-rw-r--r--gas/testsuite/gas/bpf/comments-pseudoc.s5
-rw-r--r--gas/testsuite/gas/bpf/comments.d12
-rw-r--r--gas/testsuite/gas/bpf/comments.s5
9 files changed, 57 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3d5cfca..b1a568c 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,14 @@
+2023-11-30 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * config/tc-bpf.h (DOUBLESLASH_LINE_COMMENTS): Define.
+ * testsuite/gas/bpf/comments.s: New file.
+ * testsuite/gas/bpf/comments.d: Likewise.
+ * testsuite/gas/bpf/comments-pseudoc.d: Likewise.
+ * testsuite/gas/bpf/comments-pseudoc.s: Likewise.
+ * testsuite/gas/bpf/bpf.exp: Run comments and comments-pseudoc.
+ * doc/c-bpf.texi (BPF Special Characters): Document // comments.
+ * NEWS: Update.
+
2023-11-28 Jose E. Marchesi <jose.marchesi@oracle.com>
* NEWS: Add entry about change of comment syntax in the BPF
diff --git a/gas/NEWS b/gas/NEWS
index 6bfab08..143d9c8 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -41,6 +41,9 @@
therefore they cannot longer be used to begin line comments. This matches the
behavior of the clang/LLVM BPF assembler.
+* The BPF assembler now allows using both hash (#) and double slash (//) to
+ begin line comments.
+
Changes in 2.41:
* Add support for the KVX instruction set.
diff --git a/gas/config/tc-bpf.h b/gas/config/tc-bpf.h
index 06096ef..91f3c15 100644
--- a/gas/config/tc-bpf.h
+++ b/gas/config/tc-bpf.h
@@ -35,6 +35,9 @@
#define TARGET_BYTES_BIG_ENDIAN 0
#endif
+/* Permit // comments. */
+#define DOUBLESLASH_LINE_COMMENTS 1
+
/* .-foo gets turned into PC relative relocs. */
#define DIFF_EXPR_OK 1
diff --git a/gas/doc/c-bpf.texi b/gas/doc/c-bpf.texi
index 7ff07e9..307d28b 100644
--- a/gas/doc/c-bpf.texi
+++ b/gas/doc/c-bpf.texi
@@ -68,8 +68,8 @@ the host endianness is used.
@cindex line comment character, BPF
@cindex BPF line comment character
-The presence of 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{#} or @samp{//} anywhere on a line indicates
+the start of a comment that extends to the end of the line.
@cindex block comments, BPF
@cindex BPF block comments
diff --git a/gas/testsuite/gas/bpf/bpf.exp b/gas/testsuite/gas/bpf/bpf.exp
index 5bcd8c4..5048693 100644
--- a/gas/testsuite/gas/bpf/bpf.exp
+++ b/gas/testsuite/gas/bpf/bpf.exp
@@ -18,6 +18,10 @@
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
if {[istarget bpf*-*-*]} {
+ # Misc tests.
+ run_dump_test comments
+ run_dump_test comments-pseudoc
+
# Little-endian BPF tests
run_dump_test call
run_dump_test exit
diff --git a/gas/testsuite/gas/bpf/comments-pseudoc.d b/gas/testsuite/gas/bpf/comments-pseudoc.d
new file mode 100644
index 0000000..6fc68e0
--- /dev/null
+++ b/gas/testsuite/gas/bpf/comments-pseudoc.d
@@ -0,0 +1,12 @@
+#as: -EL -mdialect=pseudoc
+#objdump: -dr -M hex
+#name: BPF assembler comments - pseudoc
+
+.*: +file format .*bpf.*
+
+Disassembly of section .text:
+
+[0-9a-f]+ <.*>:
+ 0: 07 02 00 00 9a 02 00 00 add %r2,0x29a
+ 8: 07 03 00 00 66 fd ff ff add %r3,0xfffffd66
+ 10: 07 04 00 00 ef be ad 7e add %r4,0x7eadbeef
diff --git a/gas/testsuite/gas/bpf/comments-pseudoc.s b/gas/testsuite/gas/bpf/comments-pseudoc.s
new file mode 100644
index 0000000..e64c46c
--- /dev/null
+++ b/gas/testsuite/gas/bpf/comments-pseudoc.s
@@ -0,0 +1,5 @@
+# This is a comment
+ r2 += 666 # This is also a comment
+ r3 += -666 /* So is
+this */
+ r4 += 0x7eadbeef // And this
diff --git a/gas/testsuite/gas/bpf/comments.d b/gas/testsuite/gas/bpf/comments.d
new file mode 100644
index 0000000..49711a3
--- /dev/null
+++ b/gas/testsuite/gas/bpf/comments.d
@@ -0,0 +1,12 @@
+#as: -EL -mdialect=normal
+#objdump: -dr -M hex
+#name: BPF assembler comments
+
+.*: +file format .*bpf.*
+
+Disassembly of section .text:
+
+[0-9a-f]+ <.*>:
+ 0: 07 02 00 00 9a 02 00 00 add %r2,0x29a
+ 8: 07 03 00 00 66 fd ff ff add %r3,0xfffffd66
+ 10: 07 04 00 00 ef be ad 7e add %r4,0x7eadbeef
diff --git a/gas/testsuite/gas/bpf/comments.s b/gas/testsuite/gas/bpf/comments.s
new file mode 100644
index 0000000..d06fb4f
--- /dev/null
+++ b/gas/testsuite/gas/bpf/comments.s
@@ -0,0 +1,5 @@
+# This is a comment
+ add %r2, 666 # This is also a comment
+ add %r3, -666 /* So is
+this */
+ add %r4, 0x7eadbeef // And this