Running bolt on arm64-linux envoy fails:
git clone https://github.com/envoyproxy/envoy.git cd envoy ./ci/run_envoy_docker.sh 'BAZEL_BUILD_EXTRA_OPTIONS="--copt=-gdwarf-4 --linkopt=-Wl,--emit-relocs" ./ci/do_ci.sh bazel.release.server_only' cd /tmp/envoy-docker-build/envoy/source/exe/envoy perf2bolt -p ~/perf.data -o ~/perf.fdata --nl envoy
This fails in lib/Profile/DataAggregator.cpp with:
PERF2BOLT-ERROR: could not find a profile matching binary "envoy". Profile for the following binary name(s) is available:
The following condition does not match:
if (alignDown(SegInfo.FileOffset, SegInfo.Alignment) == FileOffset) (gdb) p /x FileOffset $1 = 0x14ec000 (gdb) p /x SegInfo.FileOffset $2 = 0x14ec000 (gdb) p /x SegInfo.Alignment $3 = 0x10000
The patch checks the equality of SegInfo.FileOffset and FileOffset when both are
alignDown by SegInfo.Alignment:
(gdb) p /x alignDown(SegInfo.FileOffset, SegInfo.Alignment) $4 = 0x14e0000 (gdb) p /x alignDown(FileOffset, SegInfo.Alignment) $5 = 0x14e0000