Dear all,

There's a problem building libunwinwd-1.0.1 when configured
with --enable-msabi-support.

The problem occurs when compilation reaches src/x86_64/Lglobal.c,
because the symbols UNW_X86_64_XMM0, UNW_X86_64_XMM1 etc. are
undefined.

Lglobal.c reads:

  #define UNW_LOCAL_ONLY
  #include <libunwind.h>
  #if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY)
  #include "Gglobal.c"
  #endif

The *definitions* for the required symbols are in libunwind-x86_64.h
guarded by a C-preprocessor #ifdef CONFIG_MSABI_SUPPORT.  This file
is read in libunwind.h.

The symbols are *used* in src/x86_64/Gglobal.c, again, guarded by
the same C-preprocessor directive.

The problem is that when the *definitions* are processed,
CONFIG_MSABI_SUPPORT is not defined, but it is when the
symbols are *used*.

What's happening is that Gglobal.c #includes src/x86_64/unwind_i.h,
which #includes include/libunwind_i.h, which #includes config.h.
config.h defines CONFIG_MSABI_SUPPORT, with the result that
the code in Gglobal.c which *uses* these symbols is compiled.

However, when the *definitions* are read as part of the #include
for libunwind.h, the definitions are *not* compiled.

Is this a regression?

Why is CONFIG_MSABI_SUPPORT a conditional?  Why isn't on all
the time?

Thanks,

Ariel


_______________________________________________
Libunwind-devel mailing list
Libunwind-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to