Skip to content

Improve performance disabling asserts and using LTO#1938

Open
julianmesa-gitkraken wants to merge 2 commits intonodegit:masterfrom
julianmesa-gitkraken:remove-asserts-add-lto
Open

Improve performance disabling asserts and using LTO#1938
julianmesa-gitkraken wants to merge 2 commits intonodegit:masterfrom
julianmesa-gitkraken:remove-asserts-add-lto

Conversation

@julianmesa-gitkraken
Copy link
Copy Markdown
Contributor

This PR will need also this electron-npg-automator PR

Compile differences in Release mode:

  • Linux

Before:
cc -o Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o ../vendor/libgit2/src/allocators/failalloc.c '-DNODE_GYP_MODULE_NAME=libgit2' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DV8_COMPRESS_POINTERS' '-DV8_31BIT_SMIS_ON_64BIT_ARCH' '-DV8_REVERSE_JSARGS' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DOPENSSL_NO_ASM' '-DGIT_THREADS' '-DGIT_SSH' '-DGIT_SSH_MEMORY_CREDENTIALS' '-DLIBGIT2_NO_FEATURES_H' '-DGIT_SHA1_COLLISIONDETECT' '-DGIT_USE_NSEC' '-DGIT_HTTPS' '-DSRC_UTIL_H_' '-DGIT_ARCH_64' '-DGIT_NTLM' '-DGIT_GSSAPI' '-DGIT_REGEX_BUILTIN' '-DGIT_OPENSSL' '-DGIT_USE_FUTIMENS' '-DGIT_USE_STAT_MTIM' '-DHTTP_PARSER_STRICT=0' -I/home/julian/.cache/node-gyp/13.6.7/include/node -I/home/julian/.cache/node-gyp/13.6.7/src -I/home/julian/.cache/node-gyp/13.6.7/deps/openssl/config -I/home/julian/.cache/node-gyp/13.6.7/deps/openssl/openssl/include -I/home/julian/.cache/node-gyp/13.6.7/deps/uv/include -I/home/julian/.cache/node-gyp/13.6.7/deps/zlib -I/home/julian/.cache/node-gyp/13.6.7/deps/v8/include -I../vendor/libgit2/include -I../vendor/libgit2/src -I../vendor/libgit2/deps/ntlmclient -I../vendor/libgit2/deps/pcre -I../vendor/libgit2/deps/zlib -I../vendor/http_parser -I../vendor/libssh2/include -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -Wno-missing-field-initializers -Wno-unused-variable -Wno-deprecated-declarations -O3 -fno-omit-frame-pointer -MMD -MF ./Release/.deps/Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o.d.raw -c

After:
cc -o Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o ../vendor/libgit2/src/allocators/failalloc.c '-DNODE_GYP_MODULE_NAME=libgit2' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DV8_COMPRESS_POINTERS' '-DV8_31BIT_SMIS_ON_64BIT_ARCH' '-DV8_REVERSE_JSARGS' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DOPENSSL_NO_ASM' '-DGIT_THREADS' '-DGIT_SSH' '-DGIT_SSH_MEMORY_CREDENTIALS' '-DLIBGIT2_NO_FEATURES_H' '-DGIT_SHA1_COLLISIONDETECT' '-DGIT_USE_NSEC' '-DGIT_HTTPS' '-DSRC_UTIL_H_' '-DGIT_ARCH_64' '-DGIT_NTLM' '-DGIT_GSSAPI' '-DGIT_REGEX_BUILTIN' '-DGIT_OPENSSL' '-DGIT_USE_FUTIMENS' '-DGIT_USE_STAT_MTIM' '-DHTTP_PARSER_STRICT=0' '-DNDEBUG' -I/home/julian/.cache/node-gyp/13.6.7/include/node -I/home/julian/.cache/node-gyp/13.6.7/src -I/home/julian/.cache/node-gyp/13.6.7/deps/openssl/config -I/home/julian/.cache/node-gyp/13.6.7/deps/openssl/openssl/include -I/home/julian/.cache/node-gyp/13.6.7/deps/uv/include -I/home/julian/.cache/node-gyp/13.6.7/deps/zlib -I/home/julian/.cache/node-gyp/13.6.7/deps/v8/include -I../vendor/libgit2/include -I../vendor/libgit2/src -I../vendor/libgit2/deps/ntlmclient -I../vendor/libgit2/deps/pcre -I../vendor/libgit2/deps/zlib -I../vendor/http_parser -I../vendor/libssh2/include -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -Wno-missing-field-initializers -Wno-unused-variable -Wno-deprecated-declarations -flto -O3 -fno-omit-frame-pointer -MMD -MF ./Release/.deps/Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o.d.raw -c

