This happens when building on MacOS 10.13. I suppose some parts of the code gets #ifdef-ed out, but the symbollist isn't, that is passed to the linker.
This list is in lib/itanium-base.exp and used as input for -exported_symbols_list.
Now Apple's linker decided in its wisdom, that missing actual symbols are an error (and not a warning, what would be sane) and the build aborts.
All affected symbols are of the form _Z.*du. If I remove them before building things work out OK.
The text was updated successfully, but these errors were encountered:
What compiler are you using? I'm guessing you're using a fairly old Clang.
The issue is that the compiler emits type information for fundamental types in libc++abi, and your compiler doesn't know about char8_t yet, so it doesn't emit the type information for those. libc++abi tries to export these symbols and it fails to do so, because they haven't been generated in the dylib by the compiler.
Getting a linker error is quite nice, because otherwise you'd be producing a libc++abi.dylib that doesn't work properly at runtime (say if you try to use typeid(char8_t) in your program).
The fix is to use a recent Clang when building libc++ and libc++abi.
Extended Description
This happens when building on MacOS 10.13. I suppose some parts of the code gets #ifdef-ed out, but the symbollist isn't, that is passed to the linker.
This list is in
lib/itanium-base.exp
and used as input for-exported_symbols_list
.Now Apple's linker decided in its wisdom, that missing actual symbols are an error (and not a warning, what would be sane) and the build aborts.
All affected symbols are of the form _Z.*du. If I remove them before building things work out OK.
The text was updated successfully, but these errors were encountered: