-
Notifications
You must be signed in to change notification settings - Fork 937
Closed
Labels
Description
Describe the feature
Build a single async-profiler package for each of supported architectures: x64 and ARM64.
Binaries should not have external dependencies such as libstdc++ which may not present on Alpine Linux by default. The same binaries should work on any Linux distribution (Ubuntu, Amazon Linux, CentOS, Alpine) regardless of installed libc version.
Use Case
There has been many issues reported recently about glibc-musl compatibility, e.g. #948, #938, #908.
Also, there is a common ask to get rid of libstdc++ dependency: see #729, #793.
Proposed Solution
To achieve the goal of having one reasonably sized package that works both with glibc and musl and does not depend on libstdc++, we will do the following:
- Link
libstdc++
andlibgcc
statically intolibasyncProfiler.so
. - Reduce the size of
libasyncProfiler.so
with the techniques described in Get rid of libstdc++ dependency #872. - Patch
libasyncProfiler.so
to remove the dependency onld-linux-<arch>.so
. - Provide an implementation of
__sprintf_chk
as a weak symbol, since there is no such symbol in musl libc. - Cross-compile
asprof
andjfrconv
as static binaries with musl toolchain. - Allow cross-compilation for ARM64 on x64.
- Prepare a docker image with all the required tools to build async-profiler for x64 and ARM64 as described above.
korniltsev and YoniKF