You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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: