From 588ed66364b8a29111eecfa8d6ee3a366ac5a28b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thi=C3=A9baud=20Weksteen?= Date: Thu, 19 Nov 2020 16:47:41 +0100 Subject: [PATCH] Add comments to {cc,rust}/strip.go Bug: 173695621 Test: n/a Change-Id: If3086aa711507c3be6db23e3691163cdd68710bf --- cc/strip.go | 28 +++++++++++++++++++++++----- rust/strip.go | 5 ++++- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/cc/strip.go b/cc/strip.go index 18150dc8d..24fcc7f54 100644 --- a/cc/strip.go +++ b/cc/strip.go @@ -20,20 +20,32 @@ import ( "android/soong/android" ) +// StripProperties defines the type of stripping applied to the module. type StripProperties struct { Strip struct { - None *bool `android:"arch_variant"` - All *bool `android:"arch_variant"` - Keep_symbols *bool `android:"arch_variant"` - Keep_symbols_list []string `android:"arch_variant"` - Keep_symbols_and_debug_frame *bool `android:"arch_variant"` + // whether to disable all stripping. + None *bool `android:"arch_variant"` + + // whether to strip everything, including the mini debug info. + All *bool `android:"arch_variant"` + + // whether to keep the symbols. + Keep_symbols *bool `android:"arch_variant"` + + // keeps only the symbols defined here. + Keep_symbols_list []string `android:"arch_variant"` + + // whether to keep the symbols and the debug frames. + Keep_symbols_and_debug_frame *bool `android:"arch_variant"` } `android:"arch_variant"` } +// Stripper defines the stripping actions and properties for a module. type Stripper struct { StripProperties StripProperties } +// NeedsStrip determines if stripping is required for a module. func (stripper *Stripper) NeedsStrip(actx android.ModuleContext) bool { // TODO(ccross): enable host stripping when embedded in make? Make never had support for stripping host binaries. return (!actx.Config().EmbeddedInMake() || actx.Device()) && !Bool(stripper.StripProperties.Strip.None) @@ -60,11 +72,17 @@ func (stripper *Stripper) strip(actx android.ModuleContext, in android.Path, out } } +// StripExecutableOrSharedLib strips a binary or shared library from its debug +// symbols and other debugging information. The helper function +// flagsToStripFlags may be used to generate the flags argument. func (stripper *Stripper) StripExecutableOrSharedLib(actx android.ModuleContext, in android.Path, out android.ModuleOutPath, flags StripFlags) { stripper.strip(actx, in, out, flags, false) } +// StripStaticLib strips a static library from its debug symbols and other +// debugging information. The helper function flagsToStripFlags may be used to +// generate the flags argument. func (stripper *Stripper) StripStaticLib(actx android.ModuleContext, in android.Path, out android.ModuleOutPath, flags StripFlags) { stripper.strip(actx, in, out, flags, true) diff --git a/rust/strip.go b/rust/strip.go index d1bbba696..110e3ccdf 100644 --- a/rust/strip.go +++ b/rust/strip.go @@ -19,11 +19,14 @@ import ( "android/soong/cc" ) -// Stripper encapsulates cc.Stripper. +// Stripper defines the stripping actions and properties for a module. The Rust +// implementation reuses the C++ implementation. type Stripper struct { cc.Stripper } +// StripExecutableOrSharedLib strips a binary or shared library from its debug +// symbols and other debug information. func (s *Stripper) StripExecutableOrSharedLib(ctx ModuleContext, in android.Path, out android.ModuleOutPath) { ccFlags := cc.StripFlags{Toolchain: ctx.RustModule().ccToolchain(ctx)} s.Stripper.StripExecutableOrSharedLib(ctx, in, out, ccFlags)