[gnutls-devel] GnuTLS | Fails to link shared `gnutls-openssl` due to `undefined reference to '_gnutls_lib_state'` when compiled with Clang and no optimization (#1690)

Read-only notification of GnuTLS library development activities gnutls-devel at lists.gnutls.org
Thu Apr 3 06:05:38 CEST 2025



Doekin created an issue: https://gitlab.com/gnutls/gnutls/-/issues/1690



## Description of problem:

When building the shared `gnutls-openssl` library with Clang and `CFLAGS` that override the default `-g -O2` but don't set an optimization level (effectively compiling with `-O0`), linking fails with the following error:

```
/usr/bin/ld: ../extra/.libs/libgnutls-openssl.so: undefined reference to `_gnutls_lib_state'
```

## Version of gnutls used:

3.8.9 from https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/

## Steps to Reproduce:

1. Set environment variables:
   ```
   export CC="/usr/bin/clang"
   export CFLAGS="-m64"
   ```

2. Configure:
   ```
   ./configure --disable-doc --disable-nls --with-tpm2=no --with-idn --with-brotli --with-zstd --enable-openssl-compatibility --with-default-trust-store-pkcs11=pkcs11: --enable-shared=yes --with-pic --disable-dependency-tracking
   ```

3. Attempt to build:
   ```
   make check
   ```

## Actual results:

The test fails with the following error:

```
make[3]: 'pkcs11-obj-raw' is up to date.
make[3]: 'pkcs11-import-url-privkey-caps' is up to date.
make[3]: 'ocsp' is up to date.
/bin/sh ../libtool  --tag=CC   --mode=link /usr/bin/clang -Wall -Wbad-function-cast -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Wextra -Winit-self -Winvalid-pch -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpacked -Wpointer-arith -Wshadow -Wstrict-prototypes -Wuninitialized -Wunknown-pragmas -Wvariadic-macros -Wwrite-strings -Wformat=2 -Wthread-safety -Wno-missing-field-initializers -Wno-unused-parameter -Wno-format-truncation -fdiagnostics-show-option -fno-builtin-strcmp  -m64 -no-install  -o openssl openssl.o ../extra/libgnutls-openssl.la ../lib/libgnutls.la libutils.la    -lseccomp -lrt 
libtool: link: /usr/bin/clang -Wall -Wbad-function-cast -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Wextra -Winit-self -Winvalid-pch -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpacked -Wpointer-arith -Wshadow -Wstrict-prototypes -Wuninitialized -Wunknown-pragmas -Wvariadic-macros -Wwrite-strings -Wformat=2 -Wthread-safety -Wno-missing-field-initializers -Wno-unused-parameter -Wno-format-truncation -fdiagnostics-show-option -fno-builtin-strcmp -m64 -o openssl openssl.o  ../extra/.libs/libgnutls-openssl.so ../lib/.libs/libgnutls.so ./.libs/libutils.a /run/media/leemu/D8C48579C4855B20/projects/gnutls-llvm/source/lib/.libs/libgnutls.so -lp11-kit -lidn2 -lunistring -ldl -ltasn1 -lhogweed -lnettle -lgmp -lseccomp -lrt -Wl,-rpath -Wl,/run/media/leemu/D8C48579C4855B20/projects/gnutls-llvm/source/extra/.libs -Wl,-rpath -Wl,/run/media/leemu/D8C48579C4855B20/projects/gnutls-llvm/source/lib/.libs -Wl,-rpath -Wl,/usr/local/lib
/usr/bin/ld: ../extra/.libs/libgnutls-openssl.so: undefined reference to `_gnutls_lib_state'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [Makefile:7885: openssl] Error 1
make[3]: Leaving directory '/run/media/leemu/D8C48579C4855B20/projects/gnutls-llvm/source/tests'
make[2]: *** [Makefile:13595: check-am] Error 2
make[2]: Leaving directory '/run/media/leemu/D8C48579C4855B20/projects/gnutls-llvm/source/tests'
make[1]: *** [Makefile:10111: check-recursive] Error 1
make[1]: Leaving directory '/run/media/leemu/D8C48579C4855B20/projects/gnutls-llvm/source/tests'
make: *** [Makefile:2922: check-recursive] Error 1
```


## Expected results:

The `gnutls-openssl` shared library should build successfully with Clang, even when compiled without optimization.

-- 
Reply to this email directly or view it on GitLab: https://gitlab.com/gnutls/gnutls/-/issues/1690
You're receiving this email because of your account on gitlab.com.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnupg.org/pipermail/gnutls-devel/attachments/20250403/ed1f1b32/attachment-0001.html>


More information about the Gnutls-devel mailing list