From c8dd3e3985dce3ae94bb09d6df82a516852e78c4 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Tue, 24 Jul 2018 11:24:29 +0200 Subject: Add a header for eu_compat.dll, and export more functions We obviously need strdup, and it doesn't hurt to also export realloc and calloc. Change-Id: Ia4af48faaec2bcf24c3e07002711cd6153f684bf Reviewed-by: Christian Kandeler --- lib/Makefile.am | 2 ++ lib/eu_compat.def.in | 3 ++ lib/libeu_compat.h | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 lib/libeu_compat.h diff --git a/lib/Makefile.am b/lib/Makefile.am index f429a9bb..edd669fb 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -31,6 +31,7 @@ include $(top_srcdir)/config/eu.am AM_CFLAGS += $(fpic_CFLAGS) AM_CPPFLAGS += -I$(srcdir)/../libelf +pkginclude_HEADERS = libeu_compat.h noinst_LIBRARIES = libeu.a libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c \ @@ -59,6 +60,7 @@ endif EXTRA_DIST += eu_compat.def.in if NATIVE_PE + eu_compat.def: eu_compat.def.in cp $< $@ diff --git a/lib/eu_compat.def.in b/lib/eu_compat.def.in index c2aa88ff..bed5c83c 100644 --- a/lib/eu_compat.def.in +++ b/lib/eu_compat.def.in @@ -4,4 +4,7 @@ eu_compat_demangle=__cxa_demangle eu_compat_open=msvcrt._open eu_compat_close=msvcrt._close eu_compat_malloc=msvcrt.malloc +eu_compat_realloc=msvcrt.realloc +eu_compat_calloc=msvcrt.calloc eu_compat_free=msvcrt.free +eu_compat_strdup=msvcrt._strdup diff --git a/lib/libeu_compat.h b/lib/libeu_compat.h new file mode 100644 index 00000000..fe73e237 --- /dev/null +++ b/lib/libeu_compat.h @@ -0,0 +1,77 @@ +/* Interface for libeu_compat. + Copyright (C) 2018 The Qt Company Ltd. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils 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 copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifndef _LIBEU_COMPAT_H +#define _LIBEU_COMPAT_H 1 + +#if (defined _WIN32 || defined __WIN32__) + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern char *eu_compat_demangle(const char *mangled_name, char *output_buffer, + size_t *length, int *status); + +extern int eu_compat_open(const char *, int); +extern int eu_compat_close(int); + +extern void *eu_compat_malloc(size_t); +extern void *eu_compat_realloc(void *, size_t); +extern void *eu_compat_calloc(size_t); +extern void eu_compat_free(void *); + +extern char* eu_compat_strdup(const char* string); + +#ifdef __cplusplus +} +#endif + +#else + +#include +#include + +#define eu_compat_demangle abi::__cxa_demangle + +#define eu_compat_open open +#define eu_compat_close close +#define O_BINARY 0 + +#define eu_compat_malloc malloc +#define eu_compat_realloc realloc +#define eu_compat_calloc calloc +#define eu_compat_free free + +#define eu_compat_strdup strdup + +#endif + +#endif // _LIBEU_COMPAT_H -- cgit v1.2.3