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

Improve performance disabling asserts and using LTO #1938

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

julianmesa-gitkraken
Copy link
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
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-assigned this Sep 29, 2022
@julianmesa-gitkraken
Copy link
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
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
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.

None yet

2 participants