This patch fix some testsuite issues on ARM: - Gtest-bt: like on x86/-64, the stack size passed to sigaltstack() is too small for ARM thus causing segmentation fault due to stack overflow - Gtest-dyn1: code size definition of dynamic function (template()) on testcase is too big for ARM architecture so memcpy() reads invalid memory causing random crashes (segmentation fault). A better solution would be to compile the function in a separate binary, mmap() it and memcpy() from it instead, so maximum size is known for sure - check-name-space.in: fix some "bashisms", it causes the script to fail to run on N8XX's busybox shell Signed-off-by: Anderson Lizardo Signed-off-by: Bruna Moreira diff --git a/tests/Gtest-bt.c b/tests/Gtest-bt.c index 1256512..44db430 100644 --- a/tests/Gtest-bt.c +++ b/tests/Gtest-bt.c @@ -38,8 +38,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include -#if UNW_TARGET_X86 || UNW_TARGET_X86_64 -# define STACK_SIZE (128*1024) /* On x86/-64, SIGSTKSZ is too small */ +#if UNW_TARGET_X86 || UNW_TARGET_X86_64 || UNW_TARGET_ARM +# define STACK_SIZE (128*1024) /* On x86/-64 and ARM, SIGSTKSZ is too small */ #else # define STACK_SIZE SIGSTKSZ #endif diff --git a/tests/Gtest-dyn1.c b/tests/Gtest-dyn1.c index 2faa1f7..c4c389c 100644 --- a/tests/Gtest-dyn1.c +++ b/tests/Gtest-dyn1.c @@ -34,7 +34,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include +#if UNW_TARGET_ARM +#define MAX_FUNC_SIZE 96 /* FIXME: arch/compiler dependent */ +#else #define MAX_FUNC_SIZE 2048 /* max. size of cloned function */ +#endif #define panic(args...) \ { fprintf (stderr, args); exit (-1); } diff --git a/tests/check-namespace.sh.in b/tests/check-namespace.sh.in index 253f709..4acfc74 100644 --- a/tests/check-namespace.sh.in +++ b/tests/check-namespace.sh.in @@ -13,7 +13,7 @@ num_errors=0 LIBUNWIND=../src/.libs/libunwind.so LIBUNWIND_GENERIC=../src/.libs/libunwind-${plat}.so -function fetch_symtab { +fetch_symtab () { filename=$1 if [ ! -r $filename ]; then @@ -38,12 +38,12 @@ function fetch_symtab { IFS="$saved_IFS" } -function ignore { +ignore () { sym=$1 symtab=`echo "$symtab" | grep -v " ${sym}\$"` } -function match { +match () { sym=$1 if `echo "$symtab" | grep -q " ${sym}\$"`; then symtab=`echo "$symtab" | grep -v " ${sym}\$"` @@ -57,7 +57,7 @@ function match { # Filter out miscellaneous symbols that get defined by the # linker for each shared object. # -function filter_misc { +filter_misc () { ignore _DYNAMIC ignore _GLOBAL_OFFSET_TABLE_ ignore __bss_start @@ -71,7 +71,7 @@ function filter_misc { ignore ICRT.INTERNAL # ICC 8.x defines this } -function check_local_unw_abi { +check_local_unw_abi () { match _UL${plat}_create_addr_space match _UL${plat}_destroy_addr_space match _UL${plat}_get_fpreg @@ -129,7 +129,7 @@ function check_local_unw_abi { esac } -function check_generic_unw_abi { +check_generic_unw_abi () { match _U${plat}_create_addr_space match _U${plat}_destroy_addr_space match _U${plat}_flush_cache @@ -186,7 +186,7 @@ function check_generic_unw_abi { esac } -function check_cxx_abi { +check_cxx_abi () { match _Unwind_Backtrace match _Unwind_DeleteException match _Unwind_FindEnclosingFunction @@ -230,7 +230,7 @@ function check_cxx_abi { esac } -function check_empty { +check_empty () { if [ -n "$symtab" ]; then echo -e " ERROR: Extraneous symbols:\n$symtab" num_errors=`expr $num_errors + 1` @@ -252,7 +252,7 @@ check_empty if [ $num_errors -gt 0 ]; then echo "FAILURE: Detected $num_errors errors" - exit -1 + exit 1 fi if $verbose; then