Object: preserve more information about DEF file
Preserve the actual library name as provided by the user. This is required to properly replicate link's behaviour about the module import name handling. This requires an associated change to lld for updating the tests for the proper behaviour for the import library module name handling in various cases. Associated tests will be part of the lld change. llvm-svn: 308406
This commit is contained in:
@@ -28,6 +28,7 @@ namespace object {
|
|||||||
struct COFFModuleDefinition {
|
struct COFFModuleDefinition {
|
||||||
std::vector<COFFShortExport> Exports;
|
std::vector<COFFShortExport> Exports;
|
||||||
std::string OutputFile;
|
std::string OutputFile;
|
||||||
|
std::string ImportName;
|
||||||
uint64_t ImageBase = 0;
|
uint64_t ImageBase = 0;
|
||||||
uint64_t StackReserve = 0;
|
uint64_t StackReserve = 0;
|
||||||
uint64_t StackCommit = 0;
|
uint64_t StackCommit = 0;
|
||||||
|
|||||||
@@ -188,13 +188,17 @@ private:
|
|||||||
std::string Name;
|
std::string Name;
|
||||||
if (Error Err = parseName(&Name, &Info.ImageBase))
|
if (Error Err = parseName(&Name, &Info.ImageBase))
|
||||||
return Err;
|
return Err;
|
||||||
// Append the appropriate file extension if not already present.
|
|
||||||
if (!sys::path::has_extension(Name))
|
Info.ImportName = Name;
|
||||||
Name += IsDll ? ".dll" : ".exe";
|
|
||||||
|
|
||||||
// Set the output file, but don't override /out if it was already passed.
|
// Set the output file, but don't override /out if it was already passed.
|
||||||
if (Info.OutputFile.empty())
|
if (Info.OutputFile.empty()) {
|
||||||
Info.OutputFile = Name;
|
Info.OutputFile = Name;
|
||||||
|
// Append the appropriate file extension if not already present.
|
||||||
|
if (!sys::path::has_extension(Name))
|
||||||
|
Info.OutputFile += IsDll ? ".dll" : ".exe";
|
||||||
|
}
|
||||||
|
|
||||||
return Error::success();
|
return Error::success();
|
||||||
}
|
}
|
||||||
case KwVersion:
|
case KwVersion:
|
||||||
|
|||||||
Reference in New Issue
Block a user