[llvm-commits] [llvm] r95723 - in /llvm/trunk/examples: CMakeLists.txt ExceptionDemo/ ExceptionDemo/CMakeLists.txt ExceptionDemo/ExceptionDemo.cpp ExceptionDemo/Makefile Makefile

Xerxes RĂ„nby xerxes at zafena.se
Tue Feb 23 04:41:55 PST 2010


On 2010-02-10 00:22, Garrison Venn wrote:
> Author: gvenn
> Date: Tue Feb  9 17:22:43 2010
> New Revision: 95723
>
> URL: http://llvm.org/viewvc/llvm-project?rev=95723&view=rev
> Log:
> Adds a JIT based exception handling example to the examples directory. 
> Both zero cost example domain specific, and C++ foreign exception handling are 
> shown. The example's documentation fully explains how to run the example.
>
> Notes:
>
> 1)   The code uses an extremely simple type info model.
> 2)   Only a single landing pad is used per unwind edge 
>      (one call to llvm.eh.selector)
> 3)   llvm.eh.selector support for filter arguments is not given.
> 4)   llvm.eh.typeid.for is not used.
> 5)   Forced unwind behavior is not supported.
> 6)   Very little if any error handling is given.
> 7)   __attribute__((__aligned__)) is used.
> 8)   The code uses parts from the llvm compiler-rt project and
>      the llvm Kaleidoscope example.
> 9)   The code has not been ported or tested on WINDOWS.
> 10)  The code was not tested with a cmake build.
> 11)  The code was tested for a debug build on 32bit X86 CentOS LINUX, 
>      and both a debug and release build on OS X 10.6.2 (64bit).
>   

The build fails when building this example using LLVM ARM Linux using
GCC 4.3.3 on Ubuntu Jaunty,

make[1]: Entering directory 
`/media/disk/llvm-configure/examples/ExceptionDemo'
llvm[1]: Compiling ExceptionDemo.cpp for Release build
llvm[1]: Linking Release executable ExceptionDemo (without symbols)
/media/disk/llvm-configure/examples/ExceptionDemo/Release/ExceptionDemo.o: 
In function `ourPersonality':
ExceptionDemo.cpp:(.text+0x60c): undefined reference to `_Unwind_GetIP'
ExceptionDemo.cpp:(.text+0x7f8): undefined reference to `_Unwind_SetGR'
ExceptionDemo.cpp:(.text+0x818): undefined reference to `_Unwind_SetGR'
ExceptionDemo.cpp:(.text+0x828): undefined reference to `_Unwind_SetIP'
ExceptionDemo.cpp:(.text+0x870): undefined reference to `_Unwind_SetGR'
collect2: ld returned 1 exit status
make[1]: *** [/media/disk/llvm-configure/Release/examples/ExceptionDemo] 
Error 1
make[1]: Leaving directory 

The llvm-arm-linux buildbot have disabled builds of the examples so
thats why we are not catching this using the buildbot.

The following exception symbols exist when building on ARM:
buildbot at sheeva:/usr/lib/gcc/arm-linux-gnueabi/4.3.3$ nm -a libgcc_eh.a

unwind-arm.o:
00000000 n .ARM.attributes
00000000 r .ARM.exidx
00000000 r .ARM.extab
00000000 b .bss
00000000 n .comment
00000000 d .data
00000000 n .note.GNU-stack
00000000 t .text
         U _GLOBAL_OFFSET_TABLE_
000000b0 T _Unwind_Complete
000000b4 T _Unwind_DeleteException
000000a8 T _Unwind_GetCFA
00000000 T _Unwind_VRS_Get
00000b8c T _Unwind_VRS_Pop
00000054 T _Unwind_VRS_Set
000004e0 T __aeabi_unwind_cpp_pr0
000004d8 W __aeabi_unwind_cpp_pr1
000004d0 W __aeabi_unwind_cpp_pr2
         w __cxa_begin_cleanup
         w __cxa_call_unexpected
         w __cxa_type_match
         U __exidx_end
         U __exidx_start
000007e0 T __gnu_Unwind_Backtrace
         w __gnu_Unwind_Find_exidx
000009dc T __gnu_Unwind_ForcedUnwind
00000a5c T __gnu_Unwind_RaiseException
         U __gnu_Unwind_Restore_VFP
         U __gnu_Unwind_Restore_VFP_D
         U __gnu_Unwind_Restore_VFP_D_16_to_31
         U __gnu_Unwind_Restore_WMMXC
         U __gnu_Unwind_Restore_WMMXD
00000b20 T __gnu_Unwind_Resume
00000b00 T __gnu_Unwind_Resume_or_Rethrow
         U __gnu_Unwind_Save_VFP
         U __gnu_Unwind_Save_VFP_D
         U __gnu_Unwind_Save_VFP_D_16_to_31
         U __gnu_Unwind_Save_WMMXC
         U __gnu_Unwind_Save_WMMXD
         U __gnu_unwind_execute
000000dc t __gnu_unwind_pr_common
         U abort
000004e8 t get_eit_entry
         U memcpy
         U restore_core_regs
00000754 t restore_non_core_regs
00000a00 t unwind_phase2
0000089c t unwind_phase2_forced

libunwind.o:
00000000 n .ARM.attributes
00000000 b .bss
00000000 d .data
00000000 n .note.GNU-stack
00000000 t .text
00000184 T _Unwind_Backtrace
00000160 T _Unwind_ForcedUnwind
000000f4 T _Unwind_RaiseException
00000118 T _Unwind_Resume
0000013c T _Unwind_Resume_or_Rethrow
00000184 T ___Unwind_Backtrace
00000160 T ___Unwind_ForcedUnwind
000000f4 T ___Unwind_RaiseException
00000118 T ___Unwind_Resume
0000013c T ___Unwind_Resume_or_Rethrow
         U __gnu_Unwind_Backtrace
         U __gnu_Unwind_ForcedUnwind
         U __gnu_Unwind_RaiseException
00000014 T __gnu_Unwind_Restore_VFP
00000024 T __gnu_Unwind_Restore_VFP_D
00000034 T __gnu_Unwind_Restore_VFP_D_16_to_31
000000cc T __gnu_Unwind_Restore_WMMXC
00000044 T __gnu_Unwind_Restore_WMMXD
         U __gnu_Unwind_Resume
         U __gnu_Unwind_Resume_or_Rethrow
0000001c T __gnu_Unwind_Save_VFP
0000002c T __gnu_Unwind_Save_VFP_D
0000003c T __gnu_Unwind_Save_VFP_D_16_to_31
000000e0 T __gnu_Unwind_Save_WMMXC
00000088 T __gnu_Unwind_Save_WMMXD
00000000 T __restore_core_regs
00000000 T restore_core_regs

pr-support.o:
00000000 n .ARM.attributes
00000000 r .ARM.exidx
00000000 r .ARM.extab
00000000 b .bss
00000000 n .comment
00000000 d .data
00000000 n .note.GNU-stack
00000000 t .text
00000068 T _Unwind_GetDataRelBase
00000074 T _Unwind_GetLanguageSpecificData
000000b8 T _Unwind_GetRegionStart
0000005c T _Unwind_GetTextRelBase
         U _Unwind_VRS_Get
         U _Unwind_VRS_Pop
         U _Unwind_VRS_Set
         U __aeabi_unwind_cpp_pr0
000000e8 T __gnu_unwind_execute
00000768 T __gnu_unwind_frame
         U abort
00000000 t next_unwind_byte

unwind-c.o:
00000000 n .ARM.attributes
00000000 r .ARM.exidx
00000000 r .ARM.extab
00000000 b .bss
00000000 n .comment
00000000 d .data
00000000 n .note.GNU-stack
00000000 t .text
         U _Unwind_GetDataRelBase
         U _Unwind_GetLanguageSpecificData
         U _Unwind_GetRegionStart
         U _Unwind_GetTextRelBase
         U _Unwind_VRS_Get
         U _Unwind_VRS_Set
         U __aeabi_unwind_cpp_pr0
00000000 T __gcc_personality_v0
         U __gnu_unwind_frame
         U abort

emutls.o:
00000000 n .ARM.attributes
00000000 r .ARM.exidx
00000000 r .ARM.extab
00000000 b .bss
00000000 n .comment
00000000 d .data
00000000 n .note.GNU-stack
00000000 t .text
         U _GLOBAL_OFFSET_TABLE_
         U __aeabi_unwind_cpp_pr0
0000012c T __emutls_get_address
00000000 T __emutls_register_common
         U abort
         U calloc
00000084 t emutls_alloc
000002b8 t emutls_destroy
00000040 t emutls_init
0000001c b emutls_key
00000000 b emutls_mutex
00000020 b emutls_size
         U free
         U malloc
         U memcpy
         U memset
00000018 b once.6753
         w pthread_cancel
         w pthread_getspecific
         w pthread_key_create
         w pthread_mutex_lock
         w pthread_mutex_unlock
         w pthread_once
         w pthread_setspecific
         U realloc
buildbot at sheeva:/usr/lib/gcc/arm-linux-gnueabi/4.3.3$

Cheers, and have a great day!
Xerxes



More information about the llvm-commits mailing list