SHA256
1
0
forked from pool/elfutils

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
This commit is contained in:
Marcus Meissner 2016-06-27 14:38:55 +00:00 committed by Git OBS Bridge
parent eee228fdec
commit e9b6c82321
9 changed files with 80 additions and 461 deletions

View File

@ -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;

View File

@ -1,38 +0,0 @@
From b6dd3cc8abf8e72fae6c52e7e7518c181d490cc7 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
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 <schwab@suse.de>
---
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

View File

@ -1,412 +0,0 @@
From c5da7c9e08c2bdb6dba8e115dcc09ed51a07f0e4 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mjw@redhat.com>
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 <mjw@redhat.com>
---
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 <drepper@redhat.com>, 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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9683c025928a12d06b7fe812928aa6235249e22d197d086f7084606a48165900
size 6065265

View File

@ -0,0 +1,50 @@
From 836a16fe5b5bab4a3afe2c991c104652775ce3a3 Mon Sep 17 00:00:00 2001
From: David Abdurachmanov <davidlt@cern.ch>
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 <davidlt@cern.ch>
---
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 <davidlt@cern.ch>
+
+ * elfcmp.c (main): Fix self-comparison error with GCC 6.
+
2016-03-21 Mark Wielaard <mjw@redhat.com>
* 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

3
elfutils-0.166.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3c056914c8a438b210be0d790463b960fc79d234c3f05ce707cbff80e94cba30
size 6496225

BIN
elfutils-0.166.tar.bz2.sig Normal file

Binary file not shown.

View File

@ -1,3 +1,19 @@
-------------------------------------------------------------------
Mon Jun 27 12:26:22 UTC 2016 - fcrozat@suse.com
- 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.
-------------------------------------------------------------------
Sat Apr 16 03:41:22 UTC 2016 - normand@linux.vnet.ibm.com

View File

@ -17,7 +17,7 @@
Name: elfutils
Version: 0.164
Version: 0.166
Release: 0
Summary: Higher-level library to access ELF
License: SUSE-GPL-2.0-with-OSI-exception
@ -26,12 +26,12 @@ Url: http://fedorahosted.org/elfutils/
#Git-Clone: git://git.fedorahosted.org/git/elfutils
Source: https://fedorahosted.org/releases/e/l/%{name}/%{version}/%{name}-%{version}.tar.bz2
Source4: https://fedorahosted.org/releases/e/l/%{name}/%{version}/%{name}-%{version}.tar.bz2.sig
Source1: README-BEFORE-ADDING-PATCHES
Source2: baselibs.conf
Source3: %{name}.changes
Patch1: elfutils-0.137-dwarf-header-check-fix.diff
Patch2: elfutils-0.164-dt-ppc-opt.patch
Patch3: elfutils-0.164-gcc6.patch
Patch2: elfutils-0.166-elfcmp-comp-gcc6.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf
BuildRequires: automake
@ -141,7 +141,6 @@ to develop applications that require these.
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%build
# Change DATE/TIME macros to use last change time of elfutils.changes
@ -226,6 +225,7 @@ make check
%dir %{_includedir}/elfutils
%{_includedir}/elfutils/elf-knowledge.h
%{_includedir}/elfutils/version.h
%{_libdir}/pkgconfig/libelf.pc
%files -n libdw1
%defattr(-,root,root)
@ -242,6 +242,7 @@ make check
%{_includedir}/elfutils/libdwelf.h
%{_includedir}/elfutils/libdwfl.h
%{_includedir}/elfutils/known-dwarf.h
%{_libdir}/pkgconfig/libdw.pc
%files lang -f %{name}.lang