On Wed, Aug 4, 2021 at 8:01 PM David Faust via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Document the new command line options (-mcore and -mno-core), the new > BPF target builtin (__builtin_preserve_access_index), and the new BPF > target attribute (preserve_access_index) introduced with BPF CO-RE.
OK. > gcc/ChangeLog: > > * doc/extend.texi (BPF Type Attributes) New node. > Document new preserve_access_index attribute. > Document new preserve_access_index builtin. > --- > gcc/doc/extend.texi | 16 ++++++++++++++++ > gcc/doc/invoke.texi | 13 ++++++++++++- > 2 files changed, 28 insertions(+), 1 deletion(-) > > diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi > index b83cd4919bb..bb5fc921907 100644 > --- a/gcc/doc/extend.texi > +++ b/gcc/doc/extend.texi > @@ -8194,6 +8194,7 @@ attributes. > * Common Type Attributes:: > * ARC Type Attributes:: > * ARM Type Attributes:: > +* BPF Type Attributes:: > * MeP Type Attributes:: > * PowerPC Type Attributes:: > * x86 Type Attributes:: > @@ -8757,6 +8758,17 @@ virtual table for @code{C} is not exported. (You can > use > @code{__attribute__} instead of @code{__declspec} if you prefer, but > most Symbian OS code uses @code{__declspec}.) > > +@node BPF Type Attributes > +@subsection BPF Type Attributes > + > +@cindex @code{preserve_access_index} type attribute, BPF > +BPF Compile Once - Run Everywhere (CO-RE) support. When attached to a > +@code{struct} or @code{union} type definition, indicates that CO-RE > +relocation information should be generated for any access to a variable > +of that type. The behavior is equivalent to the programmer manually > +wrapping every such access with @code{__builtin_preserve_access_index}. > + > + > @node MeP Type Attributes > @subsection MeP Type Attributes > > @@ -15388,6 +15400,10 @@ Load 16-bits from the @code{struct sk_buff} packet > data pointed by the register > Load 32-bits from the @code{struct sk_buff} packet data pointed by the > register @code{%r6} and return it. > @end deftypefn > > +@deftypefn {Built-in Function} void * __builtin_preserve_access_index > (@var{expr}) > +BPF Compile Once-Run Everywhere (CO-RE) support. Instruct GCC to generate > CO-RE relocation records for any accesses to aggregate data structures > (struct, union, array types) in @var{expr}. This builtin is otherwise > transparent, the return value is whatever @var{expr} evaluates to. It is also > overloaded: @var{expr} may be of any type (not necessarily a pointer), the > return type is the same. Has no effect if @code{-mcore} is not in effect > (either specified or implied). > +@end deftypefn > + > @node FR-V Built-in Functions > @subsection FR-V Built-in Functions > > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index 32697e6117c..915bbc4ee65 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -903,7 +903,7 @@ Objective-C and Objective-C++ Dialects}. > > @emph{eBPF Options} > @gccoptlist{-mbig-endian -mlittle-endian -mkernel=@var{version} > --mframe-limit=@var{bytes} -mxbpf} > +-mframe-limit=@var{bytes} -mxbpf -mcore -mno-core} > > @emph{FR30 Options} > @gccoptlist{-msmall-model -mno-lsim} > @@ -22520,6 +22520,17 @@ Generate code for a big-endian target. > @opindex mlittle-endian > Generate code for a little-endian target. This is the default. > > +@item -mcore > +@opindex mcore > +Enable BPF Compile Once - Run Everywhere (CO-RE) support. Requires and > +is implied by @option{-gbtf}. > + > +@item -mno-core > +@opindex mno-core > +Disable BPF Compile Once - Run Everywhere (CO-RE) support. BPF CO-RE > +support is enabled by default when generating BTF debug information for > +the BPF target. > + > @item -mxbpf > Generate code for an expanded version of BPF, which relaxes some of > the restrictions imposed by the BPF architecture: > -- > 2.32.0 >