From e9b6c8232161c9568f1e601f235d899681f8f510b276c3596b0bdfb13224940b Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Mon, 27 Jun 2016 14:38:55 +0000 Subject: [PATCH] Accepting request 404998 from home:fcrozat:branches:Base:System - Update to version 0.166: + config: The default program prefix for the installed tools is now eu-. Use configure --program-prefix="" to not use a program prefix. + Various bugfixes. - Drop elfutils-0.164-dt-ppc-opt.patch and elfutils-0.164-gcc6.patch (merged upstream) - Add patch elfutils-0.166-elfcmp-comp-gcc6.patch: fix self-comparison error with GCC 6. - Changes from 0.165: + Add eu-elfcompress + Add pkg-config files for libelf and libdw. OBS-URL: https://build.opensuse.org/request/show/404998 OBS-URL: https://build.opensuse.org/package/show/Base:System/elfutils?expand=0&rev=80 --- elfutils-0.137-dwarf-header-check-fix.diff | 10 +- elfutils-0.164-dt-ppc-opt.patch | 38 -- elfutils-0.164-gcc6.patch | 412 --------------------- elfutils-0.164.tar.bz2 | 3 - elfutils-0.166-elfcmp-comp-gcc6.patch | 50 +++ elfutils-0.166.tar.bz2 | 3 + elfutils-0.166.tar.bz2.sig | Bin 0 -> 287 bytes elfutils.changes | 16 + elfutils.spec | 9 +- 9 files changed, 80 insertions(+), 461 deletions(-) delete mode 100644 elfutils-0.164-dt-ppc-opt.patch delete mode 100644 elfutils-0.164-gcc6.patch delete mode 100644 elfutils-0.164.tar.bz2 create mode 100644 elfutils-0.166-elfcmp-comp-gcc6.patch create mode 100644 elfutils-0.166.tar.bz2 create mode 100644 elfutils-0.166.tar.bz2.sig diff --git a/elfutils-0.137-dwarf-header-check-fix.diff b/elfutils-0.137-dwarf-header-check-fix.diff index ae7aeb8..167e288 100644 --- a/elfutils-0.137-dwarf-header-check-fix.diff +++ b/elfutils-0.137-dwarf-header-check-fix.diff @@ -14,9 +14,11 @@ semantic error: libdw failure (dwarf_getsrcfiles): invalid DWARF libdw/dwarf_getsrclines.c | 2 ++ 1 file changed, 2 insertions(+) ---- a/libdw/dwarf_getsrclines.c -+++ b/libdw/dwarf_getsrclines.c -@@ -293,8 +293,10 @@ +Index: elfutils-0.166/libdw/dwarf_getsrclines.c +=================================================================== +--- elfutils-0.166.orig/libdw/dwarf_getsrclines.c 2016-03-02 17:25:38.000000000 +0100 ++++ elfutils-0.166/libdw/dwarf_getsrclines.c 2016-06-27 14:23:58.787633776 +0200 +@@ -404,8 +404,10 @@ /* Consistency check. */ if (unlikely (linep != header_start + header_length)) { @@ -26,4 +28,4 @@ semantic error: libdw failure (dwarf_getsrcfiles): invalid DWARF +#endif } - /* We are about to process the statement program. Initialize the + state.is_stmt = default_is_stmt; diff --git a/elfutils-0.164-dt-ppc-opt.patch b/elfutils-0.164-dt-ppc-opt.patch deleted file mode 100644 index 177a5af..0000000 --- a/elfutils-0.164-dt-ppc-opt.patch +++ /dev/null @@ -1,38 +0,0 @@ -From b6dd3cc8abf8e72fae6c52e7e7518c181d490cc7 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Tue, 15 Dec 2015 15:58:36 +0100 -Subject: [PATCH] Add support for DT_PPC_OPT -Upstream: https://git.fedorahosted.org/cgit/elfutils.git/commit/?id=d1d4db68eb441ae67864be209a0679cbc86189c5 -References: https://lists.fedorahosted.org/archives/list/elfutils-devel@lists.fedorahosted.org/thread/IEYDIMGDVFYHGXO6VKHFJFIZEL5KXU63/ - -Signed-off-by: Andreas Schwab ---- - backends/ppc_symbol.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/backends/ppc_symbol.c b/backends/ppc_symbol.c -index 37d4918..1273c1d 100644 ---- a/backends/ppc_symbol.c -+++ b/backends/ppc_symbol.c -@@ -65,6 +65,8 @@ ppc_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), - { - case DT_PPC_GOT: - return "PPC_GOT"; -+ case DT_PPC_OPT: -+ return "PPC_OPT"; - default: - break; - } -@@ -75,7 +77,8 @@ ppc_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), - bool - ppc_dynamic_tag_check (int64_t tag) - { -- return tag == DT_PPC_GOT; -+ return (tag == DT_PPC_GOT -+ || tag == DT_PPC_OPT); - } - - --- -2.6.4 - diff --git a/elfutils-0.164-gcc6.patch b/elfutils-0.164-gcc6.patch deleted file mode 100644 index 3eef943..0000000 --- a/elfutils-0.164-gcc6.patch +++ /dev/null @@ -1,412 +0,0 @@ -From c5da7c9e08c2bdb6dba8e115dcc09ed51a07f0e4 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Sat, 9 Jan 2016 22:09:48 +0100 -Subject: libebl: Fix missing brackets around if statement body. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -GCC6 [will have] a nice new warning that showed a real bug: - -elfutils/libebl/eblobjnote.c: In function ‘ebl_object_note’: -elfutils/libebl/eblobjnote.c:135:5: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation] - switch (type) - ^~~~~~ - -elfutils/libebl/eblobjnote.c:45:3: note: ...this ‘if’ clause, but it is not - if (! ebl->object_note (name, type, descsz, desc)) - ^~ - -And indeed, it should have been under the if, but wasn't because of missing -brackets. Added brackets (and reindent). - -Signed-off-by: Mark Wielaard ---- - libebl/eblobjnote.c | 362 ++++++++++++++++++++++++++-------------------------- - 2 files changed, 187 insertions(+), 180 deletions(-) - -diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c -index fa1eb93..f80a1a5 100644 ---- a/libebl/eblobjnote.c -+++ b/libebl/eblobjnote.c -@@ -1,5 +1,5 @@ - /* Print contents of object file note. -- Copyright (C) 2002, 2007, 2009, 2011, 2015 Red Hat, Inc. -+ Copyright (C) 2002, 2007, 2009, 2011, 2015, 2016 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper , 2002. - -@@ -43,189 +43,191 @@ ebl_object_note (Ebl *ebl, const char *name, uint32_t type, - uint32_t descsz, const char *desc) - { - if (! ebl->object_note (name, type, descsz, desc)) -- /* The machine specific function did not know this type. */ -+ { -+ /* The machine specific function did not know this type. */ - -- if (strcmp ("stapsdt", name) == 0) -- { -- if (type != 3) -- { -- printf (gettext ("unknown SDT version %u\n"), type); -- return; -- } -- -- /* Descriptor starts with three addresses, pc, base ref and -- semaphore. Then three zero terminated strings provider, -- name and arguments. */ -- -- union -+ if (strcmp ("stapsdt", name) == 0) - { -- Elf64_Addr a64[3]; -- Elf32_Addr a32[3]; -- } addrs; -+ if (type != 3) -+ { -+ printf (gettext ("unknown SDT version %u\n"), type); -+ return; -+ } - -- size_t addrs_size = gelf_fsize (ebl->elf, ELF_T_ADDR, 3, EV_CURRENT); -- if (descsz < addrs_size + 3) -- { -- invalid_sdt: -- printf (gettext ("invalid SDT probe descriptor\n")); -- return; -- } -+ /* Descriptor starts with three addresses, pc, base ref and -+ semaphore. Then three zero terminated strings provider, -+ name and arguments. */ - -- Elf_Data src = -+ union - { -- .d_type = ELF_T_ADDR, .d_version = EV_CURRENT, -- .d_buf = (void *) desc, .d_size = addrs_size -- }; -- -- Elf_Data dst = -- { -- .d_type = ELF_T_ADDR, .d_version = EV_CURRENT, -- .d_buf = &addrs, .d_size = addrs_size -- }; -- -- if (gelf_xlatetom (ebl->elf, &dst, &src, -- elf_getident (ebl->elf, NULL)[EI_DATA]) == NULL) -- { -- printf ("%s\n", elf_errmsg (-1)); -- return; -- } -- -- const char *provider = desc + addrs_size; -- const char *pname = memchr (provider, '\0', desc + descsz - provider); -- if (pname == NULL) -- goto invalid_sdt; -- -- ++pname; -- const char *args = memchr (pname, '\0', desc + descsz - pname); -- if (args == NULL || -- memchr (++args, '\0', desc + descsz - pname) != desc + descsz - 1) -- goto invalid_sdt; -- -- GElf_Addr pc; -- GElf_Addr base; -- GElf_Addr sem; -- if (gelf_getclass (ebl->elf) == ELFCLASS32) -- { -- pc = addrs.a32[0]; -- base = addrs.a32[1]; -- sem = addrs.a32[2]; -- } -- else -- { -- pc = addrs.a64[0]; -- base = addrs.a64[1]; -- sem = addrs.a64[2]; -- } -- -- printf (gettext (" PC: ")); -- printf ("%#" PRIx64 ",", pc); -- printf (gettext (" Base: ")); -- printf ("%#" PRIx64 ",", base); -- printf (gettext (" Semaphore: ")); -- printf ("%#" PRIx64 "\n", sem); -- printf (gettext (" Provider: ")); -- printf ("%s,", provider); -- printf (gettext (" Name: ")); -- printf ("%s,", pname); -- printf (gettext (" Args: ")); -- printf ("'%s'\n", args); -- return; -- } -- -- switch (type) -- { -- case NT_GNU_BUILD_ID: -- if (strcmp (name, "GNU") == 0 && descsz > 0) -- { -- printf (gettext (" Build ID: ")); -- uint_fast32_t i; -- for (i = 0; i < descsz - 1; ++i) -- printf ("%02" PRIx8, (uint8_t) desc[i]); -- printf ("%02" PRIx8 "\n", (uint8_t) desc[i]); -- } -- break; -- -- case NT_GNU_GOLD_VERSION: -- if (strcmp (name, "GNU") == 0 && descsz > 0) -- /* A non-null terminated version string. */ -- printf (gettext (" Linker version: %.*s\n"), -- (int) descsz, desc); -- break; -- -- case NT_GNU_ABI_TAG: -- if (strcmp (name, "GNU") == 0 && descsz >= 8 && descsz % 4 == 0) -- { -- Elf_Data in = -- { -- .d_version = EV_CURRENT, -- .d_type = ELF_T_WORD, -- .d_size = descsz, -- .d_buf = (void *) desc -- }; -- /* Normally NT_GNU_ABI_TAG is just 4 words (16 bytes). If it -- is much (4*) larger dynamically allocate memory to convert. */ -+ Elf64_Addr a64[3]; -+ Elf32_Addr a32[3]; -+ } addrs; -+ -+ size_t addrs_size = gelf_fsize (ebl->elf, ELF_T_ADDR, 3, EV_CURRENT); -+ if (descsz < addrs_size + 3) -+ { -+ invalid_sdt: -+ printf (gettext ("invalid SDT probe descriptor\n")); -+ return; -+ } -+ -+ Elf_Data src = -+ { -+ .d_type = ELF_T_ADDR, .d_version = EV_CURRENT, -+ .d_buf = (void *) desc, .d_size = addrs_size -+ }; -+ -+ Elf_Data dst = -+ { -+ .d_type = ELF_T_ADDR, .d_version = EV_CURRENT, -+ .d_buf = &addrs, .d_size = addrs_size -+ }; -+ -+ if (gelf_xlatetom (ebl->elf, &dst, &src, -+ elf_getident (ebl->elf, NULL)[EI_DATA]) == NULL) -+ { -+ printf ("%s\n", elf_errmsg (-1)); -+ return; -+ } -+ -+ const char *provider = desc + addrs_size; -+ const char *pname = memchr (provider, '\0', desc + descsz - provider); -+ if (pname == NULL) -+ goto invalid_sdt; -+ -+ ++pname; -+ const char *args = memchr (pname, '\0', desc + descsz - pname); -+ if (args == NULL || -+ memchr (++args, '\0', desc + descsz - pname) != desc + descsz - 1) -+ goto invalid_sdt; -+ -+ GElf_Addr pc; -+ GElf_Addr base; -+ GElf_Addr sem; -+ if (gelf_getclass (ebl->elf) == ELFCLASS32) -+ { -+ pc = addrs.a32[0]; -+ base = addrs.a32[1]; -+ sem = addrs.a32[2]; -+ } -+ else -+ { -+ pc = addrs.a64[0]; -+ base = addrs.a64[1]; -+ sem = addrs.a64[2]; -+ } -+ -+ printf (gettext (" PC: ")); -+ printf ("%#" PRIx64 ",", pc); -+ printf (gettext (" Base: ")); -+ printf ("%#" PRIx64 ",", base); -+ printf (gettext (" Semaphore: ")); -+ printf ("%#" PRIx64 "\n", sem); -+ printf (gettext (" Provider: ")); -+ printf ("%s,", provider); -+ printf (gettext (" Name: ")); -+ printf ("%s,", pname); -+ printf (gettext (" Args: ")); -+ printf ("'%s'\n", args); -+ return; -+ } -+ -+ switch (type) -+ { -+ case NT_GNU_BUILD_ID: -+ if (strcmp (name, "GNU") == 0 && descsz > 0) -+ { -+ printf (gettext (" Build ID: ")); -+ uint_fast32_t i; -+ for (i = 0; i < descsz - 1; ++i) -+ printf ("%02" PRIx8, (uint8_t) desc[i]); -+ printf ("%02" PRIx8 "\n", (uint8_t) desc[i]); -+ } -+ break; -+ -+ case NT_GNU_GOLD_VERSION: -+ if (strcmp (name, "GNU") == 0 && descsz > 0) -+ /* A non-null terminated version string. */ -+ printf (gettext (" Linker version: %.*s\n"), -+ (int) descsz, desc); -+ break; -+ -+ case NT_GNU_ABI_TAG: -+ if (strcmp (name, "GNU") == 0 && descsz >= 8 && descsz % 4 == 0) -+ { -+ Elf_Data in = -+ { -+ .d_version = EV_CURRENT, -+ .d_type = ELF_T_WORD, -+ .d_size = descsz, -+ .d_buf = (void *) desc -+ }; -+ /* Normally NT_GNU_ABI_TAG is just 4 words (16 bytes). If it -+ is much (4*) larger dynamically allocate memory to convert. */ - #define FIXED_TAG_BYTES 16 -- uint32_t sbuf[FIXED_TAG_BYTES]; -- uint32_t *buf; -- if (unlikely (descsz / 4 > FIXED_TAG_BYTES)) -- { -- buf = malloc (descsz); -- if (unlikely (buf == NULL)) -- return; -- } -- else -- buf = sbuf; -- Elf_Data out = -- { -- .d_version = EV_CURRENT, -- .d_type = ELF_T_WORD, -- .d_size = descsz, -- .d_buf = buf -- }; -- -- if (elf32_xlatetom (&out, &in, ebl->data) != NULL) -- { -- const char *os; -- switch (buf[0]) -- { -- case ELF_NOTE_OS_LINUX: -- os = "Linux"; -- break; -- -- case ELF_NOTE_OS_GNU: -- os = "GNU"; -- break; -- -- case ELF_NOTE_OS_SOLARIS2: -- os = "Solaris"; -- break; -- -- case ELF_NOTE_OS_FREEBSD: -- os = "FreeBSD"; -- break; -- -- default: -- os = "???"; -- break; -- } -- -- printf (gettext (" OS: %s, ABI: "), os); -- for (size_t cnt = 1; cnt < descsz / 4; ++cnt) -- { -- if (cnt > 1) -- putchar_unlocked ('.'); -- printf ("%" PRIu32, buf[cnt]); -- } -- putchar_unlocked ('\n'); -- } -- if (descsz / 4 > FIXED_TAG_BYTES) -- free (buf); -- break; -- } -- /* FALLTHROUGH */ -- -- default: -- /* Unknown type. */ -- break; -- } -+ uint32_t sbuf[FIXED_TAG_BYTES]; -+ uint32_t *buf; -+ if (unlikely (descsz / 4 > FIXED_TAG_BYTES)) -+ { -+ buf = malloc (descsz); -+ if (unlikely (buf == NULL)) -+ return; -+ } -+ else -+ buf = sbuf; -+ Elf_Data out = -+ { -+ .d_version = EV_CURRENT, -+ .d_type = ELF_T_WORD, -+ .d_size = descsz, -+ .d_buf = buf -+ }; -+ -+ if (elf32_xlatetom (&out, &in, ebl->data) != NULL) -+ { -+ const char *os; -+ switch (buf[0]) -+ { -+ case ELF_NOTE_OS_LINUX: -+ os = "Linux"; -+ break; -+ -+ case ELF_NOTE_OS_GNU: -+ os = "GNU"; -+ break; -+ -+ case ELF_NOTE_OS_SOLARIS2: -+ os = "Solaris"; -+ break; -+ -+ case ELF_NOTE_OS_FREEBSD: -+ os = "FreeBSD"; -+ break; -+ -+ default: -+ os = "???"; -+ break; -+ } -+ -+ printf (gettext (" OS: %s, ABI: "), os); -+ for (size_t cnt = 1; cnt < descsz / 4; ++cnt) -+ { -+ if (cnt > 1) -+ putchar_unlocked ('.'); -+ printf ("%" PRIu32, buf[cnt]); -+ } -+ putchar_unlocked ('\n'); -+ } -+ if (descsz / 4 > FIXED_TAG_BYTES) -+ free (buf); -+ break; -+ } -+ /* FALLTHROUGH */ -+ -+ default: -+ /* Unknown type. */ -+ break; -+ } -+ } - } --- -cgit v0.12 - diff --git a/elfutils-0.164.tar.bz2 b/elfutils-0.164.tar.bz2 deleted file mode 100644 index 55dd2b5..0000000 --- a/elfutils-0.164.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9683c025928a12d06b7fe812928aa6235249e22d197d086f7084606a48165900 -size 6065265 diff --git a/elfutils-0.166-elfcmp-comp-gcc6.patch b/elfutils-0.166-elfcmp-comp-gcc6.patch new file mode 100644 index 0000000..b6fc5f7 --- /dev/null +++ b/elfutils-0.166-elfcmp-comp-gcc6.patch @@ -0,0 +1,50 @@ +From 836a16fe5b5bab4a3afe2c991c104652775ce3a3 Mon Sep 17 00:00:00 2001 +From: David Abdurachmanov +Date: Mon, 11 Apr 2016 16:00:57 +0200 +Subject: [PATCH] elfcmp: fix self-comparison error with GCC 6 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Noticed with Fedora 24 Alpha, gcc (GCC) 6.0.0 20160406 +(Red Hat 6.0.0-0.20). + +elfcmp.c: In function ‘main’: +elfcmp.c:364:199: error: self-comparison always evaluates +to false [-Werror=tautological-compare] + if (unlikely (name1 == NULL || name2 == NULL + +Signed-off-by: David Abdurachmanov +--- + src/ChangeLog | 4 ++++ + src/elfcmp.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/ChangeLog b/src/ChangeLog +index f74b5dc..bdc9d13 100644 +--- a/src/ChangeLog ++++ b/src/ChangeLog +@@ -1,3 +1,7 @@ ++2016-04-11 David Abdurachmanov ++ ++ * elfcmp.c (main): Fix self-comparison error with GCC 6. ++ + 2016-03-21 Mark Wielaard + + * nm.c (show_symbols): Check for malloc size argument overflow. +diff --git a/src/elfcmp.c b/src/elfcmp.c +index 852b92f..7b5d39c 100644 +--- a/src/elfcmp.c ++++ b/src/elfcmp.c +@@ -368,7 +368,7 @@ main (int argc, char *argv[]) + && sym1->st_shndx != SHN_UNDEF) + || sym1->st_info != sym2->st_info + || sym1->st_other != sym2->st_other +- || sym1->st_shndx != sym1->st_shndx)) ++ || sym1->st_shndx != sym2->st_shndx)) + { + // XXX Do we want to allow reordered symbol tables? + symtab_mismatch: +-- +1.8.3.1 + diff --git a/elfutils-0.166.tar.bz2 b/elfutils-0.166.tar.bz2 new file mode 100644 index 0000000..5186903 --- /dev/null +++ b/elfutils-0.166.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c056914c8a438b210be0d790463b960fc79d234c3f05ce707cbff80e94cba30 +size 6496225 diff --git a/elfutils-0.166.tar.bz2.sig b/elfutils-0.166.tar.bz2.sig new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..c33a1b773a2daa99f25d5e62c2ebaf50499514303683deff4b7a3eabb3cec5a8 GIT binary patch literal 287 zcmV+)0pR|L0UQJX0SEvF1p-$6Bo6=z2@r#DW?NT*YHCXb2mq4tEh2&;`@wsu+67L{ zKNOVn@`knUY7{~-&SYixGRoAACFmQLv6lGILebVoWWVi=5=$owC`fRUo#F|yc;drp zXY4n7i0;%(8Z{XLX)}d>N3S#Q1*)+~rjXt$Ggtx|QSN)Dw5WaXA0SOO1E3A&d=&o; za~_~&tIBWiVuS5PG_`{sUu<6rC7)iRap&qoD(JlW^7vk?ZF(?XMyNgRBb=s;* z%TFQ5gWgeH3Lx=aZV}YMJP~@5V@oNGi4