[llvm-dev] GPL Software

Jy W via llvm-dev llvm-dev at lists.llvm.org
Wed Aug 26 14:59:39 PDT 2015


2015-08-25 15:59 GMT-04:00 jacob navia via llvm-dev <llvm-dev at lists.llvm.org
>:
>
> Then, I could follow ALL the process of calling __register_frame(); and
> that function works. It expects an FDE (not a CIE as I thought) but reads
> the CIE using the CIE pointer in the given FDE for each FDE.


This is what I found out when I ported a Linux program using gcc_eh to Mac
using libunwind. gcc_eh also supports FDE input.

This is just a quick description. I do not speak about all the wrong
> starts, the dead ends, the sheer frustration at the lack of docs, etc. This
> is the result of this part of the compiler being very complex by design
> (DWARF is incredibly complex), and a total lack of documentation. For
> instance the entry for __register_frame_info in GNU docs is just:
>
> "DOCUMENT THIS!"
>

There's almost no documentation with these unwind functions, probably
because very few people use them ("document me!" at
https://gcc.gnu.org/onlinedocs/gccint/Exception-handling-routines.html#Exception-handling-routines).
So I ended up with opening both libunwind code and client code and made
sure the format of the FDE and CIE was what libunwind wanted. If I saw your
email earlier, I could have been replied you.

I read the libunwind code in the llvm project because it's cleaner and also
works on Mac.

http://llvm.org/viewvc/llvm-project/libunwind/trunk/

-Jingyi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150826/7852e014/attachment.html>


More information about the llvm-dev mailing list