Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / library / check.c
1 #include <assert.h>
2
3 #include "check.h"
4 #include "m5.h"
5 #include "m4.h"
6 #define DYNAMIC_LINK_M3
7 #include "m3.h"
8
9 extern EXTERNAL void* libm3cSymPublic;
10 extern EXTERNAL void* libm3cFnPublic(void);
11 extern EXTERNAL void* libm4cSymPublic;
12 extern EXTERNAL void* libm4cFnPublic(void);
13
14 extern PUBLIC void* libm5cSymPublic;
15 extern PUBLIC void* libm5cFnPublic(void);
16
17 PRIVATE void* checkcSymPrivate = 0;
18 PUBLIC void* checkcSymPublic = 0;
19
20 PRIVATE void* checkcFnPrivate(void) {
21 return &checkcSymPrivate;
22 }
23
24 PUBLIC void* checkcFnPublic(void) {
25 return &checkcSymPublic;
26 }
27
28 PRIVATE void checkconfirmC(void) {
29 assert (&checksmlFnPrivate == checksmlSymPrivate);
30 assert (&checksmlFnPublic == checksmlSymPublic);
31 assert (&checkcFnPrivate == checkcSymPrivate);
32 assert (&checkcFnPublic == checkcSymPublic);
33
34 assert (checksmlFnPrivate() == &checksmlSymPrivate);
35 assert (checksmlFnPublic() == &checksmlSymPublic);
36
37 /* Check libm3 */
38 assert (&libm3smlFnPublic == libm3smlSymPublic);
39 assert (&libm3cFnPublic == libm3cSymPublic);
40 assert (libm3smlFnPublic() == &libm3smlSymPublic);
41 assert (libm3cFnPublic() == &libm3cSymPublic);
42
43 /* Check libm4 */
44 assert (&libm4smlFnPublic == libm4smlSymPublic);
45 assert (&libm4cFnPublic == libm4cSymPublic);
46 assert (libm4smlFnPublic() == &libm4smlSymPublic);
47 assert (libm4cFnPublic() == &libm4cSymPublic);
48
49 /* Check libm5 */
50 assert (&libm5smlFnPublic == libm5smlSymPublic);
51 assert (&libm5cFnPublic == libm5cSymPublic);
52 assert (libm5smlFnPublic() == &libm5smlSymPublic);
53 assert (libm5cFnPublic() == &libm5cSymPublic);
54 }