Undefined symbols (macOS Big Sur Intel) during compiling, update

Laura Smith n5d9xq3ti233xiyif2vp at protonmail.ch
Fri Aug 13 19:44:22 EEST 2021


FYI Aki

As of OS X 10.7 Apple anounced they would be phasing out OpenSSL in favour of Common Crypto (announced at their Developer Conference in 2011).

The "Why?" is because OpenSSL do not offer API compatibility between versions which impeded upon Apple's ability to provide security updates without breaking developer's apps (more detailed explanation at https://rentzsch.tumblr.com/post/33696323211/wherein-i-write-apples-technote-about-openssl-on)



‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Friday, August 13th, 2021 at 5:01 PM, Aki Tuomi <aki.tuomi at open-xchange.com> wrote:

> It seems to use -L/Library/MWSrvrSrvcs/openssl/lib, does this contain some broken libssl?
>
> Aki
>
> > On 13/08/2021 19:00 Beosdoc beosdoc at hotmail.com wrote:
> >
> > If I remove the rpath from the makefile in the lib-ssl-iostream directory it will compile. This shouldn’t cause it not to compile. There are several directories that have rpath in the makefile. Also, putting --disable-rpath in the configure string doesn’t work. I also need rpath as the files are not in the standard path locations.
> >
> > > On Aug 4, 2021, at 12:30 PM, Beosdoc beosdoc at hotmail.com wrote:
> > >
> > > Hi,
> > >
> > > I’m trying to compile Dovecot 2.3.15 on a Intel Mac with Big Sur and Xcode 12.5.1 with command line. I’ve compiled openSSL -1.1.1k in its own directory and pointed dovecot to use that directory. I’m getting undefined symbols during the linking (see below). I’ve been trying to figure out what’s missing but not having any luck
> > >
> > > Here’s the configure:
> > >
> > > CPPFLAGS="-I/Library/MWSrvrSrvcs/openssl/include" LDFLAGS="-L/Library/MWSrvrSrvcs/openssl/lib" ./configure --prefix=/Library/MWSrvrSrvcs/dovecot --with-ssl=openssl --with-gnu-ld --with-pgsql=auto --with-mysql=auto --with-sqlite=auto --with-gssapi=yes --with-ldap=auto --with-solr=no --with-libwrap=auto --with-ioloop=no --with-bzlib --with-zlib --with-notify=no --without-shared-libs --sysconfdir=/Library/MWSrvrSrvcs/Mail/Config --datadir=/Library/MWSrvrSrvcs/Mail/Data
> > >
> > > Here’s where it errors out:
> > >
> > > /bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -g -O2 -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -Wno-duplicate-decl-specifier -Wstrict-aliasing=2 -module -avoid-version -L/Library/MWSrvrSrvcs/openssl/lib -o libssl_iostream_openssl.la -rpath /Library/MWSrvrSrvcs/dovecot/lib/dovecot dovecot-openssl-common.lo iostream-openssl.lo iostream-openssl-common.lo iostream-openssl-context.lo istream-openssl.lo ostream-openssl.lo -lssl -lcrypto
> > >
> > > libtool: link: gcc -o .libs/libssl_iostream_openssl.so -bundle .libs/dovecot-openssl-common.o .libs/iostream-openssl.o .libs/iostream-openssl-common.o .libs/iostream-openssl-context.o .libs/istream-openssl.o .libs/ostream-openssl.o -L/Library/MWSrvrSrvcs/openssl/lib -lssl -lcrypto -g -O2 -fstack-protector-strong
> > >
> > > Undefined symbols for architecture x86_64:
> > >
> > > "_buffer_append", referenced from:
> > >
> > > _openssl_iostream_error in iostream-openssl-common.o
> > >
> > > _o_stream_ssl_sendv in ostream-openssl.o
> > >
> > > "_buffer_create_dynamic", referenced from:
> > >
> > > _o_stream_ssl_sendv in ostream-openssl.o
> > >
> > > "_buffer_delete", referenced from:
> > >
> > > _o_stream_ssl_flush_buffer in ostream-openssl.o
> > >
> > > "_buffer_free", referenced from:
> > >
> > > _o_stream_ssl_destroy in ostream-openssl.o
> > >
> > > "_buffer_get_writable_size", referenced from:
> > >
> > > _o_stream_ssl_sendv in ostream-openssl.o
> > >
> > > _o_stream_ssl_get_buffer_avail_size in ostream-openssl.o
> > >
> > > "_default_pool", referenced from:
> > >
> > > _openssl_iostream_set_error in iostream-openssl.o
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > _openssl_iostream_handle_error in iostream-openssl.o
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > _openssl_iostream_set_log_prefix in iostream-openssl.o
> > >
> > > _openssl_iostream_free in iostream-openssl.o
> > >
> > > ...
> > >
> > > "_i_debug", referenced from:
> > >
> > > _openssl_iostream_set_error in iostream-openssl.o
> > >
> > > _openssl_iostream_handle_error in iostream-openssl.o
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > _openssl_info_callback in iostream-openssl.o
> > >
> > > _openssl_iostream_verify_client_cert in iostream-openssl.o
> > >
> > > _ssl_iostream_context_init_common in iostream-openssl-context.o
> > >
> > > _ssl_servername_callback in iostream-openssl-context.o
> > >
> > > ...
> > >
> > > "_i_error", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > _ssl_tmp_dh_callback in iostream-openssl-context.o
> > >
> > > "_i_fatal", referenced from:
> > >
> > > _ssl_iostream_openssl_init in iostream-openssl.o
> > >
> > > _ssl_iostream_context_init_common in iostream-openssl-context.o
> > >
> > > _ssl_ctx_use_certificate_chain in iostream-openssl-context.o
> > >
> > > "_i_fatal_status", referenced from:
> > >
> > > _dovecot_openssl_malloc in dovecot-openssl-common.o
> > >
> > > _dovecot_openssl_realloc in dovecot-openssl-common.o
> > >
> > > _openssl_iostream_error in iostream-openssl-common.o
> > >
> > > "_i_info", referenced from:
> > >
> > > _openssl_iostream_verify_client_cert in iostream-openssl.o
> > >
> > > "_i_panic", referenced from:
> > >
> > > _dovecot_openssl_common_global_unref in dovecot-openssl-common.o
> > >
> > > _openssl_iostream_shutdown in iostream-openssl.o
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > _openssl_iostream_handle_error in iostream-openssl.o
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > _openssl_iostream_unref in iostream-openssl.o
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > ...
> > >
> > > "_i_strdup", referenced from:
> > >
> > > _openssl_iostream_set_error in iostream-openssl.o
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > _openssl_iostream_handle_error in iostream-openssl.o
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > _openssl_iostream_set_log_prefix in iostream-openssl.o
> > >
> > > _openssl_iostream_verify_client_cert in iostream-openssl.o
> > >
> > > ...
> > >
> > > "_i_strdup_printf", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_i_stream_alloc", referenced from:
> > >
> > > _i_stream_ssl_read in istream-openssl.o
> > >
> > > "_i_stream_close", referenced from:
> > >
> > > _openssl_iostream_shutdown in iostream-openssl.o
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > _i_stream_ssl_close in istream-openssl.o
> > >
> > > "_i_stream_create", referenced from:
> > >
> > > _openssl_i_stream_create_ssl in istream-openssl.o
> > >
> > > (maybe you meant: _openssl_i_stream_create_ssl)
> > >
> > > "_i_stream_free_buffer", referenced from:
> > >
> > > _i_stream_ssl_destroy in istream-openssl.o
> > >
> > > "_i_stream_get_data", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_i_stream_get_data_size", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > _i_stream_ssl_read in istream-openssl.o
> > >
> > > "_i_stream_get_error", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_i_stream_get_fd", referenced from:
> > >
> > > _openssl_i_stream_create_ssl in istream-openssl.o
> > >
> > > "_i_stream_get_name", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_i_stream_get_root_io", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_i_stream_read_data", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_i_stream_ref", referenced from:
> > >
> > > _openssl_o_stream_create_ssl in ostream-openssl.o
> > >
> > > "_i_stream_set_input_pending", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_i_stream_set_name", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_i_stream_skip", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_i_stream_try_alloc", referenced from:
> > >
> > > _i_stream_ssl_read in istream-openssl.o
> > >
> > > "_i_stream_unref", referenced from:
> > >
> > > _openssl_iostream_free in iostream-openssl.o
> > >
> > > _o_stream_ssl_destroy in ostream-openssl.o
> > >
> > > "_i_strocpy", referenced from:
> > >
> > > _pem_password_callback in iostream-openssl-context.o
> > >
> > > "_io_stream_set_error", referenced from:
> > >
> > > _i_stream_ssl_read in istream-openssl.o
> > >
> > > _o_stream_ssl_flush in ostream-openssl.o
> > >
> > > _o_stream_ssl_flush_buffer in ostream-openssl.o
> > >
> > > "_iostream_ssl_module_init", referenced from:
> > >
> > > _ssl_iostream_openssl_init in iostream-openssl.o
> > >
> > > "_o_stream_close", referenced from:
> > >
> > > _openssl_iostream_shutdown in iostream-openssl.o
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > _o_stream_ssl_close in ostream-openssl.o
> > >
> > > "_o_stream_cork", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_o_stream_create", referenced from:
> > >
> > > _openssl_o_stream_create_ssl in ostream-openssl.o
> > >
> > > (maybe you meant: _openssl_o_stream_create_ssl)
> > >
> > > "_o_stream_flush", referenced from:
> > >
> > > _openssl_iostream_shutdown in iostream-openssl.o
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > _plain_flush_callback in ostream-openssl.o
> > >
> > > "_o_stream_get_buffer_avail_size", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_o_stream_get_buffer_used_size", referenced from:
> > >
> > > _o_stream_ssl_flush in ostream-openssl.o
> > >
> > > _o_stream_ssl_get_buffer_used_size in ostream-openssl.o
> > >
> > > "_o_stream_get_error", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_o_stream_get_fd", referenced from:
> > >
> > > _openssl_o_stream_create_ssl in ostream-openssl.o
> > >
> > > "_o_stream_get_name", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_o_stream_ref", referenced from:
> > >
> > > _plain_flush_callback in ostream-openssl.o
> > >
> > > "_o_stream_send", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > "_o_stream_set_flush_callback", referenced from:
> > >
> > > _openssl_o_stream_create_ssl in ostream-openssl.o
> > >
> > > "_o_stream_set_flush_pending", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > _o_stream_ssl_sendv in ostream-openssl.o
> > >
> > > _o_stream_ssl_flush in ostream-openssl.o
> > >
> > > _o_stream_ssl_flush_pending in ostream-openssl.o
> > >
> > > _plain_flush_callback in ostream-openssl.o
> > >
> > > "_o_stream_set_max_buffer_size", referenced from:
> > >
> > > _o_stream_ssl_set_max_buffer_size in ostream-openssl.o
> > >
> > > "_o_stream_set_name", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_o_stream_set_no_error_handling", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_o_stream_switch_ioloop_to", referenced from:
> > >
> > > _o_stream_ssl_switch_ioloop_to in ostream-openssl.o
> > >
> > > "_o_stream_uncork", referenced from:
> > >
> > > _openssl_iostream_bio_sync in iostream-openssl.o
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_o_stream_unref", referenced from:
> > >
> > > _openssl_iostream_free in iostream-openssl.o
> > >
> > > _plain_flush_callback in ostream-openssl.o
> > >
> > > "_pool_alloconly_create", referenced from:
> > >
> > > _ssl_iostream_context_init_common in iostream-openssl-context.o
> > >
> > > "_safe_memset", referenced from:
> > >
> > > _openssl_iostream_load_key in iostream-openssl-context.o
> > >
> > > "_ssl_iostream_check_cert_validity", referenced from:
> > >
> > > _openssl_iostream_handshake in iostream-openssl.o
> > >
> > > "_ssl_iostream_context_ref", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > _openssl_iostream_change_context in iostream-openssl.o
> > >
> > > "_ssl_iostream_context_unref", referenced from:
> > >
> > > _openssl_iostream_change_context in iostream-openssl.o
> > >
> > > _openssl_iostream_free in iostream-openssl.o
> > >
> > > _openssl_iostream_context_init_client in iostream-openssl-context.o
> > >
> > > _openssl_iostream_context_init_server in iostream-openssl-context.o
> > >
> > > "_ssl_iostream_handshake", referenced from:
> > >
> > > _openssl_iostream_shutdown in iostream-openssl.o
> > >
> > > _openssl_iostream_more in iostream-openssl.o
> > >
> > > "_ssl_iostream_has_valid_client_cert", referenced from:
> > >
> > > _openssl_iostream_cert_match_name in iostream-openssl.o
> > >
> > > _openssl_iostream_get_peer_name in iostream-openssl.o
> > >
> > > "_ssl_iostream_settings_init_from", referenced from:
> > >
> > > _ssl_iostream_context_init_common in iostream-openssl-context.o
> > >
> > > "_ssl_iostream_unref", referenced from:
> > >
> > > _openssl_iostream_destroy in iostream-openssl.o
> > >
> > > _i_stream_ssl_destroy in istream-openssl.o
> > >
> > > _o_stream_ssl_destroy in ostream-openssl.o
> > >
> > > "_str_c", referenced from:
> > >
> > > _openssl_iostream_error in iostream-openssl-common.o
> > >
> > > "_str_printfa", referenced from:
> > >
> > > _openssl_iostream_error in iostream-openssl-common.o
> > >
> > > "_t_malloc0", referenced from:
> > >
> > > _openssl_iostream_get_peer_name in iostream-openssl.o
> > >
> > > _openssl_iostream_error in iostream-openssl-common.o
> > >
> > > "_t_str_new", referenced from:
> > >
> > > _openssl_iostream_error in iostream-openssl-common.o
> > >
> > > "_t_strconcat", referenced from:
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > "_t_strdup_noconst", referenced from:
> > >
> > > _openssl_iostream_use_certificate in iostream-openssl.o
> > >
> > > _openssl_iostream_load_key in iostream-openssl-context.o
> > >
> > > _ssl_iostream_context_init_common in iostream-openssl-context.o
> > >
> > > _ssl_ctx_use_certificate_chain in iostream-openssl-context.o
> > >
> > > "_t_strdup_printf", referenced from:
> > >
> > > _dovecot_openssl_common_global_set_engine in dovecot-openssl-common.o
> > >
> > > _openssl_iostream_handle_error in iostream-openssl.o
> > >
> > > _openssl_iostream_create in iostream-openssl.o
> > >
> > > _openssl_iostream_get_security_string in iostream-openssl.o
> > >
> > > _openssl_iostream_use_certificate in iostream-openssl.o
> > >
> > > _openssl_iostream_verify_client_cert in iostream-openssl.o
> > >
> > > _openssl_cert_match_name in iostream-openssl-common.o
> > >
> > > ...
> > >
> > > ld: symbol(s) not found for architecture x86_64
> > >
> > > clang: error: linker command failed with exit code 1 (use -v to see invocation)
> > >
> > > make[3]: *** [libssl_iostream_openssl.la] Error 1
> > >
> > > make[2]: *** [all-recursive] Error 1
> > >
> > > make[1]: *** [all-recursive] Error 1
> > >
> > > make: *** [all] Error 2
> > >
> > > Thanks
> > >
> > > Mitch


More information about the dovecot mailing list