| Bug #91735 | Fix library dependencies when building on Solaris | ||
|---|---|---|---|
| Submitted: | 20 Jul 2018 11:28 | Modified: | 20 Jul 2018 21:28 |
| Reporter: | Tor Didriksen | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
| Version: | 8.0.13 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[20 Jul 2018 21:28]
Paul DuBois
Posted by developer: Fixed in 8.0.13. Internal issue. No changelog entry needed.
[10 Dec 2018 10:48]
Klaus Hicke
Still not fixed in 8.0.13 CE:
-bash-4.4$ md5sum mysqld
4c701144b176155bee5eea11883af691 mysqld
-bash-4.4$ ./mysqld --version
ld.so.1: mysqld: fatal: libstatomic.so.1: open failed: No such file or directory
Killed
bash-4.4$ ldd mysqld
...
libstatomic.so.1 => (file not found)
...
[11 Dec 2018 12:14]
Tor Didriksen
Posted by developer: did you actually install the compiler runtime libraries? https://docs.oracle.com/cd/E60778_01/html/E60743/gozsu.html Note that we currently use Developer Studio 12.6 $ldd bin/mysqld libstdc++.so.6 => /opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9/libstdc++.so.6 libgcc_s.so.1 => /opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9/libgcc_s.so.1 libCrunG3.so.1 => /usr/lib/64/libCrunG3.so.1 libc.so.1 => /usr/lib/64/libc.so.1 libmtmalloc.so.1 => /usr/lib/64/libmtmalloc.so.1 libssl.so.1.0.0 => /usr/lib/64/libssl.so.1.0.0 libcrypto.so.1.0.0 => /usr/lib/64/libcrypto.so.1.0.0 libm.so.2 => /usr/lib/64/libm.so.2 libstatomic.so.1 => /opt/developerstudio12.6/lib/compilers/atomic/sparcv9/libstatomic.so.1 librt.so.1 => /usr/lib/64/librt.so.1
[12 Dec 2018 7:09]
Klaus Hicke
That's what curently is installed:
~# pkg info studio-runtime
Name: system/library/studio-runtime
Summary: Runtime Support For Oracle Solaris Studio
Description: Runtime support libraries for applications built using Oracle
Solaris Studio
Category: Development/C (org.opensolaris.category.2008) Development/C++
(org.opensolaris.category.2008) Development/Fortran
(org.opensolaris.category.2008) Meta Packages/Group Packages
(org.opensolaris.category.2008)
State: Installed
Publisher: solaris
Version: 11.4
Branch: 11.4.0.0.1.4.0
Packaging Date: 9. April 2018 um 19:37:18 Uhr
Last Install Time: 10. Dezember 2018 um 10:26:13 Uhr
Size: 2.63 kB
FMRI: pkg://solaris/system/library/studio-runtime@11.4-11.4.0.0.1.4.0:20180409T193718Z
Because that's the ony thing available on "standard" Solaris installation without having set a publisher for solaris studio.
I hoped that it is not necessary to have more parts of studio installed...
So will the dependency be removed to avoid this, or shoud I just follow the instructions and install the missing deps?
[12 Dec 2018 9:02]
Tor Didriksen
Posted by developer: you need to install the missing runtime libraries
[12 Dec 2018 9:29]
Klaus Hicke
Ok. Then I will install the missing packages. I think my questions are all answered now. THX for your help!
[1 Mar 2019 10:28]
Klaus Hicke
The bug is still existing (or reinvented) in 8.0.15:
# pkg list developer/developerstudio-125/\*
NAME (PUBLISHER) VERSION IFO
developer/developerstudio-125/library/c++-libs (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/library/c-libs (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/library/f90-libs (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/library/math-libs (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/library/perflib (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/library/studio-gccrt (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/studio-common (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/studio-ja (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/studio-legal (solarisstudio) 12.5-1.0.0.0 i--
developer/developerstudio-125/studio-zhCN (solarisstudio) 12.5-1.0.0.0 i--
# ldd /u05/app/mysql/bin/mysqld
libstdc++.so.6 => /usr/lib/64/libstdc++.so.6
libgcc_s.so.1 => /usr/lib/64/libgcc_s.so.1
libCrunG3.so.1 => /usr/lib/64/libCrunG3.so.1
libc.so.1 => /lib/64/libc.so.1
libmtmalloc.so.1 => /usr/lib/64/libmtmalloc.so.1
libssl.so.1.0.0 => /lib/64/libssl.so.1.0.0
libcrypto.so.1.0.0 => /lib/64/libcrypto.so.1.0.0
libsocket.so.1 => /lib/64/libsocket.so.1
libnsl.so.1 => /lib/64/libnsl.so.1
libm.so.2 => /lib/64/libm.so.2
libstatomic.so.1 => (file not found) # <- still denpending on libstatomic instead of libatomic
librt.so.1 => /lib/64/librt.so.1
PS: we know, that we're still on DevStudio 12.5 runtime ...
[1 Mar 2019 11:18]
Tor Didriksen
Posted by developer: for 8.0.15 mysqld was built like this: /opt/developerstudio12.6/bin/CC -std=c++11 -xbuiltin=%all -xlibmil -xatomic=studio -errtags -KPIC -erroff=anonnotype,wvarhidemem,anonstruct,wlessrestrictedthrow,oklambdaretmulti,unassigned -m64 -DDBUG_OFF -g -xO2 -DNDEBUG -xdebuginfo=no%decl -L/opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9 -R/opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9 -lstdc++ -lgcc_s -lCrunG3 -lc -L/opt/developerstudio12.6/lib/compilers/atomic/sparcv9 -R/opt/developerstudio12.6/lib/compilers/atomic/sparcv9 -lmtmalloc CMakeFiles/mysqld.dir/main.cc.o -o ../runtime_output_directory/mysqld -L/opt/developerstudio12.6/lib/compilers/staticlib/sparcv9 ../archive_output_directory/libsql_main.a ../archive_output_directory/libsql_gis.a ../archive_output_directory/libbinlog.a ../archive_output_directory/librpl.a ../archive_output_directory/libmaster.a ../archive_output_directory/libslave.a ../archive_output_directory/libsql_main.a ../archive_output_directory/libsql_dd.a ../archive_output_directory/libsql_gis.a ../archive_output_directory/libmysys.a ../archive_output_directory/libmysys_ssl.a ../libbinlogevents/lib/libbinlogevents.a ../extra/icu/source/i18n/libicui18n.a ../extra/icu/source/common/libicuuc.a ../extra/icu/source/stubdata/libicustubdata.a ../archive_output_directory/libmyisammrg.a ../archive_output_directory/libblackhole.a ../archive_output_directory/libheap.a ../archive_output_directory/libinnobase.a ../archive_output_directory/liblz4_lib.a ../archive_output_directory/libperfschema.a ../archive_output_directory/libfederated.a ../archive_output_directory/libmyisam.a ../archive_output_directory/libmyisam_sys.a ../archive_output_directory/libcsv.a ../archive_output_directory/libarchive.a ../archive_output_directory/libtemptable.a ../archive_output_directory/libngram_parser.a ../archive_output_directory/libmysqlx.a ../extra/icu/source/i18n/libicui18n.a ../extra/icu/source/common/libicuuc.a ../extra/icu/source/stubdata/libicustubdata.a ../archive_output_directory/libmysqlxmessages_lite.a ../extra/protobuf/protobuf-3.6.1/cmake/libprotobuf-lite.a ../extra/libevent/lib/libevent.a ../components/mysql_server/component_mysql_server.a ../archive_output_directory/libvio.a -lssl -lcrypto -lsocket ../archive_output_directory/libmysys.a ../archive_output_directory/libdbug.a ../archive_output_directory/libmysys.a ../archive_output_directory/libdbug.a ../archive_output_directory/libz.a ../archive_output_directory/libstrings.a -lnsl -lm
[1 Mar 2019 11:20]
Tor Didriksen
Posted by developer:
I downloaded the 8.0.15 tarball, unpacked it, and notice the RPATH below, you need to install the appropriate runtime libraries.
elfdump -devl mysql-8.0.15-solaris11-sparc-64bit/bin/mysqld
ELF Header
ei_magic: { 0x7f, E, L, F }
ei_class: ELFCLASS64 ei_data: ELFDATA2MSB
ei_osabi: ELFOSABI_SOLARIS ei_abiversion: EAV_SUNW_CURRENT
e_machine: EM_SPARCV9 e_version: EV_CURRENT
e_type: ET_EXEC
e_flags: [ EF_SPARCV9_TSO EF_SPARC_SUN_US1 EF_SPARC_SUN_US3 ]
e_entry: 0x1035c4aa0 e_ehsize: 64 e_shstrndx: 38
e_shoff: 0x29f0a6a0 e_shentsize: 64 e_shnum: 42
e_phoff: 0x40 e_phentsize: 56 e_phnum: 8
mysql-8.0.15-solaris11-sparc-64bit/bin/mysqld: .exception_ranges: sh_link: 65280: does not point to a valid section
Version Needed Section: .SUNW_version
index file version
[2] libstdc++.so.6 GLIBCXX_3.4 [ INFO ]
[3] GLIBCXX_3.4.5 [ INFO ]
[4] GLIBCXX_3.4.9 [ INFO ]
[5] GLIBCXX_3.4.11 [ INFO ]
[6] GLIBCXX_3.4.13 [ INFO ]
[7] GLIBCXX_3.4.14 [ INFO ]
[8] GLIBCXX_3.4.15 [ INFO ]
[9] GLIBCXX_3.4.16 [ INFO ]
[10] GLIBCXX_3.4.17 [ INFO ]
[11] GLIBCXX_3.4.18 [ INFO ]
[12] GLIBCXX_3.4.19 [ INFO ]
[13] GLIBCXX_3.4.20 [ INFO ]
[14] GLIBCXX_3.4.21
[15] CXXABI_1.3 [ INFO ]
[16] CXXABI_1.3.1 [ INFO ]
[17] CXXABI_1.3.5 [ INFO ]
[18] CXXABI_1.3.7
[19] libgcc_s.so.1 GCC_3.0 [ INFO ]
[20] GCC_4.2.0
[21] libCrunG3.so.1 SUNW_1.1
[22] libc.so.1 SUNWpublic
[23] SUNW_1.23 [ INFO ]
[24] SUNW_1.22.7 [ INFO ]
[25] SUNW_1.22.5 [ INFO ]
[26] SUNW_1.22 [ INFO ]
[27] SUNW_1.21.2 [ INFO ]
[28] SUNW_1.21 [ INFO ]
[29] SUNW_1.19 [ INFO ]
[30] SUNW_1.18 [ INFO ]
[31] SUNW_1.1 [ INFO ]
[32] SUNW_0.9 [ INFO ]
[33] SUNW_0.7 [ INFO ]
[34] libsocket.so.1 SUNW_1.7
[35] SUNW_1.4 [ INFO ]
[36] SUNW_0.7 [ INFO ]
[37] libnsl.so.1 SUNW_1.7
[38] libm.so.2 SUNW_1.2
[39] SUNW_1.1.1 [ INFO ]
[40] SUNW_1.1 [ INFO ]
[41] libstatomic.so.1 SUNWprivate_1.0
Dynamic Section: .dynamic
index tag value
[0] NEEDED 0x151fa1b libstdc++.so.6
[1] NEEDED 0x151fb1a libgcc_s.so.1
[2] NEEDED 0x151fb3a libCrunG3.so.1
[3] NEEDED 0x151fb52 libc.so.1
[4] NEEDED 0x151fc3b libmtmalloc.so.1
[5] NEEDED 0x151fc4c libssl.so.1.0.0
[6] NEEDED 0x151fc5c libcrypto.so.1.0.0
[7] NEEDED 0x151fbcf libsocket.so.1
[8] NEEDED 0x151fbf0 libnsl.so.1
[9] NEEDED 0x151fbfc libm.so.2
[10] NEEDED 0x151fc1a libstatomic.so.1
[11] NEEDED 0x151fc6f librt.so.1
[12] INIT 0x1055b7610
[13] FINI 0x1055b8988
[14] RUNPATH 0x151fc7a /opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9:/opt/developerstudio12.6/lib/compilers/atomic/sparcv9:/opt/developerstudio12.6/lib/sparcv9:/opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9:/opt/developerstudio12.6/lib/compilers/atomic/sparcv9
[15] RPATH 0x151fc7a /opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9:/opt/developerstudio12.6/lib/compilers/atomic/sparcv9:/opt/developerstudio12.6/lib/sparcv9:/opt/developerstudio12.6/lib/compilers/CC-gcc/lib/sparcv9:/opt/developerstudio12.6/lib/compilers/atomic/sparcv9
[16] HASH 0x10009d990
[17] STRTAB 0x1007e23b0
[18] STRSZ 0x151ff7f
[19] SYMTAB 0x1002df700
[20] SYMENT 0x18
[21] SUNW_SYMTAB 0x100249358
[22] SUNW_SYMSZ 0x599058
[23] SUNW_SORTENT 0x4
[24] SUNW_SYMSORT 0x101d6d498
[25] SUNW_SYMSORTSZ 0xecaec
[26] SUNW_TLSSORT 0x101e59f88
[27] SUNW_TLSSORTSZ 0x5c
[28] CHECKSUM 0x4156
[29] VERNEED 0x101d02330
[30] VERNEEDNUM 0x8
[31] PLTRELSZ 0x48c0
[32] PLTREL 0x7
[33] JMPREL 0x101e82f98
[34] RELA 0x101e59fe8
[35] RELASZ 0x2d870
[36] RELAENT 0x18
[37] REGISTER 0xfc40
[38] REGISTER 0xfc52
[39] DEBUG 0
[40] SUNW_CAP 0x100000220
[41] FLAGS 0x10 [ STATIC_TLS ]
[42] FLAGS_1 0 0
[43] SUNW_STRPAD 0x200
[44] SUNW_LDMACH 0x2b EM_SPARCV9
[45] PLTGOT 0x1056b8c00
[46-56] NULL 0
mysql-8.0.15-solaris11-sparc-64bit/bin/mysqld: phdr[5]: PT_DYNAMIC size does not match referenced section: p_memsz=0: shdr[22: .dynamic].sh_size=0x390
[5 Mar 2019 15:08]
Klaus Hicke
Just installed Studio12.6, too. So two runtimes installed (12.5 and 12.6) and the machine can run 5.7 und 8.0...

Description: Working on the patch for Bug #28226651 ARM64: SWITCH TO ARMTOOLSET-1 ON OL7 revealed several missing dependencies when building with a non-default compiler. Similar issues applies to the Solaris/SunStudio build. Before patch: $ldd plugin_output_directory/rewriter.so libgcc_s.so.1 => /opt/developerstudio12.5/lib/compilers/CC-gcc/lib/sparcv9/libgcc_s.so.1 libstatomic.so.1 => /opt/developerstudio12.5/lib/compilers/atomic/sparcv9/libstatomic.so.1 libc.so.1 => /lib/64/libc.so.1 With patch: $ldd plugin_output_directory/rewriter.so libstdc++.so.6 => /opt/developerstudio12.5/lib/compilers/CC-gcc/lib/sparcv9/libstdc++.so.6 libgcc_s.so.1 => /opt/developerstudio12.5/lib/compilers/CC-gcc/lib/sparcv9/libgcc_s.so.1 libCrunG3.so.1 => /usr/lib/64/libCrunG3.so.1 libc.so.1 => /lib/64/libc.so.1 libstatomic.so.1 => /opt/developerstudio12.5/lib/compilers/atomic/sparcv9/libstatomic.so.1 libm.so.2 => /lib/64/libm.so.2 librt.so.1 => /lib/64/librt.so.1 Similar issues are found for plugins and components. How to repeat: Build on Solaris. Suggested fix: Maintain explicit library dependencies for CMAKE_C_LINK_FLAGS CMAKE_CXX_LINK_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS QUOTED_CMAKE_CXX_LINK_FLAGS