[1382/1456] CC obj/cmd/ecperf/ecperf.ecperf.o FAILED: obj/cmd/ecperf/ecperf.ecperf.o gcc -MMD -MF obj/cmd/ecperf/ecperf.ecperf.o.d -DNSS_USE_STATIC_LIBS -DNSS_FIPS_DISABLED -DNSS_NO_INIT_SUPPORT -DNSS_USE _64 -DUSE_UTIL_DIRECTLY -DNO_NSPR_10_SUPPORT -DSSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES -DLINUX2_1 -DLINUX -Dlinux -D_ DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_SOURCE -DSDB_MEASURE_USE_TEMP_DIR -DHAVE_STRERROR -DXP_UNIX -D_REENTRANT -DNDEBUG -I../../lib/softoken -I/usr/include/nspr -I/usr/src/RPM/BUILD/nss-3.89.0/dist/private/nss -I/usr/src/RPM/BUILD/nss-3.8 9.0/dist/public/dbm -I/usr/src/RPM/BUILD/nss-3.89.0/dist/public/nss -fPIC -pipe -ffunction-sections -fdata-sections -We rror -Wall -Wshadow -O2 -std=c99 -c ../../cmd/ecperf/ecperf.c -o obj/cmd/ecperf/ecperf.ecperf.o ../../cmd/ecperf/ecperf.c: In function 'genericThread': ../../cmd/ecperf/ecperf.c:99:24: error: storing the address of local variable 'sig' in '*threadData.p2' [-Werror=dangli ng-pointer=] 99 | threadData->p2 = (void *)&sig; | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../../cmd/ecperf/ecperf.c:91:13: note: 'sig' declared here 91 | SECItem sig; | ^~~ ../../cmd/ecperf/ecperf.c:86:21: note: 'data' declared here 86 | genericThread(void *data) | ~~~~~~^~~~ ../../cmd/ecperf/ecperf.c: In function 'PKCS11Thread': ../../cmd/ecperf/ecperf.c:71:24: error: storing the address of local variable 'sig' in '*threadData.p2' [-Werror=dangli ng-pointer=] 71 | threadData->p2 = (void *)&sig; | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../../cmd/ecperf/ecperf.c:53:13: note: 'sig' declared here 53 | SECItem sig; | ^~~ ../../cmd/ecperf/ecperf.c:47:20: note: 'data' declared here 47 | PKCS11Thread(void *data) | ~~~~~~^~~~ cc1: all warnings being treated as errors
Created attachment 13353 [details] патч для исправления ошибки
(Ответ для Alexey Sheplyakov на комментарий #1) > Создано вложение 13353 [details] [подробности] > патч для исправления ошибки Это не исправление ошибки, а игнорирование. Но спасибо за патч.
(Ответ для Alexey Gladkov на комментарий #2) > (Ответ для Alexey Sheplyakov на комментарий #1) > > Создано вложение 13353 [details] [подробности] > > патч для исправления ошибки > > Это не исправление ошибки, а игнорирование. Нет. threadData->p2 действительно содержит адрес локальной переменной. Но threadData->p2 читает только поток, входной точкой которого является функция genericThread (для того, чтобы вызвать нужную функцию в данном потоке). А основной поток читает только threadData->count. Но компилятор об этом знать не может (он вообще про потоки не знает), так что ему надо помочь. Можно было переписать код примерно так: 46 void 47 PKCS11Thread(void *data) 48 { 49 ThreadData *threadData = (ThreadData *)data; 50 pk11_op_func op = (pk11_op_func)threadData->op; 51 int iters = threadData->iters; 52 unsigned char sigData[256]; 53 SECItem sig; 54 CK_SESSION_HANDLE session; 55 CK_RV crv; 56 void *p2 = threadData->p2; 57 58 threadData->status = SECSuccess; 59 threadData->count = 0; 60 61 /* get our thread's session */ 62 PR_Lock(threadData->lock); 63 crv = NSC_OpenSession(1, CKF_SERIAL_SESSION, NULL, 0, &session); 64 PR_Unlock(threadData->lock); 65 if (crv != CKR_OK) { 66 return; 67 } 68 69 if (threadData->isSign) { 70 sig.data = sigData; 71 sig.len = sizeof(sigData); 72 p2 = (void *)&sig; 73 } 74 75 while (iters--) { 76 threadData->status = (*op)(session, threadData->p1, 77 p2, threadData->p3); 78 if (threadData->status != SECSuccess) { 79 break; 80 } 81 threadData->count++; 82 } 83 return; 84 } Но не хочется делать это только ради того, чтобы ублажить компилятор. И при беглом взгляде возникает вопрос - а зачем эта возня с p2, почему нельзя просто threadData->p2 использовать? Технически значение thre > Но спасибо за патч.
Created attachment 13363 [details] ещё один вариант исправления
(Ответ для Alexey Sheplyakov на комментарий #4) > Создано вложение 13363 [details] [подробности] > ещё один вариант исправления Собственно взял и переписал, как рассказал в предыдущем комментарии. А кому существование p2 покажется странным наверное сможет посмотреть в git blame.
gcc13 в сизифе нет, но я верю, что в nss 3.90.0-alt1 всё исправлено.