diff --git a/repos/base/src/test/ada/add.cc b/repos/base/src/test/ada/add.cc index 66365601b..37aea9124 100644 --- a/repos/base/src/test/ada/add.cc +++ b/repos/base/src/test/ada/add.cc @@ -10,11 +10,10 @@ using Genode::log; -extern "C" void add(int a, int b, int *result) +extern "C" void print_add(int a, int b, int *result) { log("add called with a=", a, ", b=", b, ", result at address ", (void*)result); - *result = a + b; } diff --git a/repos/base/src/test/ada/add_package.adb b/repos/base/src/test/ada/add_package.adb new file mode 100644 index 000000000..9abb60c1d --- /dev/null +++ b/repos/base/src/test/ada/add_package.adb @@ -0,0 +1,14 @@ +package body add_package is + +procedure Add(A: in Integer; + B: in Integer; + R: out Integer) +is + procedure ext_c_print_add(a, b : Integer; result : out Integer); + pragma import(C, ext_c_print_add, "print_add"); +begin + ext_c_print_add(A, B, R); + R := A + B; +end Add; + +end add_package; diff --git a/repos/base/src/test/ada/add_package.ads b/repos/base/src/test/ada/add_package.ads new file mode 100644 index 000000000..08b4ec6d1 --- /dev/null +++ b/repos/base/src/test/ada/add_package.ads @@ -0,0 +1,4 @@ +package add_package is + procedure Add(A: in Integer; B: in Integer; R: out Integer); +end add_package; + diff --git a/repos/base/src/test/ada/main.adb b/repos/base/src/test/ada/main.adb index b1e97d12a..2f2237d7c 100644 --- a/repos/base/src/test/ada/main.adb +++ b/repos/base/src/test/ada/main.adb @@ -4,7 +4,7 @@ -- \date 2009-09-23 -- -with test_package; +with add_package; -- -- Main program @@ -16,13 +16,10 @@ procedure main is -- -- Declarations of external C functions -- - procedure ext_c_add(a, b : Integer; result : out Integer); - pragma import(C, ext_c_add, "add"); - procedure ext_c_print_int(a : Integer); pragma import(C, ext_c_print_int, "print_int"); begin - ext_c_add(13, 14, result); + add_package.Add(13, 14, result); ext_c_print_int(result); end main; diff --git a/repos/base/src/test/ada/startup.cc b/repos/base/src/test/ada/startup.cc index 64ae08c07..a0ba8e43a 100644 --- a/repos/base/src/test/ada/startup.cc +++ b/repos/base/src/test/ada/startup.cc @@ -12,6 +12,7 @@ * Declaration of the Ada main procedure */ extern "C" void _ada_main(void); +extern "C" void add_package__add(int, int, int*); /** * Make the linker happy @@ -21,6 +22,11 @@ extern "C" void __gnat_eh_personality() Genode::warning(__func__, " not implemented"); } +extern "C" void __gnat_rcheck_CE_Overflow_Check() +{ + Genode::warning(__func__, " not implemented"); +} + /** * Wrapper for the Ada main program * diff --git a/repos/base/src/test/ada/target.mk b/repos/base/src/test/ada/target.mk index 7650fcbe7..975be192e 100644 --- a/repos/base/src/test/ada/target.mk +++ b/repos/base/src/test/ada/target.mk @@ -1,4 +1,4 @@ TARGET = test-ada -SRC_ADA = main.adb +SRC_ADA = main.adb add_package.adb SRC_CC = add.cc startup.cc LIBS = base diff --git a/repos/base/src/test/ada/test_package.ads b/repos/base/src/test/ada/test_package.ads deleted file mode 100644 index 11a0bad03..000000000 --- a/repos/base/src/test/ada/test_package.ads +++ /dev/null @@ -1,6 +0,0 @@ -package test_package -is - - type some_range_t is range 1..99; - -end test_package;