aboutsummaryrefslogtreecommitdiff
path: root/build_msvc/common.init.vcxproj
AgeCommit message (Collapse)Author
2021-04-29Merge bitcoin/bitcoin#21045: build: adds switch to enable/disable randomized ↵W. J. van der Laan
base address in MSVC builds 9bd3f35003c2e9eff74766d57a71d6b391ab602a build: adds switch for disabling random base addresses in MSVC (Ethan Heilman) Pull request description: In m4 builds we have the --disable-hardening switch that can be given in `./configure` to turn off randomized addresses. This PR provides a simple way of turning off randomized addresses in MSVC builds. This PR: * Adds this option the common-init project file so that it can be globally set across the project * Documents this switch in msvc build readme I have run the following test to verify this works I ran the msvc build with `<RandomizedBaseAddress>true</RandomizedBaseAddress>` then checked `bitcoind.exe` and `bitcoin-cli.exe` with `dumpbin.exe`: bitcoind ``` > .\dumpbin.exe /headers src/bitcoind.exe Microsoft (R) COFF/PE Dumper Version 14.16.27045.0 ... OPTIONAL HEADER VALUES 20B magic # (PE32+) 14.28 linker version AE4600 size of code 345C00 size of initialized data 0 size of uninitialized data 6BED74 entry point (00000001406BED74) mainCRTStartup 1000 base of code 140000000 image base (0000000140000000 to 0000000140E2DFFF) 1000 section alignment 200 file alignment 6.00 operating system version 0.00 image version 6.00 subsystem version 0 Win32 version E2E000 size of image 400 size of headers 0 checksum 3 subsystem (Windows CUI) 8160 DLL characteristics High Entropy Virtual Addresses Dynamic base NX compatible Terminal Server Aware ``` bitcoin-cli ``` > .\dumpbin.exe /headers src/bitcoin-cli.exe Microsoft (R) COFF/PE Dumper Version 14.16.27045.0 ... OPTIONAL HEADER VALUES 20B magic # (PE32+) 14.28 linker version 1E3E00 size of code 92C00 size of initialized data 0 size of uninitialized data 104384 entry point (0000000140104384) mainCRTStartup 1000 base of code 140000000 image base (0000000140000000 to 0000000140279FFF) 1000 section alignment 200 file alignment 6.00 operating system version 0.00 image version 6.00 subsystem version 0 Win32 version 27A000 size of image 400 size of headers 0 checksum 3 subsystem (Windows CUI) 8160 DLL characteristics High Entropy Virtual Addresses Dynamic base NX compatible Terminal Server Aware ``` Then I built with `<RandomizedBaseAddress>false</RandomizedBaseAddress>` then checked `bitcoind.exe` and `bitcoin-cli.exe` with `dumpbin.exe` and observed that `Dynamic base` was longer listed in `OPTIONAL HEADER VALUES` bitcoind ``` PS C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64> .\dumpbin.exe /headers C:\Users\e0\Documents\GitHub\bitcoin021noaslr/src/bitcoind.exe Microsoft (R) COFF/PE Dumper Version 14.16.27045.0 ... OPTIONAL HEADER VALUES 20B magic # (PE32+) 14.28 linker version AE4600 size of code 33FE00 size of initialized data 0 size of uninitialized data 6BED74 entry point (00000001406BED74) mainCRTStartup 1000 base of code 140000000 image base (0000000140000000 to 0000000140E27FFF) 1000 section alignment 200 file alignment 6.00 operating system version 0.00 image version 6.00 subsystem version 0 Win32 version E28000 size of image 400 size of headers 0 checksum 3 subsystem (Windows CUI) 8120 DLL characteristics High Entropy Virtual Addresses NX compatible Terminal Server Aware ``` bitcoin-cli ``` > .\dumpbin.exe /headers src/bitcoin-cli.exe Microsoft (R) COFF/PE Dumper Version 14.16.27045.0 ... OPTIONAL HEADER VALUES 20B magic # (PE32+) 14.28 linker version 1E3E00 size of code 90C00 size of initialized data 0 size of uninitialized data 104384 entry point (0000000140104384) mainCRTStartup 1000 base of code 140000000 image base (0000000140000000 to 0000000140277FFF) 1000 section alignment 200 file alignment 6.00 operating system version 0.00 image version 6.00 subsystem version 0 Win32 version 278000 size of image 400 size of headers 0 checksum 3 subsystem (Windows CUI) 8120 DLL characteristics High Entropy Virtual Addresses NX compatible Terminal Server Aware ``` ACKs for top commit: sipsorcery: ACK 9bd3f35003c2e9eff74766d57a71d6b391ab602a. practicalswift: cr ACK 9bd3f35003c2e9eff74766d57a71d6b391ab602a: patch looks correct Tree-SHA512: ddffdb4ff8a09c7cfef61c07a5db2a2828e9e3aa795ad8e5a1bf51ab489a68b40f87f6694518c5e0b8858c0fad4f93bb947b052e6b9d5e55eb38e764b746fc02
2021-03-29build: Enable safe warnings for msvc buildsHennadii Stepanov
2021-02-28build: adds switch for disabling random base addresses in MSVCEthan Heilman
2021-02-23assumptions: check C++17 assumption with MSVCfanquake
From my reading of https://docs.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=msvc-160 and https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ if we set the `/Zc:__cplusplus` switch in additional options, MSVC will report the correct value for `__cplusplus`.
2020-12-02Adjusted msvc compiler and linker settings to remove optimisations that are ↵Aaron Clauson
causing sporadic ABI issues on Visual Studio updates. Tidied up debug and release configuration blocks in common project file to avoid duplication. Updated appveyor config to use latest Visual Studio 2019 image. Changed appveyor config file hash to use a new version of Qt pre-compiled binaries built for Visual Studio 2019 v16.8.1. Bumped vcpkg version to tag '2020.11-1' for binary caching feature. See #20392 for related discussion.
2020-09-29Update msvc build to use new vcpkg manifestAaron Clauson
The vcpkg tool has introduced a proper way to use manifests, https://devblogs.microsoft.com/cppblog/vcpkg-accelerate-your-team-development-environment-with-binary-caching-and-manifests/. This PR replaces the custom text file mechanism with the new manifest approach. It is planned that vckpg manifests will include the ability to version dependencies in the future. Dependency versions would solve a number of issues that currently require workarounds with the appveyor CI. Set vcpkg manifest version to 1 to avoid any perception it's related to any release or other version numbering.
2020-08-20Move Win32 defines to configure.ac to ensure they are globally definedLuke Dashjr
common.vcxproj used for MSVC builds
2020-07-04Updates msvc build to use ISO standard C++17.Aaron Clauson
2020-01-23build: remove configure checks for win libraries we don't link againstfanquake
While cross compiling, HOST=x86_64-w64-mingw32, none of these libs actually seem to be passed to the linker.
2020-01-09Ignore msvc linker warning and update to msvc build instructions.Aaron Clauson
- Update Visual Studio instructions. - Remove x64 platform conditional from bitcoin-qt project configuration. - Set use native environment toolset to fix linker warning. - Ignore linker warning about precompiled type information missing for test_bitcoin_qt.
2019-12-12Update msvc build for Visual Studio 2019 v16.4Aaron Clauson
msvc warning C4834 for the Bitcoin Core build was introduced by Visual Studio 16.4.0. This PR adds an ignore rule for the warning (it's related to the nodiscard attribute and is not considered relevant). An additional side effect of the msvc compiler update is the prebuilt Qt5.9.8 libraries cannot be linked due to being built with an earlier version of the compiler. To fix this a new Qt5.9.8 version has been compiled and the appveyor job updated to use them. The GitHub Actions job needs to continue to use the original Qt5.9.8 libraries until the latest GitHub Windows image also updates to >= Visual Studio 2019 v16.4.
2019-11-06Updated appveyor config:Aaron Clauson
- Update build image from Visual Studio 2017 to Visual Studio 2019. - Updated Qt static library from Qt5.9.7 to Qt5.9.8. - Added commands to update vcpkg port files (this does not update already installed packages). - Updated vcpkg package list as per #17309. - Removed commands setting common project file options. Now done via common.init.vcxproj include. - Changed msbuild verbosity from normal to quiet. Normal rights a LOT of logs and impacts appveyor job duration. Updated msvc project configs: - Updated platform toolset from v141 to v142. - Updated Qt static library from Qt5.9.7 to Qt5.9.8. - Added ignore for linker warning building bitcoin-qt program. - Added missing util/str.cpp class file to test_bitcoin project file.
2019-09-08Added libbitcoin_qt and bitcoin-qt to the msbuild configuration.Aaron Clauson
2019-08-28Adds an option to msbuild common configuration to ignore linker warning ↵Aaron Clauson
4221. This warning is for object files that do not include any symbols. The warning is harmless and occurs due to some classes that are *nix only having no source to compile for an msvc build.
2019-07-01[MSVC] Copy build output to src/ automatically after buildnicolas.dorier
2019-06-29[MSVC] allow user level project customizationnicolas.dorier
2019-06-20MSVC: Fix error in debug mode (Fix #16245)nicolas.dorier
2019-06-19Cleaned up and consolidated msvc build files to allow faster builds and ↵Aaron Clauson
easier migration to vs2019.
2018-08-10Visual Studio build configuration for Bitcoin CoreAaron Clauson