IBM의 XL C 컴파일러로 AIX에서 작업하고 있습니다. 컴파일 오류가 발생하여 진행 방법을 모르겠습니다.매개 변수 유형이이 연결 유형의 함수에 유효하지 않습니다.
$ xlc -g3 -O0 -qarch=pwr8 -qaltivec fips197-p8.c -o fips197-p8.exe
"fips197-p8.c", line 59.16: 1506-754 (W) The parameter type is not valid for a function of this linkage type.
관련 소스 코드는 아래에 나와 있습니다. 전체 소스 코드는 fips197-p8.c
에서 확인할 수 있습니다. 소스 코드는 Power 8 __cipher
및 __vcipherlast
의 테스트 드라이버입니다. 그것은 메인과 몇 가지 C 기능을 가지고 있습니다. 효과적으로 Power 8 AES에 대한 최소한의 완전한 작동 예제입니다.
$ cat -n fips197-p8.c
...
11 #if defined(__xlc__) || defined(__xlC__)
12 // #include <builtins.h>
13 #include <altivec.h>
14 typedef vector unsigned char uint8x16_p8;
15 typedef vector unsigned int uint64x2_p8;
16 #else
17 #include <altivec.h>
18 typedef vector unsigned char uint8x16_p8;
19 typedef vector unsigned long long uint64x2_p8;
20 #endif
...
52 uint8x16_p8 Load8x16(const uint8_t src[16])
53 {
54 #if defined(__xlc__) || defined(__xlC__)
55 /* IBM XL C/C++ compiler */
56 # if defined(__LITTLE_ENDIAN__)
57 return vec_xl_be(0, src);
58 # else
59 return vec_xl(0, src);
60 # endif
61 #else
62 /* GCC, Clang, etc */
63
64 #endif
65 }
컴파일러 버전은 아래와 같습니다. 우리는 컴파일러를 제어하지 않는, 그래서 이것은 우리가 무엇을 :
$ xlc -qversion
IBM XL C/C++ for AIX, V13.1.3 (5725-C72, 5765-J07)
Version: 13.01.0003.0000
vec_xl
가 리틀 엔디안에 괜찮습니다. 빅 엔디안 용 vec_xl
이 우리에게 문제를 일으키고 있습니다.
무엇이 문제이며 어떻게 수정합니까?
AIX + IBM? 당신은 나의 동정심이 –
이지만, 이것은 AIX 없이는 재현하기가 어렵습니다. IBM은 특별히 도움이되지 않습니다. –
docs에서 : "함수 결과의 요소 순서는 -qaltivec = be가 적용될 때 큰 엔디안이며 그렇지 않으면 순서는 리틀 엔디안입니다." 당신은'= be'를 설정하지 않았고, 그것은 쟁점이 아닙니까? –