Add linker_scripts property
Add a linker_scripts property that is similar to version_script but uses a -Wl,--script flag and can be passed multiple times. Test: TestBinaryLinkerScripts Change-Id: If405cfbcdaf8e99559414ba759734084fae0f7ec
This commit is contained in:
14
cc/linker.go
14
cc/linker.go
@@ -227,6 +227,9 @@ type BaseLinkerProperties struct {
|
||||
// local file name to pass to the linker as --dynamic-list
|
||||
Dynamic_list *string `android:"path,arch_variant"`
|
||||
|
||||
// local files to pass to the linker as --script
|
||||
Linker_scripts []string `android:"path,arch_variant"`
|
||||
|
||||
// list of static libs that should not be used to build this module
|
||||
Exclude_static_libs []string `android:"arch_variant"`
|
||||
|
||||
@@ -602,6 +605,17 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
|
||||
flags.LdFlagsDeps = append(flags.LdFlagsDeps, dynamicList.Path())
|
||||
}
|
||||
}
|
||||
|
||||
linkerScriptPaths := android.PathsForModuleSrc(ctx, linker.Properties.Linker_scripts)
|
||||
if len(linkerScriptPaths) > 0 && (ctx.Darwin() || ctx.Windows()) {
|
||||
ctx.PropertyErrorf("linker_scripts", "Only supported for ELF files")
|
||||
} else {
|
||||
for _, linkerScriptPath := range linkerScriptPaths {
|
||||
flags.Local.LdFlags = append(flags.Local.LdFlags,
|
||||
"-Wl,--script,"+linkerScriptPath.String())
|
||||
flags.LdFlagsDeps = append(flags.LdFlagsDeps, linkerScriptPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return flags
|
||||
|
Reference in New Issue
Block a user