Skip to content

Skia roll failing libimpeller link due to SkTypeface_proxy symbols missing #159737

@bdero

Description

@bdero

Start of roll failure: flutter/engine#56920

Log: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8729560451897060625/+/u/build_ci_android_debug_arm64_clang_tidy/stdout

[6990/7095] SOLINK ./libimpeller.so
FAILED: libimpeller.so libimpeller.so.TOC lib.stripped/libimpeller.so 
../../../flutter/buildtools/linux-x64/clang/bin/clang++ -shared -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--undefined-version -Wl,--no-undefined -Wl,--exclude-libs,ALL -Wl,--icf=all -Wl,-z,max-page-size=65536 --target=aarch64-linux-android22 -nostdlib++ -nostdlib -Wl,--warn-shared-textrel -L../../../flutter/third_party/android_tools/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/22 -Wl,-O2 -Wl,--gc-sections -Wl,--as-needed -L../../../flutter/third_party/android_tools/ndk/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/17/lib/linux  -o ./libimpeller.so -Wl,--build-id=sha1 -Wl,-soname=libimpeller.so @./libimpeller.so.rsp && { ../../../flutter/buildtools/linux-x64/clang/bin/llvm-readelf -d ./libimpeller.so | grep SONAME ; ../../../flutter/buildtools/linux-x64/clang/bin/llvm-nm -gD -f posix ./libimpeller.so | cut -f1-2 -d' '; } > ./libimpeller.so.tmp && if ! cmp -s ./libimpeller.so.tmp ./libimpeller.so.TOC; then mv ./libimpeller.so.tmp ./libimpeller.so.TOC; fi && ../../../flutter/buildtools/linux-x64/clang/bin/llvm-strip --strip-unneeded -o lib.stripped/libimpeller.so.tmp ./libimpeller.so && if ! cmp -s lib.stripped/libimpeller.so.tmp lib.stripped/libimpeller.so; then mv lib.stripped/libimpeller.so.tmp lib.stripped/libimpeller.so; fi
ld.lld: error: undefined symbol: vtable for SkTypeface_proxy
>>> referenced by SkTypeface_proxy.h:44 (../../../flutter/third_party/skia/src/ports/SkTypeface_proxy.h:44)
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(SkTypeface_proxy::SkTypeface_proxy(SkFontStyle const&, bool))
>>> referenced by SkTypeface_proxy.h:44 (../../../flutter/third_party/skia/src/ports/SkTypeface_proxy.h:44)
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(SkTypeface_proxy::SkTypeface_proxy(SkFontStyle const&, bool))
>>> referenced by SkTypeface_proxy.h:40 (../../../flutter/third_party/skia/src/ports/SkTypeface_proxy.h:40)
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(SkTypeface_proxy::~SkTypeface_proxy())
>>> referenced 1 more times
>>> the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)

ld.lld: error: undefined symbol: SkTypeface_proxy::onMakeClone(SkFontArguments const&) const
>>> referenced by SkFontMgr_android.cpp:102 (../../../flutter/third_party/skia/src/ports/SkFontMgr_android.cpp:102)
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:((anonymous namespace)::SkTypeface_AndroidSystem::onMakeClone(SkFontArguments const&) const)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetFontDescriptor(SkFontDescriptor*, bool*) const
>>> referenced by SkFontMgr_android.cpp:114 (../../../flutter/third_party/skia/src/ports/SkFontMgr_android.cpp:114)
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:((anonymous namespace)::SkTypeface_AndroidSystem::onGetFontDescriptor(SkFontDescriptor*, bool*) const)

ld.lld: error: undefined symbol: SkTypeface_proxy::onCreateScalerContext(SkScalerContextEffects const&, SkDescriptor const*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onFilterRec(SkScalerContextRec*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetAdvancedMetrics() const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::getPostScriptGlyphNames(SkString*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::getGlyphToUnicodeMap(int*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGlyphMaskNeedsCurrentColor() const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetVariationDesignPosition(SkFontArguments::VariationPosition::Coordinate*, int) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetVariationDesignParameters(SkFontParameters::Variation::Axis*, int) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onCharsToGlyphs(int const*, int, unsigned short*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onCountGlyphs() const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetUPEM() const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetKerningPairAdjustments(unsigned short const*, int, int*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetPostScriptName(SkString*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetResourceName(SkString*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onCreateFamilyNameIterator() const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetTableTags(unsigned int*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: undefined symbol: SkTypeface_proxy::onGetTableData(unsigned int, unsigned long, unsigned long, void*) const
>>> referenced by SkFontMgr_android.cpp
>>>               obj/flutter/third_party/skia/src/ports/fontmgr_android.SkFontMgr_android.o:(vtable for (anonymous namespace)::SkTypeface_AndroidSystem)

ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[6991/7095] ACTION //flutter/impeller/toolkit/android:apk_apk_unittests(//build/toolchain/android:clang_arm64)
[6992/7095] ACTION //flutter/third_party/dart/runtime/vm:vm_platform(//build/toolchain/android:clang_arm64)
ninja: build stopped: subcommand failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Critical issues such as a build break or regressiondependency: skiaSkia team may need to help use: libimpellerThe standalone Impeller library with a single-header API.engineflutter/engine related. See also e: labels.

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions