Skip -Wl,--version-script
on libclang_rt.* stubs (temp hack)
The checked-in libclang_rt.* prebuilts do not contain versioned symbols, but the autogenerated map.txt file for these libraries contain versions e.g. LIBCLANG_RT_ASAN { global: ... } ``` This causes a discrepancy between the symbols in the stubs and impl variants of these libraries. After https://r.android.com/3236596 is submitted and a new set of libclang_rt.* prebuilts are generated, this discrepancy will go away. For now, skip `-Wl,version-script` when generating the stub variants of these libraries to prevent link errors at build time. Test: lunch aosp_panther_hwasan-trunk_staging-userdebug && m crash_dump Bug: 3222365 Change-Id: Ic1e06cb58ec33b761136ac325f191da7ac900151
This commit is contained in:
@@ -16,6 +16,7 @@ package cc
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
||||
@@ -118,6 +119,22 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext,
|
||||
// Stub variants will create a stub .so file from stub .c files
|
||||
if p.buildStubs() && objs.objFiles != nil {
|
||||
// TODO (b/275273834): Make objs.objFiles == nil a hard error when the symbol files have been added to module sdk.
|
||||
|
||||
// The map.txt files of libclang_rt.* contain version information, but the checked in .so files do not.
|
||||
// e.g. libclang_rt.* libs impl
|
||||
// $ nm -D prebuilts/../libclang_rt.hwasan-aarch64-android.so
|
||||
// __hwasan_init
|
||||
|
||||
// stubs generated from .map.txt
|
||||
// $ nm -D out/soong/.intermediates/../<stubs>/libclang_rt.hwasan-aarch64-android.so
|
||||
// __hwasan_init@@LIBCLANG_RT_ASAN
|
||||
|
||||
// Special-case libclang_rt.* libs to account for this discrepancy.
|
||||
// TODO (spandandas): Remove this special case https://r.android.com/3236596 has been submitted, and a new set of map.txt
|
||||
// files of libclang_rt.* libs have been generated.
|
||||
if strings.Contains(ctx.ModuleName(), "libclang_rt.") {
|
||||
p.versionScriptPath = android.OptionalPathForPath(nil)
|
||||
}
|
||||
return p.linkShared(ctx, flags, deps, objs)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user