diff options
author | fanquake <fanquake@gmail.com> | 2022-05-30 15:59:43 +0100 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2022-06-11 14:55:13 +0100 |
commit | fbae8c59a2c3f102828a91ee0dbd6017daa1f4fb (patch) | |
tree | d5dbd8b08555fda9830101b55fbfa70571bb13c9 /src/bitcoin-cli.cpp | |
parent | b71d37da2c8c8d2a9cef020731767a6929db54b4 (diff) |
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-cli.cpp')
-rw-r--r-- | src/bitcoin-cli.cpp | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index b9e5a81f8d..0db2b75384 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -9,6 +9,7 @@ #include <chainparamsbase.h> #include <clientversion.h> +#include <compat.h> #include <compat/stdin.h> #include <policy/feerate.h> #include <rpc/client.h> @@ -1212,19 +1213,11 @@ static int CommandLineRPC(int argc, char *argv[]) return nRet; } -#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[]) +MAIN_FUNCTION { +#ifdef WIN32 util::WinCmdLineArgs winArgs; std::tie(argc, argv) = winArgs.get(); -#else -int main(int argc, char* argv[]) -{ #endif SetupEnvironment(); if (!SetupNetworking()) { |