I'm trying to build libunwind 1.2.1 with the PGI compiler, and am seeing this failure in the config phase:

   checking link.h usability... no
   checking link.h presence... yes
   configure: WARNING: link.h: present but cannot be compiled
   configure: WARNING: link.h:     check for missing prerequisite headers?
   configure: WARNING: link.h: see the Autoconf documentation
   configure: WARNING: link.h:     section "Present But Cannot Be Compiled"
   configure: WARNING: link.h: proceeding with the compiler's result
   configure: WARNING:     ## ----------------------------------------- ##
   configure: WARNING:     ## Report this to libunwind-devel@nongnu.org ##
   configure: WARNING:     ## ----------------------------------------- ##
   checking for link.h... no
   checking sys/link.h usability... no
   checking sys/link.h presence... no
   checking for sys/link.h... no

The config.log file shows

   configure:16113: checking link.h usability
   configure:16113:
   /cm/extra/apps/PGI.linux86-64/17.10/linux86-64/17.10/bin/pgc++ -c
   -noswitcherror -m64 -tp=px -I/usr/include conftest.c >&5
   "/usr/include/bits/link.h", line 97: error: identifier "__int128_t" is
              undefined
        __int128_t lr_bnd[4];
        ^

   "/usr/include/bits/link.h", line 113: error: identifier "__int128_t" is
              undefined
        __int128_t lrv_bnd0;
        ^

   "/usr/include/bits/link.h", line 114: error: identifier "__int128_t" is
              undefined
        __int128_t lrv_bnd1;
        ^

   3 errors detected in the compilation of "conftest.c".

from the source lines

         84 typedef struct La_x86_64_regs
         85 {
         86   uint64_t lr_rdx;
         87   uint64_t lr_r8;
         88   uint64_t lr_r9;
         89   uint64_t lr_rcx;
         90   uint64_t lr_rsi;
         91   uint64_t lr_rdi;
         92   uint64_t lr_rbp;
         93   uint64_t lr_rsp;
         94   La_x86_64_xmm lr_xmm[8];
         95   La_x86_64_vector lr_vector[8];
         96 #ifndef __ILP32__
   *     97   __int128_t lr_bnd[4];*
         98 #endif
         99 } La_x86_64_regs;
        100
        101 /* Return values for calls from PLT on x86-64. */
        102 typedef struct La_x86_64_retval
        103 {
        104   uint64_t lrv_rax;
        105   uint64_t lrv_rdx;
        106   La_x86_64_xmm lrv_xmm0;
        107   La_x86_64_xmm lrv_xmm1;
        108   long double lrv_st0;
        109   long double lrv_st1;
        110   La_x86_64_vector lrv_vector0;
        111   La_x86_64_vector lrv_vector1;
        112 #ifndef __ILP32__
   *    113   __int128_t lrv_bnd0;**
   **    114   __int128_t lrv_bnd1;*
        115 #endif
        116 } La_x86_64_retval;

I'm guessing that the GCC compiler supports 128-bit integers but the PGI compiler does not.
Do any of you know a way around this?
From reading the documentation, it looks like libunwind had been tested with a lot of compilers, did they all support 128-bit integers?
Thanks,

                     Carl


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

Reply via email to