/*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; If not, see .
*/
#ifndef __LIBELF_PRIVATE_H__
#define __LIBELF_PRIVATE_H__
#ifdef __XEN__
#include
#include
#include
#include
#include
/* we would like to use elf->log_callback but we can't because
* there is no vprintk in Xen */
#define elf_msg(elf, fmt, args ... ) \
if (elf->verbose) printk(fmt, ## args )
#define elf_err(elf, fmt, args ... ) \
printk(fmt, ## args )
#define strtoull(str, end, base) simple_strtoull(str, end, base)
#define bswap_16(x) swab16(x)
#define bswap_32(x) swab32(x)
#define bswap_64(x) swab64(x)
#else /* !__XEN__ */
#include
#include
#include
#include
#include
#include
#include
#ifdef __sun__
#include
#define bswap_16(x) BSWAP_16(x)
#define bswap_32(x) BSWAP_32(x)
#define bswap_64(x) BSWAP_64(x)
#elif defined(__NetBSD__)
#include
#define bswap_16(x) bswap16(x)
#define bswap_32(x) bswap32(x)
#define bswap_64(x) bswap64(x)
#elif defined(__OpenBSD__)
#include
#define bswap_16(x) swap16(x)
#define bswap_32(x) swap32(x)
#define bswap_64(x) swap64(x)
#elif defined(__FreeBSD__)
#include
#define bswap_16(x) bswap16(x)
#define bswap_32(x) bswap32(x)
#define bswap_64(x) bswap64(x)
#elif defined(__linux__) || defined(__Linux__) || defined(__MINIOS__)
#include
#else
#error Unsupported OS
#endif
#include
#include
#ifndef FUZZ_NO_LIBXC
#include "xenctrl.h"
#include "xc_private.h"
#endif
#define elf_msg(elf, fmt, args ... ) \
elf_call_log_callback(elf, 0, fmt , ## args );
#define elf_err(elf, fmt, args ... ) \
elf_call_log_callback(elf, 1, fmt , ## args );
void elf_call_log_callback(struct elf_binary*, bool iserr, const char *fmt,...);
#define safe_strcpy(d,s) \
do { strncpy((d),(s),sizeof((d))-1); \
(d)[sizeof((d))-1] = '\0'; \
} while (0)
#endif
#undef memcpy
#undef memset
#undef memmove
#undef strcpy
#define memcpy MISTAKE_unspecified_memcpy
#define memset MISTAKE_unspecified_memset
#define memmove MISTAKE_unspecified_memmove
#define strcpy MISTAKE_unspecified_strcpy
/* This prevents libelf from using these undecorated versions
* of memcpy, memset, memmove and strcpy. Every call site
* must either use elf_mem*_unchecked, or elf_mem*_safe. */
#endif /* __LIBELF_PRIVATE_H__ */
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* tab-width: 4
* indent-tabs-mode: nil
* End:
*/