[lld] r253985 - ELF: print out a verbose error when a windows emulation is used
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 24 10:59:50 PST 2015
I rolled back this change and implemented the same feature in r254004.
Basically you could have done that just by adding this two lines of code to
parseEmulation().
+ if (S == "i386pe" || S == "i386pep" || S == "thumb2pe")
+ error("Windows targets are not supported on the ELF frontend: " + S);
On Tue, Nov 24, 2015 at 10:21 AM, Rui Ueyama <ruiu at google.com> wrote:
> This checks for too specific type of error. I don't want to have this in
> the ELF linker.
>
> On Tue, Nov 24, 2015 at 6:52 AM, Martell Malone via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: martell
>> Date: Tue Nov 24 08:52:16 2015
>> New Revision: 253985
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=253985&view=rev
>> Log:
>> ELF: print out a verbose error when a windows emulation is used
>>
>> Modified:
>> lld/trunk/ELF/Driver.cpp
>>
>> Modified: lld/trunk/ELF/Driver.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=253985&r1=253984&r2=253985&view=diff
>>
>> ==============================================================================
>> --- lld/trunk/ELF/Driver.cpp (original)
>> +++ lld/trunk/ELF/Driver.cpp Tue Nov 24 08:52:16 2015
>> @@ -52,6 +52,12 @@ static std::pair<ELFKind, uint16_t> pars
>> return {ELF64LEKind, EM_X86_64};
>> if (S == "aarch64linux")
>> return {ELF64LEKind, EM_AARCH64};
>> + if (S == "i386pe")
>> + return {ELFNoneKind, EM_386};
>> + if (S == "i386pep")
>> + return {ELFNoneKind, EM_X86_64};
>> + if (S == "thumb2pe")
>> + return {ELFNoneKind, EM_ARM};
>> error("Unknown emulation: " + S);
>> }
>>
>> @@ -104,9 +110,21 @@ static bool hasZOption(opt::InputArgList
>> }
>>
>> void LinkerDriver::main(ArrayRef<const char *> ArgsArr) {
>> - initSymbols();
>>
>> opt::InputArgList Args = parseArgs(&Alloc, ArgsArr);
>> +
>> + if (auto *Arg = Args.getLastArg(OPT_m)) {
>> + StringRef S = Arg->getValue();
>> + std::pair<ELFKind, uint16_t> P = parseEmulation(S);
>> + Config->EKind = P.first;
>> + Config->EMachine = P.second;
>> + Config->Emulation = S;
>> + }
>> +
>> + if((Config->EKind == ELFNoneKind) && (Config->EMachine != EM_NONE))
>> + error("windows coff targets aren't supported on the gnu frontend.");
>> +
>> + initSymbols();
>> createFiles(Args);
>>
>> // Traditional linkers can generate re-linkable object files instead
>> @@ -143,14 +161,6 @@ void LinkerDriver::createFiles(opt::Inpu
>> if (!RPaths.empty())
>> Config->RPath = llvm::join(RPaths.begin(), RPaths.end(), ":");
>>
>> - if (auto *Arg = Args.getLastArg(OPT_m)) {
>> - StringRef S = Arg->getValue();
>> - std::pair<ELFKind, uint16_t> P = parseEmulation(S);
>> - Config->EKind = P.first;
>> - Config->EMachine = P.second;
>> - Config->Emulation = S;
>> - }
>> -
>> Config->AllowMultipleDefinition =
>> Args.hasArg(OPT_allow_multiple_definition);
>> Config->Bsymbolic = Args.hasArg(OPT_Bsymbolic);
>> Config->DiscardAll = Args.hasArg(OPT_discard_all);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151124/ecbd9a79/attachment.html>
More information about the llvm-commits
mailing list