Browse Source

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.
Bill Hoffman 10 years ago
parent
commit
75004280af
2 changed files with 3 additions and 1 deletions
  1. 1 1
      Source/bindexplib.cxx
  2. 2 0
      Tests/RunCMake/AutoExportDll/sub/sub.cxx

+ 1 - 1
Source/bindexplib.cxx

@@ -422,7 +422,7 @@ DumpFile(const char* filename,
          DumpSymbols<cmANON_OBJECT_HEADER_BIGOBJ, cmIMAGE_SYMBOL_EX>
            symbolDumper((cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase, symbols,
                         dataSymbols,
-                        (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64));
+                        (h->Machine == IMAGE_FILE_MACHINE_AMD64));
          symbolDumper.DumpObjFile();
       } else {
          printf("unrecognized file format in '%s'\n", filename);

+ 2 - 0
Tests/RunCMake/AutoExportDll/sub/sub.cxx

@@ -1,4 +1,6 @@
+#include <stdio.h>
 int sub()
 {
+  printf("");
   return 10;
 }