/src/binutils-gdb/libctf/ctf-decls.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Declarations for missing functions. |
2 | | Copyright (C) 2019-2025 Free Software Foundation, Inc. |
3 | | |
4 | | This file is part of libctf. |
5 | | |
6 | | libctf is free software; you can redistribute it and/or modify it under |
7 | | the terms of the GNU General Public License as published by the Free |
8 | | Software Foundation; either version 3, or (at your option) any later |
9 | | version. |
10 | | |
11 | | This program is distributed in the hope that it will be useful, but |
12 | | WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
14 | | See the GNU General Public License for more details. |
15 | | |
16 | | You should have received a copy of the GNU General Public License |
17 | | along with this program; see the file COPYING. If not see |
18 | | <http://www.gnu.org/licenses/>. */ |
19 | | |
20 | | #ifndef _CTF_DECLS_H |
21 | | #define _CTF_DECLS_H |
22 | | |
23 | | #include "config.h" |
24 | | |
25 | | #include <stddef.h> |
26 | | #include <stdlib.h> |
27 | | #include "libiberty.h" |
28 | | |
29 | | #if HAVE_QSORT_R_ARG_LAST |
30 | | static inline void |
31 | | ctf_qsort_r (void *base, size_t nmemb, size_t size, |
32 | | int (*compar)(const void *, const void *, void *), |
33 | | void *arg) |
34 | 0 | { |
35 | 0 | qsort_r (base, nmemb, size, compar, arg); |
36 | 0 | } Unexecuted instantiation: ctf-archive.c:ctf_qsort_r Unexecuted instantiation: ctf-dump.c:ctf_qsort_r Unexecuted instantiation: ctf-error.c:ctf_qsort_r Unexecuted instantiation: ctf-hash.c:ctf_qsort_r Unexecuted instantiation: ctf-labels.c:ctf_qsort_r Unexecuted instantiation: ctf-lookup.c:ctf_qsort_r Unexecuted instantiation: ctf-open.c:ctf_qsort_r Unexecuted instantiation: ctf-serialize.c:ctf_qsort_r Unexecuted instantiation: ctf-string.c:ctf_qsort_r Unexecuted instantiation: ctf-subr.c:ctf_qsort_r Unexecuted instantiation: ctf-types.c:ctf_qsort_r Unexecuted instantiation: ctf-util.c:ctf_qsort_r Unexecuted instantiation: ctf-open-bfd.c:ctf_qsort_r Unexecuted instantiation: ctf-create.c:ctf_qsort_r Unexecuted instantiation: ctf-decl.c:ctf_qsort_r Unexecuted instantiation: ctf-dedup.c:ctf_qsort_r Unexecuted instantiation: ctf-link.c:ctf_qsort_r Unexecuted instantiation: ctf-sha1.c:ctf_qsort_r |
37 | | #elif HAVE_QSORT_R_COMPAR_LAST |
38 | | struct ctf_qsort_arg |
39 | | { |
40 | | int (*compar) (const void *, const void *, void *); |
41 | | void *arg; |
42 | | }; |
43 | | |
44 | | static int |
45 | | ctf_qsort_compar_thunk (void *arg, const void *a, const void *b) |
46 | | { |
47 | | struct ctf_qsort_arg *qsort_arg = (struct ctf_qsort_arg *) arg; |
48 | | |
49 | | return qsort_arg->compar (a, b, qsort_arg->arg); |
50 | | } |
51 | | |
52 | | static inline void |
53 | | ctf_qsort_r (void *base, size_t nmemb, size_t size, |
54 | | int (*compar)(const void *, const void *, void *), |
55 | | void *arg) |
56 | | { |
57 | | struct ctf_qsort_arg thunk = { compar, arg }; |
58 | | qsort_r (base, nmemb, size, &thunk, ctf_qsort_compar_thunk); |
59 | | } |
60 | | #else |
61 | | void ctf_qsort_r (void *base, size_t nmemb, size_t size, |
62 | | int (*compar)(const void *, const void *, void *), |
63 | | void *arg); |
64 | | #endif |
65 | | |
66 | | #ifndef HAVE_O_CLOEXEC |
67 | | # define O_CLOEXEC 0 |
68 | | #endif |
69 | | |
70 | | #undef MAX |
71 | | #undef MIN |
72 | 0 | #define MAX(a, b) ((a) > (b) ? (a) : (b)) |
73 | 0 | #define MIN(a, b) ((a) < (b) ? (a) : (b)) |
74 | | |
75 | | #if !HAVE_DECL_STPCPY |
76 | | extern char *stpcpy (char *, const char *); |
77 | | #endif |
78 | | |
79 | | #endif /* _CTF_DECLS_H */ |