Update to 0.155
This commit is contained in:
parent
698c3ed2fb
commit
2a5e99f3ec
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
/elfutils-0.154.tar.bz2
|
/elfutils-0.154.tar.bz2
|
||||||
/elfutils-*/
|
/elfutils-*/
|
||||||
|
/elfutils-0.155.tar.bz2
|
||||||
|
4
Makefile
4
Makefile
@ -7,12 +7,12 @@ branch-portability = portable
|
|||||||
|
|
||||||
FORCE:;
|
FORCE:;
|
||||||
|
|
||||||
elfutils.git ?= ${HOME}/redhat/stock-elfutils/.git
|
elfutils.git ?= ${HOME}/src/elfutils/.git
|
||||||
git-heads := $(wildcard $(elfutils.git)/refs/heads/*)
|
git-heads := $(wildcard $(elfutils.git)/refs/heads/*)
|
||||||
ifneq (,$(git-heads))
|
ifneq (,$(git-heads))
|
||||||
git-dir = git --git-dir=$(elfutils.git)
|
git-dir = git --git-dir=$(elfutils.git)
|
||||||
git-archive = $(git-dir) archive
|
git-archive = $(git-dir) archive
|
||||||
get-master = master=`$(git-dir) merge-base origin/master $$branch` && \
|
get-master = master=`$(git-dir) merge-base master $$branch` && \
|
||||||
master=`$(git-dir) describe --tags --always $$master`
|
master=`$(git-dir) describe --tags --always $$master`
|
||||||
else
|
else
|
||||||
git-heads = FORCE
|
git-heads = FORCE
|
||||||
|
@ -1,474 +0,0 @@
|
|||||||
https://lists.fedorahosted.org/pipermail/elfutils-devel/2012-July/002418.html
|
|
||||||
|
|
||||||
From b1e42797293bcf34385d5cb0a18e8c773279241b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mjw@redhat.com>
|
|
||||||
Date: Fri, 22 Jun 2012 12:02:45 +0200
|
|
||||||
Subject: [PATCH] libdw: Add support for DWZ multifile forms
|
|
||||||
DW_FORM_GNU_ref_alt/strp_alt.
|
|
||||||
|
|
||||||
DWZ multifile forms http://www.dwarfstd.org/ShowIssue.php?issue=120604.1
|
|
||||||
DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt reference an alternative
|
|
||||||
debuginfo file. dwarf_begin and dwarf_begin_elf will try to use this
|
|
||||||
automatically. There are no user visible changes to the libdw interface.
|
|
||||||
|
|
||||||
dwarf_formref_die, dwarf_formstring and dwarf_formudata can now return
|
|
||||||
a Dwarf_Die which comes from a CU in the alternative Dwarf descriptor.
|
|
||||||
|
|
||||||
__libdw_read_offset was adjusted to take an alternative Dwarf descriptor
|
|
||||||
into account.
|
|
||||||
|
|
||||||
Signed-off-by: Mark Wielaard <mjw@redhat.com>
|
|
||||||
|
|
||||||
diff --git a/libdw/dwarf.h b/libdw/dwarf.h
|
|
||||||
index f41d296..81bc7fe 100644
|
|
||||||
--- a/libdw/dwarf.h
|
|
||||||
+++ b/libdw/dwarf.h
|
|
||||||
@@ -299,7 +299,10 @@ enum
|
|
||||||
DW_FORM_sec_offset = 0x17,
|
|
||||||
DW_FORM_exprloc = 0x18,
|
|
||||||
DW_FORM_flag_present = 0x19,
|
|
||||||
- DW_FORM_ref_sig8 = 0x20
|
|
||||||
+ DW_FORM_ref_sig8 = 0x20,
|
|
||||||
+
|
|
||||||
+ DW_FORM_GNU_ref_alt = 0x1f20, /* offset in alternate .debuginfo. */
|
|
||||||
+ DW_FORM_GNU_strp_alt = 0x1f21 /* offset in alternate .debug_str. */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/libdw/dwarf_begin.c b/libdw/dwarf_begin.c
|
|
||||||
index 1f3fc3b..9f3050f 100644
|
|
||||||
--- a/libdw/dwarf_begin.c
|
|
||||||
+++ b/libdw/dwarf_begin.c
|
|
||||||
@@ -98,3 +98,4 @@ dwarf_begin (fd, cmd)
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
+INTDEF(dwarf_begin)
|
|
||||||
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
|
|
||||||
index 3e01800..fd95770 100644
|
|
||||||
--- a/libdw/dwarf_begin_elf.c
|
|
||||||
+++ b/libdw/dwarf_begin_elf.c
|
|
||||||
@@ -31,12 +31,17 @@
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#include <assert.h>
|
|
||||||
+#include <inttypes.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
+#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
+#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
+#include <fcntl.h>
|
|
||||||
|
|
||||||
#include "libdwP.h"
|
|
||||||
|
|
||||||
@@ -66,6 +71,110 @@ static const char dwarf_scnnames[IDX_last][17] =
|
|
||||||
};
|
|
||||||
#define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0]))
|
|
||||||
|
|
||||||
+internal_function int
|
|
||||||
+__check_build_id (Dwarf *dw, const uint8_t *build_id, const size_t id_len)
|
|
||||||
+{
|
|
||||||
+ if (dw == NULL)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ Elf *elf = dw->elf;
|
|
||||||
+ Elf_Scn *scn = elf_nextscn (elf, NULL);
|
|
||||||
+ if (scn == NULL)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ do
|
|
||||||
+ {
|
|
||||||
+ GElf_Shdr shdr_mem;
|
|
||||||
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
|
|
||||||
+ if (likely (shdr != NULL) && shdr->sh_type == SHT_NOTE)
|
|
||||||
+ {
|
|
||||||
+ size_t pos = 0;
|
|
||||||
+ GElf_Nhdr nhdr;
|
|
||||||
+ size_t name_pos;
|
|
||||||
+ size_t desc_pos;
|
|
||||||
+ Elf_Data *data = elf_getdata (scn, NULL);
|
|
||||||
+ while ((pos = gelf_getnote (data, pos, &nhdr, &name_pos,
|
|
||||||
+ &desc_pos)) > 0)
|
|
||||||
+ if (nhdr.n_type == NT_GNU_BUILD_ID
|
|
||||||
+ && nhdr.n_namesz == sizeof "GNU"
|
|
||||||
+ && ! memcmp (data->d_buf + name_pos, "GNU", sizeof "GNU"))
|
|
||||||
+ return (nhdr.n_descsz == id_len
|
|
||||||
+ && ! memcmp (data->d_buf + desc_pos,
|
|
||||||
+ build_id, id_len)) ? 0 : 1;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ while ((scn = elf_nextscn (elf, scn)) != NULL);
|
|
||||||
+
|
|
||||||
+ return -1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Try to open an debug alt link by name, checking build_id.
|
|
||||||
+ Marks free_alt on success, return NULL on failure. */
|
|
||||||
+static Dwarf *
|
|
||||||
+try_debugaltlink (Dwarf *result, const char *try_name,
|
|
||||||
+ const uint8_t *build_id, const size_t id_len)
|
|
||||||
+{
|
|
||||||
+ int fd = open (try_name, O_RDONLY);
|
|
||||||
+ if (fd > 0)
|
|
||||||
+ {
|
|
||||||
+ result->alt_dwarf = INTUSE (dwarf_begin) (fd, DWARF_C_READ);
|
|
||||||
+ if (result->alt_dwarf != NULL)
|
|
||||||
+ {
|
|
||||||
+ Elf *elf = result->alt_dwarf->elf;
|
|
||||||
+ if (__check_build_id (result->alt_dwarf, build_id, id_len) == 0
|
|
||||||
+ && elf_cntl (elf, ELF_C_FDREAD) == 0)
|
|
||||||
+ {
|
|
||||||
+ close (fd);
|
|
||||||
+ result->free_alt = 1;
|
|
||||||
+ return result;
|
|
||||||
+ }
|
|
||||||
+ INTUSE (dwarf_end) (result->alt_dwarf);
|
|
||||||
+ }
|
|
||||||
+ close (fd);
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* For dwz multifile support, ignore if it looks wrong. */
|
|
||||||
+static Dwarf *
|
|
||||||
+open_debugaltlink (Dwarf *result, const char *alt_name,
|
|
||||||
+ const uint8_t *build_id, const size_t id_len)
|
|
||||||
+{
|
|
||||||
+ /* First try the name itself, it is either an absolute path or
|
|
||||||
+ a relative one. Sadly we don't know relative from where at
|
|
||||||
+ this point. */
|
|
||||||
+ if (try_debugaltlink (result, alt_name, build_id, id_len) != NULL)
|
|
||||||
+ return result;
|
|
||||||
+
|
|
||||||
+ /* Lets try based on the build-id. This is somewhat distro specific,
|
|
||||||
+ we are following the Fedora implementation described at
|
|
||||||
+ https://fedoraproject.org/wiki/Releases/FeatureBuildId#Find_files_by_build_ID
|
|
||||||
+ */
|
|
||||||
+#define DEBUG_PREFIX "/usr/lib/debug/.build-id/"
|
|
||||||
+#define PREFIX_LEN sizeof (DEBUG_PREFIX)
|
|
||||||
+ char id_name[PREFIX_LEN + 1 + id_len * 2 + sizeof ".debug" - 1];
|
|
||||||
+ strcpy (id_name, DEBUG_PREFIX);
|
|
||||||
+ int n = snprintf (&id_name[PREFIX_LEN - 1],
|
|
||||||
+ 4, "%02" PRIx8 "/", (uint8_t) build_id[0]);
|
|
||||||
+ assert (n == 3);
|
|
||||||
+ for (size_t i = 1; i < id_len; ++i)
|
|
||||||
+ {
|
|
||||||
+ n = snprintf (&id_name[PREFIX_LEN - 1 + 3 + (i - 1) * 2],
|
|
||||||
+ 3, "%02" PRIx8, (uint8_t) build_id[i]);
|
|
||||||
+ assert (n == 2);
|
|
||||||
+ }
|
|
||||||
+ strcpy (&id_name[PREFIX_LEN - 1 + 3 + (id_len - 1) * 2],
|
|
||||||
+ ".debug");
|
|
||||||
+
|
|
||||||
+ if (try_debugaltlink (result, id_name, build_id, id_len))
|
|
||||||
+ return result;
|
|
||||||
+
|
|
||||||
+ /* Everything failed, mark this Dwarf as not having an alternate,
|
|
||||||
+ but don't fail the load. The user may want to set it by hand
|
|
||||||
+ before usage. */
|
|
||||||
+ result->alt_dwarf = NULL;
|
|
||||||
+ return result;
|
|
||||||
+}
|
|
||||||
|
|
||||||
static Dwarf *
|
|
||||||
check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
|
|
||||||
@@ -110,6 +219,20 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* For dwz multifile support, ignore if it looks wrong. */
|
|
||||||
+ if (strcmp (scnname, ".gnu_debugaltlink") == 0)
|
|
||||||
+ {
|
|
||||||
+ Elf_Data *data = elf_getdata (scn, NULL);
|
|
||||||
+ if (data != NULL && data->d_size != 0)
|
|
||||||
+ {
|
|
||||||
+ const char *alt_name = data->d_buf;
|
|
||||||
+ const void *build_id = memchr (data->d_buf, '\0', data->d_size);
|
|
||||||
+ const int id_len = data->d_size - (build_id - data->d_buf + 1);
|
|
||||||
+ if (alt_name && build_id && id_len > 0)
|
|
||||||
+ return open_debugaltlink (result, alt_name, build_id + 1, id_len);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
|
|
||||||
/* Recognize the various sections. Most names start with .debug_. */
|
|
||||||
size_t cnt;
|
|
||||||
diff --git a/libdw/dwarf_end.c b/libdw/dwarf_end.c
|
|
||||||
index b77988f..e65314a 100644
|
|
||||||
--- a/libdw/dwarf_end.c
|
|
||||||
+++ b/libdw/dwarf_end.c
|
|
||||||
@@ -111,6 +111,10 @@ dwarf_end (dwarf)
|
|
||||||
if (dwarf->free_elf)
|
|
||||||
elf_end (dwarf->elf);
|
|
||||||
|
|
||||||
+ /* Free the alternative Dwarf descriptor if necessary. */
|
|
||||||
+ if (dwarf->free_alt)
|
|
||||||
+ INTUSE (dwarf_end) (dwarf->alt_dwarf);
|
|
||||||
+
|
|
||||||
/* Free the context descriptor. */
|
|
||||||
free (dwarf);
|
|
||||||
}
|
|
||||||
diff --git a/libdw/dwarf_error.c b/libdw/dwarf_error.c
|
|
||||||
index 89047dc..2292914 100644
|
|
||||||
--- a/libdw/dwarf_error.c
|
|
||||||
+++ b/libdw/dwarf_error.c
|
|
||||||
@@ -91,6 +91,7 @@ static const char *errmsgs[] =
|
|
||||||
[DWARF_E_INVALID_OFFSET] = N_("invalid offset"),
|
|
||||||
[DWARF_E_NO_DEBUG_RANGES] = N_(".debug_ranges section missing"),
|
|
||||||
[DWARF_E_INVALID_CFI] = N_("invalid CFI section"),
|
|
||||||
+ [DWARF_E_NO_ALT_DEBUGLINK] = N_("no alternative debug link found"),
|
|
||||||
};
|
|
||||||
#define nerrmsgs (sizeof (errmsgs) / sizeof (errmsgs[0]))
|
|
||||||
|
|
||||||
diff --git a/libdw/dwarf_formref.c b/libdw/dwarf_formref.c
|
|
||||||
index a2554e9..86da7ea 100644
|
|
||||||
--- a/libdw/dwarf_formref.c
|
|
||||||
+++ b/libdw/dwarf_formref.c
|
|
||||||
@@ -72,6 +72,8 @@ __libdw_formref (attr, return_offset)
|
|
||||||
|
|
||||||
case DW_FORM_ref_addr:
|
|
||||||
case DW_FORM_ref_sig8:
|
|
||||||
+ case DW_FORM_GNU_ref_alt:
|
|
||||||
+ /* These aren't handled by dwarf_formref, only by dwarf_formref_die. */
|
|
||||||
__libdw_seterrno (DWARF_E_INVALID_REFERENCE);
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
diff --git a/libdw/dwarf_formref_die.c b/libdw/dwarf_formref_die.c
|
|
||||||
index 342f6b9..f070127 100644
|
|
||||||
--- a/libdw/dwarf_formref_die.c
|
|
||||||
+++ b/libdw/dwarf_formref_die.c
|
|
||||||
@@ -46,7 +46,7 @@ dwarf_formref_die (attr, result)
|
|
||||||
struct Dwarf_CU *cu = attr->cu;
|
|
||||||
|
|
||||||
Dwarf_Off offset;
|
|
||||||
- if (attr->form == DW_FORM_ref_addr)
|
|
||||||
+ if (attr->form == DW_FORM_ref_addr || attr->form == DW_FORM_GNU_ref_alt)
|
|
||||||
{
|
|
||||||
/* This has an absolute offset. */
|
|
||||||
|
|
||||||
@@ -54,11 +54,20 @@ dwarf_formref_die (attr, result)
|
|
||||||
? cu->address_size
|
|
||||||
: cu->offset_size);
|
|
||||||
|
|
||||||
- if (__libdw_read_offset (cu->dbg, IDX_debug_info, attr->valp,
|
|
||||||
+ Dwarf *dbg_ret = (attr->form == DW_FORM_GNU_ref_alt
|
|
||||||
+ ? cu->dbg->alt_dwarf : cu->dbg);
|
|
||||||
+
|
|
||||||
+ if (dbg_ret == NULL)
|
|
||||||
+ {
|
|
||||||
+ __libdw_seterrno (DWARF_E_NO_ALT_DEBUGLINK);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (__libdw_read_offset (cu->dbg, dbg_ret, IDX_debug_info, attr->valp,
|
|
||||||
ref_size, &offset, IDX_debug_info, 0))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
- return INTUSE(dwarf_offdie) (cu->dbg, offset, result);
|
|
||||||
+ return INTUSE(dwarf_offdie) (dbg_ret, offset, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
Elf_Data *data;
|
|
||||||
diff --git a/libdw/dwarf_formstring.c b/libdw/dwarf_formstring.c
|
|
||||||
index fe2183a..c66454e 100644
|
|
||||||
--- a/libdw/dwarf_formstring.c
|
|
||||||
+++ b/libdw/dwarf_formstring.c
|
|
||||||
@@ -49,8 +49,17 @@ dwarf_formstring (attrp)
|
|
||||||
return (const char *) attrp->valp;
|
|
||||||
|
|
||||||
Dwarf *dbg = attrp->cu->dbg;
|
|
||||||
+ Dwarf *dbg_ret = attrp->form == DW_FORM_GNU_strp_alt ? dbg->alt_dwarf : dbg;
|
|
||||||
|
|
||||||
- if (unlikely (attrp->form != DW_FORM_strp)
|
|
||||||
+ if (unlikely (dbg_ret == NULL))
|
|
||||||
+ {
|
|
||||||
+ __libdw_seterrno (DWARF_E_NO_ALT_DEBUGLINK);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ if (unlikely (attrp->form != DW_FORM_strp
|
|
||||||
+ && attrp->form != DW_FORM_GNU_strp_alt)
|
|
||||||
|| dbg->sectiondata[IDX_debug_str] == NULL)
|
|
||||||
{
|
|
||||||
__libdw_seterrno (DWARF_E_NO_STRING);
|
|
||||||
@@ -58,10 +67,10 @@ dwarf_formstring (attrp)
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t off;
|
|
||||||
- if (__libdw_read_offset (dbg, cu_sec_idx (attrp->cu), attrp->valp,
|
|
||||||
+ if (__libdw_read_offset (dbg, dbg_ret, cu_sec_idx (attrp->cu), attrp->valp,
|
|
||||||
attrp->cu->offset_size, &off, IDX_debug_str, 1))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
- return (const char *) dbg->sectiondata[IDX_debug_str]->d_buf + off;
|
|
||||||
+ return (const char *) dbg_ret->sectiondata[IDX_debug_str]->d_buf + off;
|
|
||||||
}
|
|
||||||
INTDEF(dwarf_formstring)
|
|
||||||
diff --git a/libdw/dwarf_formudata.c b/libdw/dwarf_formudata.c
|
|
||||||
index f08e0d8..41b09e1 100644
|
|
||||||
--- a/libdw/dwarf_formudata.c
|
|
||||||
+++ b/libdw/dwarf_formudata.c
|
|
||||||
@@ -52,7 +52,8 @@ __libdw_formptr (Dwarf_Attribute *attr, int sec_index,
|
|
||||||
Dwarf_Word offset;
|
|
||||||
if (attr->form == DW_FORM_sec_offset)
|
|
||||||
{
|
|
||||||
- if (__libdw_read_offset (attr->cu->dbg, cu_sec_idx (attr->cu), attr->valp,
|
|
||||||
+ if (__libdw_read_offset (attr->cu->dbg, attr->cu->dbg,
|
|
||||||
+ cu_sec_idx (attr->cu), attr->valp,
|
|
||||||
attr->cu->offset_size, &offset, sec_index, 0))
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
@@ -63,7 +64,8 @@ __libdw_formptr (Dwarf_Attribute *attr, int sec_index,
|
|
||||||
{
|
|
||||||
case DW_FORM_data4:
|
|
||||||
case DW_FORM_data8:
|
|
||||||
- if (__libdw_read_offset (attr->cu->dbg, cu_sec_idx (attr->cu),
|
|
||||||
+ if (__libdw_read_offset (attr->cu->dbg, attr->cu->dbg,
|
|
||||||
+ cu_sec_idx (attr->cu),
|
|
||||||
attr->valp,
|
|
||||||
attr->form == DW_FORM_data4 ? 4 : 8,
|
|
||||||
&offset, sec_index, 0))
|
|
||||||
diff --git a/libdw/dwarf_getpubnames.c b/libdw/dwarf_getpubnames.c
|
|
||||||
index 4ea3889..12728a3 100644
|
|
||||||
--- a/libdw/dwarf_getpubnames.c
|
|
||||||
+++ b/libdw/dwarf_getpubnames.c
|
|
||||||
@@ -102,7 +102,8 @@ get_offsets (Dwarf *dbg)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get the CU offset. */
|
|
||||||
- if (__libdw_read_offset (dbg, IDX_debug_pubnames, readp + 2, len_bytes,
|
|
||||||
+ if (__libdw_read_offset (dbg, dbg, IDX_debug_pubnames,
|
|
||||||
+ readp + 2, len_bytes,
|
|
||||||
&mem[cnt].cu_offset, IDX_debug_info, 3))
|
|
||||||
/* Error has been already set in reader. */
|
|
||||||
goto err_return;
|
|
||||||
diff --git a/libdw/libdwP.h b/libdw/libdwP.h
|
|
||||||
index 77e1b31..da82e5d 100644
|
|
||||||
--- a/libdw/libdwP.h
|
|
||||||
+++ b/libdw/libdwP.h
|
|
||||||
@@ -116,6 +116,7 @@ enum
|
|
||||||
DWARF_E_INVALID_OFFSET,
|
|
||||||
DWARF_E_NO_DEBUG_RANGES,
|
|
||||||
DWARF_E_INVALID_CFI,
|
|
||||||
+ DWARF_E_NO_ALT_DEBUGLINK
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
@@ -127,6 +128,9 @@ struct Dwarf
|
|
||||||
/* The underlying ELF file. */
|
|
||||||
Elf *elf;
|
|
||||||
|
|
||||||
+ /* dwz alternate DWARF file. */
|
|
||||||
+ Dwarf *alt_dwarf;
|
|
||||||
+
|
|
||||||
/* The section data. */
|
|
||||||
Elf_Data *sectiondata[IDX_last];
|
|
||||||
|
|
||||||
@@ -141,6 +145,9 @@ struct Dwarf
|
|
||||||
/* If true, we allocated the ELF descriptor ourselves. */
|
|
||||||
bool free_elf;
|
|
||||||
|
|
||||||
+ /* If true, we allocated the Dwarf descriptor for alt_dwarf ourselves. */
|
|
||||||
+ bool free_alt;
|
|
||||||
+
|
|
||||||
/* Information for traversing the .debug_pubnames section. This is
|
|
||||||
an array and separately allocated with malloc. */
|
|
||||||
struct pubnames_s
|
|
||||||
@@ -580,13 +587,13 @@ __libdw_read_offset_inc (Dwarf *dbg,
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
-__libdw_read_offset (Dwarf *dbg,
|
|
||||||
+__libdw_read_offset (Dwarf *dbg, Dwarf *dbg_ret,
|
|
||||||
int sec_index, const unsigned char *addr,
|
|
||||||
int width, Dwarf_Off *ret, int sec_ret,
|
|
||||||
size_t size)
|
|
||||||
{
|
|
||||||
READ_AND_RELOCATE (__libdw_relocate_offset, (*ret));
|
|
||||||
- return __libdw_offset_in_section (dbg, sec_ret, *ret, size);
|
|
||||||
+ return __libdw_offset_in_section (dbg_ret, sec_ret, *ret, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline size_t
|
|
||||||
@@ -617,12 +624,19 @@ unsigned char * __libdw_formptr (Dwarf_Attribute *attr, int sec_index,
|
|
||||||
Dwarf_Off *offsetp)
|
|
||||||
internal_function;
|
|
||||||
|
|
||||||
+/* Checks that the build_id of the underlying Elf matches the expected.
|
|
||||||
+ Returns zero on match, -1 on error or no build_id found or 1 when
|
|
||||||
+ build_id doesn't match. */
|
|
||||||
+int __check_build_id (Dwarf *dw, const uint8_t *build_id, const size_t id_len)
|
|
||||||
+ internal_function;
|
|
||||||
+
|
|
||||||
|
|
||||||
|
|
||||||
/* Aliases to avoid PLTs. */
|
|
||||||
INTDECL (dwarf_aggregate_size)
|
|
||||||
INTDECL (dwarf_attr)
|
|
||||||
INTDECL (dwarf_attr_integrate)
|
|
||||||
+INTDECL (dwarf_begin)
|
|
||||||
INTDECL (dwarf_begin_elf)
|
|
||||||
INTDECL (dwarf_child)
|
|
||||||
INTDECL (dwarf_dieoffset)
|
|
||||||
diff --git a/libdw/libdw_form.c b/libdw/libdw_form.c
|
|
||||||
index 2ff8868..c476a6e 100644
|
|
||||||
--- a/libdw/libdw_form.c
|
|
||||||
+++ b/libdw/libdw_form.c
|
|
||||||
@@ -58,6 +58,8 @@ __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, unsigned int form,
|
|
||||||
|
|
||||||
case DW_FORM_strp:
|
|
||||||
case DW_FORM_sec_offset:
|
|
||||||
+ case DW_FORM_GNU_ref_alt:
|
|
||||||
+ case DW_FORM_GNU_strp_alt:
|
|
||||||
result = cu->offset_size;
|
|
||||||
break;
|
|
||||||
|
|
||||||
diff --git a/src/readelf.c b/src/readelf.c
|
|
||||||
index 3a27f8f..644e0f7 100644
|
|
||||||
--- a/src/readelf.c
|
|
||||||
+++ b/src/readelf.c
|
|
||||||
@@ -3651,6 +3651,20 @@ dwarf_form_string (unsigned int form)
|
|
||||||
|
|
||||||
if (likely (form < nknown_forms))
|
|
||||||
result = known_forms[form];
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ /* GNU extensions use vendor numbers. */
|
|
||||||
+ switch (form)
|
|
||||||
+ {
|
|
||||||
+ case DW_FORM_GNU_ref_alt:
|
|
||||||
+ result = "GNU_ref_alt";
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case DW_FORM_GNU_strp_alt:
|
|
||||||
+ result = "GNU_strp_alt";
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (unlikely (result == NULL))
|
|
||||||
{
|
|
||||||
@@ -5593,6 +5607,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
|
|
||||||
case DW_FORM_indirect:
|
|
||||||
case DW_FORM_strp:
|
|
||||||
case DW_FORM_string:
|
|
||||||
+ case DW_FORM_GNU_strp_alt:
|
|
||||||
if (cbargs->silent)
|
|
||||||
break;
|
|
||||||
const char *str = dwarf_formstring (attrp);
|
|
||||||
@@ -5608,7 +5623,8 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
|
|
||||||
case DW_FORM_ref8:
|
|
||||||
case DW_FORM_ref4:
|
|
||||||
case DW_FORM_ref2:
|
|
||||||
- case DW_FORM_ref1:;
|
|
||||||
+ case DW_FORM_ref1:
|
|
||||||
+ case DW_FORM_GNU_ref_alt:
|
|
||||||
if (cbargs->silent)
|
|
||||||
break;
|
|
||||||
Dwarf_Die ref;
|
|
@ -1,336 +0,0 @@
|
|||||||
diff --git a/libdwfl/offline.c b/libdwfl/offline.c
|
|
||||||
index a142acd..26a6bd6 100644
|
|
||||||
--- a/libdwfl/offline.c
|
|
||||||
+++ b/libdwfl/offline.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* Recover relocatibility for addresses computed from debug information.
|
|
||||||
- Copyright (C) 2005, 2006, 2007, 2008, 2009 Red Hat, Inc.
|
|
||||||
+ Copyright (C) 2005-2009, 2012 Red Hat, Inc.
|
|
||||||
This file is part of elfutils.
|
|
||||||
|
|
||||||
This file is free software; you can redistribute it and/or modify
|
|
||||||
@@ -169,7 +169,8 @@ process_archive_member (Dwfl *dwfl, const char *name, const char *file_name,
|
|
||||||
return ELF_C_NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (!strcmp (h->ar_name, "/") || !strcmp (h->ar_name, "//"))
|
|
||||||
+ if (!strcmp (h->ar_name, "/") || !strcmp (h->ar_name, "//")
|
|
||||||
+ || !strcmp (h->ar_name, "/SYM64/"))
|
|
||||||
{
|
|
||||||
skip:;
|
|
||||||
/* Skip this and go to the next. */
|
|
||||||
diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c
|
|
||||||
index 5cd2f07..b9d5cea 100644
|
|
||||||
--- a/libelf/elf_begin.c
|
|
||||||
+++ b/libelf/elf_begin.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* Create descriptor for processing file.
|
|
||||||
- Copyright (C) 1998-2010 Red Hat, Inc.
|
|
||||||
+ Copyright (C) 1998-2010, 2012 Red Hat, Inc.
|
|
||||||
This file is part of elfutils.
|
|
||||||
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
|
|
||||||
|
|
||||||
@@ -787,6 +787,10 @@ __libelf_next_arhdr_wrlock (elf)
|
|
||||||
&& memcmp (ar_hdr->ar_name, "/ ", 16) == 0)
|
|
||||||
/* This is the index. */
|
|
||||||
elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "/", 2);
|
|
||||||
+ else if (ar_hdr->ar_name[1] == 'S'
|
|
||||||
+ && memcmp (ar_hdr->ar_name, "/SYM64/ ", 16) == 0)
|
|
||||||
+ /* 64-bit index. */
|
|
||||||
+ elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "/SYM64/", 8);
|
|
||||||
else if (ar_hdr->ar_name[1] == '/'
|
|
||||||
&& memcmp (ar_hdr->ar_name, "// ", 16) == 0)
|
|
||||||
/* This is the array with the long names. */
|
|
||||||
diff --git a/libelf/elf_getarsym.c b/libelf/elf_getarsym.c
|
|
||||||
index eafaef5..9e0f4c2 100644
|
|
||||||
--- a/libelf/elf_getarsym.c
|
|
||||||
+++ b/libelf/elf_getarsym.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* Return symbol table of archive.
|
|
||||||
- Copyright (C) 1998, 1999, 2000, 2002, 2005 Red Hat, Inc.
|
|
||||||
+ Copyright (C) 1998-2000, 2002, 2005, 2012 Red Hat, Inc.
|
|
||||||
This file is part of elfutils.
|
|
||||||
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
|
|
||||||
|
|
||||||
@@ -35,6 +35,7 @@
|
|
||||||
#include <byteswap.h>
|
|
||||||
#include <endian.h>
|
|
||||||
#include <errno.h>
|
|
||||||
+#include <stdbool.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
@@ -45,6 +46,31 @@
|
|
||||||
#include "libelfP.h"
|
|
||||||
|
|
||||||
|
|
||||||
+static int
|
|
||||||
+read_number_entries (uint64_t *nump, Elf *elf, size_t *offp, bool index64_p)
|
|
||||||
+{
|
|
||||||
+ union u
|
|
||||||
+ {
|
|
||||||
+ uint64_t ret64;
|
|
||||||
+ uint32_t ret32;
|
|
||||||
+ } u;
|
|
||||||
+
|
|
||||||
+ size_t w = index64_p ? 8 : 4;
|
|
||||||
+ if (elf->map_address != NULL)
|
|
||||||
+ u = *(union u *) (elf->map_address + *offp);
|
|
||||||
+ else if ((size_t) pread_retry (elf->fildes, &u, w, *offp) != w)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ *offp += w;
|
|
||||||
+
|
|
||||||
+ if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
|
||||||
+ *nump = index64_p ? bswap_64 (u.ret64) : bswap_32 (u.ret32);
|
|
||||||
+ else
|
|
||||||
+ *nump = index64_p ? u.ret64 : u.ret32;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
Elf_Arsym *
|
|
||||||
elf_getarsym (elf, ptr)
|
|
||||||
Elf *elf;
|
|
||||||
@@ -116,11 +142,17 @@ elf_getarsym (elf, ptr)
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
- /* Now test whether this is the index. It is denoted by the
|
|
||||||
- name being "/ ".
|
|
||||||
+ bool index64_p;
|
|
||||||
+ /* Now test whether this is the index. If the name is "/", this
|
|
||||||
+ is 32-bit index, if it's "/SYM64/", it's 64-bit index.
|
|
||||||
+
|
|
||||||
XXX This is not entirely true. There are some more forms.
|
|
||||||
Which of them shall we handle? */
|
|
||||||
- if (memcmp (index_hdr->ar_name, "/ ", 16) != 0)
|
|
||||||
+ if (memcmp (index_hdr->ar_name, "/ ", 16) == 0)
|
|
||||||
+ index64_p = false;
|
|
||||||
+ else if (memcmp (index_hdr->ar_name, "/SYM64/ ", 16) == 0)
|
|
||||||
+ index64_p = true;
|
|
||||||
+ else
|
|
||||||
{
|
|
||||||
/* If the index is not the first entry, there is no index.
|
|
||||||
|
|
||||||
@@ -128,27 +160,18 @@ elf_getarsym (elf, ptr)
|
|
||||||
__libelf_seterrno (ELF_E_NO_INDEX);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
+ int w = index64_p ? 8 : 4;
|
|
||||||
|
|
||||||
/* We have an archive. The first word in there is the number of
|
|
||||||
entries in the table. */
|
|
||||||
- uint32_t n;
|
|
||||||
- if (elf->map_address == NULL)
|
|
||||||
+ uint64_t n;
|
|
||||||
+ size_t off = elf->start_offset + SARMAG + sizeof (struct ar_hdr);
|
|
||||||
+ if (read_number_entries (&n, elf, &off, index64_p) < 0)
|
|
||||||
{
|
|
||||||
- if (pread_retry (elf->fildes, &n, sizeof (n),
|
|
||||||
- elf->start_offset + SARMAG + sizeof (struct ar_hdr))
|
|
||||||
- != sizeof (n))
|
|
||||||
- {
|
|
||||||
- /* Cannot read the number of entries. */
|
|
||||||
- __libelf_seterrno (ELF_E_NO_INDEX);
|
|
||||||
- goto out;
|
|
||||||
- }
|
|
||||||
+ /* Cannot read the number of entries. */
|
|
||||||
+ __libelf_seterrno (ELF_E_NO_INDEX);
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
- else
|
|
||||||
- n = *(uint32_t *) (elf->map_address + elf->start_offset
|
|
||||||
- + SARMAG + sizeof (struct ar_hdr));
|
|
||||||
-
|
|
||||||
- if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
|
||||||
- n = bswap_32 (n);
|
|
||||||
|
|
||||||
/* Now we can perform some first tests on whether all the data
|
|
||||||
needed for the index is available. */
|
|
||||||
@@ -158,7 +181,7 @@ elf_getarsym (elf, ptr)
|
|
||||||
#if SIZE_MAX <= 4294967295U
|
|
||||||
|| n >= SIZE_MAX / sizeof (Elf_Arsym)
|
|
||||||
#endif
|
|
||||||
- || n * sizeof (uint32_t) > index_size)
|
|
||||||
+ || n * w > index_size)
|
|
||||||
{
|
|
||||||
/* This index table cannot be right since it does not fit into
|
|
||||||
the file. */
|
|
||||||
@@ -171,14 +194,19 @@ elf_getarsym (elf, ptr)
|
|
||||||
elf->state.ar.ar_sym = (Elf_Arsym *) malloc (ar_sym_len);
|
|
||||||
if (elf->state.ar.ar_sym != NULL)
|
|
||||||
{
|
|
||||||
- uint32_t *file_data;
|
|
||||||
+ union
|
|
||||||
+ {
|
|
||||||
+ uint32_t u32[n];
|
|
||||||
+ uint64_t u64[n];
|
|
||||||
+ } *file_data;
|
|
||||||
char *str_data;
|
|
||||||
+ size_t sz = n * w;
|
|
||||||
|
|
||||||
if (elf->map_address == NULL)
|
|
||||||
{
|
|
||||||
- file_data = (uint32_t *) alloca (n * sizeof (uint32_t));
|
|
||||||
+ file_data = alloca (sz);
|
|
||||||
|
|
||||||
- ar_sym_len += index_size - n * sizeof (uint32_t);
|
|
||||||
+ ar_sym_len += index_size - n * w;
|
|
||||||
Elf_Arsym *newp = (Elf_Arsym *) realloc (elf->state.ar.ar_sym,
|
|
||||||
ar_sym_len);
|
|
||||||
if (newp == NULL)
|
|
||||||
@@ -193,18 +221,10 @@ elf_getarsym (elf, ptr)
|
|
||||||
char *new_str = (char *) (elf->state.ar.ar_sym + n + 1);
|
|
||||||
|
|
||||||
/* Now read the data from the file. */
|
|
||||||
- if ((size_t) pread_retry (elf->fildes, file_data,
|
|
||||||
- n * sizeof (uint32_t),
|
|
||||||
- elf->start_offset + SARMAG
|
|
||||||
- + sizeof (struct ar_hdr)
|
|
||||||
- + sizeof (uint32_t))
|
|
||||||
- != n * sizeof (uint32_t)
|
|
||||||
+ if ((size_t) pread_retry (elf->fildes, file_data, sz, off) != sz
|
|
||||||
|| ((size_t) pread_retry (elf->fildes, new_str,
|
|
||||||
- index_size - n * sizeof (uint32_t),
|
|
||||||
- elf->start_offset
|
|
||||||
- + SARMAG + sizeof (struct ar_hdr)
|
|
||||||
- + (n + 1) * sizeof (uint32_t))
|
|
||||||
- != index_size - n * sizeof (uint32_t)))
|
|
||||||
+ index_size - sz, off + sz)
|
|
||||||
+ != index_size - sz))
|
|
||||||
{
|
|
||||||
/* We were not able to read the data. */
|
|
||||||
free (elf->state.ar.ar_sym);
|
|
||||||
@@ -217,10 +237,8 @@ elf_getarsym (elf, ptr)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- file_data = (uint32_t *) (elf->map_address + elf->start_offset
|
|
||||||
- + SARMAG + sizeof (struct ar_hdr)
|
|
||||||
- + sizeof (uint32_t));
|
|
||||||
- str_data = (char *) &file_data[n];
|
|
||||||
+ file_data = (void *) (elf->map_address + off);
|
|
||||||
+ str_data = (char *) (elf->map_address + off + sz);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now we can build the data structure. */
|
|
||||||
@@ -228,13 +246,38 @@ elf_getarsym (elf, ptr)
|
|
||||||
for (size_t cnt = 0; cnt < n; ++cnt)
|
|
||||||
{
|
|
||||||
arsym[cnt].as_name = str_data;
|
|
||||||
- if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
|
||||||
- arsym[cnt].as_off = bswap_32 (file_data[cnt]);
|
|
||||||
+ if (index64_p)
|
|
||||||
+ {
|
|
||||||
+ uint64_t tmp = file_data->u64[cnt];
|
|
||||||
+ if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
|
||||||
+ tmp = bswap_64 (tmp);
|
|
||||||
+
|
|
||||||
+ arsym[cnt].as_off = tmp;
|
|
||||||
+
|
|
||||||
+ /* Check whether 64-bit offset fits into 32-bit
|
|
||||||
+ size_t. */
|
|
||||||
+ if (sizeof (arsym[cnt].as_off) < 8
|
|
||||||
+ && arsym[cnt].as_off != tmp)
|
|
||||||
+ {
|
|
||||||
+ if (elf->map_address == NULL)
|
|
||||||
+ {
|
|
||||||
+ free (elf->state.ar.ar_sym);
|
|
||||||
+ elf->state.ar.ar_sym = NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ __libelf_seterrno (ELF_E_RANGE);
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ else if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
|
||||||
+ arsym[cnt].as_off = bswap_32 (file_data->u32[cnt]);
|
|
||||||
else
|
|
||||||
- arsym[cnt].as_off = file_data[cnt];
|
|
||||||
+ arsym[cnt].as_off = file_data->u32[cnt];
|
|
||||||
+
|
|
||||||
arsym[cnt].as_hash = _dl_elf_hash (str_data);
|
|
||||||
str_data = rawmemchr (str_data, '\0') + 1;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
/* At the end a special entry. */
|
|
||||||
arsym[n].as_name = NULL;
|
|
||||||
arsym[n].as_off = 0;
|
|
||||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
|
||||||
index 0615869..d0f4e80 100644
|
|
||||||
--- a/tests/Makefile.am
|
|
||||||
+++ b/tests/Makefile.am
|
|
||||||
@@ -83,7 +83,8 @@
|
|
||||||
run-early-offscn.sh run-dwarf-getmacros.sh \
|
|
||||||
run-test-flag-nobits.sh run-prelink-addr-test.sh \
|
|
||||||
run-dwarf-getstring.sh run-rerequest_tag.sh run-typeiter.sh \
|
|
||||||
- run-readelf-d.sh run-unstrip-n.sh run-low_high_pc.sh
|
|
||||||
+ run-readelf-d.sh run-unstrip-n.sh run-low_high_pc.sh \
|
|
||||||
+ run-test-archive64.sh
|
|
||||||
|
|
||||||
if !STANDALONE
|
|
||||||
noinst_PROGRAMS += msg_tst md5-sha1-test
|
|
||||||
@@ -167,7 +168,8 @@
|
|
||||||
run-typeiter.sh testfile59.bz2 \
|
|
||||||
run-readelf-d.sh testlib_dynseg.so.bz2 \
|
|
||||||
run-unstrip-n.sh testcore-rtlib.bz2 \
|
|
||||||
- run-low_high_pc.sh testfile_low_high_pc.bz2
|
|
||||||
+ run-low_high_pc.sh testfile_low_high_pc.bz2 \
|
|
||||||
+ run-test-archive64.sh testarchive64.a.bz2
|
|
||||||
|
|
||||||
installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \
|
|
||||||
bindir=$(DESTDIR)$(bindir) \
|
|
||||||
diff --git a/tests/run-test-archive64.sh b/tests/run-test-archive64.sh
|
|
||||||
new file mode 100755
|
|
||||||
index 0000000..26552ac
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/run-test-archive64.sh
|
|
||||||
@@ -0,0 +1,43 @@
|
|
||||||
+#! /bin/sh
|
|
||||||
+# Copyright (C) 2012 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
|
|
||||||
+
|
|
||||||
+# The test archive was produced on an s390x machine using the
|
|
||||||
+# following command sequence:
|
|
||||||
+# echo 'int aaa(void){}' | gcc -x c /dev/stdin -c -o aaa.o
|
|
||||||
+# echo 'int bbb(void){} int bbb2(void){}' | gcc -x c /dev/stdin -c -o bbb.o
|
|
||||||
+# echo 'int ccc(void){} int ccc2(void){} int ccc3(void){}' \
|
|
||||||
+# | gcc -x c /dev/stdin -c -o ccc.o
|
|
||||||
+# ar cru testarchive64.a aaa.o bbb.o ccc.o
|
|
||||||
+testfiles testarchive64.a
|
|
||||||
+
|
|
||||||
+testrun_compare ../src/readelf -c testarchive64.a <<\EOF
|
|
||||||
+
|
|
||||||
+Index of archive 'testarchive64.a' has 7 entries:
|
|
||||||
+Archive member 'aaa.o' contains:
|
|
||||||
+ aaa
|
|
||||||
+Archive member 'bbb.o' contains:
|
|
||||||
+ bbb
|
|
||||||
+ bbb2
|
|
||||||
+Archive member 'ccc.o' contains:
|
|
||||||
+ ccc
|
|
||||||
+ ccc2
|
|
||||||
+ ccc3
|
|
||||||
+EOF
|
|
||||||
+
|
|
||||||
+exit 0
|
|
||||||
diff --git a/tests/testarchive64.a.bz2 b/tests/testarchive64.a.bz2
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..4b54603
|
|
||||||
Binary files /dev/null and b/tests/testarchive64.a.bz2 differ
|
|
@ -1,48 +0,0 @@
|
|||||||
commit bc0f7450cb0fd5717f532bce1b39f45312cc2fd9
|
|
||||||
Author: Petr Machata <pmachata@redhat.com>
|
|
||||||
Date: Tue Jul 17 16:29:18 2012 +0200
|
|
||||||
|
|
||||||
elf*_xlatetom: do not check ELF_T_NHDR has integer number of records
|
|
||||||
|
|
||||||
See this bug report for more details:
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=835877
|
|
||||||
|
|
||||||
Signed-off-by: Petr Machata <pmachata@redhat.com>
|
|
||||||
|
|
||||||
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
|
|
||||||
index 89dd35f..0a6bcba 100644
|
|
||||||
--- a/libelf/ChangeLog
|
|
||||||
+++ b/libelf/ChangeLog
|
|
||||||
@@ -1,3 +1,8 @@
|
|
||||||
+2012-07-17 Petr Machata <pmachata@redhat.com>
|
|
||||||
+
|
|
||||||
+ * elf32_xlatetom.c (elfw2(LIBELFBITS, xlatetom)): Do not check for
|
|
||||||
+ integer number of records in case of ELF_T_NHDR.
|
|
||||||
+
|
|
||||||
2012-04-02 Mark Wielaard <mjw@redhat.com>
|
|
||||||
|
|
||||||
* elf32_offscn.c: Do not match SHT_NOBITS sections at OFFSET unless
|
|
||||||
diff --git a/libelf/elf32_xlatetom.c b/libelf/elf32_xlatetom.c
|
|
||||||
index 8fdf09d..368df07 100644
|
|
||||||
--- a/libelf/elf32_xlatetom.c
|
|
||||||
+++ b/libelf/elf32_xlatetom.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* Convert from file to memory representation.
|
|
||||||
- Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc.
|
|
||||||
+ Copyright (C) 1998, 1999, 2000, 2002, 2012 Red Hat, Inc.
|
|
||||||
This file is part of elfutils.
|
|
||||||
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
|
|
||||||
|
|
||||||
@@ -59,7 +59,11 @@ elfw2(LIBELFBITS, xlatetom) (dest, src, encode)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
- if (src->d_size % recsize != 0)
|
|
||||||
+ /* We shouldn't require integer number of records when processing
|
|
||||||
+ notes. Payload bytes follow the header immediately, it's not an
|
|
||||||
+ array of records as is the case otherwise. */
|
|
||||||
+ if (src->d_type != ELF_T_NHDR
|
|
||||||
+ && src->d_size % recsize != 0)
|
|
||||||
{
|
|
||||||
__libelf_seterrno (ELF_E_INVALID_DATA);
|
|
||||||
return NULL;
|
|
16
elfutils-0.155-binutils-pr-ld-13621.patch
Normal file
16
elfutils-0.155-binutils-pr-ld-13621.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff --git a/tests/run-elflint-self.sh b/tests/run-elflint-self.sh
|
||||||
|
index 4b01008..7a5f0c8 100755
|
||||||
|
--- a/tests/run-elflint-self.sh
|
||||||
|
+++ b/tests/run-elflint-self.sh
|
||||||
|
@@ -18,4 +18,11 @@
|
||||||
|
|
||||||
|
. $srcdir/test-subr.sh
|
||||||
|
|
||||||
|
+# Makes sure we exit cleanly even when we don't...
|
||||||
|
+clean_exit()
|
||||||
|
+{
|
||||||
|
+ if test $? != 0; then echo "binutils PR ld/13621 workaround"; exit 0; fi
|
||||||
|
+}
|
||||||
|
+trap clean_exit EXIT
|
||||||
|
+
|
||||||
|
testrun_on_self ../src/elflint --quiet --gnu-ld
|
@ -1,6 +1,6 @@
|
|||||||
--- elfutils/backends/ChangeLog
|
--- elfutils/backends/ChangeLog
|
||||||
+++ elfutils/backends/ChangeLog
|
+++ elfutils/backends/ChangeLog
|
||||||
@@ -121,6 +121,10 @@
|
@@ -135,6 +135,10 @@
|
||||||
* ppc_attrs.c (ppc_check_object_attribute): Handle tag
|
* ppc_attrs.c (ppc_check_object_attribute): Handle tag
|
||||||
GNU_Power_ABI_Struct_Return.
|
GNU_Power_ABI_Struct_Return.
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
2008-10-04 Ulrich Drepper <drepper@redhat.com>
|
2008-10-04 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* i386_reloc.def: Fix entries for TLS_GOTDESC, TLS_DESC_CALL, and
|
* i386_reloc.def: Fix entries for TLS_GOTDESC, TLS_DESC_CALL, and
|
||||||
@@ -448,6 +452,11 @@
|
@@ -462,6 +466,11 @@
|
||||||
* sparc_init.c: Likewise.
|
* sparc_init.c: Likewise.
|
||||||
* x86_64_init.c: Likewise.
|
* x86_64_init.c: Likewise.
|
||||||
|
|
||||||
@ -23,7 +23,7 @@
|
|||||||
2005-11-19 Roland McGrath <roland@redhat.com>
|
2005-11-19 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* ppc64_reloc.def: REL30 -> ADDR30.
|
* ppc64_reloc.def: REL30 -> ADDR30.
|
||||||
@@ -470,6 +479,9 @@
|
@@ -484,6 +493,9 @@
|
||||||
* Makefile.am (uninstall): Don't try to remove $(pkgincludedir).
|
* Makefile.am (uninstall): Don't try to remove $(pkgincludedir).
|
||||||
(CLEANFILES): Add libebl_$(m).so.
|
(CLEANFILES): Add libebl_$(m).so.
|
||||||
|
|
||||||
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
--- elfutils/backends/Makefile.am
|
--- elfutils/backends/Makefile.am
|
||||||
+++ elfutils/backends/Makefile.am
|
+++ elfutils/backends/Makefile.am
|
||||||
@@ -105,7 +105,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
|
@@ -111,7 +111,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
|
||||||
$(LINK) -shared -o $(@:.map=.so) \
|
$(LINK) -shared -o $(@:.map=.so) \
|
||||||
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
|
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
|
||||||
-Wl,--version-script,$(@:.so=.map) \
|
-Wl,--version-script,$(@:.so=.map) \
|
||||||
@ -56,7 +56,7 @@
|
|||||||
subdir = backends
|
subdir = backends
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
||||||
@@ -165,6 +166,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
@@ -172,6 +173,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
@ -64,7 +64,7 @@
|
|||||||
LEX = @LEX@
|
LEX = @LEX@
|
||||||
LEXLIB = @LEXLIB@
|
LEXLIB = @LEXLIB@
|
||||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||||
@@ -194,6 +196,7 @@ SHELL = @SHELL@
|
@@ -201,6 +203,7 @@ SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
USE_NLS = @USE_NLS@
|
USE_NLS = @USE_NLS@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
@ -72,7 +72,7 @@
|
|||||||
XGETTEXT = @XGETTEXT@
|
XGETTEXT = @XGETTEXT@
|
||||||
XGETTEXT_015 = @XGETTEXT_015@
|
XGETTEXT_015 = @XGETTEXT_015@
|
||||||
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||||
@@ -256,10 +259,9 @@ INCLUDES = -I. -I$(srcdir) -I$(top_srcdi
|
@@ -263,10 +266,9 @@ INCLUDES = -I. -I$(srcdir) -I$(top_srcdi
|
||||||
-I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
|
-I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
|
||||||
-I$(top_srcdir)/libelf -I$(top_srcdir)/libdw
|
-I$(top_srcdir)/libelf -I$(top_srcdir)/libdw
|
||||||
AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
|
AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
|
||||||
@ -85,7 +85,7 @@
|
|||||||
@MUDFLAP_FALSE@libmudflap =
|
@MUDFLAP_FALSE@libmudflap =
|
||||||
@MUDFLAP_TRUE@libmudflap = -lmudflap
|
@MUDFLAP_TRUE@libmudflap = -lmudflap
|
||||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
||||||
@@ -698,7 +700,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
|
@@ -719,7 +721,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
|
||||||
$(LINK) -shared -o $(@:.map=.so) \
|
$(LINK) -shared -o $(@:.map=.so) \
|
||||||
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
|
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
|
||||||
-Wl,--version-script,$(@:.so=.map) \
|
-Wl,--version-script,$(@:.so=.map) \
|
||||||
@ -96,7 +96,7 @@
|
|||||||
libebl_i386.so: $(cpu_i386)
|
libebl_i386.so: $(cpu_i386)
|
||||||
--- elfutils/ChangeLog
|
--- elfutils/ChangeLog
|
||||||
+++ elfutils/ChangeLog
|
+++ elfutils/ChangeLog
|
||||||
@@ -4,6 +4,8 @@
|
@@ -16,6 +16,8 @@
|
||||||
|
|
||||||
2012-01-24 Mark Wielaard <mjw@redhat.com>
|
2012-01-24 Mark Wielaard <mjw@redhat.com>
|
||||||
|
|
||||||
@ -105,7 +105,7 @@
|
|||||||
* COPYING: Fix address. Updated version from gnulib.
|
* COPYING: Fix address. Updated version from gnulib.
|
||||||
|
|
||||||
2012-01-23 Mark Wielaard <mjw@redhat.com>
|
2012-01-23 Mark Wielaard <mjw@redhat.com>
|
||||||
@@ -22,6 +24,9 @@
|
@@ -34,6 +36,9 @@
|
||||||
|
|
||||||
2011-10-08 Mike Frysinger <vapier@gentoo.org>
|
2011-10-08 Mike Frysinger <vapier@gentoo.org>
|
||||||
|
|
||||||
@ -115,7 +115,7 @@
|
|||||||
* configure.ac: Fix use of AC_ARG_ENABLE to handle $enableval correctly.
|
* configure.ac: Fix use of AC_ARG_ENABLE to handle $enableval correctly.
|
||||||
|
|
||||||
2011-10-02 Ulrich Drepper <drepper@gmail.com>
|
2011-10-02 Ulrich Drepper <drepper@gmail.com>
|
||||||
@@ -43,6 +48,10 @@
|
@@ -55,6 +60,10 @@
|
||||||
|
|
||||||
* configure.ac (LOCALEDIR, DATADIRNAME): Removed.
|
* configure.ac (LOCALEDIR, DATADIRNAME): Removed.
|
||||||
|
|
||||||
@ -126,7 +126,7 @@
|
|||||||
2009-09-21 Ulrich Drepper <drepper@redhat.com>
|
2009-09-21 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* configure.ac: Update for more modern autoconf.
|
* configure.ac: Update for more modern autoconf.
|
||||||
@@ -51,6 +60,10 @@
|
@@ -63,6 +72,10 @@
|
||||||
|
|
||||||
* configure.ac (zip_LIBS): Check for liblzma too.
|
* configure.ac (zip_LIBS): Check for liblzma too.
|
||||||
|
|
||||||
@ -137,7 +137,7 @@
|
|||||||
2009-04-19 Roland McGrath <roland@redhat.com>
|
2009-04-19 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* configure.ac (eu_version): Round down here, not in version.h macros.
|
* configure.ac (eu_version): Round down here, not in version.h macros.
|
||||||
@@ -62,6 +75,8 @@
|
@@ -74,6 +87,8 @@
|
||||||
|
|
||||||
2009-01-23 Roland McGrath <roland@redhat.com>
|
2009-01-23 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
@ -146,7 +146,7 @@
|
|||||||
* configure.ac (zlib check): Check for gzdirect, need zlib >= 1.2.2.3.
|
* configure.ac (zlib check): Check for gzdirect, need zlib >= 1.2.2.3.
|
||||||
|
|
||||||
* configure.ac (__thread check): Use AC_LINK_IFELSE, in case of
|
* configure.ac (__thread check): Use AC_LINK_IFELSE, in case of
|
||||||
@@ -142,6 +157,10 @@
|
@@ -154,6 +169,10 @@
|
||||||
* configure.ac: Add dummy automake conditional to get dependencies
|
* configure.ac: Add dummy automake conditional to get dependencies
|
||||||
for non-generic linker right. See src/Makefile.am.
|
for non-generic linker right. See src/Makefile.am.
|
||||||
|
|
||||||
@ -157,7 +157,7 @@
|
|||||||
2005-11-18 Roland McGrath <roland@redhat.com>
|
2005-11-18 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New variable.
|
* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New variable.
|
||||||
@@ -189,6 +208,17 @@
|
@@ -201,6 +220,17 @@
|
||||||
* Makefile.am (all_SUBDIRS): Add libdwfl.
|
* Makefile.am (all_SUBDIRS): Add libdwfl.
|
||||||
* configure.ac: Write libdwfl/Makefile.
|
* configure.ac: Write libdwfl/Makefile.
|
||||||
|
|
||||||
@ -177,7 +177,7 @@
|
|||||||
* configure.ac [AH_BOTTOM] (INTDECL, _INTDECL): New macros.
|
* configure.ac [AH_BOTTOM] (INTDECL, _INTDECL): New macros.
|
||||||
--- elfutils/config/ChangeLog
|
--- elfutils/config/ChangeLog
|
||||||
+++ elfutils/config/ChangeLog
|
+++ elfutils/config/ChangeLog
|
||||||
@@ -10,6 +10,10 @@
|
@@ -19,6 +19,10 @@
|
||||||
|
|
||||||
* known-dwarf.awk: Use gawk.
|
* known-dwarf.awk: Use gawk.
|
||||||
|
|
||||||
@ -241,9 +241,9 @@
|
|||||||
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||||
--- elfutils/config.h.in
|
--- elfutils/config.h.in
|
||||||
+++ elfutils/config.h.in
|
+++ elfutils/config.h.in
|
||||||
@@ -3,6 +3,9 @@
|
@@ -6,6 +6,9 @@
|
||||||
/* Should ar and ranlib use -D behavior by default? */
|
/* Defined if libdw should support GNU ref_alt FORM, dwz multi files. */
|
||||||
#undef DEFAULT_AR_DETERMINISTIC
|
#undef ENABLE_DWZ
|
||||||
|
|
||||||
+/* Have __builtin_popcount. */
|
+/* Have __builtin_popcount. */
|
||||||
+#undef HAVE_BUILTIN_POPCOUNT
|
+#undef HAVE_BUILTIN_POPCOUNT
|
||||||
@ -251,7 +251,7 @@
|
|||||||
/* $libdir subdirectory containing libebl modules. */
|
/* $libdir subdirectory containing libebl modules. */
|
||||||
#undef LIBEBL_SUBDIR
|
#undef LIBEBL_SUBDIR
|
||||||
|
|
||||||
@@ -61,4 +64,7 @@
|
@@ -64,4 +67,7 @@
|
||||||
/* Define for large files, on AIX-style hosts. */
|
/* Define for large files, on AIX-style hosts. */
|
||||||
#undef _LARGE_FILES
|
#undef _LARGE_FILES
|
||||||
|
|
||||||
@ -279,7 +279,7 @@
|
|||||||
LEXLIB
|
LEXLIB
|
||||||
LEX_OUTPUT_ROOT
|
LEX_OUTPUT_ROOT
|
||||||
LEX
|
LEX
|
||||||
@@ -722,6 +726,7 @@ enable_mudflap
|
@@ -725,6 +729,7 @@ enable_mudflap
|
||||||
enable_debugpred
|
enable_debugpred
|
||||||
enable_gprof
|
enable_gprof
|
||||||
enable_gcov
|
enable_gcov
|
||||||
@ -287,7 +287,7 @@
|
|||||||
enable_tests_rpath
|
enable_tests_rpath
|
||||||
enable_libebl_subdir
|
enable_libebl_subdir
|
||||||
with_zlib
|
with_zlib
|
||||||
@@ -1373,6 +1378,7 @@ Optional Features:
|
@@ -1378,6 +1383,7 @@ Optional Features:
|
||||||
prediction
|
prediction
|
||||||
--enable-gprof build binaries with gprof support
|
--enable-gprof build binaries with gprof support
|
||||||
--enable-gcov build binaries with gcov support
|
--enable-gcov build binaries with gcov support
|
||||||
@ -295,7 +295,7 @@
|
|||||||
--enable-tests-rpath build $ORIGIN-using rpath into tests
|
--enable-tests-rpath build $ORIGIN-using rpath into tests
|
||||||
--enable-libebl-subdir=DIR
|
--enable-libebl-subdir=DIR
|
||||||
install libebl_CPU modules in $(libdir)/DIR
|
install libebl_CPU modules in $(libdir)/DIR
|
||||||
@@ -3890,6 +3896,130 @@ if test "x$ac_cv_c99" != xyes; then :
|
@@ -3917,6 +3923,130 @@ if test "x$ac_cv_c99" != xyes; then :
|
||||||
as_fn_error $? "gcc with C99 support required" "$LINENO" 5
|
as_fn_error $? "gcc with C99 support required" "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -426,7 +426,7 @@
|
|||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __thread support" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __thread support" >&5
|
||||||
$as_echo_n "checking for __thread support... " >&6; }
|
$as_echo_n "checking for __thread support... " >&6; }
|
||||||
if ${ac_cv_tls+:} false; then :
|
if ${ac_cv_tls+:} false; then :
|
||||||
@@ -3926,7 +4056,13 @@ fi
|
@@ -3953,7 +4083,13 @@ fi
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
|
||||||
$as_echo "$ac_cv_tls" >&6; }
|
$as_echo "$ac_cv_tls" >&6; }
|
||||||
if test "x$ac_cv_tls" != xyes; then :
|
if test "x$ac_cv_tls" != xyes; then :
|
||||||
@ -441,7 +441,7 @@
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Check whether --enable-largefile was given.
|
# Check whether --enable-largefile was given.
|
||||||
@@ -4275,6 +4411,22 @@ else
|
@@ -4302,6 +4438,22 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -464,7 +464,7 @@
|
|||||||
# Check whether --enable-tests-rpath was given.
|
# Check whether --enable-tests-rpath was given.
|
||||||
if test "${enable_tests_rpath+set}" = set; then :
|
if test "${enable_tests_rpath+set}" = set; then :
|
||||||
enableval=$enable_tests_rpath; tests_use_rpath=$enableval
|
enableval=$enable_tests_rpath; tests_use_rpath=$enableval
|
||||||
@@ -4995,7 +5147,7 @@ case "$eu_version" in
|
@@ -5022,7 +5174,7 @@ case "$eu_version" in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Round up to the next release API (x.y) version.
|
# Round up to the next release API (x.y) version.
|
||||||
@ -473,7 +473,7 @@
|
|||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
# This file is a shell script that caches the results of configure
|
# This file is a shell script that caches the results of configure
|
||||||
@@ -5154,6 +5306,10 @@ if test -z "${BUILD_STATIC_TRUE}" && tes
|
@@ -5185,6 +5337,10 @@ if test -z "${BUILD_STATIC_TRUE}" && tes
|
||||||
as_fn_error $? "conditional \"BUILD_STATIC\" was never defined.
|
as_fn_error $? "conditional \"BUILD_STATIC\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
@ -486,7 +486,7 @@
|
|||||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
--- elfutils/configure.ac
|
--- elfutils/configure.ac
|
||||||
+++ elfutils/configure.ac
|
+++ elfutils/configure.ac
|
||||||
@@ -82,6 +82,54 @@ CFLAGS="$old_CFLAGS"])
|
@@ -90,6 +90,54 @@ CFLAGS="$old_CFLAGS"])
|
||||||
AS_IF([test "x$ac_cv_c99" != xyes],
|
AS_IF([test "x$ac_cv_c99" != xyes],
|
||||||
AC_MSG_ERROR([gcc with C99 support required]))
|
AC_MSG_ERROR([gcc with C99 support required]))
|
||||||
|
|
||||||
@ -541,7 +541,7 @@
|
|||||||
AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
|
AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
|
||||||
# Use the same flags that we use for our DSOs, so the test is representative.
|
# Use the same flags that we use for our DSOs, so the test is representative.
|
||||||
# Some old compiler/linker/libc combinations fail some ways and not others.
|
# Some old compiler/linker/libc combinations fail some ways and not others.
|
||||||
@@ -97,7 +145,10 @@ static __thread int a; int foo (int b) {
|
@@ -105,7 +153,10 @@ static __thread int a; int foo (int b) {
|
||||||
CFLAGS="$save_CFLAGS"
|
CFLAGS="$save_CFLAGS"
|
||||||
LDFLAGS="$save_LDFLAGS"])
|
LDFLAGS="$save_LDFLAGS"])
|
||||||
AS_IF([test "x$ac_cv_tls" != xyes],
|
AS_IF([test "x$ac_cv_tls" != xyes],
|
||||||
@ -553,7 +553,7 @@
|
|||||||
|
|
||||||
dnl This test must come as early as possible after the compiler configuration
|
dnl This test must come as early as possible after the compiler configuration
|
||||||
dnl tests, because the choice of the file model can (in principle) affect
|
dnl tests, because the choice of the file model can (in principle) affect
|
||||||
@@ -185,6 +236,11 @@ AM_CONDITIONAL(GCOV, test "$use_gcov" =
|
@@ -193,6 +244,11 @@ AM_CONDITIONAL(GCOV, test "$use_gcov" =
|
||||||
AM_CONDITIONAL(BUILD_STATIC, [dnl
|
AM_CONDITIONAL(BUILD_STATIC, [dnl
|
||||||
test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
|
test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
|
||||||
|
|
||||||
@ -565,7 +565,7 @@
|
|||||||
AC_ARG_ENABLE([tests-rpath],
|
AC_ARG_ENABLE([tests-rpath],
|
||||||
AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
|
AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
|
||||||
[tests_use_rpath=$enableval], [tests_use_rpath=no])
|
[tests_use_rpath=$enableval], [tests_use_rpath=no])
|
||||||
@@ -296,6 +352,6 @@ case "$eu_version" in
|
@@ -304,6 +360,6 @@ case "$eu_version" in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Round up to the next release API (x.y) version.
|
# Round up to the next release API (x.y) version.
|
||||||
@ -728,7 +728,7 @@
|
|||||||
EXTRA_DIST = libasm.map
|
EXTRA_DIST = libasm.map
|
||||||
--- elfutils/libcpu/ChangeLog
|
--- elfutils/libcpu/ChangeLog
|
||||||
+++ elfutils/libcpu/ChangeLog
|
+++ elfutils/libcpu/ChangeLog
|
||||||
@@ -34,6 +34,9 @@
|
@@ -38,6 +38,9 @@
|
||||||
|
|
||||||
2009-01-23 Roland McGrath <roland@redhat.com>
|
2009-01-23 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
@ -738,7 +738,7 @@
|
|||||||
* Makefile.am (i386_parse_CFLAGS): Use quotes around command
|
* Makefile.am (i386_parse_CFLAGS): Use quotes around command
|
||||||
substitution that can produce leading whitespace.
|
substitution that can produce leading whitespace.
|
||||||
|
|
||||||
@@ -363,6 +366,11 @@
|
@@ -367,6 +370,11 @@
|
||||||
* defs/i386.doc: New file.
|
* defs/i386.doc: New file.
|
||||||
* defs/x86_64: New file.
|
* defs/x86_64: New file.
|
||||||
|
|
||||||
@ -803,7 +803,7 @@
|
|||||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
||||||
--- elfutils/libdw/ChangeLog
|
--- elfutils/libdw/ChangeLog
|
||||||
+++ elfutils/libdw/ChangeLog
|
+++ elfutils/libdw/ChangeLog
|
||||||
@@ -17,6 +17,10 @@
|
@@ -82,6 +82,10 @@
|
||||||
|
|
||||||
* Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
|
* Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
|
||||||
|
|
||||||
@ -814,7 +814,7 @@
|
|||||||
2011-07-14 Mark Wielaard <mjw@redhat.com>
|
2011-07-14 Mark Wielaard <mjw@redhat.com>
|
||||||
|
|
||||||
* libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
|
* libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
|
||||||
@@ -376,6 +380,10 @@
|
@@ -441,6 +445,10 @@
|
||||||
|
|
||||||
* dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
|
* dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
|
||||||
|
|
||||||
@ -825,7 +825,7 @@
|
|||||||
2009-08-10 Roland McGrath <roland@redhat.com>
|
2009-08-10 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* dwarf_getscopevar.c: Use dwarf_diename.
|
* dwarf_getscopevar.c: Use dwarf_diename.
|
||||||
@@ -1144,6 +1152,11 @@
|
@@ -1209,6 +1217,11 @@
|
||||||
|
|
||||||
2005-05-31 Roland McGrath <roland@redhat.com>
|
2005-05-31 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
@ -839,7 +839,7 @@
|
|||||||
|
|
||||||
--- elfutils/libdw/dwarf_begin_elf.c
|
--- elfutils/libdw/dwarf_begin_elf.c
|
||||||
+++ elfutils/libdw/dwarf_begin_elf.c
|
+++ elfutils/libdw/dwarf_begin_elf.c
|
||||||
@@ -43,6 +43,14 @@
|
@@ -48,6 +48,14 @@
|
||||||
#if USE_ZLIB
|
#if USE_ZLIB
|
||||||
# include <endian.h>
|
# include <endian.h>
|
||||||
# define crc32 loser_crc32
|
# define crc32 loser_crc32
|
||||||
@ -910,7 +910,7 @@
|
|||||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
||||||
--- elfutils/libdwfl/ChangeLog
|
--- elfutils/libdwfl/ChangeLog
|
||||||
+++ elfutils/libdwfl/ChangeLog
|
+++ elfutils/libdwfl/ChangeLog
|
||||||
@@ -1416,6 +1416,11 @@
|
@@ -1420,6 +1420,11 @@
|
||||||
|
|
||||||
2005-07-21 Roland McGrath <roland@redhat.com>
|
2005-07-21 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
@ -993,7 +993,7 @@
|
|||||||
@MUDFLAP_FALSE@libdw = ../libdw/libdw.so
|
@MUDFLAP_FALSE@libdw = ../libdw/libdw.so
|
||||||
--- elfutils/libebl/ChangeLog
|
--- elfutils/libebl/ChangeLog
|
||||||
+++ elfutils/libebl/ChangeLog
|
+++ elfutils/libebl/ChangeLog
|
||||||
@@ -650,6 +650,11 @@
|
@@ -658,6 +658,11 @@
|
||||||
* Makefile.am (libebl_*_so_SOURCES): Set to $(*_SRCS) so dependency
|
* Makefile.am (libebl_*_so_SOURCES): Set to $(*_SRCS) so dependency
|
||||||
tracking works right.
|
tracking works right.
|
||||||
|
|
||||||
@ -1048,7 +1048,7 @@
|
|||||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
||||||
--- elfutils/libelf/ChangeLog
|
--- elfutils/libelf/ChangeLog
|
||||||
+++ elfutils/libelf/ChangeLog
|
+++ elfutils/libelf/ChangeLog
|
||||||
@@ -7,6 +7,11 @@
|
@@ -34,6 +34,11 @@
|
||||||
|
|
||||||
* elf-knowledge.h (SECTION_STRIP_P): Remove < SHT_NUM check.
|
* elf-knowledge.h (SECTION_STRIP_P): Remove < SHT_NUM check.
|
||||||
|
|
||||||
@ -1060,7 +1060,7 @@
|
|||||||
2011-02-26 Mark Wielaard <mjw@redhat.com>
|
2011-02-26 Mark Wielaard <mjw@redhat.com>
|
||||||
|
|
||||||
* elf_end.c (elf_end): Call rwlock_unlock before rwlock_fini.
|
* elf_end.c (elf_end): Call rwlock_unlock before rwlock_fini.
|
||||||
@@ -684,6 +689,11 @@
|
@@ -711,6 +716,11 @@
|
||||||
|
|
||||||
* elf.h: Update from glibc.
|
* elf.h: Update from glibc.
|
||||||
|
|
||||||
@ -1221,7 +1221,7 @@
|
|||||||
break;
|
break;
|
||||||
--- elfutils/src/ChangeLog
|
--- elfutils/src/ChangeLog
|
||||||
+++ elfutils/src/ChangeLog
|
+++ elfutils/src/ChangeLog
|
||||||
@@ -519,8 +519,16 @@
|
@@ -606,8 +606,16 @@
|
||||||
* readelf.c (attr_callback): Use print_block only when we don't use
|
* readelf.c (attr_callback): Use print_block only when we don't use
|
||||||
print_ops.
|
print_ops.
|
||||||
|
|
||||||
@ -1238,7 +1238,7 @@
|
|||||||
* ar.c (do_oper_extract): Use pathconf instead of statfs.
|
* ar.c (do_oper_extract): Use pathconf instead of statfs.
|
||||||
|
|
||||||
2009-08-01 Ulrich Drepper <drepper@redhat.com>
|
2009-08-01 Ulrich Drepper <drepper@redhat.com>
|
||||||
@@ -684,6 +692,8 @@
|
@@ -771,6 +779,8 @@
|
||||||
* readelf.c (print_debug_frame_section): Use t instead of j formats
|
* readelf.c (print_debug_frame_section): Use t instead of j formats
|
||||||
for ptrdiff_t OFFSET.
|
for ptrdiff_t OFFSET.
|
||||||
|
|
||||||
@ -1247,7 +1247,7 @@
|
|||||||
2009-01-21 Ulrich Drepper <drepper@redhat.com>
|
2009-01-21 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* elflint.c (check_program_header): Fix typo in .eh_frame_hdr section
|
* elflint.c (check_program_header): Fix typo in .eh_frame_hdr section
|
||||||
@@ -867,6 +877,11 @@
|
@@ -954,6 +964,11 @@
|
||||||
that matches its PT_LOAD's p_flags &~ PF_W. On sparc, PF_X really
|
that matches its PT_LOAD's p_flags &~ PF_W. On sparc, PF_X really
|
||||||
is valid in RELRO.
|
is valid in RELRO.
|
||||||
|
|
||||||
@ -1259,7 +1259,7 @@
|
|||||||
2008-02-29 Roland McGrath <roland@redhat.com>
|
2008-02-29 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* readelf.c (print_attributes): Add a cast.
|
* readelf.c (print_attributes): Add a cast.
|
||||||
@@ -1118,6 +1133,8 @@
|
@@ -1205,6 +1220,8 @@
|
||||||
|
|
||||||
* readelf.c (hex_dump): Fix rounding error in whitespace calculation.
|
* readelf.c (hex_dump): Fix rounding error in whitespace calculation.
|
||||||
|
|
||||||
@ -1268,7 +1268,7 @@
|
|||||||
2007-10-15 Roland McGrath <roland@redhat.com>
|
2007-10-15 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* make-debug-archive.in: New file.
|
* make-debug-archive.in: New file.
|
||||||
@@ -1557,6 +1574,10 @@
|
@@ -1644,6 +1661,10 @@
|
||||||
* elflint.c (valid_e_machine): Add EM_ALPHA.
|
* elflint.c (valid_e_machine): Add EM_ALPHA.
|
||||||
Reported by Christian Aichinger <Greek0@gmx.net>.
|
Reported by Christian Aichinger <Greek0@gmx.net>.
|
||||||
|
|
||||||
@ -1279,7 +1279,7 @@
|
|||||||
2006-08-08 Ulrich Drepper <drepper@redhat.com>
|
2006-08-08 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* elflint.c (check_dynamic): Don't require DT_HASH for DT_SYMTAB.
|
* elflint.c (check_dynamic): Don't require DT_HASH for DT_SYMTAB.
|
||||||
@@ -1633,6 +1654,10 @@
|
@@ -1720,6 +1741,10 @@
|
||||||
* Makefile.am: Add hacks to create dependency files for non-generic
|
* Makefile.am: Add hacks to create dependency files for non-generic
|
||||||
linker.
|
linker.
|
||||||
|
|
||||||
@ -1290,7 +1290,7 @@
|
|||||||
2006-06-12 Ulrich Drepper <drepper@redhat.com>
|
2006-06-12 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* ldgeneric.c (ld_generic_generate_sections): Don't create .interp
|
* ldgeneric.c (ld_generic_generate_sections): Don't create .interp
|
||||||
@@ -1981,6 +2006,11 @@
|
@@ -2068,6 +2093,11 @@
|
||||||
* readelf.c (print_debug_loc_section): Fix indentation for larger
|
* readelf.c (print_debug_loc_section): Fix indentation for larger
|
||||||
address size.
|
address size.
|
||||||
|
|
||||||
@ -1440,7 +1440,7 @@
|
|||||||
findtextrel_LDADD = $(libdw) $(libelf) $(libmudflap)
|
findtextrel_LDADD = $(libdw) $(libelf) $(libmudflap)
|
||||||
--- elfutils/src/readelf.c
|
--- elfutils/src/readelf.c
|
||||||
+++ elfutils/src/readelf.c
|
+++ elfutils/src/readelf.c
|
||||||
@@ -4429,10 +4429,11 @@ struct listptr
|
@@ -3949,10 +3949,11 @@ struct listptr
|
||||||
#define listptr_offset_size(p) ((p)->dwarf64 ? 8 : 4)
|
#define listptr_offset_size(p) ((p)->dwarf64 ? 8 : 4)
|
||||||
#define listptr_address_size(p) ((p)->addr64 ? 8 : 4)
|
#define listptr_address_size(p) ((p)->addr64 ? 8 : 4)
|
||||||
|
|
||||||
@ -1454,7 +1454,7 @@
|
|||||||
struct listptr *p1 = (void *) a;
|
struct listptr *p1 = (void *) a;
|
||||||
struct listptr *p2 = (void *) b;
|
struct listptr *p2 = (void *) b;
|
||||||
|
|
||||||
@@ -4513,8 +4514,11 @@ static void
|
@@ -4033,8 +4034,11 @@ static void
|
||||||
sort_listptr (struct listptr_table *table, const char *name)
|
sort_listptr (struct listptr_table *table, const char *name)
|
||||||
{
|
{
|
||||||
if (table->n > 0)
|
if (table->n > 0)
|
||||||
@ -1468,7 +1468,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
@@ -8478,7 +8482,7 @@ dump_archive_index (Elf *elf, const char
|
@@ -8442,7 +8446,7 @@ dump_archive_index (Elf *elf, const char
|
||||||
if (unlikely (elf_rand (elf, as_off) == 0)
|
if (unlikely (elf_rand (elf, as_off) == 0)
|
||||||
|| unlikely ((subelf = elf_begin (-1, ELF_C_READ_MMAP, elf))
|
|| unlikely ((subelf = elf_begin (-1, ELF_C_READ_MMAP, elf))
|
||||||
== NULL))
|
== NULL))
|
||||||
@ -1570,7 +1570,7 @@
|
|||||||
cannot set access and modification date of '%s'"), fname);
|
cannot set access and modification date of '%s'"), fname);
|
||||||
--- elfutils/tests/ChangeLog
|
--- elfutils/tests/ChangeLog
|
||||||
+++ elfutils/tests/ChangeLog
|
+++ elfutils/tests/ChangeLog
|
||||||
@@ -333,6 +333,8 @@
|
@@ -439,6 +439,8 @@
|
||||||
|
|
||||||
2008-01-21 Roland McGrath <roland@redhat.com>
|
2008-01-21 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
@ -1579,7 +1579,7 @@
|
|||||||
* testfile45.S.bz2: Add tests for cltq, cqto.
|
* testfile45.S.bz2: Add tests for cltq, cqto.
|
||||||
* testfile45.expect.bz2: Adjust.
|
* testfile45.expect.bz2: Adjust.
|
||||||
|
|
||||||
@@ -1041,6 +1043,11 @@
|
@@ -1147,6 +1149,11 @@
|
||||||
* Makefile.am (TESTS): Add run-elflint-test.sh.
|
* Makefile.am (TESTS): Add run-elflint-test.sh.
|
||||||
(EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2.
|
(EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2.
|
||||||
|
|
||||||
@ -1604,7 +1604,7 @@
|
|||||||
case 0:
|
case 0:
|
||||||
--- elfutils/tests/Makefile.in
|
--- elfutils/tests/Makefile.in
|
||||||
+++ elfutils/tests/Makefile.in
|
+++ elfutils/tests/Makefile.in
|
||||||
@@ -36,14 +36,15 @@ build_triplet = @build@
|
@@ -35,14 +35,15 @@ build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
$(top_srcdir)/config/eu.am ChangeLog
|
$(top_srcdir)/config/eu.am ChangeLog
|
||||||
@ -1621,23 +1621,27 @@
|
|||||||
-@TESTS_RPATH_TRUE@am__append_4 = -Wl,-rpath,$(BUILD_RPATH)
|
-@TESTS_RPATH_TRUE@am__append_4 = -Wl,-rpath,$(BUILD_RPATH)
|
||||||
+@STANDALONE_FALSE@am__append_4 = -Wl,-rpath-link,../libasm:../libdw:../libelf
|
+@STANDALONE_FALSE@am__append_4 = -Wl,-rpath-link,../libasm:../libdw:../libelf
|
||||||
+@TESTS_RPATH_TRUE@am__append_5 = -Wl,-rpath,$(BUILD_RPATH)
|
+@TESTS_RPATH_TRUE@am__append_5 = -Wl,-rpath,$(BUILD_RPATH)
|
||||||
noinst_PROGRAMS = arextract$(EXEEXT) arsymtest$(EXEEXT) \
|
check_PROGRAMS = arextract$(EXEEXT) arsymtest$(EXEEXT) \
|
||||||
newfile$(EXEEXT) saridx$(EXEEXT) scnnames$(EXEEXT) \
|
newfile$(EXEEXT) saridx$(EXEEXT) scnnames$(EXEEXT) \
|
||||||
sectiondump$(EXEEXT) showptable$(EXEEXT) update1$(EXEEXT) \
|
sectiondump$(EXEEXT) showptable$(EXEEXT) update1$(EXEEXT) \
|
||||||
@@ -89,10 +90,10 @@ TESTS = run-arextract.sh run-arsymtest.s
|
@@ -92,12 +93,12 @@ TESTS = run-arextract.sh run-arsymtest.s
|
||||||
run-rerequest_tag.sh run-typeiter.sh run-readelf-d.sh \
|
run-readelf-gdb_index.sh run-unstrip-n.sh run-low_high_pc.sh \
|
||||||
run-unstrip-n.sh run-low_high_pc.sh $(am__EXEEXT_1) \
|
run-macro-test.sh run-elf_cntl_gelf_getshdr.sh \
|
||||||
$(am__EXEEXT_3)
|
run-test-archive64.sh $(am__EXEEXT_1) $(am__EXEEXT_3) \
|
||||||
|
- $(am__append_9)
|
||||||
-@STANDALONE_FALSE@am__append_5 = msg_tst md5-sha1-test
|
-@STANDALONE_FALSE@am__append_5 = msg_tst md5-sha1-test
|
||||||
|
+ $(am__append_10)
|
||||||
@STANDALONE_FALSE@am__append_6 = msg_tst md5-sha1-test
|
@STANDALONE_FALSE@am__append_6 = msg_tst md5-sha1-test
|
||||||
-@HAVE_LIBASM_TRUE@am__append_7 = $(asm_TESTS)
|
-@HAVE_LIBASM_TRUE@am__append_7 = $(asm_TESTS)
|
||||||
+@STANDALONE_FALSE@am__append_7 = msg_tst md5-sha1-test
|
+@STANDALONE_FALSE@am__append_7 = msg_tst md5-sha1-test
|
||||||
@HAVE_LIBASM_TRUE@am__append_8 = $(asm_TESTS)
|
@HAVE_LIBASM_TRUE@am__append_8 = $(asm_TESTS)
|
||||||
|
-@ENABLE_DWZ_TRUE@am__append_9 = run-readelf-dwz-multi.sh
|
||||||
+@HAVE_LIBASM_TRUE@am__append_9 = $(asm_TESTS)
|
+@HAVE_LIBASM_TRUE@am__append_9 = $(asm_TESTS)
|
||||||
|
+@ENABLE_DWZ_TRUE@am__append_10 = run-readelf-dwz-multi.sh
|
||||||
subdir = tests
|
subdir = tests
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
||||||
@@ -403,6 +404,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
@@ -412,6 +413,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
@ -1645,7 +1649,7 @@
|
|||||||
LEX = @LEX@
|
LEX = @LEX@
|
||||||
LEXLIB = @LEXLIB@
|
LEXLIB = @LEXLIB@
|
||||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||||
@@ -432,6 +434,7 @@ SHELL = @SHELL@
|
@@ -441,6 +443,7 @@ SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
USE_NLS = @USE_NLS@
|
USE_NLS = @USE_NLS@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
@ -1653,7 +1657,7 @@
|
|||||||
XGETTEXT = @XGETTEXT@
|
XGETTEXT = @XGETTEXT@
|
||||||
XGETTEXT_015 = @XGETTEXT_015@
|
XGETTEXT_015 = @XGETTEXT_015@
|
||||||
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||||
@@ -490,12 +493,11 @@ top_build_prefix = @top_build_prefix@
|
@@ -499,12 +502,11 @@ top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
zip_LIBS = @zip_LIBS@
|
zip_LIBS = @zip_LIBS@
|
||||||
@ -1669,7 +1673,7 @@
|
|||||||
@MUDFLAP_FALSE@libmudflap =
|
@MUDFLAP_FALSE@libmudflap =
|
||||||
@MUDFLAP_TRUE@libmudflap = -lmudflap
|
@MUDFLAP_TRUE@libmudflap = -lmudflap
|
||||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
|
||||||
@@ -505,7 +507,7 @@ CLEANFILES = *.gcno *.gcda
|
@@ -514,7 +516,7 @@ CLEANFILES = *.gcno *.gcda
|
||||||
textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||||
@MUDFLAP_FALSE@BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
|
@MUDFLAP_FALSE@BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
|
||||||
@MUDFLAP_TRUE@BUILD_RPATH = \$$ORIGIN/../backends
|
@MUDFLAP_TRUE@BUILD_RPATH = \$$ORIGIN/../backends
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- elfutils/libdwfl/ChangeLog
|
--- elfutils/libdwfl/ChangeLog
|
||||||
+++ elfutils/libdwfl/ChangeLog
|
+++ elfutils/libdwfl/ChangeLog
|
||||||
@@ -48,6 +48,11 @@
|
@@ -52,6 +52,11 @@
|
||||||
* dwfl_module_getdwarf.c (open_elf): Clear errno before CBFAIL.
|
* dwfl_module_getdwarf.c (open_elf): Clear errno before CBFAIL.
|
||||||
Reported by Kurt Roeckx <kurt@roeckx.be>.
|
Reported by Kurt Roeckx <kurt@roeckx.be>.
|
||||||
|
|
||||||
@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
--- elfutils/libelf/ChangeLog
|
--- elfutils/libelf/ChangeLog
|
||||||
+++ elfutils/libelf/ChangeLog
|
+++ elfutils/libelf/ChangeLog
|
||||||
@@ -676,10 +676,53 @@
|
@@ -703,10 +703,53 @@
|
||||||
If section content hasn't been read yet, do it before looking for the
|
If section content hasn't been read yet, do it before looking for the
|
||||||
block size. If no section data present, infer size of section header.
|
block size. If no section data present, infer size of section header.
|
||||||
|
|
||||||
@ -119,13 +119,6 @@
|
|||||||
+ elf->start_offset + ehdr->e_phoff);
|
+ elf->start_offset + ehdr->e_phoff);
|
||||||
--- elfutils/libelf/elf32_getshdr.c
|
--- elfutils/libelf/elf32_getshdr.c
|
||||||
+++ elfutils/libelf/elf32_getshdr.c
|
+++ elfutils/libelf/elf32_getshdr.c
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/* Return section header.
|
|
||||||
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2007, 2009 Red Hat, Inc.
|
|
||||||
+ Copyright (C) 1998-2009 Red Hat, Inc.
|
|
||||||
This file is part of elfutils.
|
|
||||||
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
|
|
||||||
|
|
||||||
@@ -60,7 +60,8 @@ load_shdr_wrlock (Elf_Scn *scn)
|
@@ -60,7 +60,8 @@ load_shdr_wrlock (Elf_Scn *scn)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
@ -260,14 +253,14 @@
|
|||||||
|
|
||||||
--- elfutils/libelf/elf_getarsym.c
|
--- elfutils/libelf/elf_getarsym.c
|
||||||
+++ elfutils/libelf/elf_getarsym.c
|
+++ elfutils/libelf/elf_getarsym.c
|
||||||
@@ -158,6 +158,9 @@ elf_getarsym (elf, ptr)
|
@@ -181,6 +181,9 @@ elf_getarsym (elf, ptr)
|
||||||
size_t index_size = atol (tmpbuf);
|
size_t index_size = atol (tmpbuf);
|
||||||
|
|
||||||
if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
|
if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
|
||||||
+#if SIZE_MAX <= 4294967295U
|
+#if SIZE_MAX <= 4294967295U
|
||||||
+ || n >= SIZE_MAX / sizeof (Elf_Arsym)
|
+ || n >= SIZE_MAX / sizeof (Elf_Arsym)
|
||||||
+#endif
|
+#endif
|
||||||
|| n * sizeof (uint32_t) > index_size)
|
|| n * w > index_size)
|
||||||
{
|
{
|
||||||
/* This index table cannot be right since it does not fit into
|
/* This index table cannot be right since it does not fit into
|
||||||
--- elfutils/libelf/elf_getshdrstrndx.c
|
--- elfutils/libelf/elf_getshdrstrndx.c
|
||||||
@ -909,7 +902,7 @@
|
|||||||
#endif /* libelfP.h */
|
#endif /* libelfP.h */
|
||||||
--- elfutils/src/ChangeLog
|
--- elfutils/src/ChangeLog
|
||||||
+++ elfutils/src/ChangeLog
|
+++ elfutils/src/ChangeLog
|
||||||
@@ -257,6 +257,12 @@
|
@@ -344,6 +344,12 @@
|
||||||
|
|
||||||
* readelf.c (dwarf_attr_string): Grok DW_AT_GNU_odr_signature.
|
* readelf.c (dwarf_attr_string): Grok DW_AT_GNU_odr_signature.
|
||||||
|
|
||||||
@ -922,7 +915,7 @@
|
|||||||
2011-02-11 Roland McGrath <roland@redhat.com>
|
2011-02-11 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* elfcmp.c (verbose): New variable.
|
* elfcmp.c (verbose): New variable.
|
||||||
@@ -1969,6 +1975,16 @@
|
@@ -2056,6 +2062,16 @@
|
||||||
object symbols or symbols with unknown type.
|
object symbols or symbols with unknown type.
|
||||||
(check_rel): Likewise.
|
(check_rel): Likewise.
|
||||||
|
|
||||||
@ -939,7 +932,7 @@
|
|||||||
2005-06-08 Roland McGrath <roland@redhat.com>
|
2005-06-08 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* readelf.c (print_ops): Add consts.
|
* readelf.c (print_ops): Add consts.
|
||||||
@@ -2014,6 +2030,19 @@
|
@@ -2101,6 +2117,19 @@
|
||||||
|
|
||||||
* readelf.c (dwarf_tag_string): Add new tags.
|
* readelf.c (dwarf_tag_string): Add new tags.
|
||||||
|
|
||||||
@ -993,7 +986,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -336,11 +349,6 @@ static const int valid_e_machine[] =
|
@@ -337,11 +350,6 @@ static const int valid_e_machine[] =
|
||||||
(sizeof (valid_e_machine) / sizeof (valid_e_machine[0]))
|
(sizeof (valid_e_machine) / sizeof (valid_e_machine[0]))
|
||||||
|
|
||||||
|
|
||||||
@ -1005,7 +998,7 @@
|
|||||||
static void
|
static void
|
||||||
check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
|
check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
|
||||||
{
|
{
|
||||||
@@ -624,7 +632,8 @@ section [%2d] '%s': symbol table cannot
|
@@ -625,7 +633,8 @@ section [%2d] '%s': symbol table cannot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1015,7 +1008,7 @@
|
|||||||
ERROR (gettext ("\
|
ERROR (gettext ("\
|
||||||
section [%2u] '%s': entry size is does not match ElfXX_Sym\n"),
|
section [%2u] '%s': entry size is does not match ElfXX_Sym\n"),
|
||||||
idx, section_name (ebl, idx));
|
idx, section_name (ebl, idx));
|
||||||
@@ -662,7 +671,7 @@ section [%2d] '%s': XINDEX for zeroth en
|
@@ -663,7 +672,7 @@ section [%2d] '%s': XINDEX for zeroth en
|
||||||
xndxscnidx, section_name (ebl, xndxscnidx));
|
xndxscnidx, section_name (ebl, xndxscnidx));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1024,7 +1017,7 @@
|
|||||||
{
|
{
|
||||||
sym = gelf_getsymshndx (data, xndxdata, cnt, &sym_mem, &xndx);
|
sym = gelf_getsymshndx (data, xndxdata, cnt, &sym_mem, &xndx);
|
||||||
if (sym == NULL)
|
if (sym == NULL)
|
||||||
@@ -682,7 +691,8 @@ section [%2d] '%s': symbol %zu: invalid
|
@@ -683,7 +692,8 @@ section [%2d] '%s': symbol %zu: invalid
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name);
|
name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name);
|
||||||
@ -1034,7 +1027,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sym->st_shndx == SHN_XINDEX)
|
if (sym->st_shndx == SHN_XINDEX)
|
||||||
@@ -1031,9 +1041,11 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
@@ -1032,9 +1042,11 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
||||||
{
|
{
|
||||||
GElf_Shdr rcshdr_mem;
|
GElf_Shdr rcshdr_mem;
|
||||||
const GElf_Shdr *rcshdr = gelf_getshdr (scn, &rcshdr_mem);
|
const GElf_Shdr *rcshdr = gelf_getshdr (scn, &rcshdr_mem);
|
||||||
@ -1048,7 +1041,7 @@
|
|||||||
{
|
{
|
||||||
/* Found the dynamic section. Look through it. */
|
/* Found the dynamic section. Look through it. */
|
||||||
Elf_Data *d = elf_getdata (scn, NULL);
|
Elf_Data *d = elf_getdata (scn, NULL);
|
||||||
@@ -1043,7 +1055,9 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
@@ -1044,7 +1056,9 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
||||||
{
|
{
|
||||||
GElf_Dyn dyn_mem;
|
GElf_Dyn dyn_mem;
|
||||||
GElf_Dyn *dyn = gelf_getdyn (d, cnt, &dyn_mem);
|
GElf_Dyn *dyn = gelf_getdyn (d, cnt, &dyn_mem);
|
||||||
@ -1059,7 +1052,7 @@
|
|||||||
|
|
||||||
if (dyn->d_tag == DT_RELCOUNT)
|
if (dyn->d_tag == DT_RELCOUNT)
|
||||||
{
|
{
|
||||||
@@ -1057,7 +1071,9 @@ section [%2d] '%s': DT_RELCOUNT used for
|
@@ -1058,7 +1072,9 @@ section [%2d] '%s': DT_RELCOUNT used for
|
||||||
/* Does the number specified number of relative
|
/* Does the number specified number of relative
|
||||||
relocations exceed the total number of
|
relocations exceed the total number of
|
||||||
relocations? */
|
relocations? */
|
||||||
@ -1070,7 +1063,7 @@
|
|||||||
ERROR (gettext ("\
|
ERROR (gettext ("\
|
||||||
section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
|
section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
|
||||||
idx, section_name (ebl, idx),
|
idx, section_name (ebl, idx),
|
||||||
@@ -1217,7 +1233,8 @@ section [%2d] '%s': no relocations for m
|
@@ -1218,7 +1234,8 @@ section [%2d] '%s': no relocations for m
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1080,7 +1073,7 @@
|
|||||||
ERROR (gettext (reltype == ELF_T_RELA ? "\
|
ERROR (gettext (reltype == ELF_T_RELA ? "\
|
||||||
section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\
|
section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\
|
||||||
section [%2d] '%s': section entry size does not match ElfXX_Rel\n"),
|
section [%2d] '%s': section entry size does not match ElfXX_Rel\n"),
|
||||||
@@ -1440,7 +1457,8 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, G
|
@@ -1441,7 +1458,8 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, G
|
||||||
Elf_Data *symdata = elf_getdata (symscn, NULL);
|
Elf_Data *symdata = elf_getdata (symscn, NULL);
|
||||||
enum load_state state = state_undecided;
|
enum load_state state = state_undecided;
|
||||||
|
|
||||||
@ -1090,7 +1083,7 @@
|
|||||||
{
|
{
|
||||||
GElf_Rela rela_mem;
|
GElf_Rela rela_mem;
|
||||||
GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem);
|
GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem);
|
||||||
@@ -1490,7 +1508,8 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GE
|
@@ -1491,7 +1509,8 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GE
|
||||||
Elf_Data *symdata = elf_getdata (symscn, NULL);
|
Elf_Data *symdata = elf_getdata (symscn, NULL);
|
||||||
enum load_state state = state_undecided;
|
enum load_state state = state_undecided;
|
||||||
|
|
||||||
@ -1100,7 +1093,7 @@
|
|||||||
{
|
{
|
||||||
GElf_Rel rel_mem;
|
GElf_Rel rel_mem;
|
||||||
GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem);
|
GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem);
|
||||||
@@ -1589,7 +1608,8 @@ section [%2d] '%s': referenced as string
|
@@ -1590,7 +1609,8 @@ section [%2d] '%s': referenced as string
|
||||||
shdr->sh_link, section_name (ebl, shdr->sh_link),
|
shdr->sh_link, section_name (ebl, shdr->sh_link),
|
||||||
idx, section_name (ebl, idx));
|
idx, section_name (ebl, idx));
|
||||||
|
|
||||||
@ -1110,7 +1103,7 @@
|
|||||||
ERROR (gettext ("\
|
ERROR (gettext ("\
|
||||||
section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"),
|
section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"),
|
||||||
idx, section_name (ebl, idx));
|
idx, section_name (ebl, idx));
|
||||||
@@ -1599,7 +1619,7 @@ section [%2d] '%s': section entry size d
|
@@ -1600,7 +1620,7 @@ section [%2d] '%s': section entry size d
|
||||||
idx, section_name (ebl, idx));
|
idx, section_name (ebl, idx));
|
||||||
|
|
||||||
bool non_null_warned = false;
|
bool non_null_warned = false;
|
||||||
@ -1119,7 +1112,7 @@
|
|||||||
{
|
{
|
||||||
GElf_Dyn dyn_mem;
|
GElf_Dyn dyn_mem;
|
||||||
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dyn_mem);
|
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dyn_mem);
|
||||||
@@ -1871,6 +1891,8 @@ section [%2d] '%s': entry size does not
|
@@ -1872,6 +1892,8 @@ section [%2d] '%s': entry size does not
|
||||||
idx, section_name (ebl, idx));
|
idx, section_name (ebl, idx));
|
||||||
|
|
||||||
if (symshdr != NULL
|
if (symshdr != NULL
|
||||||
@ -1128,7 +1121,7 @@
|
|||||||
&& (shdr->sh_size / shdr->sh_entsize
|
&& (shdr->sh_size / shdr->sh_entsize
|
||||||
< symshdr->sh_size / symshdr->sh_entsize))
|
< symshdr->sh_size / symshdr->sh_entsize))
|
||||||
ERROR (gettext ("\
|
ERROR (gettext ("\
|
||||||
@@ -1897,6 +1919,12 @@ section [%2d] '%s': extended section ind
|
@@ -1898,6 +1920,12 @@ section [%2d] '%s': extended section ind
|
||||||
}
|
}
|
||||||
|
|
||||||
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
|
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
|
||||||
@ -1141,7 +1134,7 @@
|
|||||||
|
|
||||||
if (*((Elf32_Word *) data->d_buf) != 0)
|
if (*((Elf32_Word *) data->d_buf) != 0)
|
||||||
ERROR (gettext ("symbol 0 should have zero extended section index\n"));
|
ERROR (gettext ("symbol 0 should have zero extended section index\n"));
|
||||||
@@ -1939,7 +1967,7 @@ section [%2d] '%s': hash table section i
|
@@ -1940,7 +1968,7 @@ section [%2d] '%s': hash table section i
|
||||||
|
|
||||||
size_t maxidx = nchain;
|
size_t maxidx = nchain;
|
||||||
|
|
||||||
@ -1150,7 +1143,7 @@
|
|||||||
{
|
{
|
||||||
size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
|
size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
|
||||||
|
|
||||||
@@ -1950,18 +1978,28 @@ section [%2d] '%s': hash table section i
|
@@ -1951,18 +1979,28 @@ section [%2d] '%s': hash table section i
|
||||||
maxidx = symsize;
|
maxidx = symsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1181,7 +1174,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1991,18 +2029,28 @@ section [%2d] '%s': hash table section i
|
@@ -1992,18 +2030,28 @@ section [%2d] '%s': hash table section i
|
||||||
maxidx = symsize;
|
maxidx = symsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1213,7 +1206,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2027,7 +2075,7 @@ section [%2d] '%s': bitmask size not pow
|
@@ -2028,7 +2076,7 @@ section [%2d] '%s': bitmask size not pow
|
||||||
if (shdr->sh_size < (4 + bitmask_words + nbuckets) * sizeof (Elf32_Word))
|
if (shdr->sh_size < (4 + bitmask_words + nbuckets) * sizeof (Elf32_Word))
|
||||||
{
|
{
|
||||||
ERROR (gettext ("\
|
ERROR (gettext ("\
|
||||||
@ -1222,7 +1215,7 @@
|
|||||||
idx, section_name (ebl, idx), (long int) shdr->sh_size,
|
idx, section_name (ebl, idx), (long int) shdr->sh_size,
|
||||||
(long int) ((4 + bitmask_words + nbuckets) * sizeof (Elf32_Word)));
|
(long int) ((4 + bitmask_words + nbuckets) * sizeof (Elf32_Word)));
|
||||||
return;
|
return;
|
||||||
@@ -2699,8 +2747,9 @@ section [%2d] '%s' refers in sh_link to
|
@@ -2700,8 +2748,9 @@ section [%2d] '%s' refers in sh_link to
|
||||||
|
|
||||||
/* The number of elements in the version symbol table must be the
|
/* The number of elements in the version symbol table must be the
|
||||||
same as the number of symbols. */
|
same as the number of symbols. */
|
||||||
@ -1236,7 +1229,7 @@
|
|||||||
idx, section_name (ebl, idx),
|
idx, section_name (ebl, idx),
|
||||||
--- elfutils/src/readelf.c
|
--- elfutils/src/readelf.c
|
||||||
+++ elfutils/src/readelf.c
|
+++ elfutils/src/readelf.c
|
||||||
@@ -1183,6 +1183,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
@@ -1189,6 +1189,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
||||||
Elf32_Word *grpref = (Elf32_Word *) data->d_buf;
|
Elf32_Word *grpref = (Elf32_Word *) data->d_buf;
|
||||||
|
|
||||||
GElf_Sym sym_mem;
|
GElf_Sym sym_mem;
|
||||||
@ -1245,7 +1238,7 @@
|
|||||||
printf ((grpref[0] & GRP_COMDAT)
|
printf ((grpref[0] & GRP_COMDAT)
|
||||||
? ngettext ("\
|
? ngettext ("\
|
||||||
\nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n",
|
\nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n",
|
||||||
@@ -1195,8 +1197,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
@@ -1201,8 +1203,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
||||||
data->d_size / sizeof (Elf32_Word) - 1),
|
data->d_size / sizeof (Elf32_Word) - 1),
|
||||||
elf_ndxscn (scn),
|
elf_ndxscn (scn),
|
||||||
elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
|
elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
|
||||||
@ -1256,7 +1249,7 @@
|
|||||||
?: gettext ("<INVALID SYMBOL>"),
|
?: gettext ("<INVALID SYMBOL>"),
|
||||||
data->d_size / sizeof (Elf32_Word) - 1);
|
data->d_size / sizeof (Elf32_Word) - 1);
|
||||||
|
|
||||||
@@ -1347,10 +1349,12 @@ static void
|
@@ -1353,10 +1355,12 @@ static void
|
||||||
handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
|
handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
|
||||||
{
|
{
|
||||||
int class = gelf_getclass (ebl->elf);
|
int class = gelf_getclass (ebl->elf);
|
||||||
@ -1270,7 +1263,7 @@
|
|||||||
|
|
||||||
/* Get the data of the section. */
|
/* Get the data of the section. */
|
||||||
data = elf_getdata (scn, NULL);
|
data = elf_getdata (scn, NULL);
|
||||||
@@ -1362,21 +1366,26 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn,
|
@@ -1368,21 +1372,26 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn,
|
||||||
error (EXIT_FAILURE, 0,
|
error (EXIT_FAILURE, 0,
|
||||||
gettext ("cannot get section header string table index"));
|
gettext ("cannot get section header string table index"));
|
||||||
|
|
||||||
@ -1303,7 +1296,7 @@
|
|||||||
{
|
{
|
||||||
GElf_Dyn dynmem;
|
GElf_Dyn dynmem;
|
||||||
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dynmem);
|
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dynmem);
|
||||||
@@ -1525,7 +1534,8 @@ static void
|
@@ -1531,7 +1540,8 @@ static void
|
||||||
handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
|
handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
|
||||||
{
|
{
|
||||||
int class = gelf_getclass (ebl->elf);
|
int class = gelf_getclass (ebl->elf);
|
||||||
@ -1313,7 +1306,7 @@
|
|||||||
|
|
||||||
/* Get the data of the section. */
|
/* Get the data of the section. */
|
||||||
Elf_Data *data = elf_getdata (scn, NULL);
|
Elf_Data *data = elf_getdata (scn, NULL);
|
||||||
@@ -1711,7 +1721,8 @@ static void
|
@@ -1717,7 +1727,8 @@ static void
|
||||||
handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
|
handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
|
||||||
{
|
{
|
||||||
int class = gelf_getclass (ebl->elf);
|
int class = gelf_getclass (ebl->elf);
|
||||||
@ -1323,7 +1316,7 @@
|
|||||||
|
|
||||||
/* Get the data of the section. */
|
/* Get the data of the section. */
|
||||||
Elf_Data *data = elf_getdata (scn, NULL);
|
Elf_Data *data = elf_getdata (scn, NULL);
|
||||||
@@ -1958,6 +1969,13 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
@@ -1964,6 +1975,13 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
||||||
error (EXIT_FAILURE, 0,
|
error (EXIT_FAILURE, 0,
|
||||||
gettext ("cannot get section header string table index"));
|
gettext ("cannot get section header string table index"));
|
||||||
|
|
||||||
@ -1337,7 +1330,7 @@
|
|||||||
/* Now we can compute the number of entries in the section. */
|
/* Now we can compute the number of entries in the section. */
|
||||||
unsigned int nsyms = data->d_size / (class == ELFCLASS32
|
unsigned int nsyms = data->d_size / (class == ELFCLASS32
|
||||||
? sizeof (Elf32_Sym)
|
? sizeof (Elf32_Sym)
|
||||||
@@ -1968,15 +1986,12 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
@@ -1974,15 +1992,12 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
||||||
nsyms),
|
nsyms),
|
||||||
(unsigned int) elf_ndxscn (scn),
|
(unsigned int) elf_ndxscn (scn),
|
||||||
elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms);
|
elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms);
|
||||||
@ -1354,7 +1347,7 @@
|
|||||||
|
|
||||||
fputs_unlocked (class == ELFCLASS32
|
fputs_unlocked (class == ELFCLASS32
|
||||||
? gettext ("\
|
? gettext ("\
|
||||||
@@ -2212,7 +2227,13 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
@@ -2218,7 +2233,13 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
||||||
error (EXIT_FAILURE, 0,
|
error (EXIT_FAILURE, 0,
|
||||||
gettext ("cannot get section header string table index"));
|
gettext ("cannot get section header string table index"));
|
||||||
|
|
||||||
@ -1369,7 +1362,7 @@
|
|||||||
printf (ngettext ("\
|
printf (ngettext ("\
|
||||||
\nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
\nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
||||||
"\
|
"\
|
||||||
@@ -2223,9 +2244,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
@@ -2229,9 +2250,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
||||||
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
|
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
|
||||||
shdr->sh_offset,
|
shdr->sh_offset,
|
||||||
(unsigned int) shdr->sh_link,
|
(unsigned int) shdr->sh_link,
|
||||||
@ -1380,7 +1373,7 @@
|
|||||||
|
|
||||||
unsigned int offset = 0;
|
unsigned int offset = 0;
|
||||||
for (int cnt = shdr->sh_info; --cnt >= 0; )
|
for (int cnt = shdr->sh_info; --cnt >= 0; )
|
||||||
@@ -2278,8 +2297,14 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
@@ -2284,8 +2303,14 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
||||||
error (EXIT_FAILURE, 0,
|
error (EXIT_FAILURE, 0,
|
||||||
gettext ("cannot get section header string table index"));
|
gettext ("cannot get section header string table index"));
|
||||||
|
|
||||||
@ -1396,7 +1389,7 @@
|
|||||||
printf (ngettext ("\
|
printf (ngettext ("\
|
||||||
\nVersion definition section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
\nVersion definition section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
||||||
"\
|
"\
|
||||||
@@ -2291,9 +2316,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
@@ -2297,9 +2322,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
||||||
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
|
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
|
||||||
shdr->sh_offset,
|
shdr->sh_offset,
|
||||||
(unsigned int) shdr->sh_link,
|
(unsigned int) shdr->sh_link,
|
||||||
@ -1407,7 +1400,7 @@
|
|||||||
|
|
||||||
unsigned int offset = 0;
|
unsigned int offset = 0;
|
||||||
for (int cnt = shdr->sh_info; --cnt >= 0; )
|
for (int cnt = shdr->sh_info; --cnt >= 0; )
|
||||||
@@ -2555,25 +2578,30 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G
|
@@ -2561,25 +2584,30 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G
|
||||||
filename = NULL;
|
filename = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1445,7 +1438,7 @@
|
|||||||
{
|
{
|
||||||
if (cnt % 2 == 0)
|
if (cnt % 2 == 0)
|
||||||
printf ("\n %4d:", cnt);
|
printf ("\n %4d:", cnt);
|
||||||
@@ -2622,7 +2650,17 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
@@ -2628,7 +2656,17 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
||||||
for (Elf32_Word cnt = 0; cnt < nbucket; ++cnt)
|
for (Elf32_Word cnt = 0; cnt < nbucket; ++cnt)
|
||||||
++counts[lengths[cnt]];
|
++counts[lengths[cnt]];
|
||||||
|
|
||||||
@ -1464,7 +1457,7 @@
|
|||||||
printf (ngettext ("\
|
printf (ngettext ("\
|
||||||
\nHistogram for bucket list length in section [%2u] '%s' (total of %d bucket):\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
\nHistogram for bucket list length in section [%2u] '%s' (total of %d bucket):\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
||||||
"\
|
"\
|
||||||
@@ -2635,9 +2673,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
@@ -2641,9 +2679,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
||||||
shdr->sh_addr,
|
shdr->sh_addr,
|
||||||
shdr->sh_offset,
|
shdr->sh_offset,
|
||||||
(unsigned int) shdr->sh_link,
|
(unsigned int) shdr->sh_link,
|
||||||
@ -1475,7 +1468,7 @@
|
|||||||
|
|
||||||
if (extrastr != NULL)
|
if (extrastr != NULL)
|
||||||
fputs (extrastr, stdout);
|
fputs (extrastr, stdout);
|
||||||
@@ -2897,7 +2933,8 @@ print_liblist (Ebl *ebl)
|
@@ -2903,7 +2939,8 @@ print_liblist (Ebl *ebl)
|
||||||
|
|
||||||
if (shdr != NULL && shdr->sh_type == SHT_GNU_LIBLIST)
|
if (shdr != NULL && shdr->sh_type == SHT_GNU_LIBLIST)
|
||||||
{
|
{
|
||||||
@ -1485,7 +1478,7 @@
|
|||||||
printf (ngettext ("\
|
printf (ngettext ("\
|
||||||
\nLibrary list section [%2zu] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
|
\nLibrary list section [%2zu] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
|
||||||
"\
|
"\
|
||||||
@@ -4644,6 +4681,16 @@ print_debug_aranges_section (Dwfl_Module
|
@@ -4164,6 +4201,16 @@ print_debug_aranges_section (Dwfl_Module
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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.154
|
Version: 0.155
|
||||||
%global baserelease 4
|
%global baserelease 1
|
||||||
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+)
|
||||||
@ -45,10 +45,7 @@ Group: Development/Tools
|
|||||||
Source: %{?source_url}%{name}-%{version}.tar.bz2
|
Source: %{?source_url}%{name}-%{version}.tar.bz2
|
||||||
Patch1: %{?source_url}elfutils-robustify.patch
|
Patch1: %{?source_url}elfutils-robustify.patch
|
||||||
Patch2: %{?source_url}elfutils-portability.patch
|
Patch2: %{?source_url}elfutils-portability.patch
|
||||||
Patch3: elfutils-0.154-binutils-pr-ld-13621.patch
|
Patch3: elfutils-0.155-binutils-pr-ld-13621.patch
|
||||||
Patch4: elfutils-0.154-xlatetom-835877.patch
|
|
||||||
Patch5: elfutils-0.154-dwz.patch
|
|
||||||
Patch6: elfutils-0.154-sym64.patch
|
|
||||||
|
|
||||||
%if !%{compat}
|
%if !%{compat}
|
||||||
Release: %{baserelease}%{?dist}
|
Release: %{baserelease}%{?dist}
|
||||||
@ -214,9 +211,6 @@ sed -i.scanf-m -e 's/%m/%a/g' src/addr2line.c tests/line2addr.c
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%patch3 -p1 -b .binutils-pr-ld-13621
|
%patch3 -p1 -b .binutils-pr-ld-13621
|
||||||
%patch4 -p1 -b .xlatetom-835877
|
|
||||||
%patch5 -p1 -b .dwz
|
|
||||||
%patch6 -p1 -b .sym64
|
|
||||||
|
|
||||||
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
|
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
|
||||||
|
|
||||||
@ -235,7 +229,7 @@ COMPAT_CONFIG_FLAGS="--disable-werror"
|
|||||||
COMPAT_CONFIG_FLAGS=""
|
COMPAT_CONFIG_FLAGS=""
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%configure $COMPAT_CONFIG_FLAGS CFLAGS="$RPM_OPT_FLAGS -fexceptions" || {
|
%configure --enable-dwz $COMPAT_CONFIG_FLAGS CFLAGS="$RPM_OPT_FLAGS -fexceptions" || {
|
||||||
cat config.log
|
cat config.log
|
||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
@ -333,6 +327,12 @@ rm -rf ${RPM_BUILD_ROOT}
|
|||||||
%{_libdir}/libelf.a
|
%{_libdir}/libelf.a
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 27 2012 Mark Wielaard <mjw@redhat.com> - 0.155-1
|
||||||
|
- Update to 0.155.
|
||||||
|
- #844270 - eu-nm invalid %N$ use detected.
|
||||||
|
- #847454 - Ukrainian translation update.
|
||||||
|
- Removed local ar 64-bit symbol patch, dwz support patch and xlatetom fix.
|
||||||
|
|
||||||
* Tue Aug 14 2012 Petr Machata <pmachata@redhat.com> - 0.154-4
|
* Tue Aug 14 2012 Petr Machata <pmachata@redhat.com> - 0.154-4
|
||||||
- Add support for archives with 64-bit symbol tables (#843019)
|
- Add support for archives with 64-bit symbol tables (#843019)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user