summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
author Spandan Das <spandandas@google.com> 2024-12-10 20:33:15 +0000
committer Spandan Das <spandandas@google.com> 2024-12-10 20:49:57 +0000
commit26d82910150270e29e4032149e87ed6e7662ffbb (patch)
treea62a69f5a47be57f98b83cdb9246834db1c1d44c /kernel
parent95db4499428f421571819699d92581e7422e7659 (diff)
Add a `prebuilt_kernel_modules` prop to skip debug symbol strip
`Strip_debug_symbols` will default to true. If this property is set to false explicitly, the .ko files will be installed without running llvm-strip. The use case for this is (system|vendor|odm)_dlkm filesystems, which package the source *.ko files without stripping debug symbols. This CL also fixes a bug where the output of `addLeadingSlashToPaths` was getting ignored, since it assigned its output to a variable that was scoped locally (via :=) instead of updating the variable in its outer scope (via =) Bug: 383357338 Test: mounted system_dlkm, vendor_dlkm, odm_dlkm image files built by make and soong (top of CL stack). NOTICE is the last diff. Change-Id: Ie5ecef0c3f6d024fe413106e17f22dee3fb18d61
Diffstat (limited to 'kernel')
-rw-r--r--kernel/prebuilt_kernel_modules.go16
1 files changed, 11 insertions, 5 deletions
diff --git a/kernel/prebuilt_kernel_modules.go b/kernel/prebuilt_kernel_modules.go
index 001a1e732..ec7a9714b 100644
--- a/kernel/prebuilt_kernel_modules.go
+++ b/kernel/prebuilt_kernel_modules.go
@@ -67,6 +67,10 @@ type prebuiltKernelModulesProperties struct {
// Whether this module is directly installable to one of the partitions. Default is true
Installable *bool
+
+ // Whether debug symbols should be stripped from the *.ko files.
+ // Defaults to true.
+ Strip_debug_symbols *bool
}
// prebuilt_kernel_modules installs a set of prebuilt kernel module files to the correct directory.
@@ -100,7 +104,9 @@ func (pkm *prebuiltKernelModules) GenerateAndroidBuildActions(ctx android.Module
systemModules := android.PathsForModuleSrc(ctx, pkm.properties.System_deps)
depmodOut := pkm.runDepmod(ctx, modules, systemModules)
- strippedModules := stripDebugSymbols(ctx, modules)
+ if proptools.BoolDefault(pkm.properties.Strip_debug_symbols, true) {
+ modules = stripDebugSymbols(ctx, modules)
+ }
installDir := android.PathForModuleInstall(ctx, "lib", "modules")
// Kernel module is installed to vendor_ramdisk/lib/modules regardless of product
@@ -114,7 +120,7 @@ func (pkm *prebuiltKernelModules) GenerateAndroidBuildActions(ctx android.Module
installDir = installDir.Join(ctx, pkm.KernelVersion())
}
- for _, m := range strippedModules {
+ for _, m := range modules {
ctx.InstallFile(installDir, filepath.Base(m.String()), m)
}
ctx.InstallFile(installDir, "modules.load", depmodOut.modulesLoad)
@@ -165,9 +171,9 @@ var (
}, "stripCmd")
)
-func stripDebugSymbols(ctx android.ModuleContext, modules android.Paths) android.OutputPaths {
+func stripDebugSymbols(ctx android.ModuleContext, modules android.Paths) android.Paths {
dir := android.PathForModuleOut(ctx, "stripped").OutputPath
- var outputs android.OutputPaths
+ var outputs android.Paths
for _, m := range modules {
stripped := dir.Join(ctx, filepath.Base(m.String()))
@@ -305,7 +311,7 @@ func (pkm *prebuiltKernelModules) runDepmod(ctx android.ModuleContext, modules a
finalModulesDep := modulesDep
// Add a leading slash to paths in modules.dep of android dlkm
if ctx.InstallInSystemDlkm() || ctx.InstallInVendorDlkm() || ctx.InstallInOdmDlkm() {
- finalModulesDep := modulesDep.ReplaceExtension(ctx, "intermediates")
+ finalModulesDep = modulesDep.ReplaceExtension(ctx, "intermediates")
ctx.Build(pctx, android.BuildParams{
Rule: addLeadingSlashToPaths,
Input: modulesDep,