[GSoC 2016] Improving diagnostics for ELF in libObject with upcoming Error (TypedError)

Hello Community,

I have been recently talking to Lang hames about OrcJIT and new Error Handling mechanism called Error ( a.k.a TypedError ). I hope the patch will be in upstream repo by 23 May, 2016. So we have figured out a task for GSoC 2016 and we need your suggestion for the same.

The task is to design and implement Error class hierarchy for ELF in libObject and thus avail benefits of TypedError to provide more rich diagnostics to the clients. I have read and understand the discussion going on RFC for TypedError and there are lots of benefits that helps users of the particular library. For example one benefit “Difficult to drop” that makes user aware of the error and forces to handle it. Similarly other benefits can help to understand the error better.

So there is already a plan for integrating this features for MachO. I would like to work on ELF side. Roughly the work will involve identifying different class of errors and buid their hierarchy and also how to improve the error with supplying information from the context. Then implementing the design and replacing old error mechanism. I am still reading more details about this. If this work is not sufficient for 3 moths of time than I can add implementing diagnostic Errors for OrcJIT API’s (as I have been experimenting with then currently) the similar work flow would be there. You may also suggest additional work on similar path.

So I have some questions for this idea:

  1. Is this a good idea for a GSoC project ?
  2. If any one is available to mentor me for this ?
  3. How important this is for LLVM ?

and any other suggestions are welcomed. As application period has already begun I need to be little quick but I think I would be able to build a good proposal if provided enough guidance.

A special thanks to Lang Hames for suggesting this topic.


It is nice to have someone working on getting checked errors on ELF,
but a request: please don't over engineer the error hierarchy. Broken
object files are incredibly uncommon and I would much prefer simple
code over fancy errors that are never actually seen by users.