| 1 | #include <assert.h> |
| 2 | |
| 3 | #define PART_OF_M4 |
| 4 | #include "m4.h" |
| 5 | #define STATIC_LINK_M3 |
| 6 | #include "m3.h" |
| 7 | #include "m2.h" |
| 8 | #define DYNAMIC_LINK_M1 |
| 9 | #include "m1.h" |
| 10 | |
| 11 | extern EXTERNAL void* libm1cSymPublic; |
| 12 | extern EXTERNAL void* libm1cFnPublic(void); |
| 13 | extern EXTERNAL void* libm2cSymPublic; |
| 14 | extern EXTERNAL void* libm2cFnPublic(void); |
| 15 | |
| 16 | extern PUBLIC void* libm3cSymPublic; |
| 17 | extern PUBLIC void* libm3cFnPublic(void); |
| 18 | |
| 19 | PRIVATE void* libm4cSymPrivate = 0; |
| 20 | PUBLIC void* libm4cSymPublic = 0; |
| 21 | |
| 22 | PRIVATE void* libm4cFnPrivate(void) { |
| 23 | return &libm4cSymPrivate; |
| 24 | } |
| 25 | |
| 26 | PUBLIC void* libm4cFnPublic(void) { |
| 27 | return &libm4cSymPublic; |
| 28 | } |
| 29 | |
| 30 | PRIVATE void libm4confirmC(void) { |
| 31 | assert (&libm4smlFnPrivate == libm4smlSymPrivate); |
| 32 | assert (&libm4smlFnPublic == libm4smlSymPublic); |
| 33 | assert (&libm4cFnPrivate == libm4cSymPrivate); |
| 34 | assert (&libm4cFnPublic == libm4cSymPublic); |
| 35 | |
| 36 | assert (libm4smlFnPrivate() == &libm4smlSymPrivate); |
| 37 | assert (libm4smlFnPublic() == &libm4smlSymPublic); |
| 38 | |
| 39 | /* Check libm1 */ |
| 40 | assert (&libm1smlFnPublic == libm1smlSymPublic); |
| 41 | assert (&libm1cFnPublic == libm1cSymPublic); |
| 42 | assert (libm1smlFnPublic() == &libm1smlSymPublic); |
| 43 | assert (libm1cFnPublic() == &libm1cSymPublic); |
| 44 | |
| 45 | /* Check libm2 */ |
| 46 | assert (&libm2smlFnPublic == libm2smlSymPublic); |
| 47 | assert (&libm2cFnPublic == libm2cSymPublic); |
| 48 | assert (libm2smlFnPublic() == &libm2smlSymPublic); |
| 49 | assert (libm2cFnPublic() == &libm2cSymPublic); |
| 50 | |
| 51 | /* Check libm3 */ |
| 52 | assert (&libm3smlFnPublic == libm3smlSymPublic); |
| 53 | assert (&libm3cFnPublic == libm3cSymPublic); |
| 54 | assert (libm3smlFnPublic() == &libm3smlSymPublic); |
| 55 | assert (libm3cFnPublic() == &libm3cSymPublic); |
| 56 | } |