diff --git a/CHANGELOG.md b/CHANGELOG.md index c9e595b7c0a..be4a72b21ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,9 @@ and this project adheres to Vsock not notifying guest about `TRANSPORT_RESET_EVENT` event after snapshot restore. This resulted in guest waiting indefinitely on a connection which was reset during snapshot creation. +- [#4790](https://github.com/firecracker-microvm/firecracker/pull/4790): v1.9.0 + was missing most of the debugging information in the debuginfo file, due to a + change in the Cargo defaults. This has been corrected. ## \[1.9.0\] diff --git a/Cargo.toml b/Cargo.toml index 1a5187f4f2f..914c4cdc87c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,3 +27,7 @@ panic = "abort" [profile.release] panic = "abort" lto = true +strip = "none" + +[profile.bench] +strip = "debuginfo" diff --git a/tests/integration_tests/functional/test_binary.py b/tests/integration_tests/functional/test_binary.py new file mode 100644 index 00000000000..67181bd3edb --- /dev/null +++ b/tests/integration_tests/functional/test_binary.py @@ -0,0 +1,48 @@ +# Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Tests to check several aspects of the binaries""" + +import re +import subprocess + +import pytest + +from framework import utils + + +@pytest.mark.timeout(500) +def test_firecracker_binary_static_linking(microvm_factory): + """ + Test to make sure the firecracker binary is statically linked. + """ + fc_binary_path = microvm_factory.fc_binary_path + _, stdout, stderr = utils.check_output(f"file {fc_binary_path}") + assert "" in stderr + # expected "statically linked" for aarch64 and + # "static-pie linked" for x86_64 + assert "statically linked" in stdout or "static-pie linked" in stdout + + +def test_release_debuginfo(microvm_factory): + """Ensure the debuginfo file has the right ELF sections""" + fc_binary = microvm_factory.fc_binary_path + debuginfo = fc_binary.with_suffix(".debug") + stdout = subprocess.check_output( + ["readelf", "-S", str(debuginfo)], + encoding="ascii", + ) + matches = { + match[0] for match in re.findall(r"\[..] (\.(\w|\.)+)", stdout, re.MULTILINE) + } + needed_sections = { + ".debug_aranges", + ".debug_info", + ".debug_abbrev", + ".debug_line", + ".debug_frame", + ".debug_str", + ".debug_ranges", + } + missing_sections = needed_sections - matches + assert missing_sections == set() diff --git a/tests/integration_tests/functional/test_binary_static_linking.py b/tests/integration_tests/functional/test_binary_static_linking.py deleted file mode 100644 index 1c277a4d00b..00000000000 --- a/tests/integration_tests/functional/test_binary_static_linking.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# SPDX-License-Identifier: Apache-2.0 -"""Tests to check if the release binary is statically linked. - -""" - -import pytest - -from framework import utils - - -@pytest.mark.timeout(500) -def test_firecracker_binary_static_linking(microvm_factory): - """ - Test to make sure the firecracker binary is statically linked. - """ - fc_binary_path = microvm_factory.fc_binary_path - _, stdout, stderr = utils.check_output(f"file {fc_binary_path}") - assert "" in stderr - # expected "statically linked" for aarch64 and - # "static-pie linked" for x86_64 - assert "statically linked" in stdout or "static-pie linked" in stdout