From dabe2d433617913a6e99868aabef27f1546938f9 Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Tue, 4 Jun 2024 01:22:40 +0000 Subject: [PATCH] Ignore_max_page_size option. Option for specific prebuilts to opt out of the prebuilt page size check. Like allow_undefined_symbols. Bug: 342466032 Test: build using this to opt out Change-Id: I335c0beb66c10b260e7c3e405f05027e7718fe07 --- cc/androidmk.go | 12 +++++++++--- cc/linker.go | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cc/androidmk.go b/cc/androidmk.go index e1bc33669..62ba4debd 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -486,14 +486,14 @@ func (p *prebuiltLibraryLinker) AndroidMkEntries(ctx AndroidMkContext, entries * ctx.subAndroidMk(entries, p.libraryDecorator) if p.shared() { ctx.subAndroidMk(entries, &p.prebuiltLinker) - androidMkWriteAllowUndefinedSymbols(p.baseLinker, entries) + androidMkWritePrebuiltOptions(p.baseLinker, entries) } } func (p *prebuiltBinaryLinker) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) { ctx.subAndroidMk(entries, p.binaryDecorator) ctx.subAndroidMk(entries, &p.prebuiltLinker) - androidMkWriteAllowUndefinedSymbols(p.baseLinker, entries) + androidMkWritePrebuiltOptions(p.baseLinker, entries) } func (a *apiLibraryDecorator) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) { @@ -524,11 +524,17 @@ func (a *apiHeadersDecorator) AndroidMkEntries(ctx AndroidMkContext, entries *an }) } -func androidMkWriteAllowUndefinedSymbols(linker *baseLinker, entries *android.AndroidMkEntries) { +func androidMkWritePrebuiltOptions(linker *baseLinker, entries *android.AndroidMkEntries) { allow := linker.Properties.Allow_undefined_symbols if allow != nil { entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { entries.SetBool("LOCAL_ALLOW_UNDEFINED_SYMBOLS", *allow) }) } + ignore := linker.Properties.Ignore_max_page_size + if ignore != nil { + entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { + entries.SetBool("LOCAL_IGNORE_MAX_PAGE_SIZE", *ignore) + }) + } } diff --git a/cc/linker.go b/cc/linker.go index 1b5a33a9f..1675df698 100644 --- a/cc/linker.go +++ b/cc/linker.go @@ -65,6 +65,10 @@ type BaseLinkerProperties struct { // This flag should only be necessary for compiling low-level libraries like libc. Allow_undefined_symbols *bool `android:"arch_variant"` + // ignore max page size. By default, max page size must be the + // max page size set for the target. + Ignore_max_page_size *bool `android:"arch_variant"` + // don't link in libclang_rt.builtins-*.a No_libcrt *bool `android:"arch_variant"`