commit 93cfb55a60c52af211fef5d2eb08fc640e9ad51c Author: Danny Rawlins <monster.romster@gmail.com> Date: Thu Mar 3 20:21:54 2016 +1100 elfutils: patch fix elfutils with glibc 2.21 and earlier diff --git a/elfutils/.md5sum b/elfutils/.md5sum index 9227df6..62e7fdf 100644 --- a/elfutils/.md5sum +++ b/elfutils/.md5sum @@ -1 +1,2 @@ c37fdbe18e848002b451562cba964679 elfutils-0.165.tar.bz2 +52940c1b1c7dcc20bc6d8548538b3d4d glibc_2.21.patch diff --git a/elfutils/Pkgfile b/elfutils/Pkgfile index 3897000..89e0b01 100644 --- a/elfutils/Pkgfile +++ b/elfutils/Pkgfile @@ -6,12 +6,15 @@ name=elfutils version=0.165 -release=1 -source=(https://fedorahosted.org/releases/e/l/$name/$version/$name-$version.tar.bz2) +release=2 +source=(https://fedorahosted.org/releases/e/l/$name/$version/$name-$version.tar.bz2 + glibc_2.21.patch) build() { cd $name-$version + patch -p1 -i $SRC/glibc_2.21.patch + ./configure \ --prefix=/usr \ --program-prefix=eu- \ diff --git a/elfutils/glibc_2.21.patch b/elfutils/glibc_2.21.patch new file mode 100644 index 0000000..a004f34 --- /dev/null +++ b/elfutils/glibc_2.21.patch @@ -0,0 +1,164 @@ +From 344ca0775da729e1bfdd61bb88ba4c64befece07 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard <mjw@redhat.com> +Date: Wed, 13 Jan 2016 17:16:48 +0100 +Subject: 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> +--- + libelf/ChangeLog | 5 +++++ + libelf/libelf.h | 28 ++++++++++++++++++++++++++++ + tests/ChangeLog | 8 ++++++++ + tests/Makefile.am | 9 +++++++-- + tests/system-elf-libelf-test.c | 35 +++++++++++++++++++++++++++++++++++ + 5 files changed, 83 insertions(+), 2 deletions(-) + create mode 100644 tests/system-elf-libelf-test.c + +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; ++} +-- +cgit v0.12 +