diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2018-07-24 11:24:29 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2018-07-25 07:13:32 +0000 |
commit | c8dd3e3985dce3ae94bb09d6df82a516852e78c4 (patch) | |
tree | bce76ea8fceb20661707aedd33016b7f78b8e152 | |
parent | 4c381c95ba730e7912b829b25f817e76edcf04ea (diff) |
Add a header for eu_compat.dll, and export more functionsQtCreator4.8.1QtCreator4.8.0-rc1QtCreator4.8.0-beta2QtCreator4.8.0-beta1QtCreator4.8.04.8
We obviously need strdup, and it doesn't hurt to also export realloc and
calloc.
Change-Id: Ia4af48faaec2bcf24c3e07002711cd6153f684bf
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | lib/eu_compat.def.in | 3 | ||||
-rw-r--r-- | lib/libeu_compat.h | 77 |
3 files changed, 82 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>. */ + +#ifndef _LIBEU_COMPAT_H +#define _LIBEU_COMPAT_H 1 + +#if (defined _WIN32 || defined __WIN32__) + +#include <io.h> + +#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 <cxxabi.h> +#include <unistd.h> + +#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 |