Merge topic 'fix_64bit_autodef'
db7f069a
Windows: Fix 64-bit DLL module definition file generation on VS 2015
This commit is contained in:
commit
6dad4c25b0
|
@ -173,7 +173,7 @@ public:
|
|||
*/
|
||||
|
||||
DumpSymbols(ObjectHeaderType* ih,
|
||||
FILE* fout) {
|
||||
FILE* fout, bool is64) {
|
||||
this->ObjectImageHeader = ih;
|
||||
this->SymbolTable = (SymbolTableType*)
|
||||
((DWORD_PTR)this->ObjectImageHeader
|
||||
|
@ -183,6 +183,7 @@ public:
|
|||
GetSectionHeaderOffset(this->ObjectImageHeader);
|
||||
this->ImportFlag = true;
|
||||
this->SymbolCount = this->ObjectImageHeader->NumberOfSymbols;
|
||||
this->Is64Bit = is64;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -287,7 +288,14 @@ public:
|
|||
symbol.erase(posAt);
|
||||
}
|
||||
}
|
||||
if (symbol[0] == '_') symbol.erase(0,1);
|
||||
// For 64 bit builds we don't need to remove _
|
||||
if(!this->Is64Bit)
|
||||
{
|
||||
if (symbol[0] == '_')
|
||||
{
|
||||
symbol.erase(0,1);
|
||||
}
|
||||
}
|
||||
if (this->ImportFlag) {
|
||||
this->ImportFlag = false;
|
||||
fprintf(this->FileOut,"EXPORTS \n");
|
||||
|
@ -355,6 +363,7 @@ private:
|
|||
PIMAGE_SECTION_HEADER SectionHeaders;
|
||||
ObjectHeaderType* ObjectImageHeader;
|
||||
SymbolTableType* SymbolTable;
|
||||
bool Is64Bit;
|
||||
};
|
||||
|
||||
bool
|
||||
|
@ -406,7 +415,8 @@ DumpFile(const char* filename, FILE *fout)
|
|||
* and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0;
|
||||
*/
|
||||
DumpSymbols<IMAGE_FILE_HEADER, IMAGE_SYMBOL>
|
||||
symbolDumper((PIMAGE_FILE_HEADER) lpFileBase, fout);
|
||||
symbolDumper((PIMAGE_FILE_HEADER) lpFileBase, fout,
|
||||
(dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64));
|
||||
symbolDumper.DumpObjFile();
|
||||
} else {
|
||||
// check for /bigobj format
|
||||
|
@ -414,7 +424,8 @@ DumpFile(const char* filename, FILE *fout)
|
|||
(cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase;
|
||||
if(h->Sig1 == 0x0 && h->Sig2 == 0xffff) {
|
||||
DumpSymbols<cmANON_OBJECT_HEADER_BIGOBJ, cmIMAGE_SYMBOL_EX>
|
||||
symbolDumper((cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase, fout);
|
||||
symbolDumper((cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase, fout,
|
||||
(dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64));
|
||||
symbolDumper.DumpObjFile();
|
||||
} else {
|
||||
printf("unrecognized file format in '%s'\n", filename);
|
||||
|
|
Loading…
Reference in New Issue