[PATCH] [lld] ELF: Support detection of relocation errors during processing

Benoit Belley Benoit.Belley at autodesk.com
Thu Jan 15 10:21:19 PST 2015


I completely agree that my concern is not specific to this patch!

I would simply add my vote to having a alternative non-exiting way of reporting internal errors whenever possible. This is especially important for users of the MCJIT engine. We are using it in a very large application. Our QA and management does not have much tolerance and understanding for these brute force exits… Thankfully, we haven’t encountered too many of them. 

I feel that don’t have enough experience yet with the LLVM source code to propose an alternative solution of llvm::report_fatal_report() but I am willing to help out if someone else can lead some of the effort.

Benoit


Le 2015-01-15 à 13:02, Philip Reames <listmail at philipreames.com> a écrit :

> Your concern is a legitimate one, but it's also not specific to this patch.  The JIT generally makes very little effort to report gracefully when a compile fails.  The current philosophy is more or less that the frontend is expected to generate IR that is valid to compile; if it doesn't, that's a fatal bug in the frontend.  There is a desire to change that, but no one has really volunteered to take that on.
> 
> Philip
> 
> On 01/15/2015 05:05 AM, Benoit Belley wrote:
>> Hi Everyone,
>> 
>> My understanding is that the ELF writer is also used by the MCJIT engine
>> when filling an object buffer with jitted code. In that context, I am
>> wondering if the call to llvm::report_fatal_error() is the appropriate way
>> to report the error. Its effect will be to kill the entire host
>> application simply because one LLVM module couldn¹t be jitted.
>> 
>> Of course, fatal errors and assertions should never occur! ;-) And, if
>> they never occur, then there isn¹t any issue. On the other hand,
>> report_fatal_error() has the unfortunate consequence of killing our
>> application before our users have any chance of saving their work.
>> 
>> Is that a legitimate concern ? Comments ?
>> 
>> Cheers,
>> Benoit
>> 
>> Benoit Belley
>> Sr Principal Developer
>> M&E-Product Development Group
>> Autodesk, Inc.
>> www.autodesk.com <http://www.autodesk.com/>
>> 
>> 
>> 
>> On 2015-01-14 17:58, "Rui Ueyama" <ruiu at google.com> wrote:
>> 
>>> LGTM with these fixes.
>>> 
>>> 
>>> REPOSITORY
>>>  rL LLVM
>>> 
>>> ================
>>> Comment at: lib/ReaderWriter/ELF/SectionChunks.h:424
>>> @@ +423,3 @@
>>> +    for (const auto ref : *definedAtom) {
>>> +      if (std::error_code EC = relHandler.applyRelocation(*writer,
>>> buffer,
>>> +                                                          *ai, *ref)) {
>>> ----------------
>>> s/EC/ec/
>>> 
>>> ================
>>> Comment at: lib/ReaderWriter/ELF/SectionChunks.h:431
>>> @@ -398,1 +430,3 @@
>>>   });
>>> +  if (success == false)
>>> +    llvm::report_fatal_error("relocating output");
>>> ----------------
>>> if (!success)
>>> 
>>> http://reviews.llvm.org/D6827
>>> 
>>> EMAIL PREFERENCES
>>>  http://reviews.llvm.org/settings/panel/emailpreferences/
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 





More information about the llvm-commits mailing list