File indexing completed on 2025-05-11 08:24:32
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #include "dl-o2.h"
0029
0030 #include <dlfcn.h>
0031
0032 #include <rtems/test-printer.h>
0033
0034 #define printf(...) rtems_printf(&rtems_test_printer, __VA_ARGS__);
0035
0036 typedef int (*func1_t)(int argc, const char* argv[]);
0037
0038 static void* find_sym(const char* name)
0039 {
0040 void* sym = dlsym(RTLD_DEFAULT, name);
0041 if (sym == NULL)
0042 printf("dlsym failed: not found: %s\n", name);
0043 return sym;
0044 }
0045
0046 static int dl_o1_callback(const char* message, int count)
0047 {
0048 printf("dl_o1_callback: %s\n", message);
0049 return count + 1;
0050 }
0051
0052
0053
0054
0055
0056 int rtems_main (int argc, const char* argv[]);
0057
0058 #define PDOUBLE(_d) ((int) (_d)), (int) ((_d) * 100.0) % 100
0059
0060 int rtems_main (int argc, const char* argv[])
0061 {
0062 func1_t f1;
0063 double f2_ret;
0064 int arg;
0065 int ret;
0066
0067 printf("Loaded module: argc:%d [%s]\n", argc, __FILE__);
0068 for (arg = 0; arg < argc; ++arg)
0069 printf(" %d: %s\n", arg, argv[arg]);
0070
0071 f1 = find_sym ("dl_o2_func1");
0072 if (f1 == NULL)
0073 return 0;
0074
0075 if (f1 (argc, argv) != argc)
0076 {
0077 printf("rtems_main: dl_o2_func1 returned bad value\n");
0078 return 0;
0079 }
0080
0081 f2_ret = dl_o2_func2 (7.1, 33.0);
0082 printf("rtems_main: dl_o2_func2 returned: %d.%02d\n",
0083 PDOUBLE(f2_ret));
0084 if (f2_ret != (7.1 * 33.0))
0085 {
0086 printf("rtems_main: dl_o2_func2 returned a bad\n");
0087 return 0;
0088 }
0089
0090 ret = dl_o2_func3 (dl_o1_callback, 1);
0091 printf ("rtems_main: callback count: %d\n", ret);
0092
0093 return argc;
0094 }