summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2019-11-01 22:16:59 -0700
committerYonghong Song <yhs@fb.com>2019-11-09 08:17:12 -0800
commit4a5aa1a7bf8b1714b817ede8e09cd28c0784228a (patch)
tree1bc0e5f6d33732583fce0799e0ec36ac96f93621 /lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py
parent27c4eaac8c066eb1f7c5ad26c6fbc3e78eded778 (diff)
downloadbcm5719-llvm-4a5aa1a7bf8b1714b817ede8e09cd28c0784228a.tar.gz
bcm5719-llvm-4a5aa1a7bf8b1714b817ede8e09cd28c0784228a.zip
[BPF] Add preserve_access_index attribute for record definition
This patch introduced a new bpf specific attribute which can be added to struct or union definition. For example, struct s { ... } __attribute__((preserve_access_index)); union u { ... } __attribute__((preserve_access_index)); The goal is to simplify user codes for cases where preserve access index happens for certain struct/union, so user does not need to use clang __builtin_preserve_access_index for every members. The attribute has no effect if -g is not specified. When the attribute is specified and -g is specified, any member access defined by that structure or union, including array subscript access and inner records, will be preserved through __builtin_preserve_{array,struct,union}_access_index() IR intrinsics, which will enable relocation generation in bpf backend. The following is an example to illustrate the usage: -bash-4.4$ cat t.c #define __reloc__ __attribute__((preserve_access_index)) struct s1 { int c; } __reloc__; struct s2 { union { struct s1 b[3]; }; } __reloc__; struct s3 { struct s2 a; } __reloc__; int test(struct s3 *arg) { return arg->a.b[2].c; } -bash-4.4$ clang -target bpf -g -S -O2 t.c A relocation with access string "0:0:0:0:2:0" will be generated representing access offset of arg->a.b[2].c. forward declaration with attribute is also handled properly such that the attribute is copied and populated in real record definition. Differential Revision: https://reviews.llvm.org/D69759
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud