From c3ead87973c51941cb1979a02c198fc9c413b26a Mon Sep 17 00:00:00 2001 From: its-pointless Date: Wed, 29 May 2019 16:28:03 +1000 Subject: [PATCH] libelf update --- packages/libelf/aligned_alloc.c | 67 +++++++++++++++++++++++++ packages/libelf/build.sh | 7 +-- packages/libelf/libelfmakefile.am.patch | 11 ++++ 3 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 packages/libelf/aligned_alloc.c create mode 100644 packages/libelf/libelfmakefile.am.patch diff --git a/packages/libelf/aligned_alloc.c b/packages/libelf/aligned_alloc.c new file mode 100644 index 000000000..08840b7aa --- /dev/null +++ b/packages/libelf/aligned_alloc.c @@ -0,0 +1,67 @@ +/***************************************************************************** + * aligned_alloc.c: C11 aligned_alloc() replacement + ***************************************************************************** + * Copyright © 2012, 2017 Rémi Denis-Courmont + * + * This program 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; either version 2.1 of the License, 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#if !defined (HAVE_POSIX_MEMALIGN) +# include +#endif + +void *aligned_alloc(size_t align, size_t size) +{ + /* align must be a power of 2 */ + /* size must be a multiple of align */ + if ((align & (align - 1)) || (size & (align - 1))) + { + errno = EINVAL; + return NULL; + } + +#ifdef __ANDROID__ + if (align < sizeof (void *)) /* POSIX does not allow small alignment */ + align = sizeof (void *); + + void *ptr; + int err = posix_memalign(&ptr, align, size); + if (err) + { + errno = err; + ptr = NULL; + } + return ptr; + +#elif defined(HAVE_MEMALIGN) + return memalign(align, size); +#elif defined (_WIN32) && defined(__MINGW32__) + return __mingw_aligned_malloc(size, align); +#elif defined (_WIN32) && defined(_MSC_VER) + return _aligned_malloc(size, align); +#else +#warning unsupported aligned allocation! + if (size > 0) + errno = ENOMEM; + return NULL; +#endif +} diff --git a/packages/libelf/build.sh b/packages/libelf/build.sh index b458ae7ee..20593d30a 100644 --- a/packages/libelf/build.sh +++ b/packages/libelf/build.sh @@ -3,9 +3,8 @@ TERMUX_PKG_DESCRIPTION="ELF object file access library" TERMUX_PKG_LICENSE="GPL-2.0" # NOTE: We only build the libelf part of elfutils for now, # as other parts are not clang compatible. -TERMUX_PKG_VERSION=0.175 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=f7ef925541ee32c6d15ae5cb27da5f119e01a5ccdbe9fe57bf836730d7b7a65b +TERMUX_PKG_VERSION=0.176 +TERMUX_PKG_SHA256=eb5747c371b0af0f71e86215a5ebb88728533c3a104a43d4231963f308cd1023 TERMUX_PKG_SRCURL=ftp://sourceware.org/pub/elfutils/${TERMUX_PKG_VERSION}/elfutils-${TERMUX_PKG_VERSION}.tar.bz2 # libandroid-support for langinfo. TERMUX_PKG_DEPENDS="libandroid-support, zlib" @@ -26,6 +25,8 @@ termux_step_pre_configure() { cp $TERMUX_PKG_BUILDER_DIR/stdio_ext.h . cp $TERMUX_PKG_BUILDER_DIR/obstack.h . cp $TERMUX_PKG_BUILDER_DIR/qsort_r.h . + cp $TERMUX_PKG_BUILDER_DIR/aligned_alloc.c libelf + autoreconf -if } termux_step_make() { diff --git a/packages/libelf/libelfmakefile.am.patch b/packages/libelf/libelfmakefile.am.patch new file mode 100644 index 000000000..c0f354c4e --- /dev/null +++ b/packages/libelf/libelfmakefile.am.patch @@ -0,0 +1,11 @@ +--- ./libelf/Makefile.am.orig 2019-05-29 05:19:01.983292465 +0000 ++++ ./libelf/Makefile.am 2019-05-29 05:19:19.759573256 +0000 +@@ -62,7 +62,7 @@ + gelf_update_ehdr.c \ + elf32_getphdr.c elf64_getphdr.c gelf_getphdr.c \ + elf32_newphdr.c elf64_newphdr.c gelf_newphdr.c \ +- gelf_update_phdr.c \ ++ gelf_update_phdr.c aligned_alloc.c \ + elf_getarhdr.c elf_getarsym.c \ + elf_rawfile.c elf_readall.c elf_cntl.c \ + elf_getscn.c elf_nextscn.c elf_ndxscn.c elf_newscn.c \