diff --git a/elfutils-0.141-no-osl.tar.bz2 b/elfutils-0.141-no-osl.tar.bz2 deleted file mode 100644 index 3ee0dd0..0000000 --- a/elfutils-0.141-no-osl.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6af65695ba0aa7e78a0ffa4ccd65b5c9149c7b5f2688a3623e33afce04fa44fd -size 1485275 diff --git a/elfutils-0.142-no-osl.tar.bz2 b/elfutils-0.142-no-osl.tar.bz2 new file mode 100644 index 0000000..dd91fdd --- /dev/null +++ b/elfutils-0.142-no-osl.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:114accfbfb80a136b076554c586d75a153e54e187f81715740b0d8570b0fb74d +size 1512351 diff --git a/elfutils-portability.patch b/elfutils-portability.patch index cb838d2..71a1bf0 100644 --- a/elfutils-portability.patch +++ b/elfutils-portability.patch @@ -1,6 +1,53 @@ ---- elfutils/backends/ChangeLog -+++ elfutils/backends/ChangeLog -@@ -33,6 +33,10 @@ +--- + ChangeLog | 17 +++++++++++++++++ + Makefile.in | 2 ++ + backends/ChangeLog | 12 ++++++++++++ + backends/Makefile.am | 6 ++++-- + backends/Makefile.in | 8 +++++--- + config.h.in | 6 ++++++ + config/Makefile.in | 2 ++ + configure.ac | 38 +++++++++++++++++++++++++++++++++++++- + lib/ChangeLog | 8 ++++++++ + lib/Makefile.am | 3 ++- + lib/Makefile.in | 6 ++++-- + lib/eu-config.h | 11 +++++++++++ + libasm/ChangeLog | 5 +++++ + libasm/Makefile.am | 3 ++- + libasm/Makefile.in | 6 ++++-- + libcpu/ChangeLog | 8 ++++++++ + libcpu/Makefile.am | 3 ++- + libcpu/Makefile.in | 11 +++++++---- + libcpu/i386_disasm.c | 1 + + libdw/ChangeLog | 5 +++++ + libdw/Makefile.am | 3 ++- + libdw/Makefile.in | 7 +++++-- + libdwfl/ChangeLog | 5 +++++ + libdwfl/Makefile.am | 3 ++- + libdwfl/Makefile.in | 6 ++++-- + libebl/ChangeLog | 5 +++++ + libebl/Makefile.am | 3 ++- + libebl/Makefile.in | 6 ++++-- + libelf/ChangeLog | 5 +++++ + libelf/Makefile.am | 3 ++- + libelf/Makefile.in | 6 ++++-- + libelf/common.h | 4 ++-- + m4/Makefile.in | 2 ++ + src/ChangeLog | 20 ++++++++++++++++++++ + src/Makefile.am | 6 +++++- + src/Makefile.in | 9 +++++++-- + src/findtextrel.c | 6 +++++- + src/readelf.c | 2 +- + src/strings.c | 9 +++++++++ + src/strip.c | 20 ++++++++++++++++++-- + tests/ChangeLog | 7 +++++++ + tests/Makefile.am | 5 +++-- + tests/Makefile.in | 6 ++++-- + tests/line2addr.c | 2 +- + 44 files changed, 268 insertions(+), 43 deletions(-) + +--- a/backends/ChangeLog ++++ b/backends/ChangeLog +@@ -48,6 +48,10 @@ * ppc_attrs.c (ppc_check_object_attribute): Handle tag GNU_Power_ABI_Struct_Return. @@ -11,7 +58,7 @@ 2008-10-04 Ulrich Drepper * i386_reloc.def: Fix entries for TLS_GOTDESC, TLS_DESC_CALL, and -@@ -360,6 +364,11 @@ +@@ -375,6 +379,11 @@ * sparc_init.c: Likewise. * x86_64_init.c: Likewise. @@ -23,7 +70,7 @@ 2005-11-19 Roland McGrath * ppc64_reloc.def: REL30 -> ADDR30. -@@ -382,6 +391,9 @@ +@@ -397,6 +406,9 @@ * Makefile.am (uninstall): Don't try to remove $(pkgincludedir). (CLEANFILES): Add libebl_$(m).so. @@ -33,8 +80,8 @@ * ppc_reloc.def: Update bits per Alan Modra . * ppc64_reloc.def: Likewise. ---- elfutils/backends/Makefile.am -+++ elfutils/backends/Makefile.am +--- a/backends/Makefile.am ++++ b/backends/Makefile.am @@ -25,12 +25,14 @@ ## . ## @@ -51,15 +98,7 @@ -std=gnu99 INCLUDES = -I$(srcdir) -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw \ -@@ -59,7 +61,6 @@ endif - - textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi - -- - i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c \ - i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c - cpu_i386 = ../libcpu/libcpu_i386.a -@@ -115,7 +116,7 @@ libebl_%.so: libebl_%_pic.a libebl_%.map +@@ -115,7 +117,7 @@ $(LINK) -shared -o $@ -Wl,--whole-archive,$<\ $(cpu_$(@:libebl_%.so=%)) -Wl,--no-whole-archive \ -Wl,--version-script,$(word 2,$^) \ @@ -68,8 +107,47 @@ $(textrel_check) # XXX Should not be needed... ---- elfutils/ChangeLog -+++ elfutils/ChangeLog +--- a/backends/Makefile.in ++++ b/backends/Makefile.in +@@ -159,6 +159,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -188,6 +189,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -245,9 +247,9 @@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ + @MUDFLAP_FALSE@AM_CFLAGS = -fpic -Wall -Wshadow -Werror -Wunused \ +-@MUDFLAP_FALSE@ -Wextra -Wformat=2 -std=gnu99 ++@MUDFLAP_FALSE@ $(WEXTRA) -Wformat=2 -std=gnu99 + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap -fpic -Wall -Wshadow -Werror \ +-@MUDFLAP_TRUE@ -Wunused -Wextra -Wformat=2 -std=gnu99 ++@MUDFLAP_TRUE@ -Wunused $(WEXTRA) -Wformat=2 -std=gnu99 + INCLUDES = -I$(srcdir) -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ + -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw \ + -I$(top_srcdir)/lib -I.. +@@ -652,7 +654,7 @@ + $(LINK) -shared -o $@ -Wl,--whole-archive,$<\ + $(cpu_$(@:libebl_%.so=%)) -Wl,--no-whole-archive \ + -Wl,--version-script,$(word 2,$^) \ +- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) $(libmudflap) ++ -Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw) $(libmudflap) + $(textrel_check) + + # XXX Should not be needed... +--- a/ChangeLog ++++ b/ChangeLog @@ -9,6 +9,8 @@ 2009-01-23 Roland McGrath @@ -108,8 +186,26 @@ 2005-05-19 Roland McGrath * configure.ac [AH_BOTTOM] (INTDECL, _INTDECL): New macros. ---- elfutils/config.h.in -+++ elfutils/config.h.in +--- a/config/Makefile.in ++++ b/config/Makefile.in +@@ -73,6 +73,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -102,6 +103,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +--- a/config.h.in ++++ b/config.h.in @@ -1,5 +1,8 @@ /* config.h.in. Generated from configure.ac by autoheader. */ @@ -127,9 +223,9 @@ +#undef __thread + #include ---- elfutils/configure.ac -+++ elfutils/configure.ac -@@ -74,6 +74,39 @@ CFLAGS="$old_CFLAGS"]) +--- a/configure.ac ++++ b/configure.ac +@@ -74,6 +74,39 @@ AS_IF([test "x$ac_cv_c99" != xyes], AC_MSG_ERROR([gcc with C99 support required])) @@ -169,7 +265,7 @@ 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. # Some old compiler/linker/libc combinations fail some ways and not others. -@@ -89,7 +122,10 @@ static __thread int a; int foo (int b) { +@@ -89,7 +122,10 @@ CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS"]) AS_IF([test "x$ac_cv_tls" != xyes], @@ -181,8 +277,8 @@ LOCALEDIR=$datadir AC_SUBST(LOCALEDIR) ---- elfutils/lib/ChangeLog -+++ elfutils/lib/ChangeLog +--- a/lib/ChangeLog ++++ b/lib/ChangeLog @@ -1,5 +1,8 @@ 2009-01-23 Roland McGrath @@ -204,9 +300,9 @@ 2005-04-30 Ulrich Drepper * Makefile.am: Use -ffunction-sections for xmalloc.c. ---- elfutils/lib/eu-config.h -+++ elfutils/lib/eu-config.h -@@ -182,5 +182,16 @@ asm (".section predict_data, \"aw\"; .pr +--- a/lib/eu-config.h ++++ b/lib/eu-config.h +@@ -182,5 +182,16 @@ /* This macro is used by the tests conditionalize for standalone building. */ #define ELFUTILS_HEADER(name) @@ -223,8 +319,8 @@ + #endif /* eu-config.h */ ---- elfutils/lib/Makefile.am -+++ elfutils/lib/Makefile.am +--- a/lib/Makefile.am ++++ b/lib/Makefile.am @@ -25,12 +25,13 @@ ## . ## @@ -240,8 +336,38 @@ INCLUDES = -I$(srcdir)/../libelf -I.. noinst_LIBRARIES = libeu.a ---- elfutils/libasm/ChangeLog -+++ elfutils/libasm/ChangeLog +--- a/lib/Makefile.in ++++ b/lib/Makefile.in +@@ -94,6 +94,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -123,6 +124,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -180,9 +182,9 @@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ + @MUDFLAP_FALSE@AM_CFLAGS = -fpic -Wall -Wshadow -Werror -Wunused \ +-@MUDFLAP_FALSE@ -Wextra $($(*F)_CFLAGS) ++@MUDFLAP_FALSE@ $(WEXTRA) $($(*F)_CFLAGS) + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap -fpic -Wall -Wshadow -Werror \ +-@MUDFLAP_TRUE@ -Wunused -Wextra $($(*F)_CFLAGS) ++@MUDFLAP_TRUE@ -Wunused $(WEXTRA) $($(*F)_CFLAGS) + INCLUDES = -I$(srcdir)/../libelf -I.. + noinst_LIBRARIES = libeu.a + libeu_a_SOURCES = xstrndup.c xmalloc.c next_prime.c \ +--- a/libasm/ChangeLog ++++ b/libasm/ChangeLog @@ -63,6 +63,11 @@ * asm_error.c: Add new error ASM_E_IOERROR. * libasmP.h: Add ASM_E_IOERROR definition. @@ -254,8 +380,8 @@ 2005-02-15 Ulrich Drepper * Makefile.am (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2. ---- elfutils/libasm/Makefile.am -+++ elfutils/libasm/Makefile.am +--- a/libasm/Makefile.am ++++ b/libasm/Makefile.am @@ -25,12 +25,13 @@ ## . ## @@ -271,8 +397,38 @@ INCLUDES = -I. -I$(srcdir) -I.. \ -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl -I$(top_srcdir)/libdw\ -I$(top_srcdir)/lib ---- elfutils/libcpu/ChangeLog -+++ elfutils/libcpu/ChangeLog +--- a/libasm/Makefile.in ++++ b/libasm/Makefile.in +@@ -128,6 +128,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -157,6 +158,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = 1 ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -214,9 +216,9 @@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ + @MUDFLAP_FALSE@AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Werror -Wunused \ +-@MUDFLAP_FALSE@ -Wextra -Wformat=2 ++@MUDFLAP_FALSE@ $(WEXTRA) -Wformat=2 + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap -std=gnu99 -Wall -Wshadow -Werror \ +-@MUDFLAP_TRUE@ -Wunused -Wextra -Wformat=2 ++@MUDFLAP_TRUE@ -Wunused $(WEXTRA) -Wformat=2 + INCLUDES = -I. -I$(srcdir) -I.. \ + -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl -I$(top_srcdir)/libdw\ + -I$(top_srcdir)/lib +--- a/libcpu/ChangeLog ++++ b/libcpu/ChangeLog @@ -5,6 +5,9 @@ 2009-01-23 Roland McGrath @@ -295,9 +451,9 @@ 2005-02-15 Ulrich Drepper * Makefile (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2. ---- elfutils/libcpu/i386_disasm.c -+++ elfutils/libcpu/i386_disasm.c -@@ -791,6 +791,7 @@ i386_disasm (const uint8_t **startp, con +--- a/libcpu/i386_disasm.c ++++ b/libcpu/i386_disasm.c +@@ -791,6 +791,7 @@ default: assert (! "INVALID not handled"); @@ -305,9 +461,9 @@ } } else ---- elfutils/libcpu/Makefile.am -+++ elfutils/libcpu/Makefile.am -@@ -30,7 +30,8 @@ AM_CFLAGS = -fmudflap +--- a/libcpu/Makefile.am ++++ b/libcpu/Makefile.am +@@ -30,7 +30,8 @@ else AM_CFLAGS = endif @@ -317,9 +473,43 @@ -fdollars-in-identifiers \ $($(*F)_CFLAGS) \ $(if $($(*F)_no_Werror),,-Werror) ---- elfutils/libdw/ChangeLog -+++ elfutils/libdw/ChangeLog -@@ -571,6 +571,11 @@ +--- a/libcpu/Makefile.in ++++ b/libcpu/Makefile.in +@@ -110,6 +110,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = lex.$( @@ -331,8 +521,8 @@ * dwarf_formref_die.c (dwarf_formref_die): Add CU header offset to formref offset. ---- elfutils/libdw/Makefile.am -+++ elfutils/libdw/Makefile.am +--- a/libdw/Makefile.am ++++ b/libdw/Makefile.am @@ -25,6 +25,7 @@ ## . ## @@ -341,7 +531,7 @@ if MUDFLAP AM_CFLAGS = -fmudflap else -@@ -33,7 +34,7 @@ endif +@@ -33,7 +34,7 @@ if BUILD_STATIC AM_CFLAGS += -fpic endif @@ -350,9 +540,40 @@ INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib VERSION = 1 ---- elfutils/libdwfl/ChangeLog -+++ elfutils/libdwfl/ChangeLog -@@ -1076,6 +1076,11 @@ +--- a/libdw/Makefile.in ++++ b/libdw/Makefile.in +@@ -170,6 +170,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -199,6 +200,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = 1 ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -256,9 +258,10 @@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ + @MUDFLAP_FALSE@AM_CFLAGS = $(am__append_1) -Wall -Werror -Wshadow \ +-@MUDFLAP_FALSE@ -Wunused -Wformat=2 -Wextra -std=gnu99 ++@MUDFLAP_FALSE@ -Wunused -Wformat=2 $(WEXTRA) -std=gnu99 + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap $(am__append_1) -Wall -Werror \ +-@MUDFLAP_TRUE@ -Wshadow -Wunused -Wformat=2 -Wextra -std=gnu99 ++@MUDFLAP_TRUE@ -Wshadow -Wunused -Wformat=2 $(WEXTRA) \ ++@MUDFLAP_TRUE@ -std=gnu99 + INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib + COMPILE.os = $(filter-out -fprofile-arcs, $(filter-out -ftest-coverage, \ + $(COMPILE))) +--- a/libdwfl/ChangeLog ++++ b/libdwfl/ChangeLog +@@ -1098,6 +1098,11 @@ 2005-07-21 Roland McGrath @@ -364,8 +585,8 @@ * Makefile.am (noinst_HEADERS): Add loc2c.c. * test2.c (main): Check sscanf result to quiet warning. ---- elfutils/libdwfl/Makefile.am -+++ elfutils/libdwfl/Makefile.am +--- a/libdwfl/Makefile.am ++++ b/libdwfl/Makefile.am @@ -27,12 +27,13 @@ ## . ## @@ -381,9 +602,39 @@ INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ -I$(srcdir)/../libdw -I.. -I$(srcdir)/../lib VERSION = 1 ---- elfutils/libebl/ChangeLog -+++ elfutils/libebl/ChangeLog -@@ -569,6 +569,11 @@ +--- a/libdwfl/Makefile.in ++++ b/libdwfl/Makefile.in +@@ -158,6 +158,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -187,6 +188,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = 1 ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -244,9 +246,9 @@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ + @MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -Wshadow -Wunused -Wformat=2 \ +-@MUDFLAP_FALSE@ -Wextra -std=gnu99 ++@MUDFLAP_FALSE@ $(WEXTRA) -std=gnu99 + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap -Wall -Werror -Wshadow -Wunused \ +-@MUDFLAP_TRUE@ -Wformat=2 -Wextra -std=gnu99 ++@MUDFLAP_TRUE@ -Wformat=2 $(WEXTRA) -std=gnu99 + INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ + -I$(srcdir)/../libdw -I.. -I$(srcdir)/../lib + +--- a/libebl/ChangeLog ++++ b/libebl/ChangeLog +@@ -593,6 +593,11 @@ * Makefile.am (libebl_*_so_SOURCES): Set to $(*_SRCS) so dependency tracking works right. @@ -395,8 +646,8 @@ 2005-05-21 Ulrich Drepper * libebl_x86_64.map: Add x86_64_core_note. ---- elfutils/libebl/Makefile.am -+++ elfutils/libebl/Makefile.am +--- a/libebl/Makefile.am ++++ b/libebl/Makefile.am @@ -25,12 +25,13 @@ ## . ## @@ -412,9 +663,39 @@ -std=gnu99 INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw \ ---- elfutils/libelf/ChangeLog -+++ elfutils/libelf/ChangeLog -@@ -537,6 +537,11 @@ +--- a/libebl/Makefile.in ++++ b/libebl/Makefile.in +@@ -124,6 +124,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -153,6 +154,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = 1 ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -210,9 +212,9 @@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ + @MUDFLAP_FALSE@AM_CFLAGS = -fpic -Wall -Wshadow -Werror -Wunused \ +-@MUDFLAP_FALSE@ -Wextra -Wformat=2 -std=gnu99 ++@MUDFLAP_FALSE@ $(WEXTRA) -Wformat=2 -std=gnu99 + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap -fpic -Wall -Wshadow -Werror \ +-@MUDFLAP_TRUE@ -Wunused -Wextra -Wformat=2 -std=gnu99 ++@MUDFLAP_TRUE@ -Wunused $(WEXTRA) -Wformat=2 -std=gnu99 + INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw \ + -I$(top_srcdir)/lib -I.. -I$(srcdir)/../libasm + +--- a/libelf/ChangeLog ++++ b/libelf/ChangeLog +@@ -576,6 +576,11 @@ * elf.h: Update from glibc. @@ -426,9 +707,9 @@ 2005-05-08 Roland McGrath * elf_begin.c (read_file) [_MUDFLAP]: Don't use mmap for now. ---- elfutils/libelf/common.h -+++ elfutils/libelf/common.h -@@ -160,7 +160,7 @@ libelf_release_all (Elf *elf) +--- a/libelf/common.h ++++ b/libelf/common.h +@@ -160,7 +160,7 @@ (Var) = (sizeof (Var) == 1 \ ? (unsigned char) (Var) \ : (sizeof (Var) == 2 \ @@ -437,7 +718,7 @@ : (sizeof (Var) == 4 \ ? bswap_32 (Var) \ : bswap_64 (Var)))) -@@ -169,7 +169,7 @@ libelf_release_all (Elf *elf) +@@ -169,7 +169,7 @@ (Dst) = (sizeof (Var) == 1 \ ? (unsigned char) (Var) \ : (sizeof (Var) == 2 \ @@ -446,8 +727,8 @@ : (sizeof (Var) == 4 \ ? bswap_32 (Var) \ : bswap_64 (Var)))) ---- elfutils/libelf/Makefile.am -+++ elfutils/libelf/Makefile.am +--- a/libelf/Makefile.am ++++ b/libelf/Makefile.am @@ -25,6 +25,7 @@ ## . ## @@ -456,7 +737,7 @@ if MUDFLAP AM_CFLAGS = -fmudflap else -@@ -33,7 +34,7 @@ endif +@@ -33,7 +34,7 @@ if BUILD_STATIC AM_CFLAGS += -fpic endif @@ -465,18 +746,76 @@ $($(*F)_CFLAGS) INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I.. GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) ---- elfutils/src/ChangeLog -+++ elfutils/src/ChangeLog -@@ -91,6 +91,8 @@ - * readelf.c (print_debug_frame_section): Use t instead of j formats - for ptrdiff_t OFFSET. - -+ * addr2line.c (handle_address): Use %a instead of %m for compatibility. -+ - 2009-01-21 Ulrich Drepper - - * elflint.c (check_program_header): Fix typo in .eh_frame_hdr section -@@ -274,6 +276,11 @@ +--- a/libelf/Makefile.in ++++ b/libelf/Makefile.in +@@ -172,6 +172,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -201,6 +202,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = 1 ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -258,10 +260,10 @@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ + @MUDFLAP_FALSE@AM_CFLAGS = $(am__append_1) -Wall -Wshadow -Werror \ +-@MUDFLAP_FALSE@ -Wunused -Wextra -Wformat=2 -std=gnu99 \ ++@MUDFLAP_FALSE@ -Wunused $(WEXTRA) -Wformat=2 -std=gnu99 \ + @MUDFLAP_FALSE@ $($(*F)_CFLAGS) + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap $(am__append_1) -Wall -Wshadow \ +-@MUDFLAP_TRUE@ -Werror -Wunused -Wextra -Wformat=2 -std=gnu99 \ ++@MUDFLAP_TRUE@ -Werror -Wunused $(WEXTRA) -Wformat=2 -std=gnu99 \ + @MUDFLAP_TRUE@ $($(*F)_CFLAGS) + INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I.. + GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) +--- a/m4/Makefile.in ++++ b/m4/Makefile.in +@@ -72,6 +72,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -101,6 +102,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +--- a/Makefile.in ++++ b/Makefile.in +@@ -110,6 +110,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -139,6 +140,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +--- a/src/ChangeLog ++++ b/src/ChangeLog +@@ -338,6 +338,11 @@ that matches its PT_LOAD's p_flags &~ PF_W. On sparc, PF_X really is valid in RELRO. @@ -488,7 +827,7 @@ 2008-02-29 Roland McGrath * readelf.c (print_attributes): Add a cast. -@@ -525,6 +532,8 @@ +@@ -589,6 +594,8 @@ * readelf.c (hex_dump): Fix rounding error in whitespace calculation. @@ -497,7 +836,7 @@ 2007-10-15 Roland McGrath * make-debug-archive.in: New file. -@@ -964,6 +973,10 @@ +@@ -1028,6 +1035,10 @@ * elflint.c (valid_e_machine): Add EM_ALPHA. Reported by Christian Aichinger . @@ -508,7 +847,7 @@ 2006-08-08 Ulrich Drepper * elflint.c (check_dynamic): Don't require DT_HASH for DT_SYMTAB. -@@ -1040,6 +1053,10 @@ +@@ -1104,6 +1115,10 @@ * Makefile.am: Add hacks to create dependency files for non-generic linker. @@ -519,7 +858,7 @@ 2006-06-12 Ulrich Drepper * ldgeneric.c (ld_generic_generate_sections): Don't create .interp -@@ -1388,6 +1405,11 @@ +@@ -1452,6 +1467,11 @@ * readelf.c (print_debug_loc_section): Fix indentation for larger address size. @@ -531,9 +870,9 @@ 2005-05-30 Roland McGrath * readelf.c (print_debug_line_section): Print section offset of each ---- elfutils/src/findtextrel.c -+++ elfutils/src/findtextrel.c -@@ -490,7 +490,11 @@ ptrcompare (const void *p1, const void * +--- a/src/findtextrel.c ++++ b/src/findtextrel.c +@@ -490,7 +490,11 @@ static void @@ -546,8 +885,8 @@ GElf_Addr addr, Elf *elf, Elf_Scn *symscn, Dwarf *dw, const char *fname, bool more_than_one, void **knownsrcs) { ---- elfutils/src/Makefile.am -+++ elfutils/src/Makefile.am +--- a/src/Makefile.am ++++ b/src/Makefile.am @@ -26,6 +26,7 @@ ## DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H $(YYDEBUG) -DDEBUGPRED=@DEBUGPRED@ \ @@ -556,7 +895,7 @@ if MUDFLAP AM_CFLAGS = -fmudflap else -@@ -33,7 +34,7 @@ AM_CFLAGS = +@@ -33,7 +34,7 @@ endif AM_CFLAGS += -Wall -Wshadow -std=gnu99 $(native_ld_cflags) \ $(if $($(*F)_no_Werror),,-Werror) \ @@ -565,7 +904,7 @@ $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $(CFLAGS_$(*F)) INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ -@@ -112,6 +113,9 @@ addr2line_no_Wformat = yes +@@ -112,6 +113,9 @@ # XXX While the file is not finished, don't warn about this ldgeneric_no_Wunused = yes @@ -575,9 +914,53 @@ readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl size_LDADD = $(libelf) $(libeu) $(libmudflap) ---- elfutils/src/readelf.c -+++ elfutils/src/readelf.c -@@ -7443,7 +7443,7 @@ dump_archive_index (Elf *elf, const char +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -202,6 +202,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -231,6 +232,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ -d +@@ -290,13 +292,13 @@ + @MUDFLAP_FALSE@AM_CFLAGS = -Wall -Wshadow -std=gnu99 \ + @MUDFLAP_FALSE@ $(native_ld_cflags) $(if \ + @MUDFLAP_FALSE@ $($(*F)_no_Werror),,-Werror) $(if \ +-@MUDFLAP_FALSE@ $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \ ++@MUDFLAP_FALSE@ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \ + @MUDFLAP_FALSE@ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) \ + @MUDFLAP_FALSE@ $(CFLAGS_$(*F)) + @MUDFLAP_TRUE@AM_CFLAGS = -fmudflap -Wall -Wshadow -std=gnu99 \ + @MUDFLAP_TRUE@ $(native_ld_cflags) $(if \ + @MUDFLAP_TRUE@ $($(*F)_no_Werror),,-Werror) $(if \ +-@MUDFLAP_TRUE@ $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \ ++@MUDFLAP_TRUE@ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \ + @MUDFLAP_TRUE@ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) \ + @MUDFLAP_TRUE@ $(CFLAGS_$(*F)) + INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ +@@ -342,6 +344,9 @@ + addr2line_no_Wformat = yes + # XXX While the file is not finished, don't warn about this + ldgeneric_no_Wunused = yes ++ ++# Buggy old compilers. ++readelf_no_Werror = yes + readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl + nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl + size_LDADD = $(libelf) $(libeu) $(libmudflap) +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -7591,7 +7591,7 @@ if (unlikely (elf_rand (elf, as_off) == 0) || unlikely ((subelf = elf_begin (-1, ELF_C_READ_MMAP, elf)) == NULL)) @@ -586,8 +969,8 @@ while (1) #endif error (EXIT_FAILURE, 0, ---- elfutils/src/strings.c -+++ elfutils/src/strings.c +--- a/src/strings.c ++++ b/src/strings.c @@ -51,6 +51,10 @@ #include @@ -599,7 +982,7 @@ /* Prototypes of local functions. */ static int read_fd (int fd, const char *fname, off64_t fdlen); -@@ -491,8 +495,13 @@ map_file (int fd, off64_t start_off, off +@@ -491,8 +495,13 @@ fd, start_off); if (mem != MAP_FAILED) { @@ -613,8 +996,8 @@ break; } if (errno != EINVAL && errno != ENOMEM) ---- elfutils/src/strip.c -+++ elfutils/src/strip.c +--- a/src/strip.c ++++ b/src/strip.c @@ -52,6 +52,12 @@ #include #include @@ -628,7 +1011,7 @@ /* Name and version of program. */ static void print_version (FILE *stream, struct argp_state *state); -@@ -300,8 +306,18 @@ process_file (const char *fname) +@@ -300,8 +306,18 @@ /* If we have to preserve the timestamp, we need it in the format utimes() understands. */ @@ -647,7 +1030,7 @@ } /* Open the file. */ -@@ -1746,7 +1762,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -1746,7 +1762,7 @@ /* If requested, preserve the timestamp. */ if (tvp != NULL) { @@ -656,7 +1039,7 @@ { error (0, errno, gettext ("\ cannot set access and modification date of '%s'"), -@@ -1803,7 +1819,7 @@ handle_ar (int fd, Elf *elf, const char +@@ -1803,7 +1819,7 @@ if (tvp != NULL) { @@ -665,9 +1048,9 @@ { error (0, errno, gettext ("\ cannot set access and modification date of '%s'"), fname); ---- elfutils/tests/ChangeLog -+++ elfutils/tests/ChangeLog -@@ -106,6 +106,8 @@ +--- a/tests/ChangeLog ++++ b/tests/ChangeLog +@@ -124,6 +124,8 @@ 2008-01-21 Roland McGrath @@ -676,7 +1059,7 @@ * testfile45.S.bz2: Add tests for cltq, cqto. * testfile45.expect.bz2: Adjust. -@@ -814,6 +816,11 @@ +@@ -832,6 +834,11 @@ * Makefile.am (TESTS): Add run-elflint-test.sh. (EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2. @@ -688,9 +1071,9 @@ 2005-05-24 Ulrich Drepper * get-files.c (main): Use correct format specifier. ---- elfutils/tests/line2addr.c -+++ elfutils/tests/line2addr.c -@@ -132,7 +132,7 @@ main (int argc, char *argv[]) +--- a/tests/line2addr.c ++++ b/tests/line2addr.c +@@ -132,7 +132,7 @@ { struct args a = { .arg = argv[cnt] }; @@ -699,8 +1082,8 @@ { default: case 0: ---- elfutils/tests/Makefile.am -+++ elfutils/tests/Makefile.am +--- a/tests/Makefile.am ++++ b/tests/Makefile.am @@ -25,12 +25,13 @@ ## . ## @@ -717,3 +1100,34 @@ $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) BUILT_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf endif +--- a/tests/Makefile.in ++++ b/tests/Makefile.in +@@ -353,6 +353,7 @@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ ++LD_AS_NEEDED = @LD_AS_NEEDED@ + LEX = @LEX@ + LEXLIB = @LEXLIB@ + LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +@@ -382,6 +383,7 @@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ ++WEXTRA = @WEXTRA@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + YACC = @YACC@ +@@ -438,10 +440,10 @@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + zip_LIBS = @zip_LIBS@ +-@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -Wextra -std=gnu99 \ ++@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror $(WEXTRA) -std=gnu99 \ + @MUDFLAP_FALSE@ $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) + +-@MUDFLAP_TRUE@AM_CFLAGS = -Wall -Werror -Wextra -std=gnu99 -fmudflap\ ++@MUDFLAP_TRUE@AM_CFLAGS = -Wall -Werror $(WEXTRA) -std=gnu99 -fmudflap\ + @MUDFLAP_TRUE@ $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) + + @MUDFLAP_TRUE@BUILD_RPATH = \$$ORIGIN/../backends diff --git a/elfutils-robustify.patch b/elfutils-robustify.patch index 1028019..eb195d3 100644 --- a/elfutils-robustify.patch +++ b/elfutils-robustify.patch @@ -1,6 +1,41 @@ ---- elfutils/libelf/ChangeLog -+++ elfutils/libelf/ChangeLog -@@ -529,6 +529,49 @@ +--- + libelf/ChangeLog | 43 +++++++++++++++++ + libelf/elf32_getphdr.c | 10 ++++ + libelf/elf32_getshdr.c | 15 +++++- + libelf/elf32_newphdr.c | 6 ++ + libelf/elf32_updatefile.c | 7 ++ + libelf/elf_begin.c | 46 ++++++++++++++++++- + libelf/elf_getarsym.c | 3 + + libelf/elf_getshdrstrndx.c | 38 ++++++++++++++- + libelf/elf_newscn.c | 10 +++- + libelf/gelf_getdyn.c | 6 +- + libelf/gelf_getlib.c | 3 - + libelf/gelf_getmove.c | 3 - + libelf/gelf_getrel.c | 12 +--- + libelf/gelf_getrela.c | 12 +--- + libelf/gelf_getsym.c | 6 +- + libelf/gelf_getsyminfo.c | 3 - + libelf/gelf_getsymshndx.c | 10 ++-- + libelf/gelf_getversym.c | 3 - + libelf/gelf_update_dyn.c | 12 +--- + libelf/gelf_update_lib.c | 9 --- + libelf/gelf_update_move.c | 2 + libelf/gelf_update_rel.c | 12 +--- + libelf/gelf_update_rela.c | 12 +--- + libelf/gelf_update_sym.c | 12 +--- + libelf/gelf_update_syminfo.c | 9 --- + libelf/gelf_update_symshndx.c | 12 +--- + libelf/gelf_update_versym.c | 2 + libelf/libelfP.h | 9 +++ + src/ChangeLog | 23 +++++++++ + src/elflint.c | 101 +++++++++++++++++++++++++++++++----------- + src/readelf.c | 92 +++++++++++++++++++++++++++----------- + src/strip.c | 70 +++++++++++++++++++---------- + 32 files changed, 446 insertions(+), 167 deletions(-) + +--- a/libelf/ChangeLog ++++ b/libelf/ChangeLog +@@ -568,6 +568,49 @@ 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. @@ -50,9 +85,9 @@ 2005-05-11 Ulrich Drepper * elf.h: Update again. ---- elfutils/libelf/elf32_getphdr.c -+++ elfutils/libelf/elf32_getphdr.c -@@ -105,6 +105,16 @@ __elfw2(LIBELFBITS,getphdr_wrlock) (elf) +--- a/libelf/elf32_getphdr.c ++++ b/libelf/elf32_getphdr.c +@@ -105,6 +105,16 @@ if (elf->map_address != NULL) { @@ -69,26 +104,26 @@ /* All the data is already mapped. Use it. */ void *file_phdr = ((char *) elf->map_address + elf->start_offset + ehdr->e_phoff); ---- elfutils/libelf/elf32_getshdr.c -+++ elfutils/libelf/elf32_getshdr.c +--- a/libelf/elf32_getshdr.c ++++ b/libelf/elf32_getshdr.c @@ -1,5 +1,5 @@ /* Return section header. -- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2007 Red Hat, Inc. -+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2007, 2008 Red Hat, Inc. +- 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 Red Hat elfutils. Written by Ulrich Drepper , 1998. -@@ -81,7 +81,8 @@ load_shdr_wrlock (Elf_Scn *scn) +@@ -81,7 +81,8 @@ goto out; size_t shnum; -- if (__elf_getshnum_rdlock (elf, &shnum) != 0) -+ if (__elf_getshnum_rdlock (elf, &shnum) != 0 +- if (__elf_getshdrnum_rdlock (elf, &shnum) != 0) ++ if (__elf_getshdrnum_rdlock (elf, &shnum) != 0 + || shnum > SIZE_MAX / sizeof (ElfW2(LIBELFBITS,Shdr))) goto out; size_t size = shnum * sizeof (ElfW2(LIBELFBITS,Shdr)); -@@ -98,6 +99,16 @@ load_shdr_wrlock (Elf_Scn *scn) +@@ -98,6 +99,16 @@ if (elf->map_address != NULL) { @@ -105,9 +140,9 @@ ElfW2(LIBELFBITS,Shdr) *notcvt; /* All the data is already mapped. If we could use it ---- elfutils/libelf/elf32_newphdr.c -+++ elfutils/libelf/elf32_newphdr.c -@@ -124,6 +124,12 @@ elfw2(LIBELFBITS,newphdr) (elf, count) +--- a/libelf/elf32_newphdr.c ++++ b/libelf/elf32_newphdr.c +@@ -124,6 +124,12 @@ else if (elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum != count || elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) { @@ -120,9 +155,9 @@ /* Allocate a new program header with the appropriate number of elements. */ result = (ElfW2(LIBELFBITS,Phdr) *) ---- elfutils/libelf/elf32_updatefile.c -+++ elfutils/libelf/elf32_updatefile.c -@@ -220,6 +220,9 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf +--- a/libelf/elf32_updatefile.c ++++ b/libelf/elf32_updatefile.c +@@ -220,6 +220,9 @@ /* Write all the sections. Well, only those which are modified. */ if (shnum > 0) { @@ -132,7 +167,7 @@ Elf_ScnList *list = &elf->state.ELFW(elf,LIBELFBITS).scns; Elf_Scn **scns = (Elf_Scn **) alloca (shnum * sizeof (Elf_Scn *)); char *const shdr_start = ((char *) elf->map_address + elf->start_offset -@@ -633,6 +636,10 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf +@@ -636,6 +639,10 @@ /* Write all the sections. Well, only those which are modified. */ if (shnum > 0) { @@ -143,9 +178,9 @@ off_t shdr_offset = elf->start_offset + ehdr->e_shoff; #if EV_NUM != 2 xfct_t shdr_fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR]; ---- elfutils/libelf/elf_begin.c -+++ elfutils/libelf/elf_begin.c -@@ -165,7 +165,8 @@ get_shnum (void *map_address, unsigned c +--- a/libelf/elf_begin.c ++++ b/libelf/elf_begin.c +@@ -165,7 +165,8 @@ if (unlikely (result == 0) && ehdr.e32->e_shoff != 0) { @@ -155,7 +190,7 @@ /* Cannot read the first section header. */ return 0; -@@ -213,7 +214,8 @@ get_shnum (void *map_address, unsigned c +@@ -213,7 +214,8 @@ if (unlikely (result == 0) && ehdr.e64->e_shoff != 0) { @@ -165,7 +200,7 @@ /* Cannot read the first section header. */ return 0; -@@ -285,6 +287,15 @@ file_read_elf (int fildes, void *map_add +@@ -285,6 +287,15 @@ /* Could not determine the number of sections. */ return NULL; @@ -181,7 +216,7 @@ /* We can now allocate the memory. */ Elf *elf = allocate_elf (fildes, map_address, offset, maxsize, cmd, parent, ELF_K_ELF, scncnt * sizeof (Elf_Scn)); -@@ -318,13 +329,31 @@ file_read_elf (int fildes, void *map_add +@@ -318,13 +329,31 @@ { /* We can use the mmapped memory. */ elf->state.elf32.ehdr = ehdr; @@ -213,7 +248,7 @@ for (size_t cnt = 0; cnt < scncnt; ++cnt) { -@@ -406,13 +435,26 @@ file_read_elf (int fildes, void *map_add +@@ -406,13 +435,26 @@ { /* We can use the mmapped memory. */ elf->state.elf64.ehdr = ehdr; @@ -240,9 +275,9 @@ for (size_t cnt = 0; cnt < scncnt; ++cnt) { ---- elfutils/libelf/elf_getarsym.c -+++ elfutils/libelf/elf_getarsym.c -@@ -179,6 +179,9 @@ elf_getarsym (elf, ptr) +--- a/libelf/elf_getarsym.c ++++ b/libelf/elf_getarsym.c +@@ -179,6 +179,9 @@ size_t index_size = atol (tmpbuf); if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size @@ -252,9 +287,9 @@ || n * sizeof (uint32_t) > index_size) { /* This index table cannot be right since it does not fit into ---- elfutils/libelf/elf_getshstrndx.c -+++ elfutils/libelf/elf_getshstrndx.c -@@ -125,10 +125,25 @@ elf_getshstrndx (elf, dst) +--- a/libelf/elf_getshdrstrndx.c ++++ b/libelf/elf_getshdrstrndx.c +@@ -125,10 +125,25 @@ if (elf->map_address != NULL && elf->state.elf32.ehdr->e_ident[EI_DATA] == MY_ELFDATA && (ALLOW_UNALIGNED @@ -282,7 +317,7 @@ else { /* We avoid reading in all the section headers. Just read -@@ -163,10 +178,25 @@ elf_getshstrndx (elf, dst) +@@ -163,10 +178,25 @@ if (elf->map_address != NULL && elf->state.elf64.ehdr->e_ident[EI_DATA] == MY_ELFDATA && (ALLOW_UNALIGNED @@ -310,9 +345,9 @@ else { /* We avoid reading in all the section headers. Just read ---- elfutils/libelf/elf_newscn.c -+++ elfutils/libelf/elf_newscn.c -@@ -104,10 +104,18 @@ elf_newscn (elf) +--- a/libelf/elf_newscn.c ++++ b/libelf/elf_newscn.c +@@ -104,10 +104,18 @@ else { /* We must allocate a new element. */ @@ -332,9 +367,9 @@ newp = (Elf_ScnList *) calloc (sizeof (Elf_ScnList) + ((elf->state.elf.scnincr *= 2) * sizeof (Elf_Scn)), 1); ---- elfutils/libelf/gelf_getdyn.c -+++ elfutils/libelf/gelf_getdyn.c -@@ -93,7 +93,8 @@ gelf_getdyn (data, ndx, dst) +--- a/libelf/gelf_getdyn.c ++++ b/libelf/gelf_getdyn.c +@@ -93,7 +93,8 @@ table entries has to be adopted. The user better has provided a buffer where we can store the information. While copying the data we are converting the format. */ @@ -344,7 +379,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -114,7 +115,8 @@ gelf_getdyn (data, ndx, dst) +@@ -114,7 +115,8 @@ /* The data is already in the correct form. Just make sure the index is OK. */ @@ -354,9 +389,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_getlib.c -+++ elfutils/libelf/gelf_getlib.c -@@ -86,7 +86,8 @@ gelf_getlib (data, ndx, dst) +--- a/libelf/gelf_getlib.c ++++ b/libelf/gelf_getlib.c +@@ -86,7 +86,8 @@ /* The data is already in the correct form. Just make sure the index is OK. */ GElf_Lib *result = NULL; @@ -366,9 +401,9 @@ __libelf_seterrno (ELF_E_INVALID_INDEX); else { ---- elfutils/libelf/gelf_getmove.c -+++ elfutils/libelf/gelf_getmove.c -@@ -83,7 +83,8 @@ gelf_getmove (data, ndx, dst) +--- a/libelf/gelf_getmove.c ++++ b/libelf/gelf_getmove.c +@@ -83,7 +83,8 @@ /* The data is already in the correct form. Just make sure the index is OK. */ @@ -378,9 +413,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_getrela.c -+++ elfutils/libelf/gelf_getrela.c -@@ -71,12 +71,6 @@ gelf_getrela (data, ndx, dst) +--- a/libelf/gelf_getrela.c ++++ b/libelf/gelf_getrela.c +@@ -71,12 +71,6 @@ if (data_scn == NULL) return NULL; @@ -393,7 +428,7 @@ if (unlikely (data_scn->d.d_type != ELF_T_RELA)) { __libelf_seterrno (ELF_E_INVALID_HANDLE); -@@ -93,7 +87,8 @@ gelf_getrela (data, ndx, dst) +@@ -93,7 +87,8 @@ if (scn->elf->class == ELFCLASS32) { /* We have to convert the data. */ @@ -403,7 +438,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); result = NULL; -@@ -114,7 +109,8 @@ gelf_getrela (data, ndx, dst) +@@ -114,7 +109,8 @@ { /* Simply copy the data after we made sure we are actually getting correct data. */ @@ -413,9 +448,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); result = NULL; ---- elfutils/libelf/gelf_getrel.c -+++ elfutils/libelf/gelf_getrel.c -@@ -71,12 +71,6 @@ gelf_getrel (data, ndx, dst) +--- a/libelf/gelf_getrel.c ++++ b/libelf/gelf_getrel.c +@@ -71,12 +71,6 @@ if (data_scn == NULL) return NULL; @@ -428,7 +463,7 @@ if (unlikely (data_scn->d.d_type != ELF_T_REL)) { __libelf_seterrno (ELF_E_INVALID_HANDLE); -@@ -93,7 +87,8 @@ gelf_getrel (data, ndx, dst) +@@ -93,7 +87,8 @@ if (scn->elf->class == ELFCLASS32) { /* We have to convert the data. */ @@ -438,7 +473,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); result = NULL; -@@ -113,7 +108,8 @@ gelf_getrel (data, ndx, dst) +@@ -113,7 +108,8 @@ { /* Simply copy the data after we made sure we are actually getting correct data. */ @@ -448,9 +483,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); result = NULL; ---- elfutils/libelf/gelf_getsym.c -+++ elfutils/libelf/gelf_getsym.c -@@ -90,7 +90,8 @@ gelf_getsym (data, ndx, dst) +--- a/libelf/gelf_getsym.c ++++ b/libelf/gelf_getsym.c +@@ -90,7 +90,8 @@ table entries has to be adopted. The user better has provided a buffer where we can store the information. While copying the data we are converting the format. */ @@ -460,7 +495,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -119,7 +120,8 @@ gelf_getsym (data, ndx, dst) +@@ -119,7 +120,8 @@ /* The data is already in the correct form. Just make sure the index is OK. */ @@ -470,9 +505,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_getsyminfo.c -+++ elfutils/libelf/gelf_getsyminfo.c -@@ -84,7 +84,8 @@ gelf_getsyminfo (data, ndx, dst) +--- a/libelf/gelf_getsyminfo.c ++++ b/libelf/gelf_getsyminfo.c +@@ -84,7 +84,8 @@ /* The data is already in the correct form. Just make sure the index is OK. */ @@ -482,9 +517,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_getsymshndx.c -+++ elfutils/libelf/gelf_getsymshndx.c -@@ -90,7 +90,9 @@ gelf_getsymshndx (symdata, shndxdata, nd +--- a/libelf/gelf_getsymshndx.c ++++ b/libelf/gelf_getsymshndx.c +@@ -90,7 +90,9 @@ section index table. */ if (likely (shndxdata_scn != NULL)) { @@ -495,7 +530,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -110,7 +112,8 @@ gelf_getsymshndx (symdata, shndxdata, nd +@@ -110,7 +112,8 @@ table entries has to be adopted. The user better has provided a buffer where we can store the information. While copying the data we are converting the format. */ @@ -505,7 +540,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -139,7 +142,8 @@ gelf_getsymshndx (symdata, shndxdata, nd +@@ -139,7 +142,8 @@ /* The data is already in the correct form. Just make sure the index is OK. */ @@ -515,9 +550,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_getversym.c -+++ elfutils/libelf/gelf_getversym.c -@@ -92,7 +92,8 @@ gelf_getversym (data, ndx, dst) +--- a/libelf/gelf_getversym.c ++++ b/libelf/gelf_getversym.c +@@ -92,7 +92,8 @@ /* The data is already in the correct form. Just make sure the index is OK. */ @@ -527,9 +562,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); result = NULL; ---- elfutils/libelf/gelf_update_dyn.c -+++ elfutils/libelf/gelf_update_dyn.c -@@ -71,12 +71,6 @@ gelf_update_dyn (data, ndx, src) +--- a/libelf/gelf_update_dyn.c ++++ b/libelf/gelf_update_dyn.c +@@ -71,12 +71,6 @@ if (data == NULL) return 0; @@ -542,7 +577,7 @@ if (unlikely (data_scn->d.d_type != ELF_T_DYN)) { /* The type of the data better should match. */ -@@ -102,7 +96,8 @@ gelf_update_dyn (data, ndx, src) +@@ -102,7 +96,8 @@ } /* Check whether we have to resize the data buffer. */ @@ -552,7 +587,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -116,7 +111,8 @@ gelf_update_dyn (data, ndx, src) +@@ -116,7 +111,8 @@ else { /* Check whether we have to resize the data buffer. */ @@ -562,9 +597,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_update_lib.c -+++ elfutils/libelf/gelf_update_lib.c -@@ -68,12 +68,6 @@ gelf_update_lib (data, ndx, src) +--- a/libelf/gelf_update_lib.c ++++ b/libelf/gelf_update_lib.c +@@ -68,12 +68,6 @@ if (data == NULL) return 0; @@ -577,7 +612,7 @@ Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; if (unlikely (data_scn->d.d_type != ELF_T_LIB)) { -@@ -87,7 +81,8 @@ gelf_update_lib (data, ndx, src) +@@ -87,7 +81,8 @@ /* Check whether we have to resize the data buffer. */ int result = 0; @@ -587,9 +622,9 @@ __libelf_seterrno (ELF_E_INVALID_INDEX); else { ---- elfutils/libelf/gelf_update_move.c -+++ elfutils/libelf/gelf_update_move.c -@@ -75,7 +75,7 @@ gelf_update_move (data, ndx, src) +--- a/libelf/gelf_update_move.c ++++ b/libelf/gelf_update_move.c +@@ -75,7 +75,7 @@ assert (sizeof (GElf_Move) == sizeof (Elf64_Move)); /* Check whether we have to resize the data buffer. */ @@ -598,9 +633,9 @@ || unlikely ((ndx + 1) * sizeof (GElf_Move) > data_scn->d.d_size)) { __libelf_seterrno (ELF_E_INVALID_INDEX); ---- elfutils/libelf/gelf_update_rela.c -+++ elfutils/libelf/gelf_update_rela.c -@@ -68,12 +68,6 @@ gelf_update_rela (Elf_Data *dst, int ndx +--- a/libelf/gelf_update_rela.c ++++ b/libelf/gelf_update_rela.c +@@ -68,12 +68,6 @@ if (dst == NULL) return 0; @@ -613,7 +648,7 @@ if (unlikely (data_scn->d.d_type != ELF_T_RELA)) { /* The type of the data better should match. */ -@@ -101,7 +95,8 @@ gelf_update_rela (Elf_Data *dst, int ndx +@@ -101,7 +95,8 @@ } /* Check whether we have to resize the data buffer. */ @@ -623,7 +658,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -117,7 +112,8 @@ gelf_update_rela (Elf_Data *dst, int ndx +@@ -117,7 +112,8 @@ else { /* Check whether we have to resize the data buffer. */ @@ -633,9 +668,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_update_rel.c -+++ elfutils/libelf/gelf_update_rel.c -@@ -68,12 +68,6 @@ gelf_update_rel (Elf_Data *dst, int ndx, +--- a/libelf/gelf_update_rel.c ++++ b/libelf/gelf_update_rel.c +@@ -68,12 +68,6 @@ if (dst == NULL) return 0; @@ -648,7 +683,7 @@ if (unlikely (data_scn->d.d_type != ELF_T_REL)) { /* The type of the data better should match. */ -@@ -99,7 +93,8 @@ gelf_update_rel (Elf_Data *dst, int ndx, +@@ -99,7 +93,8 @@ } /* Check whether we have to resize the data buffer. */ @@ -658,7 +693,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -114,7 +109,8 @@ gelf_update_rel (Elf_Data *dst, int ndx, +@@ -114,7 +109,8 @@ else { /* Check whether we have to resize the data buffer. */ @@ -668,9 +703,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_update_sym.c -+++ elfutils/libelf/gelf_update_sym.c -@@ -72,12 +72,6 @@ gelf_update_sym (data, ndx, src) +--- a/libelf/gelf_update_sym.c ++++ b/libelf/gelf_update_sym.c +@@ -72,12 +72,6 @@ if (data == NULL) return 0; @@ -683,7 +718,7 @@ if (unlikely (data_scn->d.d_type != ELF_T_SYM)) { /* The type of the data better should match. */ -@@ -102,7 +96,8 @@ gelf_update_sym (data, ndx, src) +@@ -102,7 +96,8 @@ } /* Check whether we have to resize the data buffer. */ @@ -693,7 +728,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -125,7 +120,8 @@ gelf_update_sym (data, ndx, src) +@@ -125,7 +120,8 @@ else { /* Check whether we have to resize the data buffer. */ @@ -703,9 +738,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_update_syminfo.c -+++ elfutils/libelf/gelf_update_syminfo.c -@@ -72,12 +72,6 @@ gelf_update_syminfo (data, ndx, src) +--- a/libelf/gelf_update_syminfo.c ++++ b/libelf/gelf_update_syminfo.c +@@ -72,12 +72,6 @@ if (data == NULL) return 0; @@ -718,7 +753,7 @@ if (unlikely (data_scn->d.d_type != ELF_T_SYMINFO)) { /* The type of the data better should match. */ -@@ -93,7 +87,8 @@ gelf_update_syminfo (data, ndx, src) +@@ -93,7 +87,8 @@ rwlock_wrlock (scn->elf->lock); /* Check whether we have to resize the data buffer. */ @@ -728,9 +763,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_update_symshndx.c -+++ elfutils/libelf/gelf_update_symshndx.c -@@ -77,12 +77,6 @@ gelf_update_symshndx (symdata, shndxdata +--- a/libelf/gelf_update_symshndx.c ++++ b/libelf/gelf_update_symshndx.c +@@ -77,12 +77,6 @@ if (symdata == NULL) return 0; @@ -743,7 +778,7 @@ if (unlikely (symdata_scn->d.d_type != ELF_T_SYM)) { /* The type of the data better should match. */ -@@ -128,7 +122,8 @@ gelf_update_symshndx (symdata, shndxdata +@@ -128,7 +122,8 @@ } /* Check whether we have to resize the data buffer. */ @@ -753,7 +788,7 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; -@@ -151,7 +146,8 @@ gelf_update_symshndx (symdata, shndxdata +@@ -151,7 +146,8 @@ else { /* Check whether we have to resize the data buffer. */ @@ -763,9 +798,9 @@ { __libelf_seterrno (ELF_E_INVALID_INDEX); goto out; ---- elfutils/libelf/gelf_update_versym.c -+++ elfutils/libelf/gelf_update_versym.c -@@ -75,7 +75,7 @@ gelf_update_versym (data, ndx, src) +--- a/libelf/gelf_update_versym.c ++++ b/libelf/gelf_update_versym.c +@@ -75,7 +75,7 @@ assert (sizeof (GElf_Versym) == sizeof (Elf64_Versym)); /* Check whether we have to resize the data buffer. */ @@ -774,9 +809,9 @@ || unlikely ((ndx + 1) * sizeof (GElf_Versym) > data_scn->d.d_size)) { __libelf_seterrno (ELF_E_INVALID_INDEX); ---- elfutils/libelf/libelfP.h -+++ elfutils/libelf/libelfP.h -@@ -611,4 +611,13 @@ extern uint32_t __libelf_crc32 (uint32_t +--- a/libelf/libelfP.h ++++ b/libelf/libelfP.h +@@ -606,4 +606,13 @@ /* Align offset to 4 bytes as needed for note name and descriptor data. */ #define NOTE_ALIGN(n) (((n) + 3) & -4U) @@ -790,9 +825,9 @@ +#endif + #endif /* libelfP.h */ ---- elfutils/src/ChangeLog -+++ elfutils/src/ChangeLog -@@ -1376,6 +1376,16 @@ +--- a/src/ChangeLog ++++ b/src/ChangeLog +@@ -1455,6 +1455,16 @@ object symbols or symbols with unknown type. (check_rel): Likewise. @@ -809,7 +844,7 @@ 2005-06-08 Roland McGrath * readelf.c (print_ops): Add consts. -@@ -1421,6 +1431,19 @@ +@@ -1505,6 +1515,19 @@ * readelf.c (dwarf_tag_string): Add new tags. @@ -829,9 +864,9 @@ 2005-05-08 Roland McGrath * strip.c (handle_elf): Don't translate hash and versym data formats, ---- elfutils/src/elflint.c -+++ elfutils/src/elflint.c -@@ -130,6 +130,9 @@ static uint32_t shstrndx; +--- a/src/elflint.c ++++ b/src/elflint.c +@@ -130,6 +130,9 @@ /* Array to count references in section groups. */ static int *scnref; @@ -841,7 +876,7 @@ int main (int argc, char *argv[]) -@@ -318,10 +321,19 @@ section_name (Ebl *ebl, int idx) +@@ -318,10 +321,19 @@ { GElf_Shdr shdr_mem; GElf_Shdr *shdr; @@ -862,7 +897,7 @@ } -@@ -343,10 +355,6 @@ static const int valid_e_machine[] = +@@ -343,10 +355,6 @@ (sizeof (valid_e_machine) / sizeof (valid_e_machine[0])) @@ -873,7 +908,7 @@ static void check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size) { -@@ -611,7 +619,8 @@ section [%2d] '%s': symbol table cannot +@@ -612,7 +620,8 @@ } } @@ -883,7 +918,7 @@ ERROR (gettext ("\ section [%2u] '%s': entry size is does not match ElfXX_Sym\n"), idx, section_name (ebl, idx)); -@@ -649,7 +658,7 @@ section [%2d] '%s': XINDEX for zeroth en +@@ -650,7 +659,7 @@ xndxscnidx, section_name (ebl, xndxscnidx)); } @@ -892,7 +927,7 @@ { sym = gelf_getsymshndx (data, xndxdata, cnt, &sym_mem, &xndx); if (sym == NULL) -@@ -669,7 +678,8 @@ section [%2d] '%s': symbol %zu: invalid +@@ -670,7 +679,8 @@ else { name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name); @@ -902,7 +937,7 @@ } if (sym->st_shndx == SHN_XINDEX) -@@ -999,9 +1009,11 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e +@@ -1018,9 +1028,11 @@ { GElf_Shdr rcshdr_mem; const GElf_Shdr *rcshdr = gelf_getshdr (scn, &rcshdr_mem); @@ -916,7 +951,7 @@ { /* Found the dynamic section. Look through it. */ Elf_Data *d = elf_getdata (scn, NULL); -@@ -1011,7 +1023,9 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e +@@ -1030,7 +1042,9 @@ { GElf_Dyn dyn_mem; GElf_Dyn *dyn = gelf_getdyn (d, cnt, &dyn_mem); @@ -927,7 +962,7 @@ if (dyn->d_tag == DT_RELCOUNT) { -@@ -1025,7 +1039,9 @@ section [%2d] '%s': DT_RELCOUNT used for +@@ -1044,7 +1058,9 @@ /* Does the number specified number of relative relocations exceed the total number of relocations? */ @@ -938,7 +973,7 @@ ERROR (gettext ("\ section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"), idx, section_name (ebl, idx), -@@ -1185,7 +1201,8 @@ section [%2d] '%s': no relocations for m +@@ -1204,7 +1220,8 @@ } } @@ -948,7 +983,7 @@ 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_Rel\n"), -@@ -1408,7 +1425,8 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, G +@@ -1427,7 +1444,8 @@ Elf_Data *symdata = elf_getdata (symscn, NULL); enum load_state state = state_undecided; @@ -958,7 +993,7 @@ { GElf_Rela rela_mem; GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem); -@@ -1458,7 +1476,8 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GE +@@ -1477,7 +1495,8 @@ Elf_Data *symdata = elf_getdata (symscn, NULL); enum load_state state = state_undecided; @@ -968,7 +1003,7 @@ { GElf_Rel rel_mem; GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem); -@@ -1561,7 +1580,8 @@ section [%2d] '%s': referenced as string +@@ -1580,7 +1599,8 @@ shdr->sh_link, section_name (ebl, shdr->sh_link), idx, section_name (ebl, idx)); @@ -978,7 +1013,7 @@ ERROR (gettext ("\ section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"), idx, section_name (ebl, idx)); -@@ -1571,7 +1591,7 @@ section [%2d] '%s': section entry size d +@@ -1590,7 +1610,7 @@ idx, section_name (ebl, idx)); bool non_null_warned = false; @@ -987,7 +1022,7 @@ { GElf_Dyn dyn_mem; GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dyn_mem); -@@ -1852,6 +1872,8 @@ section [%2d] '%s': entry size does not +@@ -1871,6 +1891,8 @@ idx, section_name (ebl, idx)); if (symshdr != NULL @@ -996,7 +1031,7 @@ && (shdr->sh_size / shdr->sh_entsize < symshdr->sh_size / symshdr->sh_entsize)) ERROR (gettext ("\ -@@ -1878,6 +1900,12 @@ section [%2d] '%s': extended section ind +@@ -1897,6 +1919,12 @@ } Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); @@ -1009,7 +1044,7 @@ if (*((Elf32_Word *) data->d_buf) != 0) ERROR (gettext ("symbol 0 should have zero extended section index\n")); -@@ -1920,7 +1948,7 @@ section [%2d] '%s': hash table section i +@@ -1939,7 +1967,7 @@ size_t maxidx = nchain; @@ -1018,7 +1053,7 @@ { size_t symsize = symshdr->sh_size / symshdr->sh_entsize; -@@ -1931,18 +1959,28 @@ section [%2d] '%s': hash table section i +@@ -1950,18 +1978,28 @@ maxidx = symsize; } @@ -1049,7 +1084,7 @@ } -@@ -1972,18 +2010,28 @@ section [%2d] '%s': hash table section i +@@ -1991,18 +2029,28 @@ maxidx = symsize; } @@ -1081,7 +1116,7 @@ } -@@ -2008,7 +2056,7 @@ section [%2d] '%s': bitmask size not pow +@@ -2027,7 +2075,7 @@ if (shdr->sh_size < (4 + bitmask_words + nbuckets) * sizeof (Elf32_Word)) { ERROR (gettext ("\ @@ -1090,7 +1125,7 @@ idx, section_name (ebl, idx), (long int) shdr->sh_size, (long int) ((4 + bitmask_words + nbuckets) * sizeof (Elf32_Word))); return; -@@ -2680,8 +2728,9 @@ section [%2d] '%s' refers in sh_link to +@@ -2699,8 +2747,9 @@ /* The number of elements in the version symbol table must be the same as the number of symbols. */ @@ -1102,9 +1137,9 @@ ERROR (gettext ("\ section [%2d] '%s' has different number of entries than symbol table [%2d] '%s'\n"), idx, section_name (ebl, idx), ---- elfutils/src/readelf.c -+++ elfutils/src/readelf.c -@@ -1136,6 +1136,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -1146,6 +1146,8 @@ Elf32_Word *grpref = (Elf32_Word *) data->d_buf; GElf_Sym sym_mem; @@ -1113,7 +1148,7 @@ printf ((grpref[0] & GRP_COMDAT) ? ngettext ("\ \nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n", -@@ -1148,8 +1150,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G +@@ -1158,8 +1160,8 @@ data->d_size / sizeof (Elf32_Word) - 1), elf_ndxscn (scn), elf_strptr (ebl->elf, shstrndx, shdr->sh_name), @@ -1124,7 +1159,7 @@ ?: gettext (""), data->d_size / sizeof (Elf32_Word) - 1); -@@ -1300,7 +1302,8 @@ static void +@@ -1310,7 +1312,8 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) { int class = gelf_getclass (ebl->elf); @@ -1134,7 +1169,7 @@ Elf_Data *data; size_t cnt; size_t shstrndx; -@@ -1315,6 +1318,11 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, +@@ -1325,6 +1328,11 @@ error (EXIT_FAILURE, 0, gettext ("cannot get section header string table index")); @@ -1146,7 +1181,7 @@ printf (ngettext ("\ \nDynamic segment contains %lu entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", "\ -@@ -1324,9 +1332,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, +@@ -1334,9 +1342,7 @@ class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, shdr->sh_offset, (int) shdr->sh_link, @@ -1157,7 +1192,7 @@ fputs_unlocked (gettext (" Type Value\n"), stdout); for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) -@@ -1826,6 +1832,13 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G +@@ -1919,6 +1925,13 @@ error (EXIT_FAILURE, 0, gettext ("cannot get section header string table index")); @@ -1171,7 +1206,7 @@ /* Now we can compute the number of entries in the section. */ unsigned int nsyms = data->d_size / (class == ELFCLASS32 ? sizeof (Elf32_Sym) -@@ -1836,15 +1849,12 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G +@@ -1929,15 +1942,12 @@ nsyms), (unsigned int) elf_ndxscn (scn), elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms); @@ -1188,7 +1223,7 @@ fputs_unlocked (class == ELFCLASS32 ? gettext ("\ -@@ -2080,7 +2090,13 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn, +@@ -2173,7 +2183,13 @@ error (EXIT_FAILURE, 0, gettext ("cannot get section header string table index")); @@ -1203,7 +1238,7 @@ printf (ngettext ("\ \nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", "\ -@@ -2091,9 +2107,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn, +@@ -2184,9 +2200,7 @@ class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, shdr->sh_offset, (unsigned int) shdr->sh_link, @@ -1214,7 +1249,7 @@ unsigned int offset = 0; for (int cnt = shdr->sh_info; --cnt >= 0; ) -@@ -2146,8 +2160,14 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G +@@ -2239,8 +2253,14 @@ error (EXIT_FAILURE, 0, gettext ("cannot get section header string table index")); @@ -1230,7 +1265,7 @@ printf (ngettext ("\ \nVersion definition section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", "\ -@@ -2159,9 +2179,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G +@@ -2252,9 +2272,7 @@ class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, shdr->sh_offset, (unsigned int) shdr->sh_link, @@ -1241,7 +1276,7 @@ unsigned int offset = 0; for (int cnt = shdr->sh_info; --cnt >= 0; ) -@@ -2423,8 +2441,14 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G +@@ -2516,8 +2534,14 @@ filename = NULL; } @@ -1257,7 +1292,7 @@ printf (ngettext ("\ \nVersion symbols section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'", "\ -@@ -2436,9 +2460,7 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G +@@ -2529,9 +2553,7 @@ class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, shdr->sh_offset, (unsigned int) shdr->sh_link, @@ -1268,7 +1303,7 @@ /* Now we can finally look at the actual contents of this section. */ for (unsigned int cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) -@@ -2490,7 +2512,17 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, +@@ -2583,7 +2605,17 @@ for (Elf32_Word cnt = 0; cnt < nbucket; ++cnt) ++counts[lengths[cnt]]; @@ -1287,7 +1322,7 @@ 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", "\ -@@ -2503,9 +2535,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, +@@ -2596,9 +2628,7 @@ shdr->sh_addr, shdr->sh_offset, (unsigned int) shdr->sh_link, @@ -1298,7 +1333,7 @@ if (extrastr != NULL) fputs (extrastr, stdout); -@@ -4107,6 +4137,16 @@ print_debug_aranges_section (Dwfl_Module +@@ -4231,6 +4261,16 @@ return; } @@ -1315,9 +1350,9 @@ printf (ngettext ("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 " contains %zu entry:\n", "\ ---- elfutils/src/strip.c -+++ elfutils/src/strip.c -@@ -544,6 +544,11 @@ handle_elf (int fd, Elf *elf, const char +--- a/src/strip.c ++++ b/src/strip.c +@@ -560,6 +560,11 @@ goto fail_close; } @@ -1329,7 +1364,7 @@ /* Storage for section information. We leave room for two more entries since we unconditionally create a section header string table. Maybe some weird tool created an ELF file without one. -@@ -565,7 +570,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -581,7 +586,7 @@ { /* This should always be true (i.e., there should not be any holes in the numbering). */ @@ -1338,7 +1373,7 @@ shdr_info[cnt].scn = scn; -@@ -578,6 +583,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -594,6 +599,7 @@ shdr_info[cnt].shdr.sh_name); if (shdr_info[cnt].name == NULL) { @@ -1346,7 +1381,7 @@ error (0, 0, gettext ("illformed file '%s'"), fname); goto fail_close; } -@@ -587,6 +593,8 @@ handle_elf (int fd, Elf *elf, const char +@@ -603,6 +609,8 @@ /* Remember the shdr.sh_link value. */ shdr_info[cnt].old_sh_link = shdr_info[cnt].shdr.sh_link; @@ -1355,7 +1390,7 @@ /* Sections in files other than relocatable object files which are not loaded can be freely moved by us. In relocatable -@@ -599,7 +607,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -615,7 +623,7 @@ appropriate reference. */ if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB_SHNDX)) { @@ -1364,7 +1399,7 @@ shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx = cnt; } else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GROUP)) -@@ -616,7 +624,12 @@ handle_elf (int fd, Elf *elf, const char +@@ -632,7 +640,12 @@ for (inner = 1; inner < shdr_info[cnt].data->d_size / sizeof (Elf32_Word); ++inner) @@ -1377,7 +1412,7 @@ if (inner == 1 || (inner == 2 && (grpref[0] & GRP_COMDAT) == 0)) /* If the section group contains only one element and this -@@ -627,7 +640,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -643,7 +656,7 @@ } else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GNU_versym)) { @@ -1386,7 +1421,7 @@ shdr_info[shdr_info[cnt].shdr.sh_link].version_idx = cnt; } -@@ -635,7 +648,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -651,7 +664,7 @@ discarded right away. */ if ((shdr_info[cnt].shdr.sh_flags & SHF_GROUP) != 0) { @@ -1395,7 +1430,7 @@ if (shdr_info[shdr_info[cnt].group_idx].idx == 0) { -@@ -710,11 +723,15 @@ handle_elf (int fd, Elf *elf, const char +@@ -726,11 +739,15 @@ { /* If a relocation section is marked as being removed make sure the section it is relocating is removed, too. */ @@ -1413,7 +1448,7 @@ if (shdr_info[cnt].idx == 1) { -@@ -741,7 +758,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -757,7 +774,7 @@ if (shdr_info[cnt].symtab_idx != 0 && shdr_info[shdr_info[cnt].symtab_idx].data == NULL) { @@ -1422,7 +1457,7 @@ shdr_info[shdr_info[cnt].symtab_idx].data = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn, -@@ -781,6 +798,9 @@ handle_elf (int fd, Elf *elf, const char +@@ -797,6 +814,9 @@ else if (scnidx == SHN_XINDEX) scnidx = xndx; @@ -1432,7 +1467,7 @@ if (shdr_info[scnidx].idx == 0) /* This symbol table has a real symbol in a discarded section. So preserve the -@@ -811,12 +831,16 @@ handle_elf (int fd, Elf *elf, const char +@@ -827,12 +847,16 @@ } /* Handle references through sh_info. */ @@ -1451,7 +1486,7 @@ /* Mark the section as investigated. */ shdr_info[cnt].idx = 2; -@@ -955,7 +979,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -971,7 +995,7 @@ error (EXIT_FAILURE, 0, gettext ("while generating output file: %s"), elf_errmsg (-1)); @@ -1460,7 +1495,7 @@ /* Add this name to the section header string table. */ shdr_info[cnt].se = ebl_strtabadd (shst, shdr_info[cnt].name, 0); -@@ -992,7 +1016,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -1008,7 +1032,7 @@ error (EXIT_FAILURE, 0, gettext ("while create section header section: %s"), elf_errmsg (-1)); @@ -1469,7 +1504,7 @@ shdr_info[cnt].data = elf_newdata (shdr_info[cnt].newscn); if (shdr_info[cnt].data == NULL) -@@ -1048,7 +1072,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -1064,7 +1088,7 @@ error (EXIT_FAILURE, 0, gettext ("while create section header section: %s"), elf_errmsg (-1)); @@ -1478,7 +1513,7 @@ /* Finalize the string table and fill in the correct indices in the section headers. */ -@@ -1138,20 +1162,20 @@ handle_elf (int fd, Elf *elf, const char +@@ -1154,20 +1178,20 @@ shndxdata = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn, NULL); @@ -1502,7 +1537,7 @@ >= shdr_info[cnt].data->d_size / elsize); } -@@ -1206,7 +1230,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -1222,7 +1246,7 @@ sec = shdr_info[sym->st_shndx].idx; else { @@ -1511,7 +1546,7 @@ sec = shdr_info[xshndx].idx; } -@@ -1227,7 +1251,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -1243,7 +1267,7 @@ nxshndx = sec; } @@ -1520,7 +1555,7 @@ if ((inner != destidx || nshndx != sym->st_shndx || (shndxdata != NULL && nxshndx != xshndx)) -@@ -1251,7 +1275,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -1267,7 +1291,7 @@ || shdr_info[cnt].debug_data == NULL) /* This is a section symbol for a section which has been removed. */ @@ -1529,7 +1564,7 @@ } if (destidx != inner) -@@ -1438,11 +1462,11 @@ handle_elf (int fd, Elf *elf, const char +@@ -1454,11 +1478,11 @@ { GElf_Sym sym_mem; GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem); @@ -1543,7 +1578,7 @@ size_t hidx = elf_hash (name) % nbucket; if (bucket[hidx] == 0) -@@ -1461,7 +1485,7 @@ handle_elf (int fd, Elf *elf, const char +@@ -1477,7 +1501,7 @@ else { /* Alpha and S390 64-bit use 64-bit SHT_HASH entries. */ @@ -1552,7 +1587,7 @@ == sizeof (Elf64_Xword)); Elf64_Xword *bucket = (Elf64_Xword *) hashd->d_buf; -@@ -1492,11 +1516,11 @@ handle_elf (int fd, Elf *elf, const char +@@ -1508,11 +1532,11 @@ { GElf_Sym sym_mem; GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem); diff --git a/elfutils.changes b/elfutils.changes index 7fe93d4..0694773 100644 --- a/elfutils.changes +++ b/elfutils.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Thu Aug 13 16:11:47 CEST 2009 - tiwai@suse.de + +- updated to 0.142: + - Fix handling filling caps between sections in libelf + - Add elf_getshdrnum alias for elf_getshnum and elf_getshdrstrndx + alias for elf_getshstrndx and deprecate original names. + - Add support for STB_GNU_UNIQUE + - Add -N option to readelf, speeds up DWARF printing without + address->name lookups + - Add support for decoding DWARF CFI into location description + form to libdw. + Some new DWARF 3 expression operations. + Basic handling of some new encodings slated for DWARF 4. + ------------------------------------------------------------------- Wed Apr 29 17:49:28 CEST 2009 - tiwai@suse.de diff --git a/elfutils.spec b/elfutils.spec index b12c72a..7dcedad 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,5 +1,5 @@ # -# spec file for package elfutils (Version 0.141) +# spec file for package elfutils (Version 0.142) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -20,7 +20,7 @@ Name: elfutils License: GPL v2 or later -Version: 0.141 +Version: 0.142 Release: 1 Summary: Higher-level library to access ELF Group: System/Libraries @@ -52,7 +52,7 @@ Authors: %package -n libasm1 Summary: A collection of utilities and DSOs to handle compiled objects Group: Development/Tools/Other -License: GPL v2 only; GPL v2 or later; LGPL v2.1 or later +License: GPL v2 only ; GPL v2 or later ; LGPL v2.1 or later %description -n libasm1 Elfutils is a collection of utilities, including ld (a linker), nm (for @@ -294,104 +294,3 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/elfutils/libdwfl.h %changelog -* Wed Apr 29 2009 tiwai@suse.de -- updated to 0.141: - - libebl: sparc backend fixes - some more arm backend support - - libdwfl: fix dwfl_module_build_id for prelinked DSO case - fixes in core file support dwfl_module_getsym interface - improved for non-address symbols - - eu-strip: fix infinite loop on strange inputs with -f - - eu-addr2line: take -j/--section=NAME option for binutils - compatibility (same effect as '(NAME)0x123' syntax already - supported) -* Thu Feb 19 2009 tiwai@suse.de -- Update to 0.139 - - libcpu: Add Intel SSE4 disassembler support - - readelf: Implement call frame information and exception - handling dumping. - Add -e option. Enable it implicitly for -a. - - elflint: Check PT_GNU_EH_FRAME program header entry. - - libdwfl: Support automatic gzip/bzip2 decompression of ELF - files. -- updated to 0.140: - - libelf: Fix regression in creation of section header. - - Misc bug fixes -* Tue Jan 27 2009 tiwai@suse.de -- revert the ET_DYN address fix patch; causing a regression - (bnc#468814) -* Wed Jan 07 2009 tiwai@suse.de -- Fix the header size check in dwarf_getsrclines() (bnc#455992) -- Backport the fix for ET_DYN addresses -* Tue Dec 16 2008 tiwai@suse.de -- Fix dwfl_getmodules(), assert in systemtap (bnc#448331) -- Fix libebl1 dependency -- Fix crashes of elfutils binaries, backports from upstream -* Tue Nov 25 2008 tiwai@suse.de -- fix libdwfl regression with realloc DWFL->lookup_module in - the fix patch (bnc#448331, likely bnc#445783) -* Tue Oct 28 2008 tiwai@suse.de -- added baselibs.conf for 32bit libs (bnc#439582) -* Tue Oct 07 2008 tiwai@suse.de -- renamed to libebl1 -- provides libasm1 package -- fix provides and obsolets of libebl1 -- updated to version 0.137: - * libdwfl: bug fixes -* Tue Aug 26 2008 tiwai@suse.de -- updated to version 0.135: - * libdwfl: bug fixes -- updated to version 0.134: - * libdwfl, libelf: bug fixes -- updated to version 0.133: - * readelf, elflint, libebl: SHT_GNU_ATTRIBUTE section handling - (readelf -A) - * libdwfl: bug fixes and optimization in relocation handling -- updated to version 0.132: - * libcpu: Implement x86 and x86-64 disassembler. - * libasm: Add interface for disassembler. -- fixed post scripts -* Fri Feb 29 2008 dmueller@suse.de -- fix build for older distributions -* Mon Jan 28 2008 tiwai@suse.de -- fix compile errors regarding missing prototypes. -* Tue Nov 20 2007 tiwai@suse.de -- fix off64_t in libelf.h again... -* Tue Nov 20 2007 tiwai@suse.de -- updated to version 0.131 - * libdw: DW_FORM_ref_addr support - dwarf_formref entry point now deprecated - bug fixes for oddly-formatted DWARF - * libdwfl: bug fixes in offline archive support - apply partial relocations for dwfl_module_address_section - on ET_REL - * libebl: powerpc backend support for Altivec registers -* Mon Oct 22 2007 tiwai@suse.de -- fix comiple errors regarding missing off64_t definitions - in libelf.h -* Mon Oct 22 2007 tiwai@suse.de -- updated to version 0.129: - readelf: new options --hex-dump (or -x), --strings (or -p) -- updated to version 0.130 - * readelf: -p option can take an argument like -x for one - section - * libelf: new function elf_getdata_rawchunk, replaces - gelf_rawchunk; - new functions gelf_getnote, gelf_getauxv, gelf_update_auxv - * libdwfl: new functions dwfl_build_id_find_elf, - dwfl_build_id_find_debuginfo, dwfl_module_build_id, - dwfl_module_report_build_id; - support dynamic symbol tables found via phdrs; - dwfl_standard_find_debuginfo now uses build IDs when available - * libebl: backend improvements for sparc, alpha, powerpc -* Thu Oct 04 2007 rguenther@suse.de -- fix build with gcc-4.3, same patch as for the copy in rpm -* Wed Jul 04 2007 tiwai@suse.de -- updated to version 0.128 - * auto-tool fixes -* Mon Jun 11 2007 ro@suse.de -- use __attribute__ ((gnu_inline)) to fix build with gcc-4.2 -* Mon May 21 2007 tiwai@suse.de -- initial packages, built from elfutils-0.127. - A problematic file regarding the license is removed from the - tarball.