mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
942d35f72b
Not all platforms have it. Use libiberty xstrndup() instead. (The include of libiberty.h happens in an unusual place due to the requirements of synchronization of most source files between this project and another that does not use libiberty. It serves to pull libiberty.h in for all source files in libctf/, which does the trick.) Tested on x86_64-pc-linux-gnu, x86_64-unknown-freebsd12.0, sparc-sun-solaris2.11, i686-pc-cygwin, i686-w64-mingw32. libctf/ * ctf-decls.h: Include <libiberty.h>. * ctf-lookup.c (ctf_lookup_by_name): Call xstrndup(), not strndup().
76 lines
2.0 KiB
C
76 lines
2.0 KiB
C
/* Declarations for missing functions.
|
|
Copyright (C) 2019 Free Software Foundation, Inc.
|
|
|
|
This file is part of libctf.
|
|
|
|
libctf is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free
|
|
Software Foundation; either version 3, or (at your option) any later
|
|
version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING. If not see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef _CTF_DECLS_H
|
|
#define _CTF_DECLS_H
|
|
|
|
#include "config.h"
|
|
|
|
#include <stddef.h>
|
|
#include <stdlib.h>
|
|
#include "libiberty.h"
|
|
|
|
#if HAVE_QSORT_R_ARG_LAST
|
|
static inline void
|
|
ctf_qsort_r (void *base, size_t nmemb, size_t size,
|
|
int (*compar)(const void *, const void *, void *),
|
|
void *arg)
|
|
{
|
|
qsort_r (base, nmemb, size, compar, arg);
|
|
}
|
|
#elif HAVE_QSORT_R_COMPAR_LAST
|
|
struct ctf_qsort_arg
|
|
{
|
|
int (*compar) (const void *, const void *, void *);
|
|
void *arg;
|
|
};
|
|
|
|
static int
|
|
ctf_qsort_compar_thunk (void *arg, const void *a, const void *b)
|
|
{
|
|
struct ctf_qsort_arg *qsort_arg = (struct ctf_qsort_arg *) arg;
|
|
|
|
return qsort_arg->compar (a, b, arg);
|
|
}
|
|
|
|
static inline void
|
|
ctf_qsort_r (void *base, size_t nmemb, size_t size,
|
|
int (*compar)(const void *, const void *, void *),
|
|
void *arg)
|
|
{
|
|
struct ctf_qsort_arg thunk = { compar, arg };
|
|
qsort_r (base, nmemb, size, &thunk, ctf_qsort_compar_thunk);
|
|
}
|
|
#else
|
|
void ctf_qsort_r (void *base, size_t nmemb, size_t size,
|
|
int (*compar)(const void *, const void *, void *),
|
|
void *arg);
|
|
#endif
|
|
|
|
#ifndef HAVE_O_CLOEXEC
|
|
# define O_CLOEXEC 0
|
|
#endif
|
|
|
|
#undef MAX
|
|
#undef MIN
|
|
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
|
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
|
|
#endif /* _CTF_DECLS_H */
|