From ed9f40646215d59ecbcd5183732337bb20574f63 Mon Sep 17 00:00:00 2001 From: Akira Kawata Date: Wed, 24 Jul 2024 21:21:49 +0900 Subject: [PATCH 1/4] Add test --- .../user-defined-exception-g++/fuga.cc | 15 ++++++++++++++ .../user-defined-exception-g++/fuga.h | 6 ++++++ .../user-defined-exception-g++/hoge.cc | 20 +++++++++++++++++++ .../user-defined-exception-g++/hoge.h | 6 ++++++ .../user-defined-exception-g++/main.cc | 13 ++++++++++++ .../user-defined-exception-g++/test.sh | 13 ++++++++++++ 6 files changed, 73 insertions(+) create mode 100644 feature_unit_tests/user-defined-exception-g++/fuga.cc create mode 100644 feature_unit_tests/user-defined-exception-g++/fuga.h create mode 100644 feature_unit_tests/user-defined-exception-g++/hoge.cc create mode 100644 feature_unit_tests/user-defined-exception-g++/hoge.h create mode 100644 feature_unit_tests/user-defined-exception-g++/main.cc create mode 100755 feature_unit_tests/user-defined-exception-g++/test.sh 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..f5ab345 --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/fuga.cc @@ -0,0 +1,15 @@ +#include "fuga.h" + +struct CustomException {}; + +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..3ba488c --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/fuga.h @@ -0,0 +1,6 @@ +#include +#include +#include + +void throw_exception_fuga(); +void catch_exception_fuga(); diff --git a/feature_unit_tests/user-defined-exception-g++/hoge.cc b/feature_unit_tests/user-defined-exception-g++/hoge.cc new file mode 100644 index 0000000..538d1c7 --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/hoge.cc @@ -0,0 +1,20 @@ +#include "hoge.h" +#include "fuga.h" + +void throw_exception_hoge() { + throw std::runtime_error("hoge from throw_exception_hoge"); +} + +void catch_exception_hoge() { + try { + throw_exception_hoge(); + } catch (std::exception& e) { + std::cout << e.what() << std::endl; + } + + try { + throw_exception_fuga(); + } catch (std::exception& e) { + std::cout << e.what() << std::endl; + } +} diff --git a/feature_unit_tests/user-defined-exception-g++/hoge.h b/feature_unit_tests/user-defined-exception-g++/hoge.h new file mode 100644 index 0000000..e50a1b0 --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/hoge.h @@ -0,0 +1,6 @@ +#include +#include +#include + +void throw_exception_hoge(); +void catch_exception_hoge(); 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..04efa01 --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/main.cc @@ -0,0 +1,13 @@ +#include "hoge.h" + +int main() { + std::cout << "catch_exception" << std::endl; + catch_exception_hoge(); + + std::cout << "throw_exception" << std::endl; + try { + throw_exception_hoge(); + } catch (std::exception& e) { + std::cout << e.what() << 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..8cebe0f --- /dev/null +++ b/feature_unit_tests/user-defined-exception-g++/test.sh @@ -0,0 +1,13 @@ +#! /bin/bash -eu + +g++ -fPIC -shared -o libfuga.so -Wl,-soname,libfuga.so fuga.cc +g++ -fPIC -shared -o libhoge.so.original -Wl,-soname,libhoge.so hoge.cc libfuga.so +g++ main.cc -o main.out libhoge.so.original libfuga.so +LD_LIBRARY_PATH=. $(git rev-parse --show-toplevel)/build/sold -i libhoge.so.original -o libhoge.so.soldout --section-headers --check-output + +# Use sold +ln -sf libhoge.so.soldout libhoge.so +# Use original +ln -sf libhoge.so.original libhoge.so + +LD_LIBRARY_PATH=. ./main.out From 76cc538f4843ab5c1bb707e99b8fbaec10a6b5c0 Mon Sep 17 00:00:00 2001 From: Akira Kawata Date: Wed, 24 Jul 2024 21:35:30 +0900 Subject: [PATCH 2/4] Run user-defined-exception test --- feature_unit_tests/run-all-tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 1e293e7e2558fa64d86a1e035e989f0845482423 Mon Sep 17 00:00:00 2001 From: Akira Kawata Date: Wed, 24 Jul 2024 21:37:27 +0900 Subject: [PATCH 3/4] Reduce files --- .../user-defined-exception-g++/fuga.cc | 2 -- .../user-defined-exception-g++/fuga.h | 2 ++ .../user-defined-exception-g++/hoge.cc | 20 ------------------- .../user-defined-exception-g++/hoge.h | 6 ------ .../user-defined-exception-g++/main.cc | 13 +++++------- .../user-defined-exception-g++/test.sh | 9 +++++---- 6 files changed, 12 insertions(+), 40 deletions(-) delete mode 100644 feature_unit_tests/user-defined-exception-g++/hoge.cc delete mode 100644 feature_unit_tests/user-defined-exception-g++/hoge.h diff --git a/feature_unit_tests/user-defined-exception-g++/fuga.cc b/feature_unit_tests/user-defined-exception-g++/fuga.cc index f5ab345..16ea88b 100644 --- a/feature_unit_tests/user-defined-exception-g++/fuga.cc +++ b/feature_unit_tests/user-defined-exception-g++/fuga.cc @@ -1,7 +1,5 @@ #include "fuga.h" -struct CustomException {}; - void throw_exception_fuga() { throw CustomException(); } diff --git a/feature_unit_tests/user-defined-exception-g++/fuga.h b/feature_unit_tests/user-defined-exception-g++/fuga.h index 3ba488c..a672849 100644 --- a/feature_unit_tests/user-defined-exception-g++/fuga.h +++ b/feature_unit_tests/user-defined-exception-g++/fuga.h @@ -2,5 +2,7 @@ #include #include +struct CustomException {}; + void throw_exception_fuga(); void catch_exception_fuga(); diff --git a/feature_unit_tests/user-defined-exception-g++/hoge.cc b/feature_unit_tests/user-defined-exception-g++/hoge.cc deleted file mode 100644 index 538d1c7..0000000 --- a/feature_unit_tests/user-defined-exception-g++/hoge.cc +++ /dev/null @@ -1,20 +0,0 @@ -#include "hoge.h" -#include "fuga.h" - -void throw_exception_hoge() { - throw std::runtime_error("hoge from throw_exception_hoge"); -} - -void catch_exception_hoge() { - try { - throw_exception_hoge(); - } catch (std::exception& e) { - std::cout << e.what() << std::endl; - } - - try { - throw_exception_fuga(); - } catch (std::exception& e) { - std::cout << e.what() << std::endl; - } -} diff --git a/feature_unit_tests/user-defined-exception-g++/hoge.h b/feature_unit_tests/user-defined-exception-g++/hoge.h deleted file mode 100644 index e50a1b0..0000000 --- a/feature_unit_tests/user-defined-exception-g++/hoge.h +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include -#include - -void throw_exception_hoge(); -void catch_exception_hoge(); diff --git a/feature_unit_tests/user-defined-exception-g++/main.cc b/feature_unit_tests/user-defined-exception-g++/main.cc index 04efa01..695a485 100644 --- a/feature_unit_tests/user-defined-exception-g++/main.cc +++ b/feature_unit_tests/user-defined-exception-g++/main.cc @@ -1,13 +1,10 @@ -#include "hoge.h" +#include "fuga.h" int main() { - std::cout << "catch_exception" << std::endl; - catch_exception_hoge(); - - std::cout << "throw_exception" << std::endl; + catch_exception_fuga(); try { - throw_exception_hoge(); - } catch (std::exception& e) { - std::cout << e.what() << std::endl; + 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 index 8cebe0f..be61d0b 100755 --- a/feature_unit_tests/user-defined-exception-g++/test.sh +++ b/feature_unit_tests/user-defined-exception-g++/test.sh @@ -1,13 +1,14 @@ #! /bin/bash -eu g++ -fPIC -shared -o libfuga.so -Wl,-soname,libfuga.so fuga.cc -g++ -fPIC -shared -o libhoge.so.original -Wl,-soname,libhoge.so hoge.cc libfuga.so -g++ main.cc -o main.out libhoge.so.original libfuga.so -LD_LIBRARY_PATH=. $(git rev-parse --show-toplevel)/build/sold -i libhoge.so.original -o libhoge.so.soldout --section-headers --check-output +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 +cp libfuga.so libfuga.so.original # Use sold ln -sf libhoge.so.soldout libhoge.so # Use original -ln -sf libhoge.so.original libhoge.so +# ln -sf libhoge.so.original libhoge.so +ln -sf libfuga.so.soldout libfuga.so LD_LIBRARY_PATH=. ./main.out From d49fe561331cb8b4ebdcedec0ac055e347908cb8 Mon Sep 17 00:00:00 2001 From: Akira Kawata Date: Wed, 24 Jul 2024 22:01:31 +0900 Subject: [PATCH 4/4] Fix --- feature_unit_tests/user-defined-exception-g++/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature_unit_tests/user-defined-exception-g++/test.sh b/feature_unit_tests/user-defined-exception-g++/test.sh index be61d0b..c940e31 100755 --- a/feature_unit_tests/user-defined-exception-g++/test.sh +++ b/feature_unit_tests/user-defined-exception-g++/test.sh @@ -1,10 +1,10 @@ #! /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 -cp libfuga.so libfuga.so.original # Use sold ln -sf libhoge.so.soldout libhoge.so # Use original