Notice new -flto and -DNDEBUG options

  • Windows

Before:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\CL.exe /c /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\include\node" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\src" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\openssl\config" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\openssl\openssl\include" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\uv\include" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\zlib" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\v8\include" /Z7 /nologo /W3 /WX- /diagnostics:column /MP1 /Ox /Ob2 /Oi /Ot /Oy /D NODE_GYP_MODULE_NAME=pcre /D USING_UV_SHARED=1 /D USING_V8_SHARED=1 /D V8_DEPRECATION_WARNINGS=1 /D V8_DEPRECATION_WARNINGS /D V8_IMMINENT_DEPRECATION_WARNINGS /D V8_COMPRESS_POINTERS /D V8_31BIT_SMIS_ON_64BIT_ARCH /D V8_REVERSE_JSARGS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _HAS_EXCEPTIONS=0 /D OPENSSL_NO_PINSHARED /D OPENSSL_THREADS /D OPENSSL_NO_ASM /D HAVE_SYS_STAT_H /D HAVE_SYS_TYPES_H /D HAVE_WINDOWS_H /D HAVE_STDINT_H /D HAVE_INTTYPES_H /D HAVE_MEMMOVE /D HAVE_STRERROR /D HAVE_STRTOLL /D HAVE__STRTOI64 /D SUPPORT_PCRE8 /D NO_RECURSE /D HAVE_LONG_LONG /D HAVE_UNSIGNED_LONG_LONG /D NEWLINE=10 /D POSIX_MALLOC_THRESHOLD=10 /D LINK_SIZE=2 /D PARENS_NEST_LIMIT=250 /D MATCH_LIMIT=10000000 /D MATCH_LIMIT_RECURSION=10000000 /D PCREGREP_BUFSIZE /D MAX_NAME_SIZE=32 /D MAX_NAME_COUNT=10000 /D "HOST_BINARY=\"node.exe\"" /GF /Gm- /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR- /Fo"Release\obj\pcre\\vendor\libgit2\deps\pcre\pcre_byte_order.obj" /Fd"C:\Proyectos\nodegit\build\Release\pcre.pdb" /external:W3 /Gd /TC /wd4351 /wd4355 /wd4800 /wd4251 /wd4275 /wd4244 /wd4267 /FC /errorReport:queue ..\..\vendor\libgit2\deps\pcre\pcre_byte_order .c

After:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\CL.exe /c /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\include\node" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\src" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\openssl\config" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\openssl\openssl\include" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\uv\include" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\zlib" /I"C:\Users\Julian\AppData\Local\node-gyp\Cache\13.6.7\deps\v8\include" /Z7 /nologo /W3 /WX- /diagnostics:column /MP1 /Ox /Ob2 /Oi /Ot /Oy /GL /D NODE_GYP_MODULE_NAME=pcre /D USING_UV_SHARED=1 /D USING_V8_SHARED=1 /D V8_DEPRECATION_WARNINGS=1 /D V8_DEPRECATION_WARNINGS /D V8_IMMINENT_DEPRECATION_WARNINGS /D V8_COMPRESS_POINTERS /D V8_31BIT_SMIS_ON_64BIT_ARCH /D V8_REVERSE_JSARGS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _HAS_EXCEPTIONS=0 /D OPENSSL_NO_PINSHARED /D OPENSSL_THREADS /D OPENSSL_NO_ASM /D HAVE_SYS_STAT_H /D HAVE_SYS_TYPES_H /D HAVE_WINDOWS_H /D HAVE_STDINT_H /D HAVE_INTTYPES_H /D HAVE_MEMMOVE /D HAVE_STRERROR /D HAVE_STRTOLL /D HAVE__STRTOI64 /D SUPPORT_PCRE8 /D NO_RECURSE /D HAVE_LONG_LONG /D HAVE_UNSIGNED_LONG_LONG /D NEWLINE=10 /D POSIX_MALLOC_THRESHOLD=10 /D LINK_SIZE=2 /D PARENS_NEST_LIMIT=250 /D MATCH_LIMIT=10000000 /D MATCH_LIMIT_RECURSION=10000000 /D PCREGREP_BUFSIZE /D MAX_NAME_SIZE=32 /D MAX_NAME_COUNT=10000 /D "HOST_BINARY=\"node.exe\"" /D NDEBUG /GF /Gm- /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR- /Fo"Release\obj\pcre\\vendor\libgit2\deps\pcre\pcre_byte_order.obj" /Fd"C:\Proyectos\nodegit\build\Release\pcre.pdb" /external:W3 /Gd /TC /wd4351 /wd4355 /wd4800 /wd4251 /wd4275 /wd4244 /wd4267 /FC /errorReport:queue ..\..\vendor\libgit2\deps\pcre\pcre_byte_order .c

Notice new /GL and /D NDEBUG options

  • MacOS

Before:
cc -o Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o ../vendor/libgit2/src/allocators/failalloc.c '-DNODE_GYP_MODULE_NAME=libgit2' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DGIT_THREADS' '-DGIT_SSH' '-DGIT_SSH_MEMORY_CREDENTIALS' '-DLIBGIT2_NO_FEATURES_H' '-DGIT_SHA1_COLLISIONDETECT' '-DGIT_USE_NSEC' '-DGIT_HTTPS' '-DSRC_UTIL_H_' '-DGIT_ARCH_64' '-DGIT_SECURE_TRANSPORT' '-DGIT_USE_STAT_MTIMESPEC' '-DGIT_REGEX_REGCOMP_L' '-DGIT_USE_ICONV' '-DGIT_NTLM' '-DGIT_GSSAPI' '-DHTTP_PARSER_STRICT=0' -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/include/node -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/src -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/openssl/config -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/openssl/openssl/include -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/uv/include -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/zlib -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/v8/include -I../vendor/libgit2/include -I../vendor/libgit2/src -I../vendor/libgit2/deps/ntlmclient -I../vendor/libgit2/deps/zlib -I../vendor/http_parser -I../vendor/libssh2/include -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-variable -Wno-deprecated-declarations -Wno-uninitialized -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o.d.raw -c

After:
cc -o Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o ../vendor/libgit2/src/allocators/failalloc.c '-DNODE_GYP_MODULE_NAME=libgit2' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DGIT_THREADS' '-DGIT_SSH' '-DGIT_SSH_MEMORY_CREDENTIALS' '-DLIBGIT2_NO_FEATURES_H' '-DGIT_SHA1_COLLISIONDETECT' '-DGIT_USE_NSEC' '-DGIT_HTTPS' '-DSRC_UTIL_H_' '-DGIT_ARCH_64' '-DGIT_SECURE_TRANSPORT' '-DGIT_USE_STAT_MTIMESPEC' '-DGIT_REGEX_REGCOMP_L' '-DGIT_USE_ICONV' '-DGIT_NTLM' '-DGIT_GSSAPI' '-DHTTP_PARSER_STRICT=0' '-DNDEBUG' -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/include/node -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/src -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/openssl/config -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/openssl/openssl/include -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/uv/include -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/zlib -I/Users/julianmesa/Library/Caches/node-gyp/14.19.0/deps/v8/include -I../vendor/libgit2/include -I../vendor/libgit2/src -I../vendor/libgit2/deps/ntlmclient -I../vendor/libgit2/deps/zlib -I../vendor/http_parser -I../vendor/libssh2/include -O3 -gdwarf-2 -flto -mmacosx-version-min=10.13 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-variable -Wno-deprecated-declarations -Wno-uninitialized -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/libgit2/vendor/libgit2/src/allocators/failalloc.o.d.raw -c

Notice new -flto and -DNDEBUG options

@ianhattendorf
Copy link
Copy Markdown
Member

What's the output of ldd nodegit.node before and after? We generally build on older compilers/libraries to ensure the binary runs on older flavors of Linux.

@ianhattendorf ianhattendorf self-requested a review September 29, 2022 15:41
@ianhattendorf ianhattendorf self-assigned this Sep 29, 2022
@julianmesa-gitkraken
Copy link
Copy Markdown
Contributor Author

ldd nodegit.node

ldd nodegit.node before:

       linux-vdso.so.1 => linux-vdso.so.1 (0x00007ffe3e5d2000)
       libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007f78cd711000)
       libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007f78cd638000)
       libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007f78cd608000)
       libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007f78cd602000)
       libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f78cd3cb000)
       libm.so.6 => /usr/lib/libm.so.6 (0x00007f78cd2e3000)
       libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f78cd2c1000)
       libc.so.6 => /usr/lib/libc.so.6 (0x00007f78cd0da000)
       /usr/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f78cdd0c000)
       libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007f78cd0cb000)
       libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007f78cd0c4000)
       libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f78cd0b2000)

ldd nodegit.node after:

        linux-vdso.so.1 => linux-vdso.so.1 (0x00007fff86711000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007fe43d3ae000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007fe43d2d5000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007fe43d2a5000)
        libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007fe43d29f000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fe43d068000)
        libm.so.6 => /usr/lib/libm.so.6 (0x00007fe43cf80000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fe43cf5e000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007fe43cd77000)
        /usr/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fe43d949000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007fe43cd68000)
        libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007fe43cd61000)
        libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007fe43cd4f000)

@ianhattendorf
Copy link
Copy Markdown
Member

OK that looks good, what about

  • strings /usr/lib/libstdc++.so.6 | grep libstdc++.so.6
  • strings /usr/lib/libstdc++.so.6 | grep LIBCXX

And forgot to clarify: this (and the previous ldd command) should be from the ubuntu:16.04 container.

@julianmesa-gitkraken
Copy link
Copy Markdown
Contributor Author

ldd nodegit.node

Ubuntu 16.04:
ldd nodegit.node before:

	linux-vdso.so.1 =>  (0x00007ffda0f7f000)
	libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f6773244000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f6772ec2000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6772ca5000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f67728db000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f67739e8000)
	libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f6772609000)
	libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f67723da000)
	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f67721d6000)
	libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f6771fcb000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6771cc2000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6771aac000)
	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f67718a8000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f677168d000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6771489000)

ldd nodegit.node after:

        linux-vdso.so.1 =>  (0x00007ffc8bfbd000)
	libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f986276f000)
	libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f986249d000)
	libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f986226e000)
	libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f986206a000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9861ce8000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f98619df000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f98617c9000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f98615ac000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f98611e2000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f9862ed6000)
	libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f9860fd7000)
	libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f9860dd3000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f9860bb8000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f98609b4000)

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep libstdc++.so.6

libstdc++.so.6
libstdc++.so.6.0.21

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep LIBCXX

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_DEBUG_MESSAGE_LENGTH

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

Successfully merging this pull request may close these issues.

2 participants