0.165-2 - Add elfutils-0.165-elf-libelf.patch

This commit is contained in:
Mark Wielaard 2016-01-14 14:41:08 +01:00
parent ff619663a1
commit 307d332401
2 changed files with 291 additions and 1 deletions

View File

@ -0,0 +1,283 @@
commit 344ca0775da729e1bfdd61bb88ba4c64befece07
Author: Mark Wielaard <mjw@redhat.com>
Date: Wed Jan 13 17:16:48 2016 +0100
libelf: Add ELF compression types and defines to libelf.h for older glibc.
Older glibc elf.h might not define the new ELF compression defines and
types. If not just define them in libelf.h directly to make the libelf
headers work on older glibc systems.
Also include a testcase to check the libelf headers build against the
system elf.h.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810885
Signed-off-by: Mark Wielaard <mjw@redhat.com>
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index 3a1fe91..aabf6f6 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-13 Mark Wielaard <mjw@redhat.com>
+
+ * libelf.h: Check SHF_COMPRESSED is defined. If not define it and the
+ associated ELF compression types/defines.
+
2015-11-26 Mark Wielaard <mjw@redhat.com>
* elf_compress.c (__libelf_decompress_elf): New function, extracted
diff --git a/libelf/libelf.h b/libelf/libelf.h
index 364e776..c0d6389 100644
--- a/libelf/libelf.h
+++ b/libelf/libelf.h
@@ -35,6 +35,34 @@
/* Get the ELF types. */
#include <elf.h>
+#ifndef SHF_COMPRESSED
+ /* Older glibc elf.h might not yet define the ELF compression types. */
+ #define SHF_COMPRESSED (1 << 11) /* Section with compressed data. */
+
+ /* Section compression header. Used when SHF_COMPRESSED is set. */
+
+ typedef struct
+ {
+ Elf32_Word ch_type; /* Compression format. */
+ Elf32_Word ch_size; /* Uncompressed data size. */
+ Elf32_Word ch_addralign; /* Uncompressed data alignment. */
+ } Elf32_Chdr;
+
+ typedef struct
+ {
+ Elf64_Word ch_type; /* Compression format. */
+ Elf64_Word ch_reserved;
+ Elf64_Xword ch_size; /* Uncompressed data size. */
+ Elf64_Xword ch_addralign; /* Uncompressed data alignment. */
+ } Elf64_Chdr;
+
+ /* Legal values for ch_type (compression algorithm). */
+ #define ELFCOMPRESS_ZLIB 1 /* ZLIB/DEFLATE algorithm. */
+ #define ELFCOMPRESS_LOOS 0x60000000 /* Start of OS-specific. */
+ #define ELFCOMPRESS_HIOS 0x6fffffff /* End of OS-specific. */
+ #define ELFCOMPRESS_LOPROC 0x70000000 /* Start of processor-specific. */
+ #define ELFCOMPRESS_HIPROC 0x7fffffff /* End of processor-specific. */
+#endif
/* Known translation types. */
typedef enum
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 366aea9..234ae56 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,11 @@
+2016-01-13 Mark Wielaard <mjw@redhat.com>
+
+ * system-elf-libelf-test.c: New test.
+ * Makefile.am (TESTS): Add system-elf-libelf-test, if !STANDALONE.
+ (check_PROGRAMS): Likewise.
+ (system_elf_libelf_test_CPPFLAGS): New variable.
+ (system_elf_libelf_test_LDADD): Likewise.
+
2016-01-08 Mark Wielaard <mjw@redhat.com>
* elfputzdata.c (main): Fix parentheses in strncmp test.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d09a6d7..7b9e108 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -136,8 +136,8 @@ export ELFUTILS_DISABLE_DEMANGLE = 1
endif
if !STANDALONE
-check_PROGRAMS += msg_tst md5-sha1-test
-TESTS += msg_tst md5-sha1-test
+check_PROGRAMS += msg_tst md5-sha1-test system-elf-libelf-test
+TESTS += msg_tst md5-sha1-test system-elf-libelf-test
endif
if LZMA
@@ -473,6 +473,11 @@ elfgetzdata_LDADD = $(libelf)
elfputzdata_LDADD = $(libelf)
zstrptr_LDADD = $(libelf)
+# We want to test the libelf header against the system elf.h header.
+# Don't include any -I CPPFLAGS.
+system_elf_libelf_test_CPPFLAGS =
+system_elf_libelf_test_LDADD = $(libelf)
+
if GCOV
check: check-am coverage
.PHONY: coverage
diff --git a/tests/system-elf-libelf-test.c b/tests/system-elf-libelf-test.c
new file mode 100644
index 0000000..7dfe498
--- /dev/null
+++ b/tests/system-elf-libelf-test.c
@@ -0,0 +1,35 @@
+/* Explicit test compiling with system elf.h header plus libelf header.
+
+ Copyright (C) 2016 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/>. */
+
+#include <elf.h>
+#include <stddef.h>
+#include "../libelf/libelf.h"
+
+int
+main (void)
+{
+ /* Trivial test, this is really a compile test anyway. */
+ if (elf_version (EV_CURRENT) == EV_NONE)
+ return -1;
+
+ /* This will obviously fail. It is just to check that Elf32_Chdr and
+ elf32_getchdr are available (both at compile time and runtime). */
+ Elf32_Chdr *chdr = elf32_getchdr (NULL);
+
+ return chdr == NULL ? 0 : -1;
+}
diff -ru elfutils-0.165.orig/tests/Makefile.in elfutils-0.165/tests/Makefile.in
--- elfutils-0.165.orig/tests/Makefile.in 2016-01-14 14:37:27.557995293 +0100
+++ elfutils-0.165/tests/Makefile.in 2016-01-14 14:37:39.621953358 +0100
@@ -186,8 +186,8 @@
run-elfputzdata.sh run-zstrptr.sh run-compress-test.sh \
run-readelf-zdebug.sh run-readelf-zdebug-rel.sh \
$(am__EXEEXT_2) $(am__append_8) $(am__EXEEXT_4)
-@STANDALONE_FALSE@am__append_6 = msg_tst md5-sha1-test
-@STANDALONE_FALSE@am__append_7 = msg_tst md5-sha1-test
+@STANDALONE_FALSE@am__append_6 = msg_tst md5-sha1-test system-elf-libelf-test
+@STANDALONE_FALSE@am__append_7 = msg_tst md5-sha1-test system-elf-libelf-test
@LZMA_TRUE@am__append_8 = run-readelf-s.sh run-dwflsyms.sh
@HAVE_LIBASM_TRUE@am__append_9 = $(asm_TESTS)
@HAVE_LIBASM_TRUE@am__append_10 = $(asm_TESTS)
@@ -206,7 +206,8 @@
CONFIG_CLEAN_VPATH_FILES =
@BIARCH_TRUE@am__EXEEXT_1 = backtrace-child-biarch$(EXEEXT)
@STANDALONE_FALSE@am__EXEEXT_2 = msg_tst$(EXEEXT) \
-@STANDALONE_FALSE@ md5-sha1-test$(EXEEXT)
+@STANDALONE_FALSE@ md5-sha1-test$(EXEEXT) \
+@STANDALONE_FALSE@ system-elf-libelf-test$(EXEEXT)
am__EXEEXT_3 = asm-tst1$(EXEEXT) asm-tst2$(EXEEXT) asm-tst3$(EXEEXT) \
asm-tst4$(EXEEXT) asm-tst5$(EXEEXT) asm-tst6$(EXEEXT) \
asm-tst7$(EXEEXT) asm-tst8$(EXEEXT) asm-tst9$(EXEEXT)
@@ -490,6 +491,10 @@
strptr_SOURCES = strptr.c
strptr_OBJECTS = strptr.$(OBJEXT)
strptr_DEPENDENCIES = $(am__DEPENDENCIES_2)
+system_elf_libelf_test_SOURCES = system-elf-libelf-test.c
+system_elf_libelf_test_OBJECTS = \
+ system_elf_libelf_test-system-elf-libelf-test.$(OBJEXT)
+system_elf_libelf_test_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_elf_cntl_gelf_getshdr_SOURCES = test-elf_cntl_gelf_getshdr.c
test_elf_cntl_gelf_getshdr_OBJECTS = \
test-elf_cntl_gelf_getshdr.$(OBJEXT)
@@ -578,9 +583,10 @@
low_high_pc.c md5-sha1-test.c msg_tst.c newdata.c newfile.c \
newscn.c rdwrmmap.c rerequest_tag.c saridx.c scnnames.c \
sectiondump.c show-abbrev.c show-die-info.c showptable.c \
- strptr.c test-elf_cntl_gelf_getshdr.c test-flag-nobits.c \
- test-nlist.c typeiter.c typeiter2.c update1.c update2.c \
- update3.c update4.c varlocs.c vdsosyms.c zstrptr.c
+ strptr.c system-elf-libelf-test.c test-elf_cntl_gelf_getshdr.c \
+ test-flag-nobits.c test-nlist.c typeiter.c typeiter2.c \
+ update1.c update2.c update3.c update4.c varlocs.c vdsosyms.c \
+ zstrptr.c
DIST_SOURCES = addrcfi.c addrscopes.c aggregate_size.c alldts.c \
allfcts.c allregs.c arextract.c arls.c arsymtest.c asm-tst1.c \
asm-tst2.c asm-tst3.c asm-tst4.c asm-tst5.c asm-tst6.c \
@@ -599,9 +605,10 @@
low_high_pc.c md5-sha1-test.c msg_tst.c newdata.c newfile.c \
newscn.c rdwrmmap.c rerequest_tag.c saridx.c scnnames.c \
sectiondump.c show-abbrev.c show-die-info.c showptable.c \
- strptr.c test-elf_cntl_gelf_getshdr.c test-flag-nobits.c \
- test-nlist.c typeiter.c typeiter2.c update1.c update2.c \
- update3.c update4.c varlocs.c vdsosyms.c zstrptr.c
+ strptr.c system-elf-libelf-test.c test-elf_cntl_gelf_getshdr.c \
+ test-flag-nobits.c test-nlist.c typeiter.c typeiter2.c \
+ update1.c update2.c update3.c update4.c varlocs.c vdsosyms.c \
+ zstrptr.c
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -1301,6 +1308,11 @@
elfgetzdata_LDADD = $(libelf)
elfputzdata_LDADD = $(libelf)
zstrptr_LDADD = $(libelf)
+
+# We want to test the libelf header against the system elf.h header.
+# Don't include any -I CPPFLAGS.
+system_elf_libelf_test_CPPFLAGS =
+system_elf_libelf_test_LDADD = $(libelf)
all: all-am
.SUFFIXES:
@@ -1635,6 +1647,10 @@
@rm -f strptr$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(strptr_OBJECTS) $(strptr_LDADD) $(LIBS)
+system-elf-libelf-test$(EXEEXT): $(system_elf_libelf_test_OBJECTS) $(system_elf_libelf_test_DEPENDENCIES) $(EXTRA_system_elf_libelf_test_DEPENDENCIES)
+ @rm -f system-elf-libelf-test$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(system_elf_libelf_test_OBJECTS) $(system_elf_libelf_test_LDADD) $(LIBS)
+
test-elf_cntl_gelf_getshdr$(EXEEXT): $(test_elf_cntl_gelf_getshdr_OBJECTS) $(test_elf_cntl_gelf_getshdr_DEPENDENCIES) $(EXTRA_test_elf_cntl_gelf_getshdr_DEPENDENCIES)
@rm -f test-elf_cntl_gelf_getshdr$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_elf_cntl_gelf_getshdr_OBJECTS) $(test_elf_cntl_gelf_getshdr_LDADD) $(LIBS)
@@ -1764,6 +1780,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show-die-info.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showptable.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strptr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-elf_cntl_gelf_getshdr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-flag-nobits.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nlist.Po@am__quote@
@@ -1833,6 +1850,20 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -c -o deleted_lib_so-deleted-lib.obj `if test -f 'deleted-lib.c'; then $(CYGPATH_W) 'deleted-lib.c'; else $(CYGPATH_W) '$(srcdir)/deleted-lib.c'; fi`
+system_elf_libelf_test-system-elf-libelf-test.o: system-elf-libelf-test.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(system_elf_libelf_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT system_elf_libelf_test-system-elf-libelf-test.o -MD -MP -MF $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Tpo -c -o system_elf_libelf_test-system-elf-libelf-test.o `test -f 'system-elf-libelf-test.c' || echo '$(srcdir)/'`system-elf-libelf-test.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Tpo $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='system-elf-libelf-test.c' object='system_elf_libelf_test-system-elf-libelf-test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(system_elf_libelf_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o system_elf_libelf_test-system-elf-libelf-test.o `test -f 'system-elf-libelf-test.c' || echo '$(srcdir)/'`system-elf-libelf-test.c
+
+system_elf_libelf_test-system-elf-libelf-test.obj: system-elf-libelf-test.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(system_elf_libelf_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT system_elf_libelf_test-system-elf-libelf-test.obj -MD -MP -MF $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Tpo -c -o system_elf_libelf_test-system-elf-libelf-test.obj `if test -f 'system-elf-libelf-test.c'; then $(CYGPATH_W) 'system-elf-libelf-test.c'; else $(CYGPATH_W) '$(srcdir)/system-elf-libelf-test.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Tpo $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='system-elf-libelf-test.c' object='system_elf_libelf_test-system-elf-libelf-test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(system_elf_libelf_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o system_elf_libelf_test-system-elf-libelf-test.obj `if test -f 'system-elf-libelf-test.c'; then $(CYGPATH_W) 'system-elf-libelf-test.c'; else $(CYGPATH_W) '$(srcdir)/system-elf-libelf-test.c'; fi`
+
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
@@ -3047,6 +3078,13 @@
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+system-elf-libelf-test.log: system-elf-libelf-test$(EXEEXT)
+ @p='system-elf-libelf-test$(EXEEXT)'; \
+ b='system-elf-libelf-test'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
run-readelf-s.sh.log: run-readelf-s.sh
@p='run-readelf-s.sh'; \

View File

@ -1,7 +1,7 @@
Name: elfutils Name: elfutils
Summary: A collection of utilities and DSOs to handle compiled objects Summary: A collection of utilities and DSOs to handle compiled objects
Version: 0.165 Version: 0.165
%global baserelease 1 %global baserelease 2
URL: https://fedorahosted.org/elfutils/ URL: https://fedorahosted.org/elfutils/
%global source_url http://fedorahosted.org/releases/e/l/elfutils/%{version}/ %global source_url http://fedorahosted.org/releases/e/l/elfutils/%{version}/
License: GPLv3+ and (GPLv2+ or LGPLv3+) License: GPLv3+ and (GPLv2+ or LGPLv3+)
@ -21,6 +21,9 @@ Source: %{?source_url}%{name}-%{version}.tar.bz2
# Patches # Patches
# Needed for older (pre-2.22) glibc (f22 and earlier)
Patch1: elfutils-0.165-elf-libelf.patch
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
Requires: elfutils-libs%{depsuffix} = %{version}-%{release} Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
@ -163,6 +166,7 @@ profiling) of processes.
%setup -q %setup -q
# Apply patches # Apply patches
%patch1 -p1 -b .elf_libelf
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
@ -299,6 +303,9 @@ rm -rf ${RPM_BUILD_ROOT}
%endif %endif
%changelog %changelog
* Thu Jan 14 2016 Mark Wielaard <mjw@redhat.com> - 0.165-2
- Add elfutils-0.165-elf-libelf.patch.
* Mon Jan 11 2016 Mark Wielaard <mjw@redhat.com> - 0.165-1 * Mon Jan 11 2016 Mark Wielaard <mjw@redhat.com> - 0.165-1
- Update to elfutils-0.165 (#1294079, #1236699, #807053) - Update to elfutils-0.165 (#1294079, #1236699, #807053)
- Add eu-elfcompress - Add eu-elfcompress