summaryrefslogtreecommitdiffstats
path: root/lld/lib/Driver/WinLinkDriver.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2015-04-11 01:32:52 +0000
committerNico Weber <nicolasweber@gmx.de>2015-04-11 01:32:52 +0000
commitd9a21bf93a07994f1564ae3941d95c667cbde448 (patch)
treec0fcc3171d6d8f903b0df5edca57b5d276353d00 /lld/lib/Driver/WinLinkDriver.cpp
parent620d0ce55c5f8f797a292c7c5e01d1906bc148e5 (diff)
downloadbcm5719-llvm-d9a21bf93a07994f1564ae3941d95c667cbde448.tar.gz
bcm5719-llvm-d9a21bf93a07994f1564ae3941d95c667cbde448.zip
Revert r234649 "PECOFF: Use C++11 braced init list to make Version objects."
This doesn't compile with MSVC 2013: include\lld/ReaderWriter/PECOFFLinkingContext.h(356) : error C2797: 'lld::PECOFFLinkingContext::_imageVersion': list initialization inside member initializer list or non-static data member initializer is not implemented include\lld/ReaderWriter/PECOFFLinkingContext.h(357) : error C2797: 'lld::PECOFFLinkingContext::_imageVersion': list initialization inside member initializer list or non-static data member initializer is not implemented llvm-svn: 234676
Diffstat (limited to 'lld/lib/Driver/WinLinkDriver.cpp')
-rw-r--r--lld/lib/Driver/WinLinkDriver.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/lld/lib/Driver/WinLinkDriver.cpp b/lld/lib/Driver/WinLinkDriver.cpp
index aef9a3d0127..7bc26bb24b0 100644
--- a/lld/lib/Driver/WinLinkDriver.cpp
+++ b/lld/lib/Driver/WinLinkDriver.cpp
@@ -132,7 +132,7 @@ static bool parseMemoryOption(StringRef arg, uint64_t &reserve,
// Parse an argument for /version or /subsystem. The expected string is
// "<integer>[.<integer>]".
-static bool parseVersion(StringRef arg, int &major, int &minor) {
+static bool parseVersion(StringRef arg, uint32_t &major, uint32_t &minor) {
StringRef majorVersion, minorVersion;
std::tie(majorVersion, minorVersion) = arg.split('.');
if (minorVersion.empty())
@@ -166,12 +166,12 @@ static llvm::COFF::WindowsSubsystem stringToWinSubsystem(StringRef str) {
// "subsystem_name[,majorOSVersion[.minorOSVersion]]".
static bool parseSubsystem(StringRef arg,
llvm::COFF::WindowsSubsystem &subsystem,
- llvm::Optional<int> &major,
- llvm::Optional<int> &minor, raw_ostream &diag) {
+ llvm::Optional<uint32_t> &major,
+ llvm::Optional<uint32_t> &minor, raw_ostream &diag) {
StringRef subsystemStr, osVersion;
std::tie(subsystemStr, osVersion) = arg.split(',');
if (!osVersion.empty()) {
- int v1, v2;
+ uint32_t v1, v2;
if (!parseVersion(osVersion, v1, v2))
return false;
major = v1;
@@ -1005,10 +1005,10 @@ bool WinLinkDriver::parse(int argc, const char *argv[],
}
if (auto *arg = parsedArgs->getLastArg(OPT_version)) {
- int major, minor;
+ uint32_t major, minor;
if (!parseVersion(arg->getValue(), major, minor))
return false;
- ctx.setImageVersion({major, minor});
+ ctx.setImageVersion(PECOFFLinkingContext::Version(major, minor));
}
// Parse /merge:<from>=<to>.
@@ -1026,12 +1026,12 @@ bool WinLinkDriver::parse(int argc, const char *argv[],
// Parse /subsystem:<subsystem>[,<majorOSVersion>[.<minorOSVersion>]].
if (auto *arg = parsedArgs->getLastArg(OPT_subsystem)) {
llvm::COFF::WindowsSubsystem subsystem;
- llvm::Optional<int> major, minor;
+ llvm::Optional<uint32_t> major, minor;
if (!parseSubsystem(arg->getValue(), subsystem, major, minor, diag))
return false;
ctx.setSubsystem(subsystem);
if (major.hasValue())
- ctx.setMinOSVersion({*major, *minor});
+ ctx.setMinOSVersion(PECOFFLinkingContext::Version(*major, *minor));
}
// Parse /section:name,[[!]{DEKPRSW}]
@@ -1143,7 +1143,8 @@ bool WinLinkDriver::parse(int argc, const char *argv[],
if (name->getBaseAddress() && ctx.getBaseAddress())
ctx.setBaseAddress(name->getBaseAddress());
} else if (auto *ver = dyn_cast<moduledef::Version>(dir)) {
- ctx.setImageVersion({ver->getMajorVersion(), ver->getMinorVersion()});
+ ctx.setImageVersion(PECOFFLinkingContext::Version(
+ ver->getMajorVersion(), ver->getMinorVersion()));
} else {
llvm::dbgs() << static_cast<int>(dir->getKind()) << "\n";
llvm_unreachable("Unknown module-definition directive.\n");
OpenPOWER on IntegriCloud