[llvm-dev] undefined symbol EnableABIBreakingChecks

Tim Northover via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 22 10:50:58 PDT 2019


Hi Frank,

On Fri, 22 Mar 2019 at 17:03, Frank Winter via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> What am I missing here?

LLVM has some more expensive checking that breaks ABI compatibility
(e.g. by adding extra verification fields to structs). In a
strraightforward world if you linked together .o files compiled with
and without those checks you'd break horribly at runtime.

So LLVM has two symbols, "EnableABIBreakingChecks" and
"DisableABIBreakingChecks" and exactly one of them gets referenced
from every header that would change. This error indicates that some of
your files were compiled with LLVM_ABI_BREAKING_CHECKS and some
without.

The fact that it appears to be a runtime issue (i.e. when you execute
./main) suggests to me that you've got a dynamically linked LLVM and
it's picking up the wrong .so files. But a botched build is also
possible.

Cheers.

Tim.


More information about the llvm-dev mailing list