@@ -13,6 +13,121 @@ mod pthread_spin;
13
13
mod sysv;
14
14
mod wchar;
15
15
16
+ // Functions that are implemented in rustix, so we just need to implement
17
+ // C-compatible wrappers for them.
18
+
19
+ #[ no_mangle]
20
+ unsafe extern "C" fn sysinfo ( ) {
21
+ todo ! ( "sysinfo" )
22
+ }
23
+ #[ no_mangle]
24
+ unsafe extern "C" fn signalfd ( ) {
25
+ todo ! ( "signalfd" )
26
+ }
27
+ #[ no_mangle]
28
+ unsafe extern "C" fn posix_fallocate ( ) {
29
+ todo ! ( "posix_fallocate" )
30
+ }
31
+ #[ no_mangle]
32
+ unsafe extern "C" fn mount ( ) {
33
+ todo ! ( "mount" )
34
+ }
35
+ #[ no_mangle]
36
+ unsafe extern "C" fn umount ( ) {
37
+ todo ! ( "umount" )
38
+ }
39
+ #[ no_mangle]
40
+ unsafe extern "C" fn umount2 ( ) {
41
+ todo ! ( "umount2" )
42
+ }
43
+ #[ no_mangle]
44
+ unsafe extern "C" fn unshare ( ) {
45
+ todo ! ( "unshare" )
46
+ }
47
+ #[ no_mangle]
48
+ unsafe extern "C" fn eaccess ( ) {
49
+ todo ! ( "eaccess" )
50
+ }
51
+ #[ no_mangle]
52
+ unsafe extern "C" fn fchownat ( ) {
53
+ todo ! ( "fchownat" )
54
+ }
55
+ #[ no_mangle]
56
+ unsafe extern "C" fn fstatfs ( ) {
57
+ todo ! ( "fstatfs" )
58
+ }
59
+ #[ no_mangle]
60
+ unsafe extern "C" fn fstatfs64 ( ) {
61
+ todo ! ( "fstatfs64" )
62
+ }
63
+ #[ no_mangle]
64
+ unsafe extern "C" fn timerfd_gettime ( ) {
65
+ todo ! ( "timerfd_gettime" )
66
+ }
67
+
68
+ // `_chk` versions of functions we have implemented, so we just need to add
69
+ // wrappers with extra checks.
70
+
71
+ #[ no_mangle]
72
+ unsafe extern "C" fn __realpath_chk ( ) {
73
+ todo ! ( "__realpath_chk" )
74
+ }
75
+ #[ no_mangle]
76
+ unsafe extern "C" fn __fread_chk ( ) {
77
+ todo ! ( "__fread_chk" )
78
+ }
79
+ #[ no_mangle]
80
+ unsafe extern "C" fn __getgroups_chk ( ) {
81
+ todo ! ( "__getgroups_chk" )
82
+ }
83
+ #[ no_mangle]
84
+ unsafe extern "C" fn __readlink_chk ( ) {
85
+ todo ! ( "__readlink_chk" )
86
+ }
87
+ #[ no_mangle]
88
+ unsafe extern "C" fn __readlinkat_chk ( ) {
89
+ todo ! ( "__readlinkat_chk" )
90
+ }
91
+
92
+ // BSD formatted error functions. These can be implemented using other
93
+ // libc functions.
94
+
95
+ #[ no_mangle]
96
+ unsafe extern "C" fn err ( ) {
97
+ todo ! ( "err" )
98
+ }
99
+ #[ no_mangle]
100
+ unsafe extern "C" fn errx ( ) {
101
+ todo ! ( "errx" )
102
+ }
103
+ #[ no_mangle]
104
+ unsafe extern "C" fn warn ( ) {
105
+ todo ! ( "warn" )
106
+ }
107
+ #[ no_mangle]
108
+ unsafe extern "C" fn warnx ( ) {
109
+ todo ! ( "warnx" )
110
+ }
111
+ #[ no_mangle]
112
+ unsafe extern "C" fn verr ( ) {
113
+ todo ! ( "verr" )
114
+ }
115
+ #[ no_mangle]
116
+ unsafe extern "C" fn verrx ( ) {
117
+ todo ! ( "verrx" )
118
+ }
119
+ #[ no_mangle]
120
+ unsafe extern "C" fn vwarn ( ) {
121
+ todo ! ( "vwarn" )
122
+ }
123
+ #[ no_mangle]
124
+ unsafe extern "C" fn vwarnx ( ) {
125
+ todo ! ( "vwarnx" )
126
+ }
127
+
128
+ // NSS functions. Currently we're implementing NSS functions in c-gull by
129
+ // invoking the `getent` command and parsing its output.
130
+
16
131
#[ no_mangle]
17
132
unsafe extern "C" fn setnetent ( ) {
18
133
todo ! ( "setnetent" )
@@ -153,15 +268,14 @@ unsafe extern "C" fn getspent_r() {
153
268
unsafe extern "C" fn gethostbyname_r ( ) {
154
269
todo ! ( "gethostbyname_r" )
155
270
}
271
+
272
+ // Additional functions.
273
+
156
274
#[ no_mangle]
157
275
unsafe extern "C" fn alarm ( ) {
158
276
todo ! ( "alarm" )
159
277
}
160
278
#[ no_mangle]
161
- unsafe extern "C" fn sysinfo ( ) {
162
- todo ! ( "sysinfo" )
163
- }
164
- #[ no_mangle]
165
279
unsafe extern "C" fn process_vm_writev ( ) {
166
280
todo ! ( "process_vm_writev" )
167
281
}
@@ -170,14 +284,6 @@ unsafe extern "C" fn process_vm_readv() {
170
284
todo ! ( "process_vm_readv" )
171
285
}
172
286
#[ no_mangle]
173
- unsafe extern "C" fn signalfd ( ) {
174
- todo ! ( "signalfd" )
175
- }
176
- #[ no_mangle]
177
- unsafe extern "C" fn posix_fallocate ( ) {
178
- todo ! ( "posix_fallocate" )
179
- }
180
- #[ no_mangle]
181
287
unsafe extern "C" fn setfsuid ( ) {
182
288
todo ! ( "setfsuid" )
183
289
}
@@ -218,14 +324,6 @@ unsafe extern "C" fn clock_getcpuclockid() {
218
324
todo ! ( "clock_getcpuclockid" )
219
325
}
220
326
#[ no_mangle]
221
- unsafe extern "C" fn eaccess ( ) {
222
- todo ! ( "eaccess" )
223
- }
224
- #[ no_mangle]
225
- unsafe extern "C" fn fchownat ( ) {
226
- todo ! ( "fchownat" )
227
- }
228
- #[ no_mangle]
229
327
unsafe extern "C" fn getresgid ( ) {
230
328
todo ! ( "getresgid" )
231
329
}
@@ -306,10 +404,6 @@ unsafe extern "C" fn timer_getoverrun() {
306
404
todo ! ( "timer_getoverrun" )
307
405
}
308
406
#[ no_mangle]
309
- unsafe extern "C" fn timerfd_gettime ( ) {
310
- todo ! ( "timerfd_gettime" )
311
- }
312
- #[ no_mangle]
313
407
unsafe extern "C" fn truncate ( ) {
314
408
todo ! ( "truncate" )
315
409
}
@@ -811,10 +905,6 @@ unsafe extern "C" fn sigqueue() {
811
905
todo ! ( "sigqueue" )
812
906
}
813
907
#[ no_mangle]
814
- unsafe extern "C" fn __getgroups_chk ( ) {
815
- todo ! ( "__getgroups_chk" )
816
- }
817
- #[ no_mangle]
818
908
unsafe extern "C" fn __isoc99_vfscanf ( ) {
819
909
todo ! ( "__isoc99_vfscanf" )
820
910
}
@@ -823,10 +913,6 @@ unsafe extern "C" fn mincore() {
823
913
todo ! ( "mincore" )
824
914
}
825
915
#[ no_mangle]
826
- unsafe extern "C" fn __realpath_chk ( ) {
827
- todo ! ( "__realpath_chk" )
828
- }
829
- #[ no_mangle]
830
916
unsafe extern "C" fn setns ( ) {
831
917
todo ! ( "setns" )
832
918
}
@@ -839,54 +925,6 @@ unsafe extern "C" fn setresuid() {
839
925
todo ! ( "setresuid" )
840
926
}
841
927
#[ no_mangle]
842
- unsafe extern "C" fn mount ( ) {
843
- todo ! ( "mount" )
844
- }
845
- #[ no_mangle]
846
- unsafe extern "C" fn umount ( ) {
847
- todo ! ( "umount" )
848
- }
849
- #[ no_mangle]
850
- unsafe extern "C" fn umount2 ( ) {
851
- todo ! ( "umount2" )
852
- }
853
- #[ no_mangle]
854
- unsafe extern "C" fn unshare ( ) {
855
- todo ! ( "unshare" )
856
- }
857
- #[ no_mangle]
858
- unsafe extern "C" fn err ( ) {
859
- todo ! ( "err" )
860
- }
861
- #[ no_mangle]
862
- unsafe extern "C" fn errx ( ) {
863
- todo ! ( "errx" )
864
- }
865
- #[ no_mangle]
866
- unsafe extern "C" fn warn ( ) {
867
- todo ! ( "warn" )
868
- }
869
- #[ no_mangle]
870
- unsafe extern "C" fn warnx ( ) {
871
- todo ! ( "warnx" )
872
- }
873
- #[ no_mangle]
874
- unsafe extern "C" fn verr ( ) {
875
- todo ! ( "verr" )
876
- }
877
- #[ no_mangle]
878
- unsafe extern "C" fn verrx ( ) {
879
- todo ! ( "verrx" )
880
- }
881
- #[ no_mangle]
882
- unsafe extern "C" fn vwarn ( ) {
883
- todo ! ( "vwarn" )
884
- }
885
- #[ no_mangle]
886
- unsafe extern "C" fn vwarnx ( ) {
887
- todo ! ( "vwarnx" )
888
- }
889
- #[ no_mangle]
890
928
unsafe extern "C" fn mq_close ( ) {
891
929
todo ! ( "mq_close" )
892
930
}
@@ -983,18 +1021,6 @@ unsafe extern "C" fn fmtmsg() {
983
1021
todo ! ( "fmtmsg" )
984
1022
}
985
1023
#[ no_mangle]
986
- unsafe extern "C" fn __fread_chk ( ) {
987
- todo ! ( "__fread_chk" )
988
- }
989
- #[ no_mangle]
990
- unsafe extern "C" fn fstatfs ( ) {
991
- todo ! ( "fstatfs" )
992
- }
993
- #[ no_mangle]
994
- unsafe extern "C" fn fstatfs64 ( ) {
995
- todo ! ( "fstatfs64" )
996
- }
997
- #[ no_mangle]
998
1024
unsafe extern "C" fn getcpu ( ) {
999
1025
todo ! ( "getcpu" )
1000
1026
}
@@ -1091,14 +1117,6 @@ unsafe extern "C" fn readahead() {
1091
1117
todo ! ( "readahead" )
1092
1118
}
1093
1119
#[ no_mangle]
1094
- unsafe extern "C" fn __readlink_chk ( ) {
1095
- todo ! ( "__readlink_chk" )
1096
- }
1097
- #[ no_mangle]
1098
- unsafe extern "C" fn __readlinkat_chk ( ) {
1099
- todo ! ( "__readlinkat_chk" )
1100
- }
1101
- #[ no_mangle]
1102
1120
unsafe extern "C" fn reboot ( ) {
1103
1121
todo ! ( "reboot" )
1104
1122
}
@@ -1190,7 +1208,6 @@ unsafe extern "C" fn register_printf_function() {
1190
1208
unsafe extern "C" fn adjtime ( ) {
1191
1209
todo ! ( "adjtime" )
1192
1210
}
1193
-
1194
1211
#[ no_mangle]
1195
1212
unsafe extern "C" fn gamma ( ) {
1196
1213
todo ! ( "gamma" )
0 commit comments