Add an option to preserve symbols and debug_frame.
New strip option named keep_symbols_and_debug_frame, that will keep the symbols and the .debug_frame. This is meant for use by libc.so only on arm32. Other libraries might want to use it to keep better unwinding information on device. Bug: 132992102 Test: Built libc.so with this option and verified that it contains Test: the .debug_frame section. Change-Id: I823a28199dec8316e8b26fe31ff9f17e6b11d406
This commit is contained in:
@@ -254,11 +254,12 @@ type builderFlags struct {
|
||||
|
||||
groupStaticLibs bool
|
||||
|
||||
stripKeepSymbols bool
|
||||
stripKeepSymbolsList string
|
||||
stripKeepMiniDebugInfo bool
|
||||
stripAddGnuDebuglink bool
|
||||
stripUseGnuStrip bool
|
||||
stripKeepSymbols bool
|
||||
stripKeepSymbolsList string
|
||||
stripKeepSymbolsAndDebugFrame bool
|
||||
stripKeepMiniDebugInfo bool
|
||||
stripAddGnuDebuglink bool
|
||||
stripUseGnuStrip bool
|
||||
|
||||
proto android.ProtoFlags
|
||||
protoC bool
|
||||
@@ -839,6 +840,9 @@ func TransformStrip(ctx android.ModuleContext, inputFile android.Path,
|
||||
if flags.stripKeepSymbolsList != "" {
|
||||
args += " -k" + flags.stripKeepSymbolsList
|
||||
}
|
||||
if flags.stripKeepSymbolsAndDebugFrame {
|
||||
args += " --keep-symbols-and-debug-frame"
|
||||
}
|
||||
if flags.stripUseGnuStrip {
|
||||
args += " --use-gnu-strip"
|
||||
}
|
||||
|
13
cc/strip.go
13
cc/strip.go
@@ -22,11 +22,12 @@ import (
|
||||
|
||||
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"`
|
||||
Use_gnu_strip *bool `android:"arch_variant"`
|
||||
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"`
|
||||
Use_gnu_strip *bool `android:"arch_variant"`
|
||||
} `android:"arch_variant"`
|
||||
}
|
||||
|
||||
@@ -46,6 +47,8 @@ func (stripper *stripper) strip(ctx ModuleContext, in android.Path, out android.
|
||||
} else {
|
||||
if Bool(stripper.StripProperties.Strip.Keep_symbols) {
|
||||
flags.stripKeepSymbols = true
|
||||
} else if Bool(stripper.StripProperties.Strip.Keep_symbols_and_debug_frame) {
|
||||
flags.stripKeepSymbolsAndDebugFrame = true
|
||||
} else if len(stripper.StripProperties.Strip.Keep_symbols_list) > 0 {
|
||||
flags.stripKeepSymbolsList = strings.Join(stripper.StripProperties.Strip.Keep_symbols_list, ",")
|
||||
} else if !Bool(stripper.StripProperties.Strip.All) {
|
||||
|
Reference in New Issue
Block a user