Well, I did a make clean in thebes and rebuilt, same error. The symbol does seem to be in gfx/thebes/Unified_cpp_gfx_thebes1.obj (the build concats up to 10 source files together before compiling them), not sure if it should be somewhere else too.
Ok, grepping the 9.4.0 obj tree, it is in Unified_cpp_gfx_thebes0.obj as well.
I guess I'll nuke the obj directory and retry.
c++filt says it is "gfxShapedWord* gfxFont::GetShapedWord<unsigned char>(gfxContext*, unsigned char const*, unsigned int, unsigned int, int, bool, int, unsigned int, gfxTextPerfMetrics*)" and the log only shows the usual warnings about it,
21:27.42 In file included from Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.cpp:6,
21:27.42 from Y:/work/cc45-git/obj-sm/gfx/thebes/Unified_cpp_gfx_thebes0.cpp:65:
21:27.42 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h: In constructor 'gfxShapedWord::gfxShapedWord(const uint8_t*, uint32_t, int32_t, int32_t, uint32_t)':
21:27.42 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:1277:72: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'class gfxShapedText::CompressedGlyph'; use assignment or value-initialization instead [-Wclass-memaccess]
21:27.43 1277 | memset(mCharGlyphsStorage, 0, aLength * sizeof(CompressedGlyph));
21:27.43 | ^
21:27.43 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:700:11: note: 'class gfxShapedText::CompressedGlyph' declared here
21:27.43 700 | class CompressedGlyph {
21:27.43 | ^~~~~~~~~~~~~~~
21:27.43 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h: In constructor 'gfxShapedWord::gfxShapedWord(const char16_t*, uint32_t, int32_t, int32_t, uint32_t)':
21:27.57 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:1289:72: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'class gfxShapedText::CompressedGlyph'; use assignment or value-initialization instead [-Wclass-memaccess]
21:27.57 1289 | memset(mCharGlyphsStorage, 0, aLength * sizeof(CompressedGlyph));
21:27.57 | ^
21:28.13 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:700:11: note: 'class gfxShapedText::CompressedGlyph' declared here
21:28.13 700 | class CompressedGlyph {
21:28.14 | ^~~~~~~~~~~~~~~
21:28.90 In file included from Y:/work/cc45-git/mozilla/gfx/thebes/gfxGraphiteShaper.h:9,
21:28.90 from Y:/work/cc45-git/mozilla/gfx/thebes/gfxGraphiteShaper.cpp:6,
21:28.90 from Y:/work/cc45-git/obj-sm/gfx/thebes/Unified_cpp_gfx_thebes1.cpp:2:
21:28.90 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h: In constructor 'gfxShapedWord::gfxShapedWord(const uint8_t*, uint32_t, int32_t, int32_t, uint32_t)':
21:28.90 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:1277:72: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'class gfxShapedText::CompressedGlyph'; use assignment or value-initialization instead [-Wclass-memaccess]
21:29.13 1277 | memset(mCharGlyphsStorage, 0, aLength * sizeof(CompressedGlyph));
21:29.13 | ^
21:29.13 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:700:11: note: 'class gfxShapedText::CompressedGlyph' declared here
21:29.13 700 | class CompressedGlyph {
21:29.83 | ^~~~~~~~~~~~~~~
21:29.83 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h: In constructor 'gfxShapedWord::gfxShapedWord(const char16_t*, uint32_t, int32_t, int32_t, uint32_t)':
21:29.83 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:1289:72: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'class gfxShapedText::CompressedGlyph'; use assignment or value-initialization instead [-Wclass-memaccess]
21:29.83 1289 | memset(mCharGlyphsStorage, 0, aLength * sizeof(CompressedGlyph));
21:29.91 | ^
21:29.91 Y:/work/cc45-git/mozilla/gfx/thebes/gfxFont.h:700:11: note: 'class gfxShapedText::CompressedGlyph' declared here
21:29.91 700 | class CompressedGlyph {
21:29.91 |
These types of warnings are everywhere and was one of the original problems with compiling with GCC 6+ and are due to doing a memset() before the constructor I understand. We now use speciall flags to stop them from being optimized away If I understand correctly
"-flifetime-dse=1 -fno-delete-null-pointer-checks -Wclass-memaccess" on the advice of the GCC people.