Merge "Handle pack_relocations in linker.cc" am: a4181126ee

am: 7bc0f8dbd6

Change-Id: I7cf2e5bcce66f09f13260bad63a1fb3769b4b89a
This commit is contained in:
Chih-hung Hsieh 2018-06-01 14:07:16 -07:00 committed by android-build-merger
commit 21ef2a54f9
3 changed files with 14 additions and 1 deletions

View File

@ -1493,6 +1493,7 @@ func DefaultsFactory(props ...interface{}) android.Module {
&VendorProperties{},
&BaseCompilerProperties{},
&BaseLinkerProperties{},
&MoreBaseLinkerProperties{},
&LibraryProperties{},
&FlagExporterProperties{},
&BinaryLinkerProperties{},

View File

@ -122,6 +122,13 @@ type BaseLinkerProperties struct {
Use_version_lib *bool `android:"arch_variant"`
}
// TODO(http://b/80437643): BaseLinkerProperties is getting too big,
// more than 2^16 bytes. New properties are defined in MoreBaseLinkerProperties.
type MoreBaseLinkerProperties struct {
// Generate compact dynamic relocation table, default true.
Pack_relocations *bool `android:"arch_variant"`
}
func NewBaseLinker() *baseLinker {
return &baseLinker{}
}
@ -129,6 +136,7 @@ func NewBaseLinker() *baseLinker {
// baseLinker provides support for shared_libs, static_libs, and whole_static_libs properties
type baseLinker struct {
Properties BaseLinkerProperties
MoreProperties MoreBaseLinkerProperties
dynamicProperties struct {
RunPaths []string `blueprint:"mutated"`
}
@ -147,7 +155,7 @@ func (linker *baseLinker) linkerInit(ctx BaseModuleContext) {
}
func (linker *baseLinker) linkerProps() []interface{} {
return []interface{}{&linker.Properties, &linker.dynamicProperties}
return []interface{}{&linker.Properties, &linker.MoreProperties, &linker.dynamicProperties}
}
func (linker *baseLinker) linkerDeps(ctx BaseModuleContext, deps Deps) Deps {
@ -256,6 +264,9 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
if flags.Clang && linker.useClangLld(ctx) {
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLldflags}", hod))
if !BoolDefault(linker.MoreProperties.Pack_relocations, true) {
flags.LdFlags = append(flags.LdFlags, "-Wl,--pack-dyn-relocs=none")
}
} else {
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLdflags}", hod))
}

View File

@ -33,6 +33,7 @@ var relocationPackerRule = pctx.AndroidStaticRule("packRelocations",
})
type RelocationPackerProperties struct {
// Generate compact dynamic relocation table, default true.
Pack_relocations *bool `android:"arch_variant"`
// This will be true even if we're embedded in Make, in which case