Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / library / libm3.c
CommitLineData
7f918cf1
CE
1#include <assert.h>
2
3#define PART_OF_M3
4#include "m3.h"
5#include "m2.h"
6#define DYNAMIC_LINK_M1
7#include "m1.h"
8
9extern EXTERNAL void* libm1cSymPublic;
10extern EXTERNAL void* libm1cFnPublic(void);
11extern EXTERNAL void* libm2cSymPublic;
12extern EXTERNAL void* libm2cFnPublic(void);
13
14PRIVATE void* libm3cSymPrivate = 0;
15PUBLIC void* libm3cSymPublic = 0;
16
17PRIVATE void* libm3cFnPrivate(void) {
18 return &libm3cSymPrivate;
19}
20
21PUBLIC void* libm3cFnPublic(void) {
22 return &libm3cSymPublic;
23}
24
25PRIVATE void libm3confirmC(void) {
26 assert (&libm3smlFnPrivate == libm3smlSymPrivate);
27 assert (&libm3smlFnPublic == libm3smlSymPublic);
28 assert (&libm3cFnPrivate == libm3cSymPrivate);
29 assert (&libm3cFnPublic == libm3cSymPublic);
30
31 assert (libm3smlFnPrivate() == &libm3smlSymPrivate);
32 assert (libm3smlFnPublic() == &libm3smlSymPublic);
33
34 /* Check libm1 */
35 assert (&libm1smlFnPublic == libm1smlSymPublic);
36 assert (&libm1cFnPublic == libm1cSymPublic);
37 assert (libm1smlFnPublic() == &libm1smlSymPublic);
38 assert (libm1cFnPublic() == &libm1cSymPublic);
39
40 /* Check libm2 */
41 assert (&libm2smlFnPublic == libm2smlSymPublic);
42 assert (&libm2cFnPublic == libm2cSymPublic);
43 assert (libm2smlFnPublic() == &libm2smlSymPublic);
44 assert (libm2cFnPublic() == &libm2cSymPublic);
45}