gas: support .half, .word and .dword directives in eBPF
This little patch adds support to the eBPF port of GAS for a few data directives. The names for the directives have been chosen to be coherent with the suffixes used in eBPF instructions: b, h, w and dw for 8, 16, 32 and 64-bit values respectively. Documentation and tests included. Tested in a x86_64 host. gas/ChangeLog: 2019-07-17 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-bpf.c (md_pseudo_table): .half, .word and .dword. * testsuite/gas/bpf/data.s: New file. * testsuite/gas/bpf/data.d: Likewise. * testsuite/gas/bpf/data-be.d: Likewise. * testsuite/gas/bpf/bpf.exp: Run data and data-be. * doc/c-bpf.texi (BPF Directives): New section.
This commit is contained in:
parent
d8f68fcb93
commit
e0b989a6d7
@ -1,3 +1,12 @@
|
||||
2019-07-17 Jose E. Marchesi <jose.marchesi@oracle.com>
|
||||
|
||||
* config/tc-bpf.c (md_pseudo_table): .half, .word and .dword.
|
||||
* testsuite/gas/bpf/data.s: New file.
|
||||
* testsuite/gas/bpf/data.d: Likewise.
|
||||
* testsuite/gas/bpf/data-be.d: Likewise.
|
||||
* testsuite/gas/bpf/bpf.exp: Run data and data-be.
|
||||
* doc/c-bpf.texi (BPF Directives): New section.
|
||||
|
||||
2019-07-17 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-i386.c (check_hle, md_assemble, check_VecOperands,
|
||||
|
@ -38,6 +38,9 @@ const char FLT_CHARS[] = "fFdD";
|
||||
/* The target specific pseudo-ops which we support. */
|
||||
const pseudo_typeS md_pseudo_table[] =
|
||||
{
|
||||
{ "half", cons, 2 },
|
||||
{ "word", cons, 4 },
|
||||
{ "dword", cons, 8 },
|
||||
{ NULL, NULL, 0 }
|
||||
};
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
@menu
|
||||
* BPF Options:: Options
|
||||
* BPF Syntax:: Syntax
|
||||
* BPF Directives:: Machine Directives
|
||||
* BPF Opcodes:: Opcodes
|
||||
@end menu
|
||||
|
||||
@ -104,6 +105,28 @@ descriptor @samp{2} in register @samp{r1} we would do:
|
||||
lddw %r1, %map_fd(2)
|
||||
@end smallexample
|
||||
|
||||
@node BPF Directives
|
||||
@section Machine Directives
|
||||
|
||||
@cindex machine directives, BPF
|
||||
|
||||
The BPF version of @code{@value{AS}} supports the following additional
|
||||
machine directives:
|
||||
|
||||
@table @code
|
||||
@cindex @code{half} directive, BPF
|
||||
@item .word
|
||||
The @code{.half} directive produces a 16 bit value.
|
||||
|
||||
@cindex @code{word} directive, BPF
|
||||
@item .word
|
||||
The @code{.word} directive produces a 32 bit value.
|
||||
|
||||
@cindex @code{dword} directive, BPF
|
||||
@item .dword
|
||||
The @code{.dword} directive produces a 64 bit value.
|
||||
@end table
|
||||
|
||||
@node BPF Opcodes
|
||||
@section Opcodes
|
||||
|
||||
|
@ -26,6 +26,7 @@ if {[istarget bpf*-*-*]} {
|
||||
run_dump_test call
|
||||
run_dump_test exit
|
||||
run_dump_test atomic
|
||||
run_dump_test data
|
||||
|
||||
run_dump_test lddw-be
|
||||
run_dump_test alu-be
|
||||
@ -35,4 +36,5 @@ if {[istarget bpf*-*-*]} {
|
||||
run_dump_test call-be
|
||||
run_dump_test exit-be
|
||||
run_dump_test atomic-be
|
||||
run_dump_test data-be
|
||||
}
|
||||
|
9
gas/testsuite/gas/bpf/data-be.d
Normal file
9
gas/testsuite/gas/bpf/data-be.d
Normal file
@ -0,0 +1,9 @@
|
||||
#as: --EB
|
||||
#source: data.s
|
||||
#objdump: -s -j .data
|
||||
#name: eBPF data directives, big endian
|
||||
|
||||
.*: +file format .*bpf.*
|
||||
|
||||
Contents of section \.data:
|
||||
0000 f00fdead beef1122 33445566 7788 .*
|
8
gas/testsuite/gas/bpf/data.d
Normal file
8
gas/testsuite/gas/bpf/data.d
Normal file
@ -0,0 +1,8 @@
|
||||
#as: --EL
|
||||
#objdump: -s -j .data
|
||||
#name: eBPF data directives
|
||||
|
||||
.*: +file format .*bpf.*
|
||||
|
||||
Contents of section \.data:
|
||||
0000 0ff0efbe adde8877 66554433 2211 .*
|
4
gas/testsuite/gas/bpf/data.s
Normal file
4
gas/testsuite/gas/bpf/data.s
Normal file
@ -0,0 +1,4 @@
|
||||
.section .data
|
||||
.half 0xf00f
|
||||
.word 0xdeadbeef
|
||||
.dword 0x1122334455667788
|
Loading…
x
Reference in New Issue
Block a user