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
address@hidden ##
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