Merge "Add option to generate BTF debug info for bpf programs"

This commit is contained in:
Treehugger Robot 2022-01-28 01:51:05 +00:00 committed by Gerrit Code Review
commit c7afdefa26

View file

@ -23,6 +23,7 @@ import (
_ "android/soong/cc/config" _ "android/soong/cc/config"
"github.com/google/blueprint" "github.com/google/blueprint"
"github.com/google/blueprint/proptools"
) )
func init() { func init() {
@ -41,6 +42,14 @@ var (
CommandDeps: []string{"$ccCmd"}, CommandDeps: []string{"$ccCmd"},
}, },
"ccCmd", "cFlags") "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) { func registerBpfBuildComponents(ctx android.RegistrationContext) {
@ -64,6 +73,8 @@ type BpfProperties struct {
Cflags []string Cflags []string
Include_dirs []string Include_dirs []string
Sub_dir string Sub_dir string
// If set to true, generate BTF debug info for maps & programs
Btf *bool
} }
type bpf struct { type bpf struct {
@ -99,10 +110,14 @@ func (bpf *bpf) GenerateAndroidBuildActions(ctx android.ModuleContext) {
cflags = append(cflags, bpf.properties.Cflags...) cflags = append(cflags, bpf.properties.Cflags...)
if proptools.Bool(bpf.properties.Btf) {
cflags = append(cflags, "-g")
}
srcs := android.PathsForModuleSrc(ctx, bpf.properties.Srcs) srcs := android.PathsForModuleSrc(ctx, bpf.properties.Srcs)
for _, src := range srcs { for _, src := range srcs {
obj := android.ObjPathWithExt(ctx, "", src, "o") obj := android.ObjPathWithExt(ctx, "unstripped", src, "o")
ctx.Build(pctx, android.BuildParams{ ctx.Build(pctx, android.BuildParams{
Rule: ccRule, 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())
}
} }
} }