Page MenuHomePhabricator

build: add -Wl,-z,separate-code to hardening flags
ClosedPublic

Authored by PiRK on Apr 5 2023, 09:42.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABCd3250362b342: build: add -Wl,-z,separate-code to hardening flags
Summary

This flag was added to binutils/ld in the 2.30 release, see commit c11c786f0b45617bb8807ab6a57220d5ff50e414:

The new "-z separate-code" option will generate separate code LOAD segment which must be in wholly disjoint pages from any other data.

It was made the default for Linux/x86 targets in the 2.31 release, see commit f6aec96dce1ddbd8961a3aa8a2925db2021719bb:

This patch adds --enable-separate-code to ld configure to turn on -z separate-code by default and enables it by default for Linux/x86.
This avoids mixing code pages with data to improve cache performnce as well as security.

To reduce x86-64 executable and shared object sizes, the maximum page size is reduced from 2MB to 4KB when -z separate-code is turned on by default. Note: -z max-page-size= can be used to set the maximum page size.

We compared SPEC CPU 2017 performance before and after this change on Skylake server. There are no any significant performance changes. Everything is mostly below +/-1%.

Support was also added to LLVMs lld: https://reviews.llvm.org/D64903, however
there is remains off by default.

There were concerns about an increase in binary size, however in our case, the
increase (1 page worth of bytes) would seem negligible, given we are shipping a
multi-megabyte binary, which then downloads 100's of GBs of data.

Also note that most recent versions of distros are shipping a new enough version
of binutils that this is available and/or on by default (assuming the distro has
not turned it off, I haven't checked everywhere):

CentOS 8: 2.30
Debian Buster 2.31.1
Fedora 29: 2.31.1
FreeBSD: 2.33
GNU Guix: 2.33 / 2.34
Ubuntu 18.04: 2.30

Related threads / discussion:
https://bugzilla.redhat.com/show_bug.cgi?id=1623218

This is a partial backport of core#19525
https://github.com/bitcoin/bitcoin/pull/19525/commits/2e9e6377f10ab1ca5021f6ec964d22161469ba60
Depends on D13576

Test Plan
cmake -GNinja .. -DENABLE_HARDENING=ON -DUSE_LINKER=
ninja all check-all

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

PiRK requested review of this revision.Apr 5 2023, 09:42

Tail of the build log:

/usr/bin/ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status
[426/478] Automatic MOC for target bitcoin-qt-base
[427/478] Generating forms/ui_addressbookpage.h
[428/478] Generating forms/ui_askpassphrasedialog.h
[429/478] Generating forms/ui_coincontroldialog.h
[430/478] Generating forms/ui_createwalletdialog.h
[431/478] Generating forms/ui_editaddressdialog.h
[432/478] Generating forms/ui_helpmessagedialog.h
[433/478] Generating forms/ui_intro.h
[434/478] Generating forms/ui_modaloverlay.h
[435/478] Generating forms/ui_openuridialog.h
[436/478] Generating forms/ui_overviewpage.h
[437/478] Generating forms/ui_optionsdialog.h
[438/478] Generating forms/ui_receiverequestdialog.h
[439/478] Generating forms/ui_receivecoinsdialog.h
[440/478] Generating forms/ui_transactiondescdialog.h
[441/478] Generating forms/ui_signverifymessagedialog.h
[442/478] Generating forms/ui_debugwindow.h
[443/478] Generating forms/ui_sendcoinsdialog.h
[444/478] Generating forms/ui_sendcoinsentry.h
[445/478] Generating qrc_bitcoin.cpp
[446/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/networkstyle.cpp.o
[447/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/csvmodelwriter.cpp.o
[448/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinaddressvalidator.cpp.o
[449/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinamountfield.cpp.o
[450/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinunits.cpp.o
[451/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/modaloverlay.cpp.o
[452/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/notificator.cpp.o
[453/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bantablemodel.cpp.o
[454/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[455/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[456/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[457/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[458/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[459/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[460/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[461/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/intro.cpp.o
[462/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[463/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[464/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[465/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[466/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[467/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[468/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[469/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[470/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[471/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[472/478] Linking CXX static library src/qt/libbitcoin-qt-base.a
[473/478] Automatic MOC for target bitcoin-qt
[474/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[475/478] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[476/478] Linking CXX executable src/qt/bitcoin-qt
FAILED: src/qt/bitcoin-qt 
: && /usr/bin/c++ -Werror -g -O2 -fuse-ld=gold -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -fPIE -pie src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o -o src/qt/bitcoin-qt  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  src/qt/libbitcoin-qt-base.a  src/libserver.a  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/secp256k1/libsecp256k1.a  src/leveldb/libmemenv.a  /usr/lib/x86_64-linux-gnu/libevent_pthreads.so  /usr/lib/x86_64-linux-gnu/libminiupnpc.so  /usr/lib/x86_64-linux-gnu/libnatpmp.so  src/zmq/libzmq.a  src/leveldb/libleveldb.a  src/leveldb/libleveldb-sse4.2.a  /usr/lib/x86_64-linux-gnu/libzmq.so  src/librpcclient.a  src/libutil.a  /usr/lib/x86_64-linux-gnu/libevent.so  src/univalue/libunivalue.a  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.74.0  /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.2  /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -ldl  -pthread  /usr/lib/x86_64-linux-gnu/libprotobuf.so && :
/usr/bin/ld.gold: separate-code: unknown -z option
/usr/bin/ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

Tail of the build log:

[484/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/networkstyle.cpp.o
[485/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[486/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/intro.cpp.o
[487/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/modaloverlay.cpp.o
[488/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[489/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[490/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[491/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[492/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[493/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[494/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[495/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[496/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[497/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[498/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addressbookpage.cpp.o
[499/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroltreewidget.cpp.o
[500/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[501/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[502/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/createwalletdialog.cpp.o
[503/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addresstablemodel.cpp.o
[504/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/askpassphrasedialog.cpp.o
[505/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[506/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/editaddressdialog.cpp.o
[507/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/openuridialog.cpp.o
[508/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrimagewidget.cpp.o
[509/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroldialog.cpp.o
[510/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/overviewpage.cpp.o
[511/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receiverequestdialog.cpp.o
[512/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentserver.cpp.o
[513/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receivecoinsdialog.cpp.o
[514/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionfilterproxy.cpp.o
[515/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/recentrequeststablemodel.cpp.o
[516/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsentry.cpp.o
[517/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/signverifymessagedialog.cpp.o
[518/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsdialog.cpp.o
[519/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondesc.cpp.o
[520/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionrecord.cpp.o
[521/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiontablemodel.cpp.o
[522/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionview.cpp.o
[523/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletframe.cpp.o
[524/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodeltransaction.cpp.o
[525/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletcontroller.cpp.o
[526/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentrequestplus.cpp.o
[527/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodel.cpp.o
[528/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletview.cpp.o
[529/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondescdialog.cpp.o
[530/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[531/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[532/538] Linking CXX static library src/qt/libbitcoin-qt-base.a
[533/538] Automatic MOC for target bitcoin-qt
[534/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[535/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[536/538] Linking CXX executable src/qt/bitcoin-qt
FAILED: src/qt/bitcoin-qt 
: && /usr/bin/c++ -Werror -g -O2 -fuse-ld=gold -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -fPIE -pie src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o -o src/qt/bitcoin-qt  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  src/qt/libbitcoin-qt-base.a  src/librpcclient.a  /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.2  /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  /usr/lib/x86_64-linux-gnu/libprotobuf.so  src/libserver.a  src/wallet/libwallet.a  src/libserver.a  src/wallet/libwallet.a  src/leveldb/libmemenv.a  /usr/lib/x86_64-linux-gnu/libevent_pthreads.so  /usr/lib/x86_64-linux-gnu/libminiupnpc.so  /usr/lib/x86_64-linux-gnu/libnatpmp.so  src/zmq/libzmq.a  src/leveldb/libleveldb.a  src/leveldb/libleveldb-sse4.2.a  /usr/lib/x86_64-linux-gnu/libzmq.so  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/libutil.a  /usr/lib/x86_64-linux-gnu/libevent.so  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.74.0  src/secp256k1/libsecp256k1.a  src/univalue/libunivalue.a  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -pthread  -ldl  /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so  /usr/lib/x86_64-linux-gnu/libsqlite3.so  /usr/lib/x86_64-linux-gnu/libqrencode.so && :
/usr/bin/ld.gold: separate-code: unknown -z option
/usr/bin/ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status
ninja: build stopped: cannot make progress due to previous errors.
Build build-diff failed with exit code 1

Tail of the build log:

[484/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/modaloverlay.cpp.o
[485/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[486/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/notificator.cpp.o
[487/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[488/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[489/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[490/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[491/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[492/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[493/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[494/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[495/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[496/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[497/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[498/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addressbookpage.cpp.o
[499/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[500/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[501/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroltreewidget.cpp.o
[502/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[503/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/askpassphrasedialog.cpp.o
[504/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/createwalletdialog.cpp.o
[505/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addresstablemodel.cpp.o
[506/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/editaddressdialog.cpp.o
[507/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/openuridialog.cpp.o
[508/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroldialog.cpp.o
[509/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/overviewpage.cpp.o
[510/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrimagewidget.cpp.o
[511/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receivecoinsdialog.cpp.o
[512/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receiverequestdialog.cpp.o
[513/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/recentrequeststablemodel.cpp.o
[514/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentserver.cpp.o
[515/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsentry.cpp.o
[516/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondescdialog.cpp.o
[517/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionfilterproxy.cpp.o
[518/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/signverifymessagedialog.cpp.o
[519/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsdialog.cpp.o
[520/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionrecord.cpp.o
[521/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondesc.cpp.o
[522/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionview.cpp.o
[523/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodeltransaction.cpp.o
[524/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiontablemodel.cpp.o
[525/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletcontroller.cpp.o
[526/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletframe.cpp.o
[527/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentrequestplus.cpp.o
[528/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodel.cpp.o
[529/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletview.cpp.o
[530/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[531/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[532/538] Linking CXX static library src/qt/libbitcoin-qt-base.a
[533/538] Automatic MOC for target bitcoin-qt
[534/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[535/538] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[536/538] Linking CXX executable src/qt/bitcoin-qt
FAILED: src/qt/bitcoin-qt 
: && /usr/bin/c++ -Werror -O0 -fuse-ld=gold -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -fPIE -pie src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o -o src/qt/bitcoin-qt  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  src/qt/libbitcoin-qt-base.a  src/librpcclient.a  /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5.15.2  /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.2  /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  /usr/lib/x86_64-linux-gnu/libprotobuf.so  src/libserver.a  src/wallet/libwallet.a  src/libserver.a  src/wallet/libwallet.a  src/leveldb/libmemenv.a  /usr/lib/x86_64-linux-gnu/libevent_pthreads.so  /usr/lib/x86_64-linux-gnu/libminiupnpc.so  /usr/lib/x86_64-linux-gnu/libnatpmp.so  src/zmq/libzmq.a  src/leveldb/libleveldb.a  src/leveldb/libleveldb-sse4.2.a  /usr/lib/x86_64-linux-gnu/libzmq.so  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/libbitcoinconsensus.a  src/libscript.a  src/libcommon.a  src/libutil.a  /usr/lib/x86_64-linux-gnu/libevent.so  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.74.0  src/secp256k1/libsecp256k1.a  src/univalue/libunivalue.a  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -pthread  -ldl  /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so  /usr/lib/x86_64-linux-gnu/libsqlite3.so  /usr/lib/x86_64-linux-gnu/libqrencode.so && :
/usr/bin/ld.gold: separate-code: unknown -z option
/usr/bin/ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status
ninja: build stopped: cannot make progress due to previous errors.
Build build-debug failed with exit code 1
PiRK planned changes to this revision.Apr 5 2023, 09:49
PiRK edited the summary of this revision. (Show Details)
PiRK edited the summary of this revision. (Show Details)
This revision is now accepted and ready to land.Apr 5 2023, 14:02