diff --git a/feature_unit_tests/run-all-tests.sh b/feature_unit_tests/run-all-tests.sh index f9ce42e..8953ef8 100755 --- a/feature_unit_tests/run-all-tests.sh +++ b/feature_unit_tests/run-all-tests.sh @@ -4,7 +4,7 @@ unexpected_failed_tests= unexpected_succeeded_tests= # TODO(akawashiro): extern -for dir in hello-g++ hello-gcc just-return-g++ just-return-gcc simple-lib-g++ simple-lib-gcc version-gcc tls-lib-gcc tls-lib-gcc-without-base tls-multiple-lib-gcc tls-thread-g++ call_once-g++ inheritance-g++ typeid-g++ dynamic_cast-g++ tls-dlopen-gcc static-in-function-g++ static-in-class-g++ tls-multiple-module-g++ exception-g++ stb_gnu_unique_tls setjmp-gcc tls-bss-gcc tls-bss-g++ hello-g++-aarch64 hello-gcc-aarch64 just-return-g++-aarch64 simple-lib-g++-aarch64 simple-lib-gcc-aarch64 version-gcc-aarch64 tls-bss-gcc-aarch64 tls-bss-g++-aarch64 just-return-gcc-aarch64 setjmp-gcc-aarch64 exception-g++-aarch64 typeid-g++-aarch64 inheritance-g++-aarch64 dynamic_cast-g++-aarch64 static-in-class-g++-aarch64 static-in-function-g++-aarch64 tls-lib-gcc-aarch64 stb_gnu_unique_tls-aarch64 tls-multiple-module-g++-aarch64 tls-dlopen-gcc-aarch64 call_once-g++-aarch64 tls-thread-g++-aarch64 tls-lib-gcc-without-base-aarch64 delete-unused-PT_DYNAMIC tls-only-tbss-g++ +for dir in hello-g++ hello-gcc just-return-g++ just-return-gcc simple-lib-g++ simple-lib-gcc version-gcc tls-lib-gcc tls-lib-gcc-without-base tls-multiple-lib-gcc tls-thread-g++ call_once-g++ inheritance-g++ typeid-g++ dynamic_cast-g++ tls-dlopen-gcc static-in-function-g++ static-in-class-g++ tls-multiple-module-g++ exception-g++ stb_gnu_unique_tls setjmp-gcc tls-bss-gcc tls-bss-g++ hello-g++-aarch64 hello-gcc-aarch64 just-return-g++-aarch64 simple-lib-g++-aarch64 simple-lib-gcc-aarch64 version-gcc-aarch64 tls-bss-gcc-aarch64 tls-bss-g++-aarch64 just-return-gcc-aarch64 setjmp-gcc-aarch64 exception-g++-aarch64 typeid-g++-aarch64 inheritance-g++-aarch64 dynamic_cast-g++-aarch64 static-in-class-g++-aarch64 static-in-function-g++-aarch64 tls-lib-gcc-aarch64 stb_gnu_unique_tls-aarch64 tls-multiple-module-g++-aarch64 tls-dlopen-gcc-aarch64 call_once-g++-aarch64 tls-thread-g++-aarch64 tls-lib-gcc-without-base-aarch64 delete-unused-PT_DYNAMIC tls-only-tbss-g++ user-defined-exception-g++ do pushd `pwd` cd $dir diff --git a/feature_unit_tests/user-defined-exception-g++/fuga.cc b/feature_unit_tests/user-defined-exception-g++/fuga.cc new file mode 100644 index 0000000..16ea88b --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/fuga.cc @@ -0,0 +1,13 @@ +#include "fuga.h" + +void throw_exception_fuga() { + throw CustomException(); +} + +void catch_exception_fuga() { + try { + throw_exception_fuga(); + } catch (CustomException) { + std::cerr << "Caught CustomException" << std::endl; + } +} diff --git a/feature_unit_tests/user-defined-exception-g++/fuga.h b/feature_unit_tests/user-defined-exception-g++/fuga.h new file mode 100644 index 0000000..a672849 --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/fuga.h @@ -0,0 +1,8 @@ +#include +#include +#include + +struct CustomException {}; + +void throw_exception_fuga(); +void catch_exception_fuga(); diff --git a/feature_unit_tests/user-defined-exception-g++/main.cc b/feature_unit_tests/user-defined-exception-g++/main.cc new file mode 100644 index 0000000..695a485 --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/main.cc @@ -0,0 +1,10 @@ +#include "fuga.h" + +int main() { + catch_exception_fuga(); + try { + throw_exception_fuga(); + } catch (CustomException& e) { + std::cout << "Caught CustomException" << std::endl; + } +} diff --git a/feature_unit_tests/user-defined-exception-g++/test.sh b/feature_unit_tests/user-defined-exception-g++/test.sh new file mode 100755 index 0000000..c940e31 --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/test.sh @@ -0,0 +1,14 @@ +#! /bin/bash -eu + +g++ -fPIC -shared -o libfuga.so -Wl,-soname,libfuga.so fuga.cc +cp libfuga.so libfuga.so.original +g++ main.cc -o main.out libfuga.so +LD_LIBRARY_PATH=. $(git rev-parse --show-toplevel)/build/sold -i libfuga.so.original -o libfuga.so.soldout --section-headers --check-output + +# Use sold +ln -sf libhoge.so.soldout libhoge.so +# Use original +# ln -sf libhoge.so.original libhoge.so +ln -sf libfuga.so.soldout libfuga.so + +LD_LIBRARY_PATH=. ./main.out