Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sasl.cc -Wno-nested-anon-types로 인한 빌드 실패 #356

Open
namsic opened this issue Feb 5, 2025 · 4 comments
Open

sasl.cc -Wno-nested-anon-types로 인한 빌드 실패 #356

namsic opened this issue Feb 5, 2025 · 4 comments
Assignees

Comments

@namsic
Copy link
Collaborator

namsic commented Feb 5, 2025

⛔ What happened?

$ cat /etc/redhat-release
Navix release 8.9 (Pangyo)

$ ./configure\
 --prefix=.../arcus-c-client-1.14.0-dist\
 --enable-zk-integration --with-zookeeper=.../arcus-zookeeper-3.5.9-p3-dist/\
 --with-pic

checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
.
.
.
.

---
Configuration summary for arcus-c-client version 1.14.0

   * Installation prefix:       .../arcus-c-client-1.14.0-dist
   * System type:               pc-linux-gnu
   * Host CPU:                  x86_64
   * C Compiler:                gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20)
   * Assertions enabled:        yes
   * Debug enabled:             no
   * Warnings as failure:       yes

---

$ make
make  all-am
make[1]: Entering directory '.../arcus-c-client'
  CXX      clients/memcapable.o
  CXX      libmemcached/byteorder.o
  CXX      clients/utilities.lo
  CXXLD    clients/[libutilities.la](http://libutilities.la/)
.
.
.
.
  CXX      libmemcached/libmemcachedinternal_libmemcachedinternal_la-sasl.lo
libmemcached/sasl.cc: In function �쁬emcached_return_t memcached_set_sasl_auth_data(memcached_st*, const char*, const char*)��:
libmemcached/sasl.cc:343:33: error: cast between incompatible function types from �쁦nt (*)(void*, int, const char**, unsigned int*)�� to �쁦nt (*)()�� [-Werror=cast-function-type]
   callbacks[0].proc= (int (*)())get_username;
                                 ^~~~~~~~~~~~
libmemcached/sasl.cc:346:33: error: cast between incompatible function types from �쁦nt (*)(void*, int, const char**, unsigned int*)�� to �쁦nt (*)()�� [-Werror=cast-function-type]
   callbacks[1].proc= (int (*)())get_username;
                                 ^~~~~~~~~~~~
libmemcached/sasl.cc:349:33: error: cast between incompatible function types from �쁦nt (*)(sasl_conn_t*, void*, int, sasl_secret_t**)�� {aka �쁦nt (*)(sasl_conn*, void*, int, sasl_secret**)��} to �쁦nt (*)()�� [-Werror=cast-function-type]
   callbacks[2].proc= (int (*)())get_password;
                                 ^~~~~~~~~~~~
libmemcached/sasl.cc: In function �쁬emcached_return_t memcached_clone_sasl(memcached_st*, const memcached_st*)��:
libmemcached/sasl.cc:408:53: error: cast between incompatible function types from �쁦nt (*)(void*, int, const char**, unsigned int*)�� to �쁦nt (*)()�� [-Werror=cast-function-type]
       source->sasl.callbacks[0].proc ==  (int (*)())get_username &&
                                                     ^~~~~~~~~~~~
libmemcached/sasl.cc:410:53: error: cast between incompatible function types from �쁦nt (*)(void*, int, const char**, unsigned int*)�� to �쁦nt (*)()�� [-Werror=cast-function-type]
       source->sasl.callbacks[1].proc ==  (int (*)())get_username &&
                                                     ^~~~~~~~~~~~
libmemcached/sasl.cc:412:53: error: cast between incompatible function types from �쁦nt (*)(sasl_conn_t*, void*, int, sasl_secret_t**)�� {aka �쁦nt (*)(sasl_conn*, void*, int, sasl_secret**)��} to �쁦nt (*)()�� [-Werror=cast-function-type]
       source->sasl.callbacks[2].proc ==  (int (*)())get_password &&
                                                     ^~~~~~~~~~~~
At global scope:
cc1plus: error: unrecognized command line option ��-Wno-nested-anon-types�� [-Werror]
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:5096: libmemcached/libmemcachedinternal_libmemcachedinternal_la-sasl.lo] Error 1
make[1]: Leaving directory '/home1/irteam/en.choi/arcus-c-client'
make: *** [Makefile:2411: all] Error 2

🎯 Reproduction Steps

💡 Expected Behavior / Solution

@namsic namsic self-assigned this Feb 5, 2025
@ing-eoking
Copy link
Collaborator

rockylinux8 테스트 결과 해당 에러가 발생하지 않았습니다.

@namsic
Copy link
Collaborator Author

namsic commented Feb 5, 2025

rockylinux8 테스트 결과 해당 에러가 발생하지 않았습니다.

sasl이 enable된 것을 보면,
아마 장비에 cyrus-sasl 라이브러리가 설치되어 있는 환경일 것 같습니다.

@ing-eoking
Copy link
Collaborator

ing-eoking commented Feb 5, 2025

말씀대로 Cyrus-sasl 설치 후에 테스트한 결과 에러가 발생합니다.

libmemcached/sasl.cc:343:33: error: cast between incompatible function types fromint (*)(void*, int, const char**, unsigned int*)’ to ‘int (*)()’ [-Werror=cast-function-type]
   callbacks[0].proc= (int (*)())get_username;

함수 포인터 타입캐스트 변환 문제가 아닌 안전하지 않은 함수 포인터 타입 캐스트로 인하여 발생하는 문제입니다.
함수 포인터 주소를 다른 형태로 타입 캐스트한 후 다시 포인터 주소로 타입 캐스트하면 해당 에러는 사라집니다.

callbacks[0].proc= (int (*)())(void *)get_username

@namsic
Copy link
Collaborator Author

namsic commented Feb 5, 2025

캐스팅을 연달아 하는 것은 자연스럽지 않아 보이고, 아래 변경이 이번 문제와 관련이 있는지 확인해야 합니다.

libmemcached

memcached

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants