Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Akawashiro/user defined exception #19

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion feature_unit_tests/run-all-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 13 additions & 0 deletions feature_unit_tests/user-defined-exception-g++/fuga.cc
Original file line number Diff line number Diff line change
@@ -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;
}
}
8 changes: 8 additions & 0 deletions feature_unit_tests/user-defined-exception-g++/fuga.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include <exception>
#include <iostream>
#include <stdexcept>

struct CustomException {};

void throw_exception_fuga();
void catch_exception_fuga();
10 changes: 10 additions & 0 deletions feature_unit_tests/user-defined-exception-g++/main.cc
Original file line number Diff line number Diff line change
@@ -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;
}
}
14 changes: 14 additions & 0 deletions feature_unit_tests/user-defined-exception-g++/test.sh
Original file line number Diff line number Diff line change
@@ -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
Loading