[openwrt/openwrt] tools/elfutils: use gnulib module for posix_fallocate()
LEDE Commits
lede-commits at lists.infradead.org
Wed Jun 19 02:22:22 PDT 2024
robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/c07a23416442ab9719d6fdb2fa73d680fbb2097e
commit c07a23416442ab9719d6fdb2fa73d680fbb2097e
Author: Michael Pratt <mcpratt at pm.me>
AuthorDate: Mon Jun 10 14:43:04 2024 -0400
tools/elfutils: use gnulib module for posix_fallocate()
The version of posix_fallocate() patched into elfutils
for macOS using code from Mozilla is now patched into gnulib.
Import the fallocate-posix module and always link
the corresponding object to libraries whenever it is built.
Signed-off-by: Michael Pratt <mcpratt at pm.me>
Link: https://github.com/openwrt/openwrt/pull/15690
Signed-off-by: Robert Marko <robimarko at gmail.com>
---
tools/elfutils/Makefile | 3 +++
tools/elfutils/patches/100-portability.patch | 34 ----------------------------
2 files changed, 3 insertions(+), 34 deletions(-)
diff --git a/tools/elfutils/Makefile b/tools/elfutils/Makefile
index 6b09f29c68..260b68c11a 100644
--- a/tools/elfutils/Makefile
+++ b/tools/elfutils/Makefile
@@ -44,6 +44,7 @@ PKG_GNULIB_ARGS = \
PKG_GNULIB_MODS = \
argp \
+ fallocate-posix \
fnmatch-gnu \
fts \
obstack \
@@ -54,6 +55,7 @@ PKG_GNULIB_MODS = \
include $(INCLUDE_DIR)/host-build.mk
export $(PKG_GNULIB_BASE)=$(HOST_BUILD_DIR)/$(PKG_GNULIB_BASE)/$(PKG_GNULIB_BASE).la
+export $(PKG_GNULIB_BASE)_fallocate-posix=$(HOST_BUILD_DIR)/$(PKG_GNULIB_BASE)/$(PKG_GNULIB_BASE)_la-posix_fallocate.lo
export $(PKG_GNULIB_BASE)_tsearch=$(HOST_BUILD_DIR)/$(PKG_GNULIB_BASE)/$(PKG_GNULIB_BASE)_la-tsearch.lo
HOST_MAKE_FLAGS += \
@@ -62,6 +64,7 @@ HOST_MAKE_FLAGS += \
libelf_la_LIBADD='../lib/libeu.la -lz $$$$(zstd_LIBS) -lpthread' \
libdw_la_LIBADD='../libdwfl/libdwfl.la ../libdwelf/libdwelf.la ../libebl/libebl.la ../backends/libebl_backends.la ../libcpu/libcpu.la' \
LIBS+='$$$$(if $$$$(findstring $(lastword $(PKG_SUBDIRS)),$$$$(subdir)), $$$$($(PKG_GNULIB_BASE)))' \
+ LIBS+='$$$$(wildcard $$$$($(PKG_GNULIB_BASE)_fallocate-posix))' \
LIBS+='$$$$(wildcard $$$$($(PKG_GNULIB_BASE)_tsearch))' \
REPLACE_FCNTL=0 REPLACE_FREE=0 REPLACE_FSTAT=0 REPLACE_OPEN=0 \
bin_PROGRAMS='$(PKG_PROGRAMS)' EXEEXT=
diff --git a/tools/elfutils/patches/100-portability.patch b/tools/elfutils/patches/100-portability.patch
index 1e4233c8fd..61d173d0cc 100644
--- a/tools/elfutils/patches/100-portability.patch
+++ b/tools/elfutils/patches/100-portability.patch
@@ -48,40 +48,6 @@
saved_LIBS="$LIBS"
AC_SEARCH_LIBS([argp_parse], [argp])
LIBS="$saved_LIBS"
---- a/libelf/elf_update.c
-+++ b/libelf/elf_update.c
-@@ -37,6 +37,31 @@
-
- #include "libelfP.h"
-
-+#ifdef __APPLE__
-+static int posix_fallocate(int fd, off_t offset, off_t len)
-+{
-+ off_t c_test;
-+ int ret;
-+ if (!__builtin_saddll_overflow(offset, len, &c_test)) {
-+ fstore_t store = {F_ALLOCATECONTIG, F_PEOFPOSMODE, 0, offset + len, 0};
-+ // Try to get a continuous chunk of disk space
-+ ret = fcntl(fd, F_PREALLOCATE, &store);
-+ if (ret < 0) {
-+ // OK, perhaps we are too fragmented, allocate non-continuous
-+ store.fst_flags = F_ALLOCATEALL;
-+ ret = fcntl(fd, F_PREALLOCATE, &store);
-+ if (ret < 0) {
-+ return ret;
-+ }
-+ }
-+ ret = ftruncate(fd, offset + len);
-+ } else {
-+ // offset+len would overflow.
-+ ret = -1;
-+ }
-+ return ret;
-+}
-+#endif
-
- static int64_t
- write_file (Elf *elf, int64_t size, int change_bo, size_t shnum)
--- a/lib/eu-config.h
+++ b/lib/eu-config.h
@@ -59,14 +59,18 @@
More information about the lede-commits
mailing list