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,
|
DumpSymbols(ObjectHeaderType* ih,
|
||||||
FILE* fout) {
|
FILE* fout, bool is64) {
|
||||||
this->ObjectImageHeader = ih;
|
this->ObjectImageHeader = ih;
|
||||||
this->SymbolTable = (SymbolTableType*)
|
this->SymbolTable = (SymbolTableType*)
|
||||||
((DWORD_PTR)this->ObjectImageHeader
|
((DWORD_PTR)this->ObjectImageHeader
|
||||||
@ -183,6 +183,7 @@ public:
|
|||||||
GetSectionHeaderOffset(this->ObjectImageHeader);
|
GetSectionHeaderOffset(this->ObjectImageHeader);
|
||||||
this->ImportFlag = true;
|
this->ImportFlag = true;
|
||||||
this->SymbolCount = this->ObjectImageHeader->NumberOfSymbols;
|
this->SymbolCount = this->ObjectImageHeader->NumberOfSymbols;
|
||||||
|
this->Is64Bit = is64;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -287,7 +288,14 @@ public:
|
|||||||
symbol.erase(posAt);
|
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) {
|
if (this->ImportFlag) {
|
||||||
this->ImportFlag = false;
|
this->ImportFlag = false;
|
||||||
fprintf(this->FileOut,"EXPORTS \n");
|
fprintf(this->FileOut,"EXPORTS \n");
|
||||||
@ -355,6 +363,7 @@ private:
|
|||||||
PIMAGE_SECTION_HEADER SectionHeaders;
|
PIMAGE_SECTION_HEADER SectionHeaders;
|
||||||
ObjectHeaderType* ObjectImageHeader;
|
ObjectHeaderType* ObjectImageHeader;
|
||||||
SymbolTableType* SymbolTable;
|
SymbolTableType* SymbolTable;
|
||||||
|
bool Is64Bit;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@ -406,7 +415,8 @@ DumpFile(const char* filename, FILE *fout)
|
|||||||
* and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0;
|
* and IMAGE_FILE_HEADER.SizeOfOptionalHeader == 0;
|
||||||
*/
|
*/
|
||||||
DumpSymbols<IMAGE_FILE_HEADER, IMAGE_SYMBOL>
|
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();
|
symbolDumper.DumpObjFile();
|
||||||
} else {
|
} else {
|
||||||
// check for /bigobj format
|
// check for /bigobj format
|
||||||
@ -414,7 +424,8 @@ DumpFile(const char* filename, FILE *fout)
|
|||||||
(cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase;
|
(cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase;
|
||||||
if(h->Sig1 == 0x0 && h->Sig2 == 0xffff) {
|
if(h->Sig1 == 0x0 && h->Sig2 == 0xffff) {
|
||||||
DumpSymbols<cmANON_OBJECT_HEADER_BIGOBJ, cmIMAGE_SYMBOL_EX>
|
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();
|
symbolDumper.DumpObjFile();
|
||||||
} else {
|
} else {
|
||||||
printf("unrecognized file format in '%s'\n", filename);
|
printf("unrecognized file format in '%s'\n", filename);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user