1%language=C++
2%define class-name libc_name
3%struct-type
4%{
5/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
6
7This file is part of GCC.
8
9GCC is free software; you can redistribute it and/or modify it under
10the terms of the GNU General Public License as published by the Free
11Software Foundation; either version 3, or (at your option) any later
12version.
13
14GCC is distributed in the hope that it will be useful, but WITHOUT ANY
15WARRANTY; without even the implied warranty of MERCHANTABILITY or
16FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17for more details.
18
19You should have received a copy of the GNU General Public License
20along with GCC; see the file COPYING3.  If not see
21<http://www.gnu.org/licenses/>.  */
22%}
23struct libc_name_struct { const char *name; int c_ver; };
24%%
25# The standard C library functions, for feeding to gperf; the result is used
26# by nothrow_libfn_p.
27#
28#   [lib.res.on.exception.handling]: None of the functions from the
29#   Standard C library shall report an error by throwing an
30#   exception, unless it calls a program-supplied function that
31#   throws an exception.
32#
33# Specific functions are commented out for the reason noted in each case.
34#
35#abort, 89		-- synchronous exception from SIGABRT handler
36abs, 89
37acos, 89
38asctime, 89
39asin, 89
40atan, 89
41atan2, 89
42atexit, 89
43atof, 89
44atoi, 89
45atol, 89
46#bsearch, 89		-- calls user function which may throw exception
47btowc, 89
48calloc, 89
49ceil, 89
50clearerr, 89
51clock, 89
52cos, 89
53cosh, 89
54ctime, 89
55difftime, 89
56div, 89
57exit, 89
58exp, 89
59fabs, 89
60#fclose, 89		-- POSIX thread cancellation point
61feof, 89
62ferror, 89
63#fflush, 89		-- POSIX thread cancellation point
64#fgetc, 89		-- POSIX thread cancellation point
65#fgetpos, 89		-- POSIX thread cancellation point
66#fgets, 89		-- POSIX thread cancellation point
67#fgetwc, 89		-- POSIX thread cancellation point
68#fgetws, 89		-- POSIX thread cancellation point
69floor, 89
70fmod, 89
71#fopen, 89		-- POSIX thread cancellation point
72#fprintf, 89		-- POSIX thread cancellation point
73#fputc, 89		-- POSIX thread cancellation point
74#fputs, 89		-- POSIX thread cancellation point
75#fputwc, 89		-- POSIX thread cancellation point
76#fputws, 89		-- POSIX thread cancellation point
77#fread, 89		-- POSIX thread cancellation point
78free, 89
79#freopen, 89		-- POSIX thread cancellation point
80frexp, 89
81#fscanf, 89		-- POSIX thread cancellation point
82fseek, 89
83#fsetpos, 89		-- POSIX thread cancellation point
84#ftell, 89		-- POSIX thread cancellation point
85fwide, 89
86#fwprintf, 89		-- POSIX thread cancellation point
87#fwrite, 89		-- POSIX thread cancellation point
88#fwscanf, 89		-- POSIX thread cancellation point
89#getc, 89		-- POSIX thread cancellation point
90#getchar, 89		-- POSIX thread cancellation point
91getenv, 89
92#gets, 89		-- POSIX thread cancellation point
93#getwc, 89		-- POSIX thread cancellation point
94#getwchar, 89		-- POSIX thread cancellation point
95gmtime, 89
96isalnum, 89
97isalpha, 89
98iscntrl, 89
99isdigit, 89
100isgraph, 89
101islower, 89
102isprint, 89
103ispunct, 89
104isspace, 89
105isupper, 89
106iswalnum, 89
107iswalpha, 89
108iswcntrl, 89
109iswctype, 89
110iswdigit, 89
111iswgraph, 89
112iswlower, 89
113iswprint, 89
114iswpunct, 89
115iswspace, 89
116iswupper, 89
117iswxdigit, 89
118isxdigit, 89
119labs, 89
120ldexp, 89
121ldiv, 89
122localeconv, 89
123localtime, 89
124log, 89
125log10, 89
126longjmp, 89
127malloc, 89
128mblen, 89
129mbrlen, 89
130mbrtowc, 89
131mbsinit, 89
132mbsrtowcs, 89
133mbstowcs, 89
134mbtowc, 89
135memchr, 89
136memcmp, 89
137memcpy, 89
138memmove, 89
139memset, 89
140mktime, 89
141modf, 89
142#perror, 89		-- POSIX thread cancellation point
143pow, 89
144#printf, 89		-- POSIX thread cancellation point
145#putc, 89		-- POSIX thread cancellation point
146#putchar, 89		-- POSIX thread cancellation point
147#puts, 89		-- POSIX thread cancellation point
148#putwc, 89		-- POSIX thread cancellation point
149#putwchar, 89		-- POSIX thread cancellation point
150#qsort, 89		-- calls user function which may throw exception
151#raise, 89		-- synchronous exception from signal handler
152rand, 89
153realloc, 89
154#remove, 89		-- POSIX thread cancellation point
155#rename, 89		-- POSIX thread cancellation point
156#rewind, 89		-- POSIX thread cancellation point
157#scanf, 89		-- POSIX thread cancellation point
158setbuf, 89
159setlocale, 89
160setvbuf, 89
161signal, 89
162sin, 89
163sinh, 89
164sprintf, 89
165sqrt, 89
166srand, 89
167sscanf, 89
168strcat, 89
169strchr, 89
170strcmp, 89
171strcoll, 89
172strcpy, 89
173strcspn, 89
174#strerror, 89		-- POSIX thread cancellation point
175strftime, 89
176strlen, 89
177strncat, 89
178strncmp, 89
179strncpy, 89
180strpbrk, 89
181strrchr, 89
182strspn, 89
183strstr, 89
184strtod, 89
185strtok, 89
186strtol, 89
187strtoul, 89
188strxfrm, 89
189swprintf, 89
190swscanf, 89
191#system, 89		-- POSIX thread cancellation point
192tan, 89
193tanh, 89
194time, 89
195#tmpfile, 89		-- POSIX thread cancellation point
196#tmpnam, 89		-- POSIX thread cancellation point
197tolower, 89
198toupper, 89
199towctrans, 89
200towlower, 89
201towupper, 89
202#ungetc, 89		-- POSIX thread cancellation point
203#ungetwc, 89		-- POSIX thread cancellation point
204#vfprintf, 89		-- POSIX thread cancellation point
205#vfwprintf, 89		-- POSIX thread cancellation point
206#vprintf, 89		-- POSIX thread cancellation point
207vsprintf, 89
208vswprintf, 89
209#vwprintf, 89		-- POSIX thread cancellation point
210wcrtomb, 89
211wcscat, 89
212wcschr, 89
213wcscmp, 89
214wcscoll, 89
215wcscpy, 89
216wcscspn, 89
217wcsftime, 89
218wcslen, 89
219wcsncat, 89
220wcsncmp, 89
221wcsncpy, 89
222wcspbrk, 89
223wcsrchr, 89
224wcsrtombs, 89
225wcsspn, 89
226wcsstr, 89
227wcstod, 89
228wcstok, 89
229wcstol, 89
230wcstombs, 89
231wcstoul, 89
232wcsxfrm, 89
233wctob, 89
234wctomb, 89
235wctrans, 89
236wctype, 89
237wmemchr, 89
238wmemcmp, 89
239wmemcpy, 89
240wmemmove, 89
241wmemset, 89
242#wprintf, 89		-- POSIX thread cancellation point
243#wscanf, 89		-- POSIX thread cancellation point
244cacos, 99
245cacosf, 99
246cacosl, 99
247casin, 99
248casinf, 99
249casinl, 99
250catan, 99
251catanf, 99
252catanl, 99
253ccos, 99
254ccosf, 99
255ccosl, 99
256csin, 99
257csinf, 99
258csinl, 99
259ctan, 99
260ctanf, 99
261ctanl, 99
262cacosh, 99
263cacoshf, 99
264cacoshl, 99
265casinh, 99
266casinhf, 99
267casinhl, 99
268catanh, 99
269catanhf, 99
270catanhl, 99
271ccosh, 99
272ccoshf, 99
273ccoshl, 99
274csinh, 99
275csinhf, 99
276csinhl, 99
277ctanh, 99
278ctanhf, 99
279ctanhl, 99
280cexp, 99
281cexpf, 99
282cexpl, 99
283clog, 99
284clogf, 99
285clogl, 99
286cabs, 99
287cabsf, 99
288cabsl, 99
289cpow, 99
290cpowf, 99
291cpowl, 99
292csqrt, 99
293csqrtf, 99
294csqrtl, 99
295carg, 99
296cargf, 99
297cargl, 99
298cimag, 99
299cimagf, 99
300cimagl, 99
301conj, 99
302conjf, 99
303conjl, 99
304cproj, 99
305cprojf, 99
306cprojl, 99
307creal, 99
308crealf, 99
309creall, 99
310isblank, 99
311feclearexcept, 99
312fegetexceptflag, 99
313feraiseexcept, 99
314fesetexceptflag, 99
315fetestexcept, 99
316fegetround, 99
317fesetround, 99
318fegetenv, 99
319feholdexcept, 99
320fesetenv, 99
321feupdateenv, 99
322imaxabs, 99
323imaxdiv, 99
324strtoimax, 99
325strtoumax, 99
326wcstoimax, 99
327wcstoumax, 99
328acosf, 99
329acosl, 99
330asinf, 99
331asinl, 99
332atanf, 99
333atanl, 99
334atan2f, 99
335atan2l, 99
336cosf, 99
337cosl, 99
338sinf, 99
339sinl, 99
340tanf, 99
341tanl, 99
342acosh, 99
343acoshf, 99
344acoshl, 99
345asinh, 99
346asinhf, 99
347asinhl, 99
348atanh, 99
349atanhf, 99
350atanhl, 99
351coshf, 99
352coshl, 99
353sinhf, 99
354sinhl, 99
355tanhf, 99
356tanhl, 99
357expf, 99
358expl, 99
359exp2, 99
360exp2f, 99
361exp2l, 99
362expm1, 99
363expm1f, 99
364expm1l, 99
365frexpf, 99
366frexpl, 99
367ilogb, 99
368ilogbf, 99
369ilogbl, 99
370ldexpf, 99
371ldexpl, 99
372logf, 99
373logl, 99
374log10f, 99
375log10l, 99
376log1p, 99
377log1pf, 99
378log1pl, 99
379log2, 99
380log2f, 99
381log2l, 99
382logb, 99
383logbf, 99
384logbl, 99
385modff, 99
386modfl, 99
387scalbn, 99
388scalbnf, 99
389scalbnl, 99
390scalbln, 99
391scalblnf, 99
392scalblnl, 99
393cbrt, 99
394cbrtf, 99
395cbrtl, 99
396fabsf, 99
397fabsl, 99
398hypot, 99
399hypotf, 99
400hypotl, 99
401powf, 99
402powl, 99
403sqrtf, 99
404sqrtl, 99
405erf, 99
406erff, 99
407erfl, 99
408erfc, 99
409erfcf, 99
410erfcl, 99
411lgamma, 99
412lgammaf, 99
413lgammal, 99
414tgamma, 99
415tgammaf, 99
416tgammal, 99
417ceilf, 99
418ceill, 99
419floorf, 99
420floorl, 99
421nearbyint, 99
422nearbyintf, 99
423nearbyintl, 99
424rint, 99
425rintf, 99
426rintl, 99
427lrint, 99
428lrintf, 99
429lrintl, 99
430llrint, 99
431llrintf, 99
432llrintl, 99
433round, 99
434roundf, 99
435roundl, 99
436lround, 99
437lroundf, 99
438lroundl, 99
439llround, 99
440llroundf, 99
441llroundl, 99
442trunc, 99
443truncf, 99
444truncl, 99
445fmodf, 99
446fmodl, 99
447remainder, 99
448remainderf, 99
449remainderl, 99
450remquo, 99
451remquof, 99
452remquol, 99
453copysign, 99
454copysignf, 99
455copysignl, 99
456nan, 99
457nanf, 99
458nanl, 99
459nextafter, 99
460nextafterf, 99
461nextafterl, 99
462nexttoward, 99
463nexttowardf, 99
464nexttowardl, 99
465fdim, 99
466fdimf, 99
467fdiml, 99
468fmax, 99
469fmaxf, 99
470fmaxl, 99
471fmin, 99
472fminf, 99
473fminl, 99
474fma, 99
475fmaf, 99
476fmal, 99
477snprintf, 99
478#vfscanf, 99		-- POSIX thread cancellation point
479#vscanf, 99		-- POSIX thread cancellation point
480vsnprintf, 99
481vsscanf, 99
482atoll, 99
483strtof, 99
484strtold, 99
485strtoll, 99
486strtoull, 99
487_Exit, 99
488llabs, 99
489lldiv, 99
490#vfwscanf, 99		-- POSIX thread cancellation point
491vswscanf, 99
492#vwscanf, 99		-- POSIX thread cancellation point
493wcstof, 99
494wcstold, 99
495wcstoll, 99
496wcstoull, 99
497iswblank, 99
498#atomic_thread_fence, 11	-- usually implemented as a macro
499#atomic_signal_fence, 11	-- usually implemented as a macro
500#atomic_flag_test_and_set, 11	-- usually implemented as a macro
501#atomic_flag_test_and_set_explicit, 11	-- usually implemented as a macro
502#atomic_flag_clear, 11		-- usually implemented as a macro
503#atomic_flag_clear_explicit, 11	-- usually implemented as a macro
504aligned_alloc, 11
505at_quick_exit, 11
506quick_exit, 11
507#call_once, 11		-- C11 threads
508#cnd_broadcast, 11	-- C11 threads
509#cnd_destroy, 11	-- C11 threads
510#cnd_init, 11		-- C11 threads
511#cnd_signal, 11		-- C11 threads
512#cnd_timedwait, 11	-- C11 threads
513#cnd_wait, 11		-- C11 threads
514#mtx_destroy, 11	-- C11 threads
515#mtx_init, 11		-- C11 threads
516#mtx_lock, 11		-- C11 threads
517#mtx_timedlock, 11	-- C11 threads
518#mtx_trylock, 11	-- C11 threads
519#mtx_unlock, 11		-- C11 threads
520#thrd_create, 11	-- C11 threads
521#thrd_current, 11	-- C11 threads
522#thrd_detach, 11	-- C11 threads
523#thrd_equal, 11		-- C11 threads
524#thrd_exit, 11		-- C11 threads
525#thrd_join, 11		-- C11 threads
526#thrd_sleep, 11		-- C11 threads
527#thrd_yield, 11		-- C11 threads
528#tss_create, 11		-- C11 threads
529#tss_delete, 11		-- C11 threads
530#tss_get, 11		-- C11 threads
531#tss_set, 11		-- C11 threads
532timespec_get, 11
533mbrtoc16, 11
534c16rtomb, 11
535mbrtoc32, 11
536c32rtomb, 11
537