summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2015-11-19 17:21:03 -0500
committerBrad King <brad.king@kitware.com>2015-11-20 08:43:58 -0500
commitc7ddc5f43821039f4c005271912da30ba0f213db (patch)
treed752ec2d8c635af835bae00e36bde4d9853d822b
parentb4a2ada297214119647b26df8abe394cd73ca53a (diff)
downloadcmake-c7ddc5f43821039f4c005271912da30ba0f213db.tar.gz
Fix auto export symbols for Dlls containing /bigobj for 64bit builds.
This fixes a bug where 64 bit builds with /bigobj incorrectly determined that the object files were not 64 bit. This manifested itself with printf type functions showing up as undefined because the leading underscore was being removed and should not be removed.
-rw-r--r--Source/bindexplib.cxx2
-rw-r--r--Tests/RunCMake/AutoExportDll/sub/sub.cxx2
2 files changed, 3 insertions, 1 deletions
diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx
index dc4db6358d..b2508422fd 100644
--- a/Source/bindexplib.cxx
+++ b/Source/bindexplib.cxx
@@ -425,7 +425,7 @@ DumpFile(const char* filename, FILE *fout)
if(h->Sig1 == 0x0 && h->Sig2 == 0xffff) {
DumpSymbols<cmANON_OBJECT_HEADER_BIGOBJ, cmIMAGE_SYMBOL_EX>
symbolDumper((cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase, fout,
- (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64));
+ (h->Machine == IMAGE_FILE_MACHINE_AMD64));
symbolDumper.DumpObjFile();
} else {
printf("unrecognized file format in '%s'\n", filename);
diff --git a/Tests/RunCMake/AutoExportDll/sub/sub.cxx b/Tests/RunCMake/AutoExportDll/sub/sub.cxx
index 9766b41ecb..9a3145ec4c 100644
--- a/Tests/RunCMake/AutoExportDll/sub/sub.cxx
+++ b/Tests/RunCMake/AutoExportDll/sub/sub.cxx
@@ -1,4 +1,6 @@
+#include <stdio.h>
int sub()
{
+ printf("");
return 10;
}