[LLVMbugs] [Bug 7187] New: Add zero-cost exceptions for ARM (EHABI)

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri May 21 05:06:03 PDT 2010


http://llvm.org/bugs/show_bug.cgi?id=7187

           Summary: Add zero-cost exceptions for ARM (EHABI)
           Product: clang
           Version: trunk
          Platform: Other
        OS/Version: other
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: rengolin at gmail.com
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


Created an attachment (id=4918)
 --> (http://llvm.org/bugs/attachment.cgi?id=4918)
Example of ASM files created by clang and GCC. Compile with arm-none-eabi-g++.

Dwarf exceptions are available for x86 and SjLj for ARM. While there is a bug
report to make SjLj work on other platforms (as fail-safe), would be good to
have zero-cost exception handling in clang for ARM too.

To do this, there are three steps that need to be followed:

1. Make sure that the dwarf table generated by LLVM is compatible with the ARM
ABI. While the tables are very similar, some problems are being observed when
assembling with clang and compiling with GCC in the table format (will attach
example).

In order to test that, we can run all clang/LLVM exception tests by assembling
it with arch=arm-eabi and finishing the compilation process with
arm-none-eabi-g++. All tests should run flawlessly in an ARM chip or simulator.

2. Once the assembly is correct and working with arm-gcc, we can start working
in the codegen section to create ARM specific tables (Generic mode first, then
Compact).

To test this, a full compilation with clang/LLVM shall be done on the same
tests. The third step below is more important than implementing the compact EH
table mode.

3. Make sure the generated tables link together with GCC.

To test this, a compilation with clang/LLVM until object files shall be done
and linkage with arm-none-eabi-ld. The same tests should pass.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list