#30811 was intended to address #30799. However, it introduced several unforeseen consequences, including #31957 and #31204.
This PR takes an alternative approach to resolving #30799 and reverts #30811.
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/34116.
See the guideline for information on the review process.
| Type | Reviewers |
|---|---|
| Concept ACK | arejula27 |
If your review is incorrectly listed, please copy-paste <!–meta-tag:bot-skip–> into the comment that the bot should ignore.
No conflicts as of last run.
This reverts commit 01a7298818d7bd66bb8c800d7cd30ae0a4d3b1d1.
This reverts commit 788c1324f3d840f7a39b8bc3537dcff26ca0b552.
concept ACK [4d79472fe6956caa901f3c8fc872f34c8dc9d682] This PR attempts to solve issue #31204 as PR #34081; however, this PR also solves #30799. I would prefer this one for the following reasons:
WITH_CCACHE=ON).bitcoind binary, while this one also works for other binaries such as test_bitcoin. This has been verified: 0$ gdb build/bin/test_bitcoin 13:56
1
2(gdb) b addrman_tests.cpp:32
3Breakpoint 1 at 0xe08ae: file ./src/test/addrman_tests.cpp, line 32.
4(gdb) run
5Starting program: /home/arejula27/workspaces/bitcoin/build/bin/test_bitcoin
6
7Running 688 test cases...
8
9Breakpoint 1, GetCheckRatio (node_ctx=...) at ./src/test/addrman_tests.cpp:32
1032 return std::clamp<int32_t>(node_ctx.args->GetIntArg("-checkaddrman", 100), 0, 1000000);
11Missing rpms, try: dnf --enablerepo='*debug*' install libevent-debuginfo-2.1.12-15.fc42.x86_64 sqlite-libs-debuginfo-3.47.2-5.fc42.x86_64 capnproto-libs-debuginfo-1.0.1-5.fc42.x86_64 libstdc++-debuginfo-15.2.1-4.fc42.x86_64 glibc-debuginfo-2.41-11.fc42.x86_64 libgcc-debuginfo-15.2.1-4.fc42.x86_64 zlib-ng-compat-debuginfo-2.2.5-2.fc42.x86_64
I have also inspected the debug symbols and these changes keeps relative paths as it is recommended on the conversation had on the issues mentioned before:
0$ objdump -g ./build/bin/bitcoind | grep -A5 -B5 "src/"
1
2 <29531d3> DW_AT_name : (indirect line string, offset: 0x5cdc): ./src/wallet/init.cpp
3 <29531d7> DW_AT_comp_dir : (indirect line string, offset: 0x13): ./build/src
28+ IF_CHECK_PASSED "-fdebug-prefix-map=${PROJECT_SOURCE_DIR}=."
29+ )
30+ try_append_cxx_flags("-fmacro-prefix-map=A=B" TARGET core_interface SKIP_LINK
31+ IF_CHECK_PASSED "-fmacro-prefix-map=${PROJECT_SOURCE_DIR}=."
32+ )
33+ endif()
Can you explain why this is being added and why it is safe to do so?
Maybe I am missing something obvious, or maybe I am misunderstanding how the logic here works. Though, it would help review if there was a summary of what scenarios you are trying to fix, which scenarios are left as-is, and which scenarios will be broken by this change.
If the goal here is to “fix debugging info”, but it remains broken when using ccache, without an obvious rationale, that doesn’t seem ideal.