Merge "Add option to generate BTF debug info for bpf programs"
This commit is contained in:
commit
c7afdefa26
1 changed files with 31 additions and 2 deletions
33
bpf/bpf.go
33
bpf/bpf.go
|
@ -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())
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue