build: default to DWARF v4 when debugging #25901

pull fanquake wants to merge 1 commits into bitcoin:master from fanquake:default_dwarf_v4 changing 1 files +4 −4
  1. fanquake commented at 1:54 PM on August 22, 2022: member

    Modern compilers all default to v4, and more recent ones, i.e Clang 14+ and GCC 11+ default to v5.

    Clang 14

    The default DWARF version has increased from DWARFv4 to DWARFv5.

    GCC 11:

    For targets that produce DWARF debugging information GCC now defaults to DWARF version 5.

    One noticable difference will be a decent disk space saving when debugging, i.e on master using:

    ./autogen.sh && ./configure --enable-debug && make src/bitcoind -j9 && ls -lhS src/

    total 929M
    322M libbitcoin_node.a
    176M libbitcoin_wallet.a
    144M bitcoind
    67M libbitcoin_common.a
    44M libbitcoin_util.a
    15M libbitcoin_node_a-net_processing.o
    14M libbitcoin_node_a-validation.o
    

    vs with -g4

    total 800M
    270M libbitcoin_node.a
    153M libbitcoin_wallet.a
    141M bitcoind
    58M libbitcoin_common.a
    31M libbitcoin_util.a
    14M libbitcoin_node_a-net_processing.o
    13M libbitcoin_node_a-validation.o
    

    Guix Build (arm64):

    0abad61bdf0e757d2f4f6d945da4beb045f90b9e68b1922df3eeb24f15a5b700  guix-build-a311688d84c3/output/arm-linux-gnueabihf/SHA256SUMS.part
    e7ce2d49aff36e2834f44bb3b22a7a49075f3758d17a5061ecefb543d6471aa0  guix-build-a311688d84c3/output/arm-linux-gnueabihf/bitcoin-a311688d84c3-arm-linux-gnueabihf-debug.tar.gz
    67496cec78dd5cece5aa9595854919dd2c6a1a0285aa11c619126f98f2bc1419  guix-build-a311688d84c3/output/arm-linux-gnueabihf/bitcoin-a311688d84c3-arm-linux-gnueabihf.tar.gz
    271296b6f06c874ea7554aacdc647017af0fa0b8dbaa9849329c573fb78f7426  guix-build-a311688d84c3/output/arm64-apple-darwin/SHA256SUMS.part
    3bff26302f8a31736d091c3294b578d2609b6bbf1f5b4aabb9f874aec37cb1b6  guix-build-a311688d84c3/output/arm64-apple-darwin/bitcoin-a311688d84c3-arm64-apple-darwin-unsigned.dmg
    e68dd5624eb67a0e97ed1ff42765e13358dfd7c83a16d19c481200ebd9b67619  guix-build-a311688d84c3/output/arm64-apple-darwin/bitcoin-a311688d84c3-arm64-apple-darwin-unsigned.tar.gz
    79ff48de1bbad90e2b784a62e0aa2a9f0812ac67b7756c4bb5473af6f2165ab2  guix-build-a311688d84c3/output/arm64-apple-darwin/bitcoin-a311688d84c3-arm64-apple-darwin.tar.gz
    b0769e1833cd320e6510b0f1d1608668e1905b000c407b371352e58b950fb39a  guix-build-a311688d84c3/output/dist-archive/bitcoin-a311688d84c3.tar.gz
    037445d35ccf861c3b05af6620687ac5278356b46e214fe8a68749226078c38d  guix-build-a311688d84c3/output/powerpc64-linux-gnu/SHA256SUMS.part
    2b6a751a3c1640945736163c454cff49ce25d65a61ed74b7409c60821ed1426b  guix-build-a311688d84c3/output/powerpc64-linux-gnu/bitcoin-a311688d84c3-powerpc64-linux-gnu-debug.tar.gz
    a42c00aab9f9f4e4df9c6c979f05e2a1d7208469a670b6582185aba9813ab9e3  guix-build-a311688d84c3/output/powerpc64-linux-gnu/bitcoin-a311688d84c3-powerpc64-linux-gnu.tar.gz
    0f45067b7fc0515f5af33b40ac1779e63ea503c686796f2722630dc63f35474b  guix-build-a311688d84c3/output/powerpc64le-linux-gnu/SHA256SUMS.part
    897a4bb8db26a3062c7c91f51a2a5acff69d5e263d1a4c2c30de11bc8d399ede  guix-build-a311688d84c3/output/powerpc64le-linux-gnu/bitcoin-a311688d84c3-powerpc64le-linux-gnu-debug.tar.gz
    975cc767bc21e30addb11f6ec9eacb7039494937a366610a5334d291ad0f637e  guix-build-a311688d84c3/output/powerpc64le-linux-gnu/bitcoin-a311688d84c3-powerpc64le-linux-gnu.tar.gz
    ea80f4125e084304025613a03db453cef1848935f473e4a211f56e9c15337a11  guix-build-a311688d84c3/output/riscv64-linux-gnu/SHA256SUMS.part
    f5ee00f1979617a31eb4417d986578d91dfe9255fa973b5b8641f2325426a913  guix-build-a311688d84c3/output/riscv64-linux-gnu/bitcoin-a311688d84c3-riscv64-linux-gnu-debug.tar.gz
    4df25281746ec129a301e1fa806e27216e89dbaae4a67f018194637f75dfa19b  guix-build-a311688d84c3/output/riscv64-linux-gnu/bitcoin-a311688d84c3-riscv64-linux-gnu.tar.gz
    aac09474a619f9aa737d6a5804d6eb7a0c18fc1792786e58e64b5b1affe80a7f  guix-build-a311688d84c3/output/x86_64-apple-darwin/SHA256SUMS.part
    69a28b242236013f47033ad9410168dc6f98728625f674ea8b76efbb67b97bdc  guix-build-a311688d84c3/output/x86_64-apple-darwin/bitcoin-a311688d84c3-x86_64-apple-darwin-unsigned.dmg
    68fda2c3096b9ee70ef25a86da3b8718a7081f02a63902d4092c646fccaf5435  guix-build-a311688d84c3/output/x86_64-apple-darwin/bitcoin-a311688d84c3-x86_64-apple-darwin-unsigned.tar.gz
    ffd0f5454539e058500e55e71f35aecb305e65217954428683f2c0a007df2747  guix-build-a311688d84c3/output/x86_64-apple-darwin/bitcoin-a311688d84c3-x86_64-apple-darwin.tar.gz
    c08d17d4cd77a5eef268015785383ffdd79cccc20a051885b98ddca6e88c360e  guix-build-a311688d84c3/output/x86_64-linux-gnu/SHA256SUMS.part
    a0ceab31ac4255c00c04a9289aa41aff38f03a87d7024076148e8d8ed030589e  guix-build-a311688d84c3/output/x86_64-linux-gnu/bitcoin-a311688d84c3-x86_64-linux-gnu-debug.tar.gz
    4af89f9478c8d5b30b2a093ec49aa94e247c74d13607a715bc56b4ee334a7b69  guix-build-a311688d84c3/output/x86_64-linux-gnu/bitcoin-a311688d84c3-x86_64-linux-gnu.tar.gz
    800c09c37b8a8332c259e977a4144c71fed8cc02db621d377092ed53f642aac0  guix-build-a311688d84c3/output/x86_64-w64-mingw32/SHA256SUMS.part
    951341baa4f0f53e6a2d2ac7d57536c10b5771b7b21b7a9879c05861320eef7a  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64-debug.zip
    40dd5ad171727ddbfdd79aacc6542a7202492c7f988c3a0e52e8e1df86e6fed2  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64-setup-unsigned.exe
    e5c6b247283ba44a6c4d58e8684ab28e6d6da373bf8ef33a595e480ee6a8dc36  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64-unsigned.tar.gz
    249d54d80b35befee2c4c29074804a8cbc32ace3da9ab5775e4f818c56f159f6  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64.zip
    
  2. build: default to DWARF v4 when debugging
    Modern compilers all default to v4, and more recent ones, i.e Clang 14+
    and GCC 11+ now default to v5.
    
    One noticable difference will be a decent disk space saving when
    debugging, i.e on master using
    
    ./autogen.sh && ./configure —enable-debug &&
    make src/bitcoind -j9 && cd src && ls -lhS
    
    ```bash
    total 929M
    322M libbitcoin_node.a
    176M libbitcoin_wallet.a
    144M bitcoind
    67M libbitcoin_common.a
    44M libbitcoin_util.a
    15M libbitcoin_node_a-net_processing.o
    14M libbitcoin_node_a-validation.o
    ```
    
    vs with -g4
    
    ```bash
    total 800M
    270M libbitcoin_node.a
    153M libbitcoin_wallet.a
    141M bitcoind
    58M libbitcoin_common.a
    31M libbitcoin_util.a
    14M libbitcoin_node_a-net_processing.o
    13M libbitcoin_node_a-validation.o
    ```
    a311688d84
  3. fanquake added the label Build system on Aug 22, 2022
  4. MarcoFalke commented at 2:45 PM on August 22, 2022: member

    Can you revert #24735 now?

  5. fanquake commented at 2:49 PM on August 22, 2022: member

    Can you revert #24735 now?

    Only if we started using --enable-debug in the valgrind job. Otherwise the use of plain -g will still default to dwarf 5 with Clang 14.

  6. fanquake commented at 3:02 PM on August 22, 2022: member

    Just tested building valgrind master branch and then running on a binary built with Clang 14 & -g (dwarf 5) and it looks like the issue we are working around in our config will be solved with the release of valgrind 3.20. Guessing the relevant upstream commit is: https://sourceware.org/git/?p=valgrind.git;a=commit;h=61dfba4232d795c00603c74e6d0573f2d16641e2.

  7. jarolrod commented at 3:21 PM on August 23, 2022: member

    GUIX hashes

    x86:

    $ find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
    
    ac39fc472305a33e87168f5e983ff8689c398ea86822791b052d4c595beae986  guix-build-a311688d84c3/output/aarch64-linux-gnu/SHA256SUMS.part
    914a361d9339f05fcd6135b6e3650dc8ac37ffa64dc14c4d86731d2395bf1086  guix-build-a311688d84c3/output/aarch64-linux-gnu/bitcoin-a311688d84c3-aarch64-linux-gnu-debug.tar.gz
    da779323c3bb9438ad61bead176b6484d0f73d4a0b90e930ece2f19218d08514  guix-build-a311688d84c3/output/aarch64-linux-gnu/bitcoin-a311688d84c3-aarch64-linux-gnu.tar.gz
    0abad61bdf0e757d2f4f6d945da4beb045f90b9e68b1922df3eeb24f15a5b700  guix-build-a311688d84c3/output/arm-linux-gnueabihf/SHA256SUMS.part
    e7ce2d49aff36e2834f44bb3b22a7a49075f3758d17a5061ecefb543d6471aa0  guix-build-a311688d84c3/output/arm-linux-gnueabihf/bitcoin-a311688d84c3-arm-linux-gnueabihf-debug.tar.gz
    67496cec78dd5cece5aa9595854919dd2c6a1a0285aa11c619126f98f2bc1419  guix-build-a311688d84c3/output/arm-linux-gnueabihf/bitcoin-a311688d84c3-arm-linux-gnueabihf.tar.gz
    271296b6f06c874ea7554aacdc647017af0fa0b8dbaa9849329c573fb78f7426  guix-build-a311688d84c3/output/arm64-apple-darwin/SHA256SUMS.part
    3bff26302f8a31736d091c3294b578d2609b6bbf1f5b4aabb9f874aec37cb1b6  guix-build-a311688d84c3/output/arm64-apple-darwin/bitcoin-a311688d84c3-arm64-apple-darwin-unsigned.dmg
    e68dd5624eb67a0e97ed1ff42765e13358dfd7c83a16d19c481200ebd9b67619  guix-build-a311688d84c3/output/arm64-apple-darwin/bitcoin-a311688d84c3-arm64-apple-darwin-unsigned.tar.gz
    79ff48de1bbad90e2b784a62e0aa2a9f0812ac67b7756c4bb5473af6f2165ab2  guix-build-a311688d84c3/output/arm64-apple-darwin/bitcoin-a311688d84c3-arm64-apple-darwin.tar.gz
    b0769e1833cd320e6510b0f1d1608668e1905b000c407b371352e58b950fb39a  guix-build-a311688d84c3/output/dist-archive/bitcoin-a311688d84c3.tar.gz
    037445d35ccf861c3b05af6620687ac5278356b46e214fe8a68749226078c38d  guix-build-a311688d84c3/output/powerpc64-linux-gnu/SHA256SUMS.part
    2b6a751a3c1640945736163c454cff49ce25d65a61ed74b7409c60821ed1426b  guix-build-a311688d84c3/output/powerpc64-linux-gnu/bitcoin-a311688d84c3-powerpc64-linux-gnu-debug.tar.gz
    a42c00aab9f9f4e4df9c6c979f05e2a1d7208469a670b6582185aba9813ab9e3  guix-build-a311688d84c3/output/powerpc64-linux-gnu/bitcoin-a311688d84c3-powerpc64-linux-gnu.tar.gz
    0f45067b7fc0515f5af33b40ac1779e63ea503c686796f2722630dc63f35474b  guix-build-a311688d84c3/output/powerpc64le-linux-gnu/SHA256SUMS.part
    897a4bb8db26a3062c7c91f51a2a5acff69d5e263d1a4c2c30de11bc8d399ede  guix-build-a311688d84c3/output/powerpc64le-linux-gnu/bitcoin-a311688d84c3-powerpc64le-linux-gnu-debug.tar.gz
    975cc767bc21e30addb11f6ec9eacb7039494937a366610a5334d291ad0f637e  guix-build-a311688d84c3/output/powerpc64le-linux-gnu/bitcoin-a311688d84c3-powerpc64le-linux-gnu.tar.gz
    ea80f4125e084304025613a03db453cef1848935f473e4a211f56e9c15337a11  guix-build-a311688d84c3/output/riscv64-linux-gnu/SHA256SUMS.part
    f5ee00f1979617a31eb4417d986578d91dfe9255fa973b5b8641f2325426a913  guix-build-a311688d84c3/output/riscv64-linux-gnu/bitcoin-a311688d84c3-riscv64-linux-gnu-debug.tar.gz
    4df25281746ec129a301e1fa806e27216e89dbaae4a67f018194637f75dfa19b  guix-build-a311688d84c3/output/riscv64-linux-gnu/bitcoin-a311688d84c3-riscv64-linux-gnu.tar.gz
    aac09474a619f9aa737d6a5804d6eb7a0c18fc1792786e58e64b5b1affe80a7f  guix-build-a311688d84c3/output/x86_64-apple-darwin/SHA256SUMS.part
    69a28b242236013f47033ad9410168dc6f98728625f674ea8b76efbb67b97bdc  guix-build-a311688d84c3/output/x86_64-apple-darwin/bitcoin-a311688d84c3-x86_64-apple-darwin-unsigned.dmg
    68fda2c3096b9ee70ef25a86da3b8718a7081f02a63902d4092c646fccaf5435  guix-build-a311688d84c3/output/x86_64-apple-darwin/bitcoin-a311688d84c3-x86_64-apple-darwin-unsigned.tar.gz
    ffd0f5454539e058500e55e71f35aecb305e65217954428683f2c0a007df2747  guix-build-a311688d84c3/output/x86_64-apple-darwin/bitcoin-a311688d84c3-x86_64-apple-darwin.tar.gz
    c08d17d4cd77a5eef268015785383ffdd79cccc20a051885b98ddca6e88c360e  guix-build-a311688d84c3/output/x86_64-linux-gnu/SHA256SUMS.part
    a0ceab31ac4255c00c04a9289aa41aff38f03a87d7024076148e8d8ed030589e  guix-build-a311688d84c3/output/x86_64-linux-gnu/bitcoin-a311688d84c3-x86_64-linux-gnu-debug.tar.gz
    4af89f9478c8d5b30b2a093ec49aa94e247c74d13607a715bc56b4ee334a7b69  guix-build-a311688d84c3/output/x86_64-linux-gnu/bitcoin-a311688d84c3-x86_64-linux-gnu.tar.gz
    800c09c37b8a8332c259e977a4144c71fed8cc02db621d377092ed53f642aac0  guix-build-a311688d84c3/output/x86_64-w64-mingw32/SHA256SUMS.part
    951341baa4f0f53e6a2d2ac7d57536c10b5771b7b21b7a9879c05861320eef7a  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64-debug.zip
    40dd5ad171727ddbfdd79aacc6542a7202492c7f988c3a0e52e8e1df86e6fed2  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64-setup-unsigned.exe
    e5c6b247283ba44a6c4d58e8684ab28e6d6da373bf8ef33a595e480ee6a8dc36  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64-unsigned.tar.gz
    249d54d80b35befee2c4c29074804a8cbc32ace3da9ab5775e4f818c56f159f6  guix-build-a311688d84c3/output/x86_64-w64-mingw32/bitcoin-a311688d84c3-win64.zip
    

    arm64:

    
    
  8. hebasto commented at 7:39 AM on August 26, 2022: member

    Concept ACK.

  9. in configure.ac:383 in a311688d84
     382 | -  dnl Prefer -g3, fall back to -g if that is unavailable.
     383 | +  dnl Prefer -g4, fall back to -g if that is unavailable.
     384 |    AX_CHECK_COMPILE_FLAG(
     385 | -    [-g3],
     386 | -    [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -g3"],
     387 | +    [-g4],
    


    hebasto commented at 8:04 AM on August 26, 2022:

    I'm confused.

    The -g4 sets debug information level 4, not DWARF version 4. And gcc-11 on Ubuntu 22.04 reports g++: error: debug output level '4' is too high.


    fanquake commented at 8:30 AM on August 31, 2022:

    Yes this isn't correct, and should just be left as-is.

  10. fanquake closed this on Aug 31, 2022

  11. bitcoin locked this on Aug 31, 2023
  12. fanquake deleted the branch on Sep 11, 2023

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-26 06:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me