aboutsummaryrefslogtreecommitdiff
path: root/src/bitcoin-util.cpp
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2022-05-30 15:59:43 +0100
committerfanquake <fanquake@gmail.com>2022-06-11 14:55:13 +0100
commitfbae8c59a2c3f102828a91ee0dbd6017daa1f4fb (patch)
treed5dbd8b08555fda9830101b55fbfa70571bb13c9 /src/bitcoin-util.cpp
parentb71d37da2c8c8d2a9cef020731767a6929db54b4 (diff)
downloadbitcoin-fbae8c59a2c3f102828a91ee0dbd6017daa1f4fb.tar.xz
compat: Consolidate mingw-w64 ASLR workaround for upstream libsecp changes
Achieve this by adding a MAIN_FUNCTION macro, consolidating the docs, and introducing the macro across our distributed binaries. Also update the docs to explain that anyone using binutils < 2.36 is effected by this issue. Release builds are not, because they use binutils 2.37. Currently LTS Linux distros, like Ubuntu Focal, ship with 2.34. https://packages.ubuntu.com/focal/binutils
Diffstat (limited to 'src/bitcoin-util.cpp')
-rw-r--r--src/bitcoin-util.cpp12
1 files changed, 2 insertions, 10 deletions
diff --git a/src/bitcoin-util.cpp b/src/bitcoin-util.cpp
index 1aeac3cef0..1739804edb 100644
--- a/src/bitcoin-util.cpp
+++ b/src/bitcoin-util.cpp
@@ -11,6 +11,7 @@
#include <chainparams.h>
#include <chainparamsbase.h>
#include <clientversion.h>
+#include <compat.h>
#include <core_io.h>
#include <streams.h>
#include <util/system.h>
@@ -142,16 +143,7 @@ static int Grind(const std::vector<std::string>& args, std::string& strPrint)
return EXIT_SUCCESS;
}
-#ifdef WIN32
-// Export main() and ensure working ASLR on Windows.
-// Exporting a symbol will prevent the linker from stripping
-// the .reloc section from the binary, which is a requirement
-// for ASLR. This is a temporary workaround until a fixed
-// version of binutils is used for releases.
-__declspec(dllexport) int main(int argc, char* argv[])
-#else
-int main(int argc, char* argv[])
-#endif
+MAIN_FUNCTION
{
ArgsManager& args = gArgs;
SetupEnvironment();