RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/elfutils#2b7d5a5e49ee221c5008f449bf39cd9827c1b9dc
This commit is contained in:
parent
693c0c765b
commit
4c6e632f02
24
.gitignore
vendored
24
.gitignore
vendored
@ -0,0 +1,24 @@
|
||||
/elfutils-0.158.tar.bz2
|
||||
/elfutils-0.159.tar.bz2
|
||||
/elfutils-0.160.tar.bz2
|
||||
/elfutils-0.161.tar.bz2
|
||||
/elfutils-0.162.tar.bz2
|
||||
/elfutils-0.163.tar.bz2
|
||||
/elfutils-0.164.tar.bz2
|
||||
/elfutils-0.165.tar.bz2
|
||||
/elfutils-0.166.tar.bz2
|
||||
/elfutils-0.167.tar.bz2
|
||||
/elfutils-0.168.tar.bz2
|
||||
/elfutils-0.169.tar.bz2
|
||||
/elfutils-0.170.tar.bz2
|
||||
/elfutils-0.171.tar.bz2
|
||||
/elfutils-0.172.tar.bz2
|
||||
/elfutils-0.173.tar.bz2
|
||||
/elfutils-0.174.tar.bz2
|
||||
/elfutils-0.175.tar.bz2
|
||||
/elfutils-0.176.tar.bz2
|
||||
/elfutils-0.177.tar.bz2
|
||||
/elfutils-0.178.tar.bz2
|
||||
/elfutils-0.179.tar.bz2
|
||||
/elfutils-0.180.tar.bz2
|
||||
/elfutils-0.181.tar.bz2
|
348
elfutils-0.181-zstd.patch
Normal file
348
elfutils-0.181-zstd.patch
Normal file
@ -0,0 +1,348 @@
|
||||
commit c5b0a640f0f7d2a195b822bcd88bb379476dbb97
|
||||
Author: Mark Wielaard <mark@klomp.org>
|
||||
Date: Fri Sep 18 12:49:29 2020 +0200
|
||||
|
||||
zstd support
|
||||
|
||||
diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in
|
||||
index 95f63f5a..37af1b07 100644
|
||||
--- a/config/elfutils.spec.in
|
||||
+++ b/config/elfutils.spec.in
|
||||
@@ -24,6 +24,7 @@ BuildRequires: flex
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: bzip2-devel
|
||||
BuildRequires: xz-devel
|
||||
+BuildRequires: libzstd-devel
|
||||
|
||||
# For debuginfod
|
||||
BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33
|
||||
@@ -33,6 +34,7 @@ BuildRequires: pkgconfig(libarchive) >= 3.1.2
|
||||
|
||||
# For tests need to bunzip2 test files.
|
||||
BuildRequires: bzip2
|
||||
+BuildRequires: zstd
|
||||
# For the run-debuginfod-find.sh test case in %check for /usr/sbin/ss
|
||||
BuildRequires: iproute
|
||||
BuildRequires: bsdtar
|
||||
diff --git a/config/libdw.pc.in b/config/libdw.pc.in
|
||||
index 3fc283db..2e83a432 100644
|
||||
--- a/config/libdw.pc.in
|
||||
+++ b/config/libdw.pc.in
|
||||
@@ -17,6 +17,6 @@ Requires: libelf = @VERSION@
|
||||
|
||||
# We support various compressed ELF images, but don't export any of the
|
||||
# data structures or functions. zlib (gz) is always required, bzip2 (bz2)
|
||||
-# and lzma (xz) are optional. But bzip2 doesn't have a pkg-config file.
|
||||
-Requires.private: zlib @LIBLZMA@
|
||||
+# lzma (xz) and zstd () are optional. But bzip2 doesn't have a pkg-config file.
|
||||
+Requires.private: zlib @LIBLZMA@ @LIBZSTD@
|
||||
Libs.private: @BZ2_LIB@
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index bf833872..1b794df3 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -397,8 +397,8 @@ eu_ZIPLIB(zlib,ZLIB,z,gzdirect,gzip)
|
||||
AS_IF([test "x$with_zlib" = xno], [AC_MSG_ERROR([zlib not found but is required])])
|
||||
LIBS="$save_LIBS"
|
||||
|
||||
-dnl Test for bzlib and xz/lzma, gives BZLIB/LZMALIB .am
|
||||
-dnl conditional and config.h USE_BZLIB/USE_LZMALIB #define.
|
||||
+dnl Test for bzlib and xz/lzma/zstd, gives BZLIB/LZMALIB/ZSTD .am
|
||||
+dnl conditional and config.h USE_BZLIB/USE_LZMALIB/USE_ZSTD #define.
|
||||
save_LIBS="$LIBS"
|
||||
LIBS=
|
||||
eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
|
||||
@@ -408,6 +408,9 @@ AC_SUBST([BZ2_LIB])
|
||||
eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
|
||||
AS_IF([test "x$with_lzma" = xyes], [LIBLZMA="liblzma"], [LIBLZMA=""])
|
||||
AC_SUBST([LIBLZMA])
|
||||
+eu_ZIPLIB(zstd,ZSTD,zstd,ZSTD_decompress,[ZSTD (zst)])
|
||||
+AS_IF([test "x$with_zstd" = xyes], [LIBZSTD="libzstd"], [LIBLZSTD=""])
|
||||
+AC_SUBST([LIBZSTD])
|
||||
zip_LIBS="$LIBS"
|
||||
LIBS="$save_LIBS"
|
||||
AC_SUBST([zip_LIBS])
|
||||
@@ -677,6 +680,10 @@ if test "$HAVE_BUNZIP2" = "no"; then
|
||||
AC_MSG_WARN([No bunzip2, needed to run make check])
|
||||
fi
|
||||
|
||||
+# For tests that need to use zstd compression
|
||||
+AC_CHECK_PROG(HAVE_ZSTD, zstd, yes, no)
|
||||
+AM_CONDITIONAL([HAVE_ZSTD],[test "x$HAVE_ZSTD" = "xyes"])
|
||||
+
|
||||
# Look for libcurl for libdebuginfod minimum version as per rhel7.
|
||||
AC_ARG_ENABLE([libdebuginfod],AC_HELP_STRING([--enable-libdebuginfod], [Build debuginfod client library (can be =dummy)]))
|
||||
AS_IF([test "x$enable_libdebuginfod" != "xno"], [
|
||||
@@ -742,6 +749,7 @@ AC_MSG_NOTICE([
|
||||
gzip support : ${with_zlib}
|
||||
bzip2 support : ${with_bzlib}
|
||||
lzma/xz support : ${with_lzma}
|
||||
+ zstd support : ${with_zstd}
|
||||
libstdc++ demangle support : ${enable_demangler}
|
||||
File textrel check : ${enable_textrelcheck}
|
||||
Symbol versioning : ${enable_symbol_versioning}
|
||||
@@ -759,6 +767,7 @@ AC_MSG_NOTICE([
|
||||
|
||||
EXTRA TEST FEATURES (used with make check)
|
||||
have bunzip2 installed (required) : ${HAVE_BUNZIP2}
|
||||
+ have zstd installed : ${HAVE_ZSTD}
|
||||
debug branch prediction : ${use_debugpred}
|
||||
gprof support : ${use_gprof}
|
||||
gcov support : ${use_gcov}
|
||||
diff --git a/libdwfl/Makefile.am b/libdwfl/Makefile.am
|
||||
index 1de05492..a0013e41 100644
|
||||
--- a/libdwfl/Makefile.am
|
||||
+++ b/libdwfl/Makefile.am
|
||||
@@ -78,6 +78,9 @@ endif
|
||||
if LZMA
|
||||
libdwfl_a_SOURCES += lzma.c
|
||||
endif
|
||||
+if ZSTD
|
||||
+libdwfl_a_SOURCES += zstd.c
|
||||
+endif
|
||||
if LIBDEBUGINFOD
|
||||
libdwfl_a_SOURCES += debuginfod-client.c
|
||||
endif
|
||||
diff --git a/libdwfl/gzip.c b/libdwfl/gzip.c
|
||||
index e9988cc2..ba8ecfba 100644
|
||||
--- a/libdwfl/gzip.c
|
||||
+++ b/libdwfl/gzip.c
|
||||
@@ -48,6 +48,12 @@
|
||||
# define inflateInit(z) lzma_auto_decoder (z, 1 << 30, 0)
|
||||
# define do_inflate(z) lzma_code (z, LZMA_RUN)
|
||||
# define inflateEnd(z) lzma_end (z)
|
||||
+#elif defined ZSTD
|
||||
+# define USE_INFLATE 1
|
||||
+# include <zstd.h>
|
||||
+# define unzip __libdw_unzstd
|
||||
+# define DWFL_E_ZLIB DWFL_E_ZSTD
|
||||
+# define MAGIC "\x28\xb5\x2f\xfd"
|
||||
#elif defined BZLIB
|
||||
# define USE_INFLATE 1
|
||||
# include <bzlib.h>
|
||||
@@ -119,6 +125,7 @@ fail (struct unzip_state *state, Dwfl_Error failure)
|
||||
return failure;
|
||||
}
|
||||
|
||||
+#ifndef ZSTD
|
||||
static inline Dwfl_Error
|
||||
zlib_fail (struct unzip_state *state, int result)
|
||||
{
|
||||
@@ -132,6 +139,7 @@ zlib_fail (struct unzip_state *state, int result)
|
||||
return fail (state, DWFL_E_ZLIB);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
#if !USE_INFLATE
|
||||
static Dwfl_Error
|
||||
@@ -197,7 +205,7 @@ unzip (int fd, off_t start_offset,
|
||||
|
||||
ssize_t n = pread_retry (fd, state.input_buffer, READ_SIZE, start_offset);
|
||||
if (unlikely (n < 0))
|
||||
- return zlib_fail (&state, Z (ERRNO));
|
||||
+ return fail (&state, DWFL_E_ERRNO);
|
||||
|
||||
state.input_pos = n;
|
||||
mapped = state.input_buffer;
|
||||
@@ -223,7 +231,74 @@ unzip (int fd, off_t start_offset,
|
||||
/* Not a compressed file. */
|
||||
return DWFL_E_BADELF;
|
||||
|
||||
-#if USE_INFLATE
|
||||
+#ifdef ZSTD
|
||||
+ /* special case for libzstd since it is slightly different from the
|
||||
+ API provided by bzlib and liblzma. */
|
||||
+
|
||||
+ void *next_in = mapped;
|
||||
+ size_t avail_in = state.mapped_size;
|
||||
+ void *next_out = NULL;
|
||||
+ size_t avail_out = 0;
|
||||
+ size_t total_out = 0;
|
||||
+
|
||||
+ size_t result;
|
||||
+ ZSTD_DCtx *dctx = ZSTD_createDCtx();
|
||||
+ if (dctx == NULL)
|
||||
+ return fail (&state, DWFL_E_NOMEM);
|
||||
+
|
||||
+ do
|
||||
+ {
|
||||
+ if (avail_in == 0 && state.input_buffer != NULL)
|
||||
+ {
|
||||
+ ssize_t n = pread_retry (fd, state.input_buffer, READ_SIZE,
|
||||
+ start_offset + state.input_pos);
|
||||
+ if (unlikely (n < 0))
|
||||
+ {
|
||||
+ ZSTD_freeDCtx (dctx);
|
||||
+ return fail (&state, DWFL_E_ERRNO);
|
||||
+ }
|
||||
+ next_in = state.input_buffer;
|
||||
+ avail_in = n;
|
||||
+ state.input_pos += n;
|
||||
+ }
|
||||
+ if (avail_out == 0)
|
||||
+ {
|
||||
+ ptrdiff_t pos = (void *) next_out - state.buffer;
|
||||
+ if (!bigger_buffer (&state, avail_in))
|
||||
+ {
|
||||
+ ZSTD_freeDCtx (dctx);
|
||||
+ return fail (&state, DWFL_E_NOMEM);
|
||||
+ }
|
||||
+ next_out = state.buffer + pos;
|
||||
+ avail_out = state.size - pos;
|
||||
+ }
|
||||
+
|
||||
+ ZSTD_inBuffer input = { next_in, avail_in, 0 };
|
||||
+ ZSTD_outBuffer output = { next_out, avail_out, 0 };
|
||||
+ result = ZSTD_decompressStream (dctx, &output, &input);
|
||||
+
|
||||
+ if (! ZSTD_isError (result))
|
||||
+ {
|
||||
+ total_out += output.pos;
|
||||
+ next_out += output.pos;
|
||||
+ avail_out -= output.pos;
|
||||
+ next_in += input.pos;
|
||||
+ avail_in -= input.pos;
|
||||
+ }
|
||||
+
|
||||
+ if (result == 0)
|
||||
+ break;
|
||||
+ }
|
||||
+ while (avail_in > 0 && ! ZSTD_isError (result));
|
||||
+
|
||||
+ ZSTD_freeDCtx (dctx);
|
||||
+
|
||||
+ if (ZSTD_isError (result))
|
||||
+ return fail (&state, DWFL_E_ZSTD);
|
||||
+
|
||||
+ smaller_buffer (&state, total_out);
|
||||
+
|
||||
+#elif USE_INFLATE
|
||||
|
||||
/* This style actually only works with bzlib and liblzma.
|
||||
The stupid zlib interface has nothing to grok the
|
||||
diff --git a/libdwfl/libdwflP.h b/libdwfl/libdwflP.h
|
||||
index ad6779ad..4c6fcb28 100644
|
||||
--- a/libdwfl/libdwflP.h
|
||||
+++ b/libdwfl/libdwflP.h
|
||||
@@ -61,6 +61,7 @@ typedef struct Dwfl_Process Dwfl_Process;
|
||||
DWFL_ERROR (ZLIB, N_("gzip decompression failed")) \
|
||||
DWFL_ERROR (BZLIB, N_("bzip2 decompression failed")) \
|
||||
DWFL_ERROR (LZMA, N_("LZMA decompression failed")) \
|
||||
+ DWFL_ERROR (ZSTD, N_("zstd decompression failed")) \
|
||||
DWFL_ERROR (UNKNOWN_MACHINE, N_("no support library found for machine")) \
|
||||
DWFL_ERROR (NOREL, N_("Callbacks missing for ET_REL file")) \
|
||||
DWFL_ERROR (BADRELTYPE, N_("Unsupported relocation type")) \
|
||||
@@ -612,6 +613,10 @@ extern Dwfl_Error __libdw_unlzma (int fd, off_t start_offset,
|
||||
void *mapped, size_t mapped_size,
|
||||
void **whole, size_t *whole_size)
|
||||
internal_function;
|
||||
+extern Dwfl_Error __libdw_unzstd (int fd, off_t start_offset,
|
||||
+ void *mapped, size_t mapped_size,
|
||||
+ void **whole, size_t *whole_size)
|
||||
+ internal_function;
|
||||
|
||||
/* Skip the image header before a file image: updates *START_OFFSET. */
|
||||
extern Dwfl_Error __libdw_image_header (int fd, off_t *start_offset,
|
||||
diff --git a/libdwfl/open.c b/libdwfl/open.c
|
||||
index 35fc5283..77bd2bd9 100644
|
||||
--- a/libdwfl/open.c
|
||||
+++ b/libdwfl/open.c
|
||||
@@ -44,6 +44,10 @@
|
||||
# define __libdw_unlzma(...) DWFL_E_BADELF
|
||||
#endif
|
||||
|
||||
+#if !USE_ZSTD
|
||||
+# define __libdw_unzstd(...) DWFL_E_BADELF
|
||||
+#endif
|
||||
+
|
||||
/* Consumes and replaces *ELF only on success. */
|
||||
static Dwfl_Error
|
||||
decompress (int fd __attribute__ ((unused)), Elf **elf)
|
||||
@@ -64,6 +68,8 @@ decompress (int fd __attribute__ ((unused)), Elf **elf)
|
||||
error = __libdw_bunzip2 (fd, offset, mapped, mapped_size, &buffer, &size);
|
||||
if (error == DWFL_E_BADELF)
|
||||
error = __libdw_unlzma (fd, offset, mapped, mapped_size, &buffer, &size);
|
||||
+ if (error == DWFL_E_BADELF)
|
||||
+ error = __libdw_unzstd (fd, offset, mapped, mapped_size, &buffer, &size);
|
||||
|
||||
if (error == DWFL_E_NOERROR)
|
||||
{
|
||||
diff --git a/libdwfl/zstd.c b/libdwfl/zstd.c
|
||||
new file mode 100644
|
||||
index 00000000..dc4d5238
|
||||
--- /dev/null
|
||||
+++ b/libdwfl/zstd.c
|
||||
@@ -0,0 +1,4 @@
|
||||
+/* libzstd is pretty close to zlib and bzlib. */
|
||||
+
|
||||
+#define ZSTD
|
||||
+#include "gzip.c"
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 4629ce64..9d0707da 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -204,6 +204,10 @@ if LZMA
|
||||
TESTS += run-readelf-s.sh run-dwflsyms.sh
|
||||
endif
|
||||
|
||||
+if HAVE_ZSTD
|
||||
+TESTS += run-readelf-compressed-zstd.sh
|
||||
+endif
|
||||
+
|
||||
if HAVE_LIBASM
|
||||
check_PROGRAMS += $(asm_TESTS)
|
||||
TESTS += $(asm_TESTS) run-disasm-bpf.sh
|
||||
@@ -256,6 +260,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
|
||||
run-nm-syms.sh testfilesyms32.bz2 testfilesyms64.bz2 \
|
||||
run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
|
||||
run-readelf-compressed.sh \
|
||||
+ run-readelf-compressed-zstd.sh \
|
||||
run-readelf-const-values.sh testfile-const-values.debug.bz2 \
|
||||
run-addrcfi.sh run-dwarfcfi.sh \
|
||||
testfile11-debugframe.bz2 testfile12-debugframe.bz2 \
|
||||
diff --git a/tests/run-readelf-compressed-zstd.sh b/tests/run-readelf-compressed-zstd.sh
|
||||
new file mode 100755
|
||||
index 00000000..96208092
|
||||
--- /dev/null
|
||||
+++ b/tests/run-readelf-compressed-zstd.sh
|
||||
@@ -0,0 +1,39 @@
|
||||
+#! /bin/sh
|
||||
+# Copyright (C) 2018 Red Hat, Inc.
|
||||
+# This file is part of elfutils.
|
||||
+#
|
||||
+# This file is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# 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 a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+. $srcdir/test-subr.sh
|
||||
+
|
||||
+if ! grep -q -F '#define USE_ZSTD' ${abs_top_builddir}/config.h; then
|
||||
+ echo "elfutils built without zstd support"
|
||||
+ exit 77
|
||||
+fi
|
||||
+
|
||||
+# See run-strip-reloc.sh
|
||||
+testfiles hello_i386.ko
|
||||
+
|
||||
+tempfiles hello_i386.ko.zst readelf.out.1 readelf.out.2
|
||||
+
|
||||
+testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko > readelf.out.1
|
||||
+zstd hello_i386.ko
|
||||
+testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko.zst > readelf.out.2
|
||||
+
|
||||
+diff -u readelf.out.1 readelf.out.2
|
||||
+if [ $? != 0 ]; then
|
||||
+ exit 1;
|
||||
+fi
|
||||
+
|
||||
+exit 0
|
1629
elfutils.spec
Normal file
1629
elfutils.spec
Normal file
File diff suppressed because it is too large
Load Diff
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
||||
SHA512 (elfutils-0.181.tar.bz2) = d565541d5817f409dc89ebb1ee593366f69c371a1531308eeb67ff934b14a0fab0c9009fd7c23240efbaa1b4e04edac5c425e47d80e3e66ba03dcaf000afea36
|
109
upstream-key.gpg
Normal file
109
upstream-key.gpg
Normal file
@ -0,0 +1,109 @@
|
||||
pub 1024D/7EBBD625 2003-01-10
|
||||
uid Roland McGrath <roland@frob.com>
|
||||
uid Roland McGrath <frob@debian.org>
|
||||
uid Roland McGrath <roland@gnu.org>
|
||||
uid Roland McGrath <roland@redhat.com>
|
||||
sub 2048g/17998A93 2003-01-10
|
||||
|
||||
pub 1024D/79FF4474 2001-08-24
|
||||
uid Ulrich Drepper <drepper@akkadia.org>
|
||||
uid Ulrich Drepper <drepper@redhat.com>
|
||||
sub 2048g/07FA6550 2001-08-24
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.5 (GNU/Linux)
|
||||
|
||||
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
|
||||
gTKAnym+PwCfbnwIeEZfbBWgonv4/I3aNNm3FdQ=
|
||||
=2IML
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
Loading…
Reference in New Issue
Block a user