diff options
| author | 2022-01-28 01:51:05 +0000 | |
|---|---|---|
| committer | 2022-01-28 01:51:05 +0000 | |
| commit | c7afdefa26ccfd7000d96901d6906c5e01cf3a89 (patch) | |
| tree | 691ad9a5deb5b6b0bae580c06438e1355eddfcaf | |
| parent | 7892c6d76de33b606f66dc39d88a7c606d648dc2 (diff) | |
| parent | 2573965c5ec944d64777fec4b2a00b103fab400d (diff) | |
Merge "Add option to generate BTF debug info for bpf programs"
| -rw-r--r-- | bpf/bpf.go | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/bpf/bpf.go b/bpf/bpf.go index 187b4db61..a4999e5e4 100644 --- a/bpf/bpf.go +++ b/bpf/bpf.go @@ -23,6 +23,7 @@ import ( _ "android/soong/cc/config" "github.com/google/blueprint" + "github.com/google/blueprint/proptools" ) func init() { @@ -41,6 +42,14 @@ var ( CommandDeps: []string{"$ccCmd"}, }, "ccCmd", "cFlags") + + stripRule = pctx.AndroidStaticRule("stripRule", + blueprint.RuleParams{ + Command: `$stripCmd --strip-unneeded --remove-section=.rel.BTF ` + + `--remove-section=.rel.BTF.ext --remove-section=.BTF.ext $in -o $out`, + CommandDeps: []string{"$stripCmd"}, + }, + "stripCmd") ) func registerBpfBuildComponents(ctx android.RegistrationContext) { @@ -64,6 +73,8 @@ type BpfProperties struct { Cflags []string Include_dirs []string Sub_dir string + // If set to true, generate BTF debug info for maps & programs + Btf *bool } type bpf struct { @@ -99,10 +110,14 @@ func (bpf *bpf) GenerateAndroidBuildActions(ctx android.ModuleContext) { cflags = append(cflags, bpf.properties.Cflags...) + if proptools.Bool(bpf.properties.Btf) { + cflags = append(cflags, "-g") + } + srcs := android.PathsForModuleSrc(ctx, bpf.properties.Srcs) for _, src := range srcs { - obj := android.ObjPathWithExt(ctx, "", src, "o") + obj := android.ObjPathWithExt(ctx, "unstripped", src, "o") ctx.Build(pctx, android.BuildParams{ Rule: ccRule, @@ -114,7 +129,21 @@ func (bpf *bpf) GenerateAndroidBuildActions(ctx android.ModuleContext) { }, }) - bpf.objs = append(bpf.objs, obj.WithoutRel()) + if proptools.Bool(bpf.properties.Btf) { + objStripped := android.ObjPathWithExt(ctx, "", src, "o") + ctx.Build(pctx, android.BuildParams{ + Rule: stripRule, + Input: obj, + Output: objStripped, + Args: map[string]string{ + "stripCmd": "${config.ClangBin}/llvm-strip", + }, + }) + bpf.objs = append(bpf.objs, objStripped.WithoutRel()) + } else { + bpf.objs = append(bpf.objs, obj.WithoutRel()) + } + } } |