This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Introduce dwfl_module_getsym_info and dwfl_module_addrinfo.


On Sat, 2013-12-14 at 23:59 +0100, Mark Wielaard wrote:
> Extra testcases were added for both addr2line and the dwflsyms testscase.

I added some more tests based on the already existing dwflsyms testcases
for separate debuginfo, minisymtab and prelinked files, but now
generated on ppc64. Which revealed a couple of corner case issues. In
particular when retrying to match the (resolved) value in
dwfl_module_addrinfo we need to first check the address is actually
larger than the one we are looking for. And we needed to keep better
track of the elf file the symbol is defined in, which we always want to
return to the user if requested, but we possibly want to check the
address against the main elf file to check the section matches. For this
last issue a resolved flag was introduced.

Besides these fixes, a rebase on master, a NEWS update and the new tests
the patch is the same as the previous one. (Also on mjw/opd branch.)

Cheers,

Mark
>From f4e15a20d5fa276ae6d7aa3e450eab9bec7f3415 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mjw@redhat.com>
Date: Wed, 18 Dec 2013 11:05:54 +0100
Subject: [PATCH] libdwfl: Introduce dwfl_module_getsym_info and dwfl_module_addrinfo.

Some arches like ppc64 use function descriptor values instead of function
addresses causing matching of names and addresses to fail when using
dwfl_module_getsym or dwfl_module_addrsym.

Add ebl hook to resolve any function descriptor values found in non-ET_REL
modules.

The new function dwfl_module_getsym_info doesn't adjust the symbol value
in any way, but returns the adjusted and/or resolved address associated
with the symbol separately. The new function dwfl_module_addrinfo resolves
against both the address associated with the symbol (which could be the
function entry address) value and the adjusted st_value. So that it is
easy to resolve and match either function descriptors and/or function
entry addresses.

Since these new functions also return more information they replace the
dwfl_module_getsym_elf and dwfl_module_addrsym_elf functions that never
made it into a released elfutils version.

addr2line and readelf now use the new functions when looking up functions
names. addr2line will now also display the section the address was found
in when given -x.

Extra testcases were added for both addr2line and the dwflsyms testscase.

Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 ChangeLog                                          |    6 +
 NEWS                                               |    3 +
 backends/ChangeLog                                 |    7 +
 backends/Makefile.am                               |    2 +-
 backends/ppc64_init.c                              |   30 ++
 backends/ppc64_resolve_sym.c                       |   63 +++
 libdw/ChangeLog                                    |    6 +
 libdw/libdw.map                                    |    4 +-
 libdwfl/ChangeLog                                  |   31 ++
 libdwfl/derelocate.c                               |   13 +-
 libdwfl/dwfl_module_addrname.c                     |    6 +-
 libdwfl/dwfl_module_addrsym.c                      |  220 +++++++----
 libdwfl/dwfl_module_getsym.c                       |   63 +++-
 libdwfl/libdwfl.h                                  |   80 +++-
 libdwfl/libdwflP.h                                 |   27 ++-
 libebl/ChangeLog                                   |    9 +
 libebl/Makefile.am                                 |    2 +-
 libebl/ebl-hooks.h                                 |    5 +
 .../eblresolvesym.c                                |   21 +-
 libebl/libebl.h                                    |    6 +
 libebl/libeblP.h                                   |    5 +
 src/ChangeLog                                      |   12 +
 src/addr2line.c                                    |   54 +++-
 src/readelf.c                                      |   16 +-
 tests/ChangeLog                                    |   22 +
 tests/Makefile.am                                  |    7 +-
 tests/dwflsyms.c                                   |   59 +++-
 tests/run-addrname-test.sh                         |   35 ++
 tests/run-dwflsyms.sh                              |  413 ++++++++++++++++++++
 tests/testfile66.bz2                               |  Bin 0 -> 741 bytes
 tests/testfile66.core.bz2                          |  Bin 0 -> 56448 bytes
 tests/testfilebazdbgppc64.bz2                      |  Bin 0 -> 2366 bytes
 tests/testfilebazdbgppc64.debug.bz2                |  Bin 0 -> 2295 bytes
 tests/testfilebazdbgppc64_pl.bz2                   |  Bin 0 -> 2775 bytes
 tests/testfilebazdbgppc64_plr.bz2                  |  Bin 0 -> 2399 bytes
 tests/testfilebazdynppc64.bz2                      |  Bin 0 -> 2327 bytes
 tests/testfilebazmdbppc64.bz2                      |  Bin 0 -> 3528 bytes
 tests/testfilebazminppc64.bz2                      |  Bin 0 -> 3464 bytes
 tests/testfilebazminppc64_pl.bz2                   |  Bin 0 -> 3900 bytes
 tests/testfilebazminppc64_plr.bz2                  |  Bin 0 -> 3535 bytes
 tests/testfilebaztabppc64.bz2                      |  Bin 0 -> 3697 bytes
 41 files changed, 1076 insertions(+), 151 deletions(-)
 create mode 100644 backends/ppc64_resolve_sym.c
 copy libdwfl/dwfl_module_addrname.c => libebl/eblresolvesym.c (72%)
 create mode 100755 tests/testfile66.bz2
 create mode 100644 tests/testfile66.core.bz2
 create mode 100755 tests/testfilebazdbgppc64.bz2
 create mode 100755 tests/testfilebazdbgppc64.debug.bz2
 create mode 100755 tests/testfilebazdbgppc64_pl.bz2
 create mode 100755 tests/testfilebazdbgppc64_plr.bz2
 create mode 100755 tests/testfilebazdynppc64.bz2
 create mode 100755 tests/testfilebazmdbppc64.bz2
 create mode 100755 tests/testfilebazminppc64.bz2
 create mode 100755 tests/testfilebazminppc64_pl.bz2
 create mode 100755 tests/testfilebazminppc64_plr.bz2
 create mode 100755 tests/testfilebaztabppc64.bz2

diff --git a/ChangeLog b/ChangeLog
index 334c769..097e8d3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* NEWS (libdwfl): Add dwfl_module_getsym_info and
+	dwfl_module_addrinfo.
+	(addr2line): Add -x option.
+
 2013-12-16  Mark Wielaard  <mjw@redhat.com>
 
 	* NEWS (libdwfl): Add dwfl_module_getsymtab_first_global.
diff --git a/NEWS b/NEWS
index 35f2387..f8f682d 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ Version 0.158
 
 libdwfl: dwfl_core_file_report has new parameter executable.
          New function dwfl_module_getsymtab_first_global.
+         New functions dwfl_module_getsym_info and dwfl_module_addrinfo.
+
+addr2line: New option -x to show the section an address was found in.
 
 Version 0.157
 
diff --git a/backends/ChangeLog b/backends/ChangeLog
index dc96048..7415952 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,10 @@
+2013-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (ppc64_SRCS): Add ppc64_resolve_sym.c.
+	* ppc64_resolve_sym.c: New file.
+	* ppc64_init.c: Hook resolve_sym_value and find function descriptor
+	table.
+
 2013-12-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	unwinder: ppc and ppc64
diff --git a/backends/Makefile.am b/backends/Makefile.am
index 4752a64..d69e0ee 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -101,7 +101,7 @@ am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os)
 
 ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c \
 	     ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \
-	     ppc_cfi.c ppc_initreg.c
+	     ppc_cfi.c ppc_initreg.c ppc64_resolve_sym.c
 libebl_ppc64_pic_a_SOURCES = $(ppc64_SRCS)
 am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os)
 
diff --git a/backends/ppc64_init.c b/backends/ppc64_init.c
index 05f8898..d8f1417 100644
--- a/backends/ppc64_init.c
+++ b/backends/ppc64_init.c
@@ -31,6 +31,8 @@
 # include <config.h>
 #endif
 
+#include <string.h>
+
 #define BACKEND		ppc64_
 #define RELOC_PREFIX	R_PPC64_
 #include "libebl_CPU.h"
@@ -69,6 +71,34 @@ ppc64_init (elf, machine, eh, ehlen)
   eh->frame_nregs = (114 - 1) + 32;
   HOOK (eh, set_initial_registers_tid);
   HOOK (eh, dwarf_to_regno);
+  HOOK (eh, resolve_sym_value);
+
+  /* Find the function descriptor .opd table for resolve_sym_value.  */
+  if (elf != NULL)
+    {
+      GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem);
+      if (ehdr != NULL && ehdr->e_type != ET_REL)
+	{
+	  /* We could also try through DT_PPC64_OPD and DT_PPC64_OPDSZ. */
+	  GElf_Shdr opd_shdr_mem, *opd_shdr;
+	  Elf_Scn *scn = NULL;
+	  while ((scn = elf_nextscn (elf, scn)) != NULL)
+	    {
+	      opd_shdr = gelf_getshdr (scn, &opd_shdr_mem);
+	      if (opd_shdr != NULL
+		  && (opd_shdr->sh_flags & SHF_ALLOC) != 0
+		  && opd_shdr->sh_type == SHT_PROGBITS
+		  && opd_shdr->sh_size > 0
+		  && strcmp (elf_strptr (elf, ehdr->e_shstrndx,
+					 opd_shdr->sh_name), ".opd") == 0)
+		{
+		  eh->fd_addr = opd_shdr->sh_addr;
+		  eh->fd_data = elf_getdata (scn, NULL);
+		  break;
+		}
+	    }
+	}
+    }
 
   return MODVERSION;
 }
diff --git a/backends/ppc64_resolve_sym.c b/backends/ppc64_resolve_sym.c
new file mode 100644
index 0000000..03f6558
--- /dev/null
+++ b/backends/ppc64_resolve_sym.c
@@ -0,0 +1,63 @@
+/* Resolve symbol values through .opd function descriptors.
+   Copyright (C) 2013 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 either
+
+     * the GNU Lesser General Public License as published by the Free
+       Software Foundation; either version 3 of the License, or (at
+       your option) any later version
+
+   or
+
+     * the GNU General Public License as published by the Free
+       Software Foundation; either version 2 of the License, or (at
+       your option) any later version
+
+   or both in parallel, as here.
+
+   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 copies of the GNU General Public License and
+   the GNU Lesser General Public License along with this program.  If
+   not, see <http://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define BACKEND ppc64_
+#include "libebl_CPU.h"
+
+/* Resolve a function descriptor if addr points into the .opd section.
+   The .opd section contains function descriptors consisting of 3 addresses.
+   function, toc and chain. We are just interested in the first.
+   http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#FUNC-DES
+
+   Returns true if the given address could be resolved, false otherwise.
+*/
+bool
+ppc64_resolve_sym_value (Ebl *ebl, GElf_Addr *addr)
+{
+  if (ebl->fd_data != NULL && *addr >= ebl->fd_addr
+      && *addr + sizeof (Elf64_Addr) <= ebl->fd_addr + ebl->fd_data->d_size)
+    {
+      GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (ebl->elf, &ehdr_mem);
+      if (ehdr != NULL)
+	{
+	  Elf_Data opd_in, opd_out;
+	  opd_in.d_buf = ebl->fd_data->d_buf + (*addr - ebl->fd_addr);
+	  opd_out.d_buf = addr;
+	  opd_out.d_size = opd_in.d_size = sizeof (Elf64_Addr);
+	  opd_out.d_type = opd_in.d_type = ELF_T_ADDR;
+	  if (elf64_xlatetom (&opd_out, &opd_in,
+			      ehdr->e_ident[EI_DATA]) != NULL)
+	    return true;
+	}
+    }
+  return false;
+}
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 8b1e2c0..ef3ed57 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* libdw.map (ELFUTILS_0.158): Remove dwfl_module_addrsym_elf and
+	dwfl_module_getsym_elf. Add dwfl_module_addrinfo and
+	dwfl_module_getsym_info.
+
 2013-12-16  Mark Wielaard  <mjw@redhat.com>
 
 	* libdw.map (ELFUTILS_0.158): Add dwfl_module_getsymtab_first_global.
diff --git a/libdw/libdw.map b/libdw/libdw.map
index 342cdfe..92392bc 100644
--- a/libdw/libdw.map
+++ b/libdw/libdw.map
@@ -284,7 +284,7 @@ ELFUTILS_0.158 {
     dwfl_thread_getframes;
     dwfl_frame_pc;
 
-    dwfl_module_addrsym_elf;
-    dwfl_module_getsym_elf;
     dwfl_module_getsymtab_first_global;
+    dwfl_module_addrinfo;
+    dwfl_module_getsym_info;
 } ELFUTILS_0.157;
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index a025a96..7b2d14f 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,34 @@
+2013-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* derelocate.c (__libdwfl_find_section_ndx): New internal function.
+	* dwfl_module_addrname.c (dwfl_module_addrname): Use
+	dwfl_module_addrinfo.
+	* dwfl_module_addrsym.c (dwfl_module_addrsym_elf): Replace with...
+	(__libdwfl_addrsym): ...this. Use __libdwfl_getsym, use value
+	for comparisons, not st_value. Fill in off. Search for both value
+	and the (adjusted) sym.st_value when different.
+	(dwfl_module_addrsym): Implement using __libdwfl_addrsym.
+	(dwfl_module_addrinfo): New function.
+	* dwfl_module_getsym.c (dwfl_module_getsym_elf): Replace with...
+	(__libdwfl_getsym): ...this. Use ebl_resolve_sym_value if requested
+	and possible. Adjust sym->st_value only when requested. Fill in addr
+	if available.
+	(dwfl_module_getsym_info): New function.
+	(dwfl_module_getsym): Use __libdwfl_getsym.
+	* libdwfl.h (dwfl_module_getsym_elf): Removed.
+	(dwfl_module_getsym_info): New function declaration.
+	(dwfl_module_addrinfo): Likewise.
+	(dwfl_module_addrsym): Add documentation describing differences
+	with addrinfo variants.
+	(dwfl_module_addrsym_elf): Removed.
+	* libdwflP.h (__libdwfl_getsym): New internal function declaration.
+	(__libdwfl_addrsym): Likewise.
+	(__libdwfl_find_section_ndx): Likewise.
+	(dwfl_module_addrinfo): New internal declaration.
+	(dwfl_module_getsym_info): Likewise.
+	(dwfl_module_addrsym_elf): Removed.
+	(dwfl_module_getsym_elf): Likewise.
+
 2013-12-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* frame_unwind.c (handle_cfi): Call ebl_dwarf_to_regno for RA.
diff --git a/libdwfl/derelocate.c b/libdwfl/derelocate.c
index 56f998c..da67908 100644
--- a/libdwfl/derelocate.c
+++ b/libdwfl/derelocate.c
@@ -1,5 +1,5 @@
 /* Recover relocatibility for addresses computed from debug information.
-   Copyright (C) 2005-2010 Red Hat, Inc.
+   Copyright (C) 2005-2010, 2013 Red Hat, Inc.
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -330,6 +330,17 @@ find_section (Dwfl_Module *mod, Dwarf_Addr *addr)
   return -1;
 }
 
+size_t
+internal_function
+__libdwfl_find_section_ndx (Dwfl_Module *mod, Dwarf_Addr *addr)
+{
+  int idx = find_section (mod, addr);
+  if (unlikely (idx == -1))
+    return SHN_UNDEF;
+
+  return elf_ndxscn (mod->reloc_info->refs[idx].scn);
+}
+
 int
 dwfl_module_relocate_address (Dwfl_Module *mod, Dwarf_Addr *addr)
 {
diff --git a/libdwfl/dwfl_module_addrname.c b/libdwfl/dwfl_module_addrname.c
index 6ae0123..88a8139 100644
--- a/libdwfl/dwfl_module_addrname.c
+++ b/libdwfl/dwfl_module_addrname.c
@@ -1,5 +1,5 @@
 /* Find debugging and symbol information for a module in libdwfl.
-   Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+   Copyright (C) 2005, 2006, 2007, 2013 Red Hat, Inc.
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -31,6 +31,8 @@
 const char *
 dwfl_module_addrname (Dwfl_Module *mod, GElf_Addr addr)
 {
+  GElf_Off off;
   GElf_Sym sym;
-  return INTUSE(dwfl_module_addrsym) (mod, addr, &sym, NULL);
+  return INTUSE(dwfl_module_addrinfo) (mod, addr, &off, &sym,
+				       NULL, NULL, NULL);
 }
diff --git a/libdwfl/dwfl_module_addrsym.c b/libdwfl/dwfl_module_addrsym.c
index 9e4f067..d205832 100644
--- a/libdwfl/dwfl_module_addrsym.c
+++ b/libdwfl/dwfl_module_addrsym.c
@@ -1,5 +1,5 @@
 /* Find debugging and symbol information for a module in libdwfl.
-   Copyright (C) 2005-2012 Red Hat, Inc.
+   Copyright (C) 2005-2013 Red Hat, Inc.
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -32,9 +32,10 @@
    Never returns symbols at addresses above ADDR.  */
 
 const char *
-dwfl_module_addrsym_elf (Dwfl_Module *mod, GElf_Addr addr,
-			 GElf_Sym *closest_sym, GElf_Word *shndxp,
-			 Elf **elfp, Dwarf_Addr *biasp)
+internal_function
+__libdwfl_addrsym (Dwfl_Module *mod, GElf_Addr addr, GElf_Off *off,
+		   GElf_Sym *closest_sym, GElf_Word *shndxp,
+		   Elf **elfp, Dwarf_Addr *biasp, bool adjust_st_value)
 {
   int syments = INTUSE(dwfl_module_getsymtab) (mod);
   if (syments < 0)
@@ -43,11 +44,26 @@ dwfl_module_addrsym_elf (Dwfl_Module *mod, GElf_Addr addr,
   /* Return true iff we consider ADDR to lie in the same section as SYM.  */
   GElf_Word addr_shndx = SHN_UNDEF;
   Elf *addr_symelf = NULL;
-  inline bool same_section (const GElf_Sym *sym, Elf *symelf, GElf_Word shndx)
+  inline bool same_section (GElf_Addr value, Elf *symelf, GElf_Word shndx)
     {
       /* For absolute symbols and the like, only match exactly.  */
       if (shndx >= SHN_LORESERVE)
-	return sym->st_value == addr;
+	return value == addr;
+
+      /* If value might not be st_value, the shndx of the symbol might
+	 not match the section of the value. Explicitly look both up.  */
+      if (! adjust_st_value)
+	{
+	  Dwarf_Addr v;
+	  if (addr_shndx == SHN_UNDEF)
+	    {
+	      v = addr;
+	      addr_shndx = __libdwfl_find_section_ndx (mod, &v);
+	    }
+
+	  v = value;
+	  return addr_shndx == __libdwfl_find_section_ndx (mod, &v);
+	}
 
       /* Figure out what section ADDR lies in.  */
       if (addr_shndx == SHN_UNDEF || addr_symelf != symelf)
@@ -76,104 +92,133 @@ dwfl_module_addrsym_elf (Dwfl_Module *mod, GElf_Addr addr,
   /* Keep track of the closest symbol we have seen so far.
      Here we store only symbols with nonzero st_size.  */
   const char *closest_name = NULL;
+  GElf_Addr closest_value = 0;
   GElf_Word closest_shndx = SHN_UNDEF;
   Elf *closest_elf = NULL;
 
   /* Keep track of an eligible symbol with st_size == 0 as a fallback.  */
   const char *sizeless_name = NULL;
   GElf_Sym sizeless_sym = { 0, 0, 0, 0, 0, SHN_UNDEF };
+  GElf_Addr sizeless_value = 0;
   GElf_Word sizeless_shndx = SHN_UNDEF;
   Elf *sizeless_elf = NULL;
 
   /* Keep track of the lowest address a relevant sizeless symbol could have.  */
   GElf_Addr min_label = 0;
 
+  /* Try one symbol and associated value from the search table.  */
+  inline void try_sym_value (GElf_Addr value, GElf_Sym *sym,
+			     const char *name, GElf_Word shndx,
+			     Elf *elf, bool resolved)
+  {
+    /* Even if we don't choose this symbol, its existence excludes
+       any sizeless symbol (assembly label) that is below its upper
+       bound.  */
+    if (value + sym->st_size > min_label)
+      min_label = value + sym->st_size;
+
+    if (sym->st_size == 0 || addr - value < sym->st_size)
+      {
+	/* Return GELF_ST_BIND as higher-is-better integer.  */
+	inline int binding_value (const GElf_Sym *symp)
+	{
+	  switch (GELF_ST_BIND (symp->st_info))
+	    {
+	    case STB_GLOBAL:
+	      return 3;
+	    case STB_WEAK:
+	      return 2;
+	    case STB_LOCAL:
+	      return 1;
+	    default:
+	      return 0;
+	    }
+	}
+
+	/* This symbol is a better candidate than the current one
+	   if it's closer to ADDR or is global when it was local.  */
+	if (closest_name == NULL
+	    || closest_value < value
+	    || binding_value (closest_sym) < binding_value (sym))
+	  {
+	    if (sym->st_size != 0)
+	      {
+		*closest_sym = *sym;
+		closest_value = value;
+		closest_shndx = shndx;
+		closest_elf = elf;
+		closest_name = name;
+	      }
+	    else if (closest_name == NULL
+		     && value >= min_label
+		     && same_section (value,
+				      resolved ? mod->main.elf : elf, shndx))
+	      {
+		/* Handwritten assembly symbols sometimes have no
+		   st_size.  If no symbol with proper size includes
+		   the address, we'll use the closest one that is in
+		   the same section as ADDR.  */
+		sizeless_sym = *sym;
+		sizeless_value = value;
+		sizeless_shndx = shndx;
+		sizeless_elf = elf;
+		sizeless_name = name;
+	      }
+	  }
+	/* When the beginning of its range is no closer,
+	   the end of its range might be.  Otherwise follow
+	   GELF_ST_BIND preference.  If all are equal prefer
+	   the first symbol found.  */
+	else if (sym->st_size != 0
+		 && closest_value == value
+		 && ((closest_sym->st_size > sym->st_size
+		      && (binding_value (closest_sym)
+			  <= binding_value (sym)))
+		     || (closest_sym->st_size >= sym->st_size
+			 && (binding_value (closest_sym)
+			     < binding_value (sym)))))
+	  {
+	    *closest_sym = *sym;
+	    closest_value = value;
+	    closest_shndx = shndx;
+	    closest_elf = elf;
+	    closest_name = name;
+	  }
+      }
+  }
+
   /* Look through the symbol table for a matching symbol.  */
   inline void search_table (int start, int end)
     {
       for (int i = start; i < end; ++i)
 	{
 	  GElf_Sym sym;
+	  GElf_Addr value;
 	  GElf_Word shndx;
 	  Elf *elf;
-	  const char *name = INTUSE(dwfl_module_getsym_elf) (mod, i, &sym,
-							     &shndx, &elf,
-							     NULL);
+	  bool resolved;
+	  const char *name = __libdwfl_getsym (mod, i, &sym, &value,
+					       &shndx, &elf, NULL,
+					       &resolved, adjust_st_value);
 	  if (name != NULL && name[0] != '\0'
 	      && sym.st_shndx != SHN_UNDEF
-	      && sym.st_value <= addr
+	      && value <= addr
 	      && GELF_ST_TYPE (sym.st_info) != STT_SECTION
 	      && GELF_ST_TYPE (sym.st_info) != STT_FILE
 	      && GELF_ST_TYPE (sym.st_info) != STT_TLS)
 	    {
-	      /* Even if we don't choose this symbol, its existence excludes
-		 any sizeless symbol (assembly label) that is below its upper
-		 bound.  */
-	      if (sym.st_value + sym.st_size > min_label)
-		min_label = sym.st_value + sym.st_size;
+	      try_sym_value (value, &sym, name, shndx, elf, resolved);
 
-	      if (sym.st_size == 0 || addr - sym.st_value < sym.st_size)
+	      /* If this is an addrinfo variant and the value could be
+		 resolved then also try matching the (adjusted) st_value.  */
+	      if (resolved && mod->e_type != ET_REL)
 		{
-		  /* Return GELF_ST_BIND as higher-is-better integer.  */
-		  inline int binding_value (const GElf_Sym *symp)
-		    {
-		      switch (GELF_ST_BIND (symp->st_info))
-		      {
-			case STB_GLOBAL:
-			  return 3;
-			case STB_WEAK:
-			  return 2;
-			case STB_LOCAL:
-			  return 1;
-			default:
-			  return 0;
-		      }
-		    }
-		  /* This symbol is a better candidate than the current one
-		     if it's closer to ADDR or is global when it was local.  */
-		  if (closest_name == NULL
-		      || closest_sym->st_value < sym.st_value
-		      || binding_value (closest_sym) < binding_value (&sym))
-		    {
-		      if (sym.st_size != 0)
-			{
-			  *closest_sym = sym;
-			  closest_shndx = shndx;
-			  closest_elf = elf;
-			  closest_name = name;
-			}
-		      else if (closest_name == NULL
-			       && sym.st_value >= min_label
-			       && same_section (&sym, elf, shndx))
-			{
-			  /* Handwritten assembly symbols sometimes have no
-			     st_size.  If no symbol with proper size includes
-			     the address, we'll use the closest one that is in
-			     the same section as ADDR.  */
-			  sizeless_sym = sym;
-			  sizeless_shndx = shndx;
-			  sizeless_elf = elf;
-			  sizeless_name = name;
-			}
-		    }
-		  /* When the beginning of its range is no closer,
-		     the end of its range might be.  Otherwise follow
-		     GELF_ST_BIND preference.  If all are equal prefer
-		     the first symbol found.  */
-		  else if (sym.st_size != 0
-			   && closest_sym->st_value == sym.st_value
-			   && ((closest_sym->st_size > sym.st_size
-			        && (binding_value (closest_sym)
-				    <= binding_value (&sym)))
-			       || (closest_sym->st_size >= sym.st_size
-				   && (binding_value (closest_sym)
-				       < binding_value (&sym)))))
-		    {
-		      *closest_sym = sym;
-		      closest_shndx = shndx;
-		      closest_elf = elf;
-		      closest_name = name;
-		    }
+		  GElf_Addr adjusted_st_value;
+		  adjusted_st_value = dwfl_adjusted_st_value (mod, elf,
+							      sym.st_value);
+		  if (value != adjusted_st_value && adjusted_st_value <= addr)
+		    try_sym_value (adjusted_st_value, &sym, name, shndx,
+				   elf, false);
 		}
 	    }
 	}
@@ -196,20 +241,23 @@ dwfl_module_addrsym_elf (Dwfl_Module *mod, GElf_Addr addr,
   /* If we found nothing searching the global symbols, then try the locals.
      Unless we have a global sizeless symbol that matches exactly.  */
   if (closest_name == NULL && first_global > 1
-      && (sizeless_name == NULL || sizeless_sym.st_value != addr))
+      && (sizeless_name == NULL || sizeless_value != addr))
     search_table (1, first_global);
 
   /* If we found no proper sized symbol to use, fall back to the best
      candidate sizeless symbol we found, if any.  */
   if (closest_name == NULL
-      && sizeless_name != NULL && sizeless_sym.st_value >= min_label)
+      && sizeless_name != NULL && sizeless_value >= min_label)
     {
       *closest_sym = sizeless_sym;
+      closest_value = sizeless_value;
       closest_shndx = sizeless_shndx;
       closest_elf = sizeless_elf;
       closest_name = sizeless_name;
     }
 
+  *off = addr - closest_value;
+
   if (shndxp != NULL)
     *shndxp = closest_shndx;
   if (elfp != NULL)
@@ -218,14 +266,24 @@ dwfl_module_addrsym_elf (Dwfl_Module *mod, GElf_Addr addr,
     *biasp = dwfl_adjusted_st_value (mod, closest_elf, 0);
   return closest_name;
 }
-INTDEF (dwfl_module_addrsym_elf)
 
 
 const char *
 dwfl_module_addrsym (Dwfl_Module *mod, GElf_Addr addr,
 		     GElf_Sym *closest_sym, GElf_Word *shndxp)
 {
-  return INTUSE(dwfl_module_addrsym_elf) (mod, addr, closest_sym, shndxp,
-					  NULL, NULL);
+  GElf_Off off;
+  return __libdwfl_addrsym (mod, addr, &off, closest_sym, shndxp,
+			    NULL, NULL, true);
 }
 INTDEF (dwfl_module_addrsym)
+
+const char
+*dwfl_module_addrinfo (Dwfl_Module *mod, GElf_Addr address,
+		       GElf_Off *offset, GElf_Sym *sym,
+		       GElf_Word *shndxp, Elf **elfp, Dwarf_Addr *bias)
+{
+  return __libdwfl_addrsym (mod, address, offset, sym, shndxp, elfp, bias,
+			    false);
+}
+INTDEF (dwfl_module_addrinfo)
diff --git a/libdwfl/dwfl_module_getsym.c b/libdwfl/dwfl_module_getsym.c
index 319f975..917d062 100644
--- a/libdwfl/dwfl_module_getsym.c
+++ b/libdwfl/dwfl_module_getsym.c
@@ -29,9 +29,10 @@
 #include "libdwflP.h"
 
 const char *
-dwfl_module_getsym_elf (Dwfl_Module *mod, int ndx,
-			GElf_Sym *sym, GElf_Word *shndxp,
-			Elf **elfp, Dwarf_Addr *biasp)
+internal_function
+__libdwfl_getsym (Dwfl_Module *mod, int ndx, GElf_Sym *sym, GElf_Addr *addr,
+		  GElf_Word *shndxp, Elf **elfp, Dwarf_Addr *biasp,
+		  bool *resolved, bool adjust_st_value)
 {
   if (unlikely (mod == NULL))
     return NULL;
@@ -113,6 +114,33 @@ dwfl_module_getsym_elf (Dwfl_Module *mod, int ndx,
       alloc = unlikely (shdr == NULL) || (shdr->sh_flags & SHF_ALLOC);
     }
 
+  /* In case of an value in an allocated section the main Elf Ebl
+     might know where the real value is (e.g. for function
+     descriptors).  */
+
+  char *ident;
+  GElf_Addr st_value = sym->st_value;
+  *resolved = false;
+  if (! adjust_st_value && mod->e_type != ET_REL && alloc
+      && (GELF_ST_TYPE (sym->st_info) == STT_FUNC
+	  || (GELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC
+	      && (ident = elf_getident (elf, NULL)) != NULL
+	      && ident[EI_OSABI] == ELFOSABI_LINUX)))
+    {
+      if (likely (__libdwfl_module_getebl (mod) == DWFL_E_NOERROR))
+	{
+	  if (elf != mod->main.elf)
+	    {
+	      st_value = dwfl_adjusted_st_value (mod, elf, st_value);
+	      st_value = dwfl_deadjust_st_value (mod, mod->main.elf, st_value);
+	    }
+
+	  *resolved = ebl_resolve_sym_value (mod->ebl, &st_value);
+	  if (! *resolved)
+	    st_value = sym->st_value;
+	}
+    }
+
   if (shndxp != NULL)
     /* Yield -1 in case of a non-SHF_ALLOC section.  */
     *shndxp = alloc ? shndx : (GElf_Word) -1;
@@ -132,7 +160,7 @@ dwfl_module_getsym_elf (Dwfl_Module *mod, int ndx,
 	  size_t symshstrndx = SHN_UNDEF;
 	  Dwfl_Error result = __libdwfl_relocate_value (mod, elf,
 							&symshstrndx,
-							shndx, &sym->st_value);
+							shndx, &st_value);
 	  if (unlikely (result != DWFL_E_NOERROR))
 	    {
 	      __libdwfl_seterrno (result);
@@ -141,10 +169,18 @@ dwfl_module_getsym_elf (Dwfl_Module *mod, int ndx,
 	}
       else if (alloc)
 	/* Apply the bias to the symbol value.  */
-	sym->st_value = dwfl_adjusted_st_value (mod, elf, sym->st_value);
+	st_value = dwfl_adjusted_st_value (mod,
+					   *resolved ? mod->main.elf : elf,
+					   st_value);
       break;
     }
 
+  if (adjust_st_value)
+    sym->st_value = st_value;
+
+  if (addr != NULL)
+    *addr = st_value;
+
   if (unlikely (sym->st_name >= symstrdata->d_size))
     {
       __libdwfl_seterrno (DWFL_E_BADSTROFF);
@@ -156,12 +192,25 @@ dwfl_module_getsym_elf (Dwfl_Module *mod, int ndx,
     *biasp = dwfl_adjusted_st_value (mod, elf, 0);
   return (const char *) symstrdata->d_buf + sym->st_name;
 }
-INTDEF (dwfl_module_getsym_elf)
+
+const char *
+dwfl_module_getsym_info (Dwfl_Module *mod, int ndx,
+			 GElf_Sym *sym, GElf_Addr *addr,
+			 GElf_Word *shndxp,
+			 Elf **elfp, Dwarf_Addr *bias)
+{
+  bool resolved;
+  return __libdwfl_getsym (mod, ndx, sym, addr, shndxp, elfp, bias,
+			   &resolved, false);
+}
+INTDEF (dwfl_module_getsym_info)
 
 const char *
 dwfl_module_getsym (Dwfl_Module *mod, int ndx,
 		    GElf_Sym *sym, GElf_Word *shndxp)
 {
-  return dwfl_module_getsym_elf (mod, ndx, sym, shndxp, NULL, NULL);
+  bool resolved;
+  return __libdwfl_getsym (mod, ndx, sym, NULL, shndxp, NULL, NULL,
+			   &resolved, true);
 }
 INTDEF (dwfl_module_getsym)
diff --git a/libdwfl/libdwfl.h b/libdwfl/libdwfl.h
index 60160b6..007089b 100644
--- a/libdwfl/libdwfl.h
+++ b/libdwfl/libdwfl.h
@@ -447,39 +447,79 @@ extern int dwfl_module_getsymtab_first_global (Dwfl_Module *mod);
    Note that since symbols can come from either the main, debug or auxiliary
    ELF symbol file (either dynsym or symtab) the section index can only
    be reliably used to compare against special section constants like
-   SHN_UNDEF or SHN_ABS.  */
+   SHN_UNDEF or SHN_ABS.  It is recommended to use dwfl_module_getsym_info
+   which doesn't have these deficiencies.  */
 extern const char *dwfl_module_getsym (Dwfl_Module *mod, int ndx,
 				       GElf_Sym *sym, GElf_Word *shndxp)
   __nonnull_attribute__ (3);
 
-/* Same as dwfl_module_getsym but also returns the ELF file, if not NULL,
-   that the symbol came from so the section index can be reliably used.
-   Fills in *BIAS, if not NULL, with the difference between addresses
-   within the loaded module and those in symbol tables of the ELF file. */
-extern const char *dwfl_module_getsym_elf (Dwfl_Module *mod, int ndx,
-				           GElf_Sym *sym, GElf_Word *shndxp,
-					   Elf **elfp, Dwarf_Addr *bias)
-  __nonnull_attribute__ (3);
+/* Fetch one entry from the module's symbol table and the associated
+   address value.  On errors, returns NULL.  If successful, fills in
+   *SYM, *ADDR and returns the string for st_name.  This works like
+   gelf_getsym.  *ADDR is set to the st_value adjusted to an absolute
+   value based on the module's location, when the symbol is in an
+   SHF_ALLOC section.  For non-ET_REL files, if the arch uses function
+   descriptors, and the st_value points to one, *ADDR will be resolved
+   to the actual function entry address.  The SYM->ST_VALUE itself
+   isn't adjusted in any way.  Fills in ELFP, if not NULL, with the
+   ELF file the symbol originally came from.  Note that symbols can
+   come from either the main, debug or auxiliary ELF symbol file
+   (either dynsym or symtab).  If SHNDXP is non-null, it's set with
+   the section index (whether from st_shndx or extended index table);
+   in case of a symbol in a non-allocated section, *SHNDXP is instead
+   set to -1.  Fills in BIAS, if not NULL, with the difference between
+   addresses within the loaded module and those in symbol table of the
+   ELF file.  Note that the address associated with the symbol might
+   be in a different section than the returned symbol.  The section in
+   the main elf file in which returned ADDR falls can be found with
+   dwfl_module_address_section.  */
+extern const char *dwfl_module_getsym_info (Dwfl_Module *mod, int ndx,
+					    GElf_Sym *sym, GElf_Addr *addr,
+					    GElf_Word *shndxp,
+					    Elf **elfp, Dwarf_Addr *bias)
+  __nonnull_attribute__ (3, 4);
 
 /* Find the symbol that ADDRESS lies inside, and return its name.  */
 extern const char *dwfl_module_addrname (Dwfl_Module *mod, GElf_Addr address);
 
+/* Find the symbol associated with ADDRESS.  Return its name or NULL
+   when nothing was found.  If the architecture uses function
+   descriptors, and symbol st_value points to one, ADDRESS wil be
+   matched against either the adjusted st_value or the associated
+   function entry value as described in dwfl_module_getsym_info.  If
+   OFFSET is not NULL it will be filled in with the difference from
+   the start of the symbol (or function entry).  If SYM is not NULL it
+   is filled in with the symbol associated with the matched ADDRESS.
+   The SYM->ST_VALUE itself isn't adjusted in any way.  Fills in ELFP,
+   if not NULL, with the ELF file the symbol originally came from.
+   Note that symbols can come from either the main, debug or auxiliary
+   ELF symbol file (either dynsym or symtab).  If SHNDXP is non-null,
+   it's set with the section index (whether from st_shndx or extended
+   index table).  Fills in BIAS, if not NULL, with the difference
+   between addresses within the loaded module and those in symbol
+   table of the ELF file.  Note that the address matched against the
+   symbol might be in a different section than the returned symbol.
+   The section in the main elf file in ADDRESS falls can be found with
+   dwfl_module_address_section.  */
+extern const char *dwfl_module_addrinfo (Dwfl_Module *mod, GElf_Addr address,
+					 GElf_Off *offset, GElf_Sym *sym,
+					 GElf_Word *shndxp, Elf **elfp,
+					 Dwarf_Addr *bias)
+  __nonnull_attribute__ (3);
+
 /* Find the symbol that ADDRESS lies inside, and return detailed
-   information as for dwfl_module_getsym (above).  */
+   information as for dwfl_module_getsym (above).  Note that like
+   dwfl_module_getsym this function also adjusts SYM->ST_VALUE to an
+   absolute value based on the module's location.  ADDRESS is only
+   matched against this adjusted SYM->ST_VALUE.  This means that
+   depending on architecture this might only match symbols that
+   represent function descriptor addresses (and not function entry
+   addresses).  For these reasons it is recommended to use
+   dwfl_module_addrinfo instead.  */
 extern const char *dwfl_module_addrsym (Dwfl_Module *mod, GElf_Addr address,
 					GElf_Sym *sym, GElf_Word *shndxp)
   __nonnull_attribute__ (3);
 
-/* Same as dwfl_module_addrsym but also returns the ELF file, if not NULL,
-   that the symbol came from so the section index can be reliably used.
-   Fills in *BIAS, if not NULL, with the difference between addresses
-   within the loaded module and those in symbol tables of the ELF file. */
-extern const char *dwfl_module_addrsym_elf (Dwfl_Module *mod,
-					    GElf_Addr address, GElf_Sym *sym,
-					    GElf_Word *shndxp, Elf **elfp,
-					    Dwarf_Addr *bias)
-  __nonnull_attribute__ (3);
-
 /* Find the ELF section that *ADDRESS lies inside and return it.
    On success, adjusts *ADDRESS to be relative to the section,
    and sets *BIAS to the difference between addresses used in
diff --git a/libdwfl/libdwflP.h b/libdwfl/libdwflP.h
index e2e249d..267b021 100644
--- a/libdwfl/libdwflP.h
+++ b/libdwfl/libdwflP.h
@@ -388,6 +388,23 @@ struct dwfl_arange
 };
 
 
+/* Internal wrapper for old dwfl_module_getsym and new dwfl_module_getsym_info.
+   adjust_st_value set to true returns adjusted SYM st_value, set to false
+   it will not adjust SYM at all, but does match against resolved *ADDR. */
+extern const char *__libdwfl_getsym (Dwfl_Module *mod, int ndx, GElf_Sym *sym,
+				     GElf_Addr *addr, GElf_Word *shndxp,
+				     Elf **elfp, Dwarf_Addr *biasp,
+				     bool *resolved, bool adjust_st_value)
+  internal_function;
+
+/* Internal wrapper for old dwfl_module_addrsym and new dwfl_module_addrinfo.
+   adjust_st_value set to true returns adjusted SYM st_value, set to false
+   it will not adjust SYM at all, but does match against resolved values. */
+extern const char *__libdwfl_addrsym (Dwfl_Module *mod, GElf_Addr addr,
+				      GElf_Off *off, GElf_Sym *sym,
+				      GElf_Word *shndxp, Elf **elfp,
+				      Dwarf_Addr *bias,
+				      bool adjust_st_value) internal_function;
 
 extern void __libdwfl_module_free (Dwfl_Module *mod) internal_function;
 
@@ -404,6 +421,12 @@ extern void __libdwfl_getelf (Dwfl_Module *mod) internal_function;
 extern Dwfl_Error __libdwfl_relocate (Dwfl_Module *mod, Elf *file, bool debug)
   internal_function;
 
+/* Find the section index in mod->main.elf that contains the given
+   *ADDR.  Adjusts *ADDR to be section relative on success, returns
+   SHN_UNDEF on failure.  */
+extern size_t __libdwfl_find_section_ndx (Dwfl_Module *mod, Dwarf_Addr *addr)
+  internal_function;
+
 /* Process (simple) relocations in arbitrary section TSCN of an ET_REL file.
    RELOCSCN is SHT_REL or SHT_RELA and TSCN is its sh_info target section.  */
 extern Dwfl_Error __libdwfl_relocate_section (Dwfl_Module *mod, Elf *relocated,
@@ -638,13 +661,13 @@ INTDECL (dwfl_core_file_report)
 INTDECL (dwfl_getmodules)
 INTDECL (dwfl_module_addrdie)
 INTDECL (dwfl_module_address_section)
+INTDECL (dwfl_module_addrinfo)
 INTDECL (dwfl_module_addrsym)
-INTDECL (dwfl_module_addrsym_elf)
 INTDECL (dwfl_module_build_id)
 INTDECL (dwfl_module_getdwarf)
 INTDECL (dwfl_module_getelf)
 INTDECL (dwfl_module_getsym)
-INTDECL (dwfl_module_getsym_elf)
+INTDECL (dwfl_module_getsym_info)
 INTDECL (dwfl_module_getsymtab)
 INTDECL (dwfl_module_getsymtab_first_global)
 INTDECL (dwfl_module_getsrc)
diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index a27de82..b1d49dc 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -1,3 +1,12 @@
+2013-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (gen_SOURCES): Add eblresolvesym.c.
+	* ebl-hooks.h (resolve_sym_value): New entry.
+	* eblresolvesym.c: New file.
+	* libebl.h (ebl_resolve_sym_value): New definition.
+	* libeblP.h (fd_addr): New field.
+	(fd_data): Likewise.
+
 2013-12-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	unwinder: ppc and ppc64
diff --git a/libebl/Makefile.am b/libebl/Makefile.am
index 2f3b730..b113f9c 100644
--- a/libebl/Makefile.am
+++ b/libebl/Makefile.am
@@ -54,7 +54,7 @@ gen_SOURCES = eblopenbackend.c eblclosebackend.c eblstrtab.c \
 	      eblreginfo.c eblnonerelocp.c eblrelativerelocp.c \
 	      eblsysvhashentrysize.c eblauxvinfo.c eblcheckobjattr.c \
 	      ebl_check_special_section.c ebl_syscall_abi.c eblabicfi.c \
-	      eblstother.c eblinitreg.c ebldwarftoregno.c
+	      eblstother.c eblinitreg.c ebldwarftoregno.c eblresolvesym.c
 
 libebl_a_SOURCES = $(gen_SOURCES)
 
diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h
index f721bc4..02313f8 100644
--- a/libebl/ebl-hooks.h
+++ b/libebl/ebl-hooks.h
@@ -166,5 +166,10 @@ bool EBLHOOK(set_initial_registers_tid) (pid_t tid,
    Dwarf_Frame->REGS indexing.  */
 bool EBLHOOK(dwarf_to_regno) (Ebl *ebl, unsigned *regno);
 
+/* Returns true if the value can be resolved to an address in an
+   allocated section, which will be returned in *SHNDXP.
+   (e.g. function descriptor resolving)  */
+bool EBLHOOK(resolve_sym_value) (Ebl *ebl, GElf_Addr *addr);
+
 /* Destructor for ELF backend handle.  */
 void EBLHOOK(destr) (struct ebl *);
diff --git a/libdwfl/dwfl_module_addrname.c b/libebl/eblresolvesym.c
similarity index 72%
copy from libdwfl/dwfl_module_addrname.c
copy to libebl/eblresolvesym.c
index 6ae0123..470f6f0 100644
--- a/libdwfl/dwfl_module_addrname.c
+++ b/libebl/eblresolvesym.c
@@ -1,5 +1,5 @@
-/* Find debugging and symbol information for a module in libdwfl.
-   Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+/* Resolve a symbol value to an allocated section of the Elf file.
+   Copyright (C) 2013 Red Hat, Inc.
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -26,11 +26,18 @@
    the GNU Lesser General Public License along with this program.  If
    not, see <http://www.gnu.org/licenses/>.  */
 
-#include "libdwflP.h"
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
 
-const char *
-dwfl_module_addrname (Dwfl_Module *mod, GElf_Addr addr)
+#include <libeblP.h>
+#include <assert.h>
+
+bool
+ebl_resolve_sym_value (Ebl *ebl, GElf_Addr *addr)
 {
-  GElf_Sym sym;
-  return INTUSE(dwfl_module_addrsym) (mod, addr, &sym, NULL);
+  if (ebl == NULL || ebl->resolve_sym_value == NULL)
+    return false;
+
+  return ebl->resolve_sym_value (ebl, addr);
 }
diff --git a/libebl/libebl.h b/libebl/libebl.h
index 7080b4a..fc38495 100644
--- a/libebl/libebl.h
+++ b/libebl/libebl.h
@@ -410,6 +410,12 @@ extern size_t ebl_frame_nregs (Ebl *ebl)
 extern bool ebl_dwarf_to_regno (Ebl *ebl, unsigned *regno)
   __nonnull_attribute__ (1, 2);
 
+/* Returns true if the value can be resolved to an address in an
+   allocated section, which will be returned in *ADDR
+   (e.g. function descriptor resolving)  */
+extern bool ebl_resolve_sym_value (Ebl *ebl, GElf_Addr *addr)
+   __nonnull_attribute__ (2);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/libebl/libeblP.h b/libebl/libeblP.h
index 4f4137d..f91c2a0 100644
--- a/libebl/libeblP.h
+++ b/libebl/libeblP.h
@@ -64,6 +64,11 @@ struct ebl
      Ebl architecture can unwind iff FRAME_NREGS > 0.  */
   size_t frame_nregs;
 
+  /* Function descriptor load address and table as used by
+     ebl_resolve_sym_value if available for this arch.  */
+  GElf_Addr fd_addr;
+  Elf_Data *fd_data;
+
   /* Internal data.  */
   void *dlhandle;
 };
diff --git a/src/ChangeLog b/src/ChangeLog
index f899858..16bef2d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,15 @@
+2013-12-18  Mark Wielaard  <mjw@redhat.com>
+
+	* addr2line.c (options): Add symbol-sections, 'x'.
+	(show_symbol_sections): New static bool.
+	(parse_opt): Handle 'x'.
+	(print_addrsym): Use dwfl_module_addrinfo value.r
+	Also show section of address with show_symbol_sections.
+	(find_symbol): Use dwfl_module_getsym_info and set value.
+	(handle_address): Request value and use it instead of sym.st_value.
+	* readelf.c (format_dwarf_addr): Use dwfl_module_addrinfo to get
+	name and offset.
+
 2013-11-25  Petr Machata  <pmachata@redhat.com>
 
 	* elflint.c (valid_e_machine): Add EM_AARCH64.
diff --git a/src/addr2line.c b/src/addr2line.c
index 82e80b1..0541fb6 100644
--- a/src/addr2line.c
+++ b/src/addr2line.c
@@ -61,6 +61,7 @@ static const struct argp_option options[] =
     N_("Show absolute file names using compilation directory"), 0 },
   { "functions", 'f', NULL, 0, N_("Also show function names"), 0 },
   { "symbols", 'S', NULL, 0, N_("Also show symbol or section names"), 0 },
+  { "symbols-sections", 'x', NULL, 0, N_("Also show symbol and the section names"), 0 },
   { "flags", 'F', NULL, 0, N_("Also show line table flags"), 0 },
   { "section", 'j', "NAME", 0,
     N_("Treat addresses as offsets relative to NAME section."), 0 },
@@ -114,6 +115,9 @@ static bool show_functions;
 /* True if ELF symbol or section info should be shown.  */
 static bool show_symbols;
 
+/* True if section associated with a symbol address should be shown.  */
+static bool show_symbol_sections;
+
 /* If non-null, take address parameters as relative to named section.  */
 static const char *just_section;
 
@@ -234,6 +238,11 @@ parse_opt (int key, char *arg, struct argp_state *state)
       show_symbols = true;
       break;
 
+    case 'x':
+      show_symbols = true;
+      show_symbol_sections = true;
+      break;
+
     case 'j':
       just_section = arg;
       break;
@@ -342,8 +351,9 @@ static void
 print_addrsym (Dwfl_Module *mod, GElf_Addr addr)
 {
   GElf_Sym s;
-  GElf_Word shndx;
-  const char *name = dwfl_module_addrsym (mod, addr, &s, &shndx);
+  GElf_Off off;
+  const char *name = dwfl_module_addrinfo (mod, addr, &off, &s,
+					   NULL, NULL, NULL);
   if (name == NULL)
     {
       /* No symbol name.  Get a section name instead.  */
@@ -355,10 +365,34 @@ print_addrsym (Dwfl_Module *mod, GElf_Addr addr)
       else
 	printf ("(%s)+%#" PRIx64 "\n", name, addr);
     }
-  else if (addr == s.st_value)
-    puts (name);
   else
-    printf ("%s+%#" PRIx64 "\n", name, addr - s.st_value);
+    {
+      if (off == 0)
+	printf ("%s", name);
+      else
+	printf ("%s+%#" PRIx64 "", name, off);
+
+      // Also show section name for address.
+      if (show_symbol_sections)
+	{
+	  Dwarf_Addr ebias;
+	  Elf_Scn *scn = dwfl_module_address_section (mod, &addr, &ebias);
+	  if (scn != NULL)
+	    {
+	      GElf_Shdr shdr_mem;
+	      GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+	      if (shdr != NULL)
+		{
+		  Elf *elf = dwfl_module_getelf (mod, &ebias);
+		  GElf_Ehdr ehdr;
+		  if (gelf_getehdr (elf, &ehdr) != NULL)
+		    printf (" (%s)", elf_strptr (elf, ehdr.e_shstrndx,
+						 shdr->sh_name));
+		}
+	    }
+	}
+      puts ("");
+    }
 }
 
 static void
@@ -401,11 +435,14 @@ find_symbol (Dwfl_Module *mod,
 {
   const char *looking_for = ((void **) arg)[0];
   GElf_Sym *symbol = ((void **) arg)[1];
+  GElf_Addr *value = ((void **) arg)[2];
 
   int n = dwfl_module_getsymtab (mod);
   for (int i = 1; i < n; ++i)
     {
-      const char *symbol_name = dwfl_module_getsym (mod, i, symbol, NULL);
+      const char *symbol_name = dwfl_module_getsym_info (mod, i, symbol,
+							 value, NULL, NULL,
+							 NULL);
       if (symbol_name == NULL || symbol_name[0] == '\0')
 	continue;
       switch (GELF_ST_TYPE (symbol->st_info))
@@ -519,7 +556,8 @@ handle_address (const char *string, Dwfl *dwfl)
 
 	  /* It was symbol[+offset].  */
 	  GElf_Sym sym;
-	  void *arg[2] = { name, &sym };
+	  GElf_Addr value = 0;
+	  void *arg[3] = { name, &sym, &value };
 	  (void) dwfl_getmodules (dwfl, &find_symbol, arg, 0);
 	  if (arg[0] != NULL)
 	    error (0, 0, gettext ("cannot find symbol '%s'"), name);
@@ -530,7 +568,7 @@ handle_address (const char *string, Dwfl *dwfl)
 		       gettext ("offset %#" PRIxMAX " lies outside"
 				" contents of '%s'"),
 		       addr, name);
-	      addr += sym.st_value;
+	      addr += value;
 	      parsed = true;
 	    }
 	  break;
diff --git a/src/readelf.c b/src/readelf.c
index 7ed9f4a..739156c 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -3290,10 +3290,10 @@ format_dwarf_addr (Dwfl_Module *dwflmod,
 {
   /* See if there is a name we can give for this address.  */
   GElf_Sym sym;
+  GElf_Off off = 0;
   const char *name = (print_address_names && ! print_unresolved_addresses)
-    ? dwfl_module_addrsym (dwflmod, address, &sym, NULL) : NULL;
-  if (name != NULL)
-    sym.st_value = address - sym.st_value;
+    ? dwfl_module_addrinfo (dwflmod, address, &off, &sym, NULL, NULL, NULL)
+    : NULL;
 
   const char *scn;
   if (print_unresolved_addresses)
@@ -3314,24 +3314,24 @@ format_dwarf_addr (Dwfl_Module *dwflmod,
 
   char *result;
   if ((name != NULL
-       ? (sym.st_value != 0
+       ? (off != 0
 	  ? (scn != NULL
 	     ? (address_size == 0
 		? asprintf (&result,
 			    gettext ("%s+%#" PRIx64 " <%s+%#" PRIx64 ">"),
-			    scn, address, name, sym.st_value)
+			    scn, address, name, off)
 		: asprintf (&result,
 			    gettext ("%s+%#0*" PRIx64 " <%s+%#" PRIx64 ">"),
 			    scn, 2 + address_size * 2, address,
-			    name, sym.st_value))
+			    name, off))
 	     : (address_size == 0
 		? asprintf (&result,
 			    gettext ("%#" PRIx64 " <%s+%#" PRIx64 ">"),
-			    address, name, sym.st_value)
+			    address, name, off)
 		: asprintf (&result,
 			    gettext ("%#0*" PRIx64 " <%s+%#" PRIx64 ">"),
 			    2 + address_size * 2, address,
-			    name, sym.st_value)))
+			    name, off)))
 	  : (scn != NULL
 	     ? (address_size == 0
 		? asprintf (&result,
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 61c4b84..9eba8dc 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,25 @@
+2013-12-18  Jan Kratochvil  <jan.kratochvil@redhat.com>
+	    Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (EXTRA_DIST): Add testfile66.bz2, testfile66.core.bz2
+	and testfilebaz*ppc64*.bz2 files.
+	* dwflsyms.c (list_syms): Remove unused from parameter mod_name.  Print
+	error on dwfl_module_getsymtab error.
+	(list_syms): Use dwfl_module_getsym and dwfl_module_getsym_info.
+	Compare values for non-ET_REL. Use dwfl_module_addrinfo.
+	Also print section of actual value if different from sym.
+	* run-addrname-test.sh (testfile66, testfile66.core): New tests.
+	Test addr2line -x by showing different sections for address and
+	found name in testfile66.
+	* run-dwflsyms.sh (testfile66, testfile66.core, hello_ppc64.ko,
+	testfilebaz*ppc64): New tests.
+	* testfile66.bz2, testfile66.core.bz2, testfilebazdbgppc64.bz2,
+	testfilebazdbgppc64.debug.bz2, testfilebazdbgppc64_pl.bz2,
+	testfilebazdbgppc64_plr.bz2, testfilebazdynppc64.bz2,
+	testfilebazmdbppc64.bz2, testfilebazminppc64.bz2,
+	testfilebazminppc64_pl.bz2, testfilebazminppc64_plr.bz2,
+	testfilebaztabppc64.bz2: New test files.
+
 2013-12-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* backtrace-dwarf.c (executable, find_elf, dwfl_offline): Remove unused
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7739623..5c3a1c5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -212,6 +212,11 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
 	     testfilebaztab.bz2 testfilebasmin.bz2 \
 	     testfilebazdbg_pl.bz2 testfilebazmin_pl.bz2 \
 	     testfilebazdbg_plr.bz2 testfilebazmin_plr.bz2 \
+	     testfilebazdbgppc64.bz2 testfilebazdbgppc64.debug.bz2 \
+	     testfilebazdbgppc64_pl.bz2 testfilebazdbgppc64_plr.bz2 \
+	     testfilebazdynppc64.bz2 testfilebazmdbppc64.bz2 \
+	     testfilebazminppc64.bz2 testfilebazminppc64_pl.bz2 \
+	     testfilebazminppc64_plr.bz2 testfilebaztabppc64.bz2 \
 	     run-dwflsyms.sh \
 	     run-unstrip-n.sh testcore-rtlib.bz2 testcore-rtlib-ppc.bz2 \
 	     run-low_high_pc.sh testfile_low_high_pc.bz2 \
@@ -247,7 +252,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
 	     backtrace-subr.sh backtrace.i386.core.bz2 backtrace.i386.exec.bz2 \
 	     backtrace.x86_64.core.bz2 backtrace.x86_64.exec.bz2 \
 	     backtrace.ppc.core.bz2 backtrace.ppc.exec.bz2 \
-	     run-backtrace-core-ppc.sh
+	     run-backtrace-core-ppc.sh testfile66.bz2 testfile66.core.bz2
 
 if USE_VALGRIND
 valgrind_cmd='valgrind -q --error-exitcode=1 --run-libc-freeres=no'
diff --git a/tests/dwflsyms.c b/tests/dwflsyms.c
index 10c01f1..49ac334 100644
--- a/tests/dwflsyms.c
+++ b/tests/dwflsyms.c
@@ -106,13 +106,16 @@ addr_in_section (Elf *elf, GElf_Word shndx, GElf_Addr addr)
 
 static int
 list_syms (struct Dwfl_Module *mod,
-	   void **user __attribute__ ((unused)),
-	   const char *mod_name __attribute__ ((unused)),
+	   void **user __attribute__ ((unused)), const char *mod_name,
 	   Dwarf_Addr low_addr __attribute__ ((unused)),
 	   void *arg __attribute__ ((unused)))
 {
   int syms = dwfl_module_getsymtab (mod);
-  assert (syms >= 0);
+  if (syms < 0)
+    {
+      printf ("%s: %s\n", mod_name, dwfl_errmsg (-1));
+      return DWARF_CB_OK;
+    }
 
   for (int ndx = 0; ndx < syms; ndx++)
     {
@@ -120,12 +123,28 @@ list_syms (struct Dwfl_Module *mod,
       GElf_Word shndxp;
       Elf *elf;
       Dwarf_Addr bias;
-      const char *name = dwfl_module_getsym_elf (mod, ndx, &sym, &shndxp,
-						 &elf, &bias);
+      const char *name = dwfl_module_getsym (mod, ndx, &sym, &shndxp);
+
       printf("%4d: %s\t%s\t%s (%" PRIu64 ") %#" PRIx64,
 	     ndx, gelf_type (&sym), gelf_bind (&sym), name,
 	     sym.st_size, sym.st_value);
 
+      /* The info variant doesn't adjust st_value but returns the (possible)
+	 adjusted value separately. */
+      GElf_Addr value;
+      GElf_Sym isym;
+      name = dwfl_module_getsym_info (mod, ndx, &isym, &value, &shndxp,
+				      &elf, &bias);
+
+      GElf_Ehdr ehdr;
+      gelf_getehdr (elf, &ehdr);
+
+      // getsym st_values might or might not be adjusted depending on section.
+      // For ET_REL the adjustment is section relative.
+      assert (sym.st_value == isym.st_value
+	      || sym.st_value == isym.st_value + bias
+	      || ehdr.e_type == ET_REL);
+
       /* And the reverse, which works for function symbols at least.
 	 Note this only works because the st.value is adjusted by
 	 dwfl_module_getsym ().  */
@@ -134,24 +153,27 @@ list_syms (struct Dwfl_Module *mod,
 	  /* Make sure the adjusted value really falls in the elf section. */
           assert (addr_in_section (elf, shndxp, sym.st_value - bias));
 
-	  GElf_Addr addr = sym.st_value;
+	  GElf_Addr addr = value;
 	  GElf_Sym asym;
 	  GElf_Word ashndxp;
 	  Elf *aelf;
 	  Dwarf_Addr abias;
-	  const char *aname = dwfl_module_addrsym_elf (mod, addr, &asym,
-						       &ashndxp, &aelf, &abias);
+	  GElf_Off off;
+	  const char *aname = dwfl_module_addrinfo (mod, addr, &off, &asym,
+						    &ashndxp, &aelf, &abias);
 
 	  /* Make sure the adjusted value really falls in the elf section. */
-          assert (addr_in_section (aelf, ashndxp, asym.st_value - abias));
+          assert (addr_in_section (aelf, ashndxp, asym.st_value)
+		  || ehdr.e_type == ET_REL);
 
 	  /* Either they are the same symbol (name), the binding of
 	     asym is "stronger" (or equal) to sym or asym is more specific
 	     (has a lower address) than sym.  */
 	  assert ((strcmp (name, aname) == 0
 		   || gelf_bind_order (&asym) >= gelf_bind_order (&sym))
-		  && asym.st_value <= sym.st_value);
+		  && value <= sym.st_value);
 
+	  addr = sym.st_value;
 	  int res = dwfl_module_relocate_address (mod, &addr);
 	  assert (res != -1);
 	  if (shndxp < SHN_LORESERVE)
@@ -159,6 +181,23 @@ list_syms (struct Dwfl_Module *mod,
 		   elf_section_name (elf, shndxp));
 	  else
 	    printf(", rel: %#" PRIx64 "", addr);
+
+	  /* Print the section of the actual value if different from sym.  */
+	  if (value != isym.st_value + bias && ehdr.e_type != ET_REL)
+	    {
+	      GElf_Addr ebias;
+	      addr = value;
+	      Elf_Scn *scn = dwfl_module_address_section (mod, &addr, &ebias);
+	      GElf_Shdr shdr_mem;
+	      GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+	      Elf *melf = dwfl_module_getelf (mod, &ebias);
+	      gelf_getehdr (melf, &ehdr);
+	      const char *sname = elf_strptr (melf, ehdr.e_shstrndx,
+					      shdr->sh_name);
+	      printf (" [%#" PRIx64 ", rel: %#" PRIx64 " (%s)]",
+		      value, addr, sname);
+	    }
+
 	}
       printf ("\n");
     }
diff --git a/tests/run-addrname-test.sh b/tests/run-addrname-test.sh
index 8624074..f954ee4 100755
--- a/tests/run-addrname-test.sh
+++ b/tests/run-addrname-test.sh
@@ -298,6 +298,41 @@ __vdso_time
 ??:0
 EOF
 
+#	.section	".text"
+#	.globl _start
+#	.section	".opd","aw"
+#_start:	.quad	.L._start,.TOC.@tocbase
+#	.previous
+#	.type	_start, @function
+#.L._start:
+#	.byte	0x7d, 0x82, 0x10, 0x08
+#	.size	_start,.-.L._start
+testfiles testfile66 testfile66.core
+testrun_compare ${abs_top_builddir}/src/addr2line -x -e testfile66 _start 0x2d8 0x2db 0x2dc 0x103d0 0x103d3 0x103d4<<EOF
+_start (.text)
+??:0
+_start (.text)
+??:0
+_start+0x3 (.text)
+??:0
+()+0x2dc
+??:0
+_start (.opd)
+??:0
+_start+0x3 (.opd)
+??:0
+()+0x103d4
+??:0
+EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -x -e testfile66 --core=testfile66.core _start 0x461b02d8 0x461c03d0<<\EOF
+_start (.text)
+??:0
+_start (.text)
+??:0
+_start (.opd)
+??:0
+EOF
+
 testfiles testfile69.core testfile69.so
 testrun_compare ${abs_top_builddir}/src/addr2line --core=./testfile69.core -S 0x7f0bc6a33535 0x7f0bc6a33546 <<\EOF
 libstatic+0x9
diff --git a/tests/run-dwflsyms.sh b/tests/run-dwflsyms.sh
index 3cd7bf3..452b961 100755
--- a/tests/run-dwflsyms.sh
+++ b/tests/run-dwflsyms.sh
@@ -362,4 +362,417 @@ testrun_compare ${abs_builddir}/dwflsyms -e testfilebasmin <<\EOF
    8: FUNC	GLOBAL	bar (44) 0x40017a, rel: 0x40017a (.text)
 EOF
 
+testfiles testfile66
+testrun_compare ${abs_builddir}/dwflsyms -e testfile66 <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0x190
+   2: SECTION	LOCAL	 (0) 0x1a4
+   3: SECTION	LOCAL	 (0) 0x1c8
+   4: SECTION	LOCAL	 (0) 0x1f8
+   5: SECTION	LOCAL	 (0) 0x288
+   6: SECTION	LOCAL	 (0) 0x2a8
+   7: SECTION	LOCAL	 (0) 0x2d8
+   8: SECTION	LOCAL	 (0) 0x102e0
+   9: SECTION	LOCAL	 (0) 0x103d0
+  10: SECTION	LOCAL	 (0) 0x103e8
+  11: SECTION	LOCAL	 (0) 0x103e8
+  12: OBJECT	LOCAL	_DYNAMIC (0) 0x102e0
+  13: FUNC	GLOBAL	_start (4) 0x103d0, rel: 0x103d0 (.opd) [0x2d8, rel: 0 (.text)]
+  14: NOTYPE	GLOBAL	__bss_start (0) 0x103f0
+  15: NOTYPE	GLOBAL	_edata (0) 0x103f0
+  16: NOTYPE	GLOBAL	_end (0) 0x103f0
+EOF
+
+testfiles testfile66.core
+testrun_compare ${abs_builddir}/dwflsyms -e testfile66 --core=testfile66.core <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0xfffb1af0410
+   2: NOTYPE	GLOBAL	__kernel_datapage_offset (0) 0xfffb1af05dc
+   3: OBJECT	GLOBAL	LINUX_2.6.15 (0) 0
+   4: NOTYPE	GLOBAL	__kernel_clock_getres (64) 0xfffb1af052c
+   5: NOTYPE	GLOBAL	__kernel_get_tbfreq (24) 0xfffb1af0620
+   6: NOTYPE	GLOBAL	__kernel_gettimeofday (84) 0xfffb1af0440
+   7: NOTYPE	GLOBAL	__kernel_sync_dicache (20) 0xfffb1af06c4
+   8: NOTYPE	GLOBAL	__kernel_sync_dicache_p5 (20) 0xfffb1af06c4
+   9: NOTYPE	GLOBAL	__kernel_sigtramp_rt64 (12) 0xfffb1af0418
+  10: NOTYPE	GLOBAL	__kernel_clock_gettime (152) 0xfffb1af0494
+  11: NOTYPE	GLOBAL	__kernel_get_syscall_map (44) 0xfffb1af05f4
+ld64.so.1: Callback returned failure
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0x461b0190
+   2: SECTION	LOCAL	 (0) 0x461b01a4
+   3: SECTION	LOCAL	 (0) 0x461b01c8
+   4: SECTION	LOCAL	 (0) 0x461b01f8
+   5: SECTION	LOCAL	 (0) 0x461b0288
+   6: SECTION	LOCAL	 (0) 0x461b02a8
+   7: SECTION	LOCAL	 (0) 0x461b02d8
+   8: SECTION	LOCAL	 (0) 0x461c02e0
+   9: SECTION	LOCAL	 (0) 0x461c03d0
+  10: SECTION	LOCAL	 (0) 0x461c03e8
+  11: SECTION	LOCAL	 (0) 0x461c03e8
+  12: OBJECT	LOCAL	_DYNAMIC (0) 0x102e0
+  13: FUNC	GLOBAL	_start (4) 0x461c03d0, rel: 0x103d0 (.opd) [0x461b02d8, rel: 0 (.text)]
+  14: NOTYPE	GLOBAL	__bss_start (0) 0x103f0
+  15: NOTYPE	GLOBAL	_edata (0) 0x103f0
+  16: NOTYPE	GLOBAL	_end (0) 0x103f0
+EOF
+
+# Test the already present dot-prefixed names do not get duplicated.
+testfiles hello_ppc64.ko
+testrun_compare ${abs_builddir}/dwflsyms -e hello_ppc64.ko <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0
+   2: SECTION	LOCAL	 (0) 0x94
+   3: SECTION	LOCAL	 (0) 0xba
+   4: SECTION	LOCAL	 (0) 0xd0
+   5: SECTION	LOCAL	 (0) 0x13a
+   6: SECTION	LOCAL	 (0) 0x13a
+   7: SECTION	LOCAL	 (0) 0x150
+   8: SECTION	LOCAL	 (0) 0x170
+   9: SECTION	LOCAL	 (0) 0x188
+  10: SECTION	LOCAL	 (0) 0x410
+  11: SECTION	LOCAL	 (0) 0x434
+  12: SECTION	LOCAL	 (0) 0x438
+  13: SECTION	LOCAL	 (0) 0x438
+  14: SECTION	LOCAL	 (0) 0
+  15: SECTION	LOCAL	 (0) 0
+  16: SECTION	LOCAL	 (0) 0
+  17: SECTION	LOCAL	 (0) 0
+  18: SECTION	LOCAL	 (0) 0
+  19: SECTION	LOCAL	 (0) 0
+  20: SECTION	LOCAL	 (0) 0
+  21: SECTION	LOCAL	 (0) 0
+  22: SECTION	LOCAL	 (0) 0
+  23: SECTION	LOCAL	 (0) 0
+  24: FILE	LOCAL	init.c (0) 0
+  25: FILE	LOCAL	exit.c (0) 0
+  26: FILE	LOCAL	hello.mod.c (0) 0
+  27: OBJECT	LOCAL	__mod_srcversion23 (35) 0xd0
+  28: OBJECT	LOCAL	__module_depends (9) 0xf8
+  29: OBJECT	LOCAL	__mod_vermagic5 (50) 0x108
+  30: OBJECT	GLOBAL	__this_module (648) 0x188
+  31: FUNC	GLOBAL	.cleanup_module (72) 0x4c, rel: 0x4c (.text)
+  32: FUNC	GLOBAL	cleanup_module (24) 0x160, rel: 0x10 (.opd)
+  33: NOTYPE	GLOBAL	.printk (0) 0
+  34: FUNC	GLOBAL	init_module (24) 0x150, rel: 0 (.opd)
+  35: NOTYPE	GLOBAL	._mcount (0) 0
+  36: FUNC	GLOBAL	.init_module (76) 0, rel: 0 (.text)
+  37: NOTYPE	GLOBAL	_mcount (0) 0
+EOF
+
+# Same test files as above, but now generated on ppc64.
+# ppc64 uses function descriptors to make things more "interesting".
+
+testfiles testfilebaztabppc64
+testfiles testfilebazdbgppc64 testfilebazdbgppc64.debug
+testfiles testfilebazdbgppc64_pl
+testfiles testfilebazdbgppc64_plr
+testfiles testfilebazdynppc64
+testfiles testfilebazmdbppc64
+testfiles testfilebazminppc64
+testfiles testfilebazminppc64_pl
+testfiles testfilebazminppc64_plr
+
+cat > testfile.symtab.in <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0x238
+   2: SECTION	LOCAL	 (0) 0x24c
+   3: SECTION	LOCAL	 (0) 0x26c
+   4: SECTION	LOCAL	 (0) 0x290
+   5: SECTION	LOCAL	 (0) 0x2c0
+   6: SECTION	LOCAL	 (0) 0x3e0
+   7: SECTION	LOCAL	 (0) 0x488
+   8: SECTION	LOCAL	 (0) 0x4a0
+   9: SECTION	LOCAL	 (0) 0x4c0
+  10: SECTION	LOCAL	 (0) 0x820
+  11: SECTION	LOCAL	 (0) 0x850
+  12: SECTION	LOCAL	 (0) 0x8a0
+  13: SECTION	LOCAL	 (0) 0xd30
+  14: SECTION	LOCAL	 (0) 0xd4c
+  15: SECTION	LOCAL	 (0) 0xd50
+  16: SECTION	LOCAL	 (0) 0xd70
+  17: SECTION	LOCAL	 (0) 0x1fde0
+  18: SECTION	LOCAL	 (0) 0x1fde8
+  19: SECTION	LOCAL	 (0) 0x1fdf0
+  20: SECTION	LOCAL	 (0) 0x1fdf8
+  21: SECTION	LOCAL	 (0) 0x1fe20
+  22: SECTION	LOCAL	 (0) 0x20000
+  23: SECTION	LOCAL	 (0) 0x20010
+  24: SECTION	LOCAL	 (0) 0x200d8
+  25: SECTION	LOCAL	 (0) 0x20110
+  26: SECTION	LOCAL	 (0) 0x20158
+  27: SECTION	LOCAL	 (0) 0
+  28: SECTION	LOCAL	 (0) 0
+  29: SECTION	LOCAL	 (0) 0
+  30: SECTION	LOCAL	 (0) 0
+  31: SECTION	LOCAL	 (0) 0
+  32: SECTION	LOCAL	 (0) 0
+  33: SECTION	LOCAL	 (0) 0
+  34: FILE	LOCAL	crtstuff.c (0) 0
+  35: OBJECT	LOCAL	__JCR_LIST__ (0) 0x1fdf0
+  36: FUNC	LOCAL	deregister_tm_clones (0) 0x20040, rel: 0x20040 (.opd) [0x910, rel: 0x70 (.text)]
+  37: FUNC	LOCAL	register_tm_clones (0) 0x20050, rel: 0x20050 (.opd) [0x980, rel: 0xe0 (.text)]
+  38: FUNC	LOCAL	__do_global_dtors_aux (0) 0x20060, rel: 0x20060 (.opd) [0x9f0, rel: 0x150 (.text)]
+  39: OBJECT	LOCAL	completed.7711 (1) 0x20158
+  40: OBJECT	LOCAL	__do_global_dtors_aux_fini_array_entry (0) 0x1fde8
+  41: FUNC	LOCAL	frame_dummy (0) 0x20070, rel: 0x20070 (.opd) [0xa50, rel: 0x1b0 (.text)]
+  42: OBJECT	LOCAL	__frame_dummy_init_array_entry (0) 0x1fde0
+  43: FILE	LOCAL	foo.c (0) 0
+  44: FILE	LOCAL	bar.c (0) 0
+  45: OBJECT	LOCAL	b1 (4) 0x20004
+  46: FUNC	LOCAL	foo (76) 0x20090, rel: 0x20090 (.opd) [0xb34, rel: 0x294 (.text)]
+  47: FILE	LOCAL	crtstuff.c (0) 0
+  48: OBJECT	LOCAL	__FRAME_END__ (0) 0xe18
+  49: OBJECT	LOCAL	__JCR_END__ (0) 0x1fdf0
+  50: FILE	LOCAL	 (0) 0
+  51: NOTYPE	LOCAL	__glink_PLTresolve (0) 0xce8
+  52: NOTYPE	LOCAL	00000011.plt_call.__libc_start_main@@GLIBC_2.3 (0) 0x8a0
+  53: NOTYPE	LOCAL	00000011.plt_call.__cxa_finalize@@GLIBC_2.3 (0) 0x8b4
+  54: NOTYPE	LOCAL	__init_array_end (0) 0x1fde8
+  55: OBJECT	LOCAL	_DYNAMIC (0) 0x1fe20
+  56: NOTYPE	LOCAL	__init_array_start (0) 0x1fde0
+  57: FUNC	GLOBAL	__libc_csu_fini (16) 0x200c0, rel: 0x200c0 (.opd) [0xcd0, rel: 0x430 (.text)]
+  58: FUNC	GLOBAL	__libc_start_main@@GLIBC_2.3 (0) 0
+  59: NOTYPE	WEAK	_ITM_deregisterTMCloneTable (0) 0
+  60: NOTYPE	WEAK	data_start (0) 0x20000
+  61: NOTYPE	GLOBAL	_edata (0) 0x20110
+  62: FUNC	GLOBAL	bar (116) 0x200a0, rel: 0x200a0 (.opd) [0xb80, rel: 0x2e0 (.text)]
+  63: FUNC	GLOBAL	_fini (0) 0x20030, rel: 0x20030 (.opd) [0xd30, rel: 0 (.fini)]
+  64: NOTYPE	GLOBAL	__data_start (0) 0x20000
+  65: NOTYPE	WEAK	__gmon_start__ (0) 0
+  66: OBJECT	GLOBAL	__dso_handle (0) 0x1fe18
+  67: OBJECT	GLOBAL	_IO_stdin_used (4) 0xd4c
+  68: OBJECT	GLOBAL	b2 (4) 0x20008
+  69: FUNC	WEAK	__cxa_finalize@@GLIBC_2.3 (0) 0
+  70: FUNC	GLOBAL	__libc_csu_init (204) 0x200b0, rel: 0x200b0 (.opd) [0xc00, rel: 0x360 (.text)]
+  71: NOTYPE	GLOBAL	_end (0) 0x20160
+  72: FUNC	GLOBAL	_start (60) 0x20010, rel: 0x20010 (.opd) [0x8c8, rel: 0x28 (.text)]
+  73: NOTYPE	GLOBAL	__bss_start (0) 0x20110
+  74: FUNC	GLOBAL	main (128) 0x20080, rel: 0x20080 (.opd) [0xab4, rel: 0x214 (.text)]
+  75: NOTYPE	WEAK	_Jv_RegisterClasses (0) 0
+  76: OBJECT	GLOBAL	__TMC_END__ (0) 0x20010
+  77: NOTYPE	WEAK	_ITM_registerTMCloneTable (0) 0
+  78: FUNC	GLOBAL	_init (0) 0x20020, rel: 0x20020 (.opd) [0x850, rel: 0 (.init)]
+EOF
+
+cat > testfile.symtab_pl.in <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0x8001000238
+   2: SECTION	LOCAL	 (0) 0x800100024c
+   3: SECTION	LOCAL	 (0) 0x800100026c
+   4: SECTION	LOCAL	 (0) 0x8001000290
+   5: SECTION	LOCAL	 (0) 0x80010002c0
+   6: SECTION	LOCAL	 (0) 0x80010003e0
+   7: SECTION	LOCAL	 (0) 0x8001000488
+   8: SECTION	LOCAL	 (0) 0x80010004a0
+   9: SECTION	LOCAL	 (0) 0x80010004c0
+  10: SECTION	LOCAL	 (0) 0x8001000820
+  11: SECTION	LOCAL	 (0) 0x8001000850
+  12: SECTION	LOCAL	 (0) 0x80010008a0
+  13: SECTION	LOCAL	 (0) 0x8001000d30
+  14: SECTION	LOCAL	 (0) 0x8001000d4c
+  15: SECTION	LOCAL	 (0) 0x8001000d50
+  16: SECTION	LOCAL	 (0) 0x8001000d70
+  17: SECTION	LOCAL	 (0) 0x800101fde0
+  18: SECTION	LOCAL	 (0) 0x800101fde8
+  19: SECTION	LOCAL	 (0) 0x800101fdf0
+  20: SECTION	LOCAL	 (0) 0x800101fdf8
+  21: SECTION	LOCAL	 (0) 0x800101fe20
+  22: SECTION	LOCAL	 (0) 0x8001020000
+  23: SECTION	LOCAL	 (0) 0x8001020010
+  24: SECTION	LOCAL	 (0) 0x80010200d8
+  25: SECTION	LOCAL	 (0) 0x8001020110
+  26: SECTION	LOCAL	 (0) 0x8001020158
+  27: SECTION	LOCAL	 (0) 0
+  28: SECTION	LOCAL	 (0) 0
+  29: SECTION	LOCAL	 (0) 0
+  30: SECTION	LOCAL	 (0) 0
+  31: SECTION	LOCAL	 (0) 0
+  32: SECTION	LOCAL	 (0) 0
+  33: SECTION	LOCAL	 (0) 0
+  34: FILE	LOCAL	crtstuff.c (0) 0
+  35: OBJECT	LOCAL	__JCR_LIST__ (0) 0x800101fdf0
+  36: FUNC	LOCAL	deregister_tm_clones (0) 0x8001020040, rel: 0x20040 (.opd) [0x8001000910, rel: 0x70 (.text)]
+  37: FUNC	LOCAL	register_tm_clones (0) 0x8001020050, rel: 0x20050 (.opd) [0x8001000980, rel: 0xe0 (.text)]
+  38: FUNC	LOCAL	__do_global_dtors_aux (0) 0x8001020060, rel: 0x20060 (.opd) [0x80010009f0, rel: 0x150 (.text)]
+  39: OBJECT	LOCAL	completed.7711 (1) 0x8001020158
+  40: OBJECT	LOCAL	__do_global_dtors_aux_fini_array_entry (0) 0x800101fde8
+  41: FUNC	LOCAL	frame_dummy (0) 0x8001020070, rel: 0x20070 (.opd) [0x8001000a50, rel: 0x1b0 (.text)]
+  42: OBJECT	LOCAL	__frame_dummy_init_array_entry (0) 0x800101fde0
+  43: FILE	LOCAL	foo.c (0) 0
+  44: FILE	LOCAL	bar.c (0) 0
+  45: OBJECT	LOCAL	b1 (4) 0x8001020004
+  46: FUNC	LOCAL	foo (76) 0x8001020090, rel: 0x20090 (.opd) [0x8001000b34, rel: 0x294 (.text)]
+  47: FILE	LOCAL	crtstuff.c (0) 0
+  48: OBJECT	LOCAL	__FRAME_END__ (0) 0x8001000e18
+  49: OBJECT	LOCAL	__JCR_END__ (0) 0x800101fdf0
+  50: FILE	LOCAL	 (0) 0
+  51: NOTYPE	LOCAL	__glink_PLTresolve (0) 0x8001000ce8
+  52: NOTYPE	LOCAL	00000011.plt_call.__libc_start_main@@GLIBC_2.3 (0) 0x80010008a0
+  53: NOTYPE	LOCAL	00000011.plt_call.__cxa_finalize@@GLIBC_2.3 (0) 0x80010008b4
+  54: NOTYPE	LOCAL	__init_array_end (0) 0x800101fde8
+  55: OBJECT	LOCAL	_DYNAMIC (0) 0x800101fe20
+  56: NOTYPE	LOCAL	__init_array_start (0) 0x800101fde0
+  57: FUNC	GLOBAL	__libc_csu_fini (16) 0x80010200c0, rel: 0x200c0 (.opd) [0x8001000cd0, rel: 0x430 (.text)]
+  58: FUNC	GLOBAL	__libc_start_main@@GLIBC_2.3 (0) 0
+  59: NOTYPE	WEAK	_ITM_deregisterTMCloneTable (0) 0
+  60: NOTYPE	WEAK	data_start (0) 0x8001020000
+  61: NOTYPE	GLOBAL	_edata (0) 0x8001020110
+  62: FUNC	GLOBAL	bar (116) 0x80010200a0, rel: 0x200a0 (.opd) [0x8001000b80, rel: 0x2e0 (.text)]
+  63: FUNC	GLOBAL	_fini (0) 0x8001020030, rel: 0x20030 (.opd) [0x8001000d30, rel: 0 (.fini)]
+  64: NOTYPE	GLOBAL	__data_start (0) 0x8001020000
+  65: NOTYPE	WEAK	__gmon_start__ (0) 0
+  66: OBJECT	GLOBAL	__dso_handle (0) 0x800101fe18
+  67: OBJECT	GLOBAL	_IO_stdin_used (4) 0x8001000d4c
+  68: OBJECT	GLOBAL	b2 (4) 0x8001020008
+  69: FUNC	WEAK	__cxa_finalize@@GLIBC_2.3 (0) 0
+  70: FUNC	GLOBAL	__libc_csu_init (204) 0x80010200b0, rel: 0x200b0 (.opd) [0x8001000c00, rel: 0x360 (.text)]
+  71: NOTYPE	GLOBAL	_end (0) 0x8001020160
+  72: FUNC	GLOBAL	_start (60) 0x8001020010, rel: 0x20010 (.opd) [0x80010008c8, rel: 0x28 (.text)]
+  73: NOTYPE	GLOBAL	__bss_start (0) 0x8001020110
+  74: FUNC	GLOBAL	main (128) 0x8001020080, rel: 0x20080 (.opd) [0x8001000ab4, rel: 0x214 (.text)]
+  75: NOTYPE	WEAK	_Jv_RegisterClasses (0) 0
+  76: OBJECT	GLOBAL	__TMC_END__ (0) 0x8001020010
+  77: NOTYPE	WEAK	_ITM_registerTMCloneTable (0) 0
+  78: FUNC	GLOBAL	_init (0) 0x8001020020, rel: 0x20020 (.opd) [0x8001000850, rel: 0 (.init)]
+EOF
+
+cat > testfile.dynsym.in <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0x238
+   2: SECTION	LOCAL	 (0) 0x1fdf0
+   3: FUNC	GLOBAL	__libc_start_main (0) 0
+   4: NOTYPE	WEAK	_ITM_deregisterTMCloneTable (0) 0
+   5: NOTYPE	WEAK	__gmon_start__ (0) 0
+   6: FUNC	WEAK	__cxa_finalize (0) 0
+   7: NOTYPE	WEAK	_Jv_RegisterClasses (0) 0
+   8: NOTYPE	WEAK	_ITM_registerTMCloneTable (0) 0
+   9: NOTYPE	GLOBAL	_edata (0) 0x20110
+  10: NOTYPE	GLOBAL	_end (0) 0x20160
+  11: NOTYPE	GLOBAL	__bss_start (0) 0x20110
+EOF
+
+cat > testfile.minsym.in <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0x238
+   2: SECTION	LOCAL	 (0) 0x1fdf0
+   3: OBJECT	LOCAL	__do_global_dtors_aux_fini_array_entry (0) 0x1fde8
+   4: OBJECT	LOCAL	__frame_dummy_init_array_entry (0) 0x1fde0
+   5: NOTYPE	LOCAL	__glink_PLTresolve (0) 0xce8
+   6: NOTYPE	LOCAL	00000011.plt_call.__libc_start_main@@GLIBC_2.3 (0) 0x8a0
+   7: NOTYPE	LOCAL	00000011.plt_call.__cxa_finalize@@GLIBC_2.3 (0) 0x8b4
+   8: NOTYPE	LOCAL	__init_array_end (0) 0x1fde8
+   9: NOTYPE	LOCAL	__init_array_start (0) 0x1fde0
+  10: SECTION	LOCAL	 (0) 0x238
+  11: SECTION	LOCAL	 (0) 0x24c
+  12: SECTION	LOCAL	 (0) 0x26c
+  13: SECTION	LOCAL	 (0) 0x290
+  14: SECTION	LOCAL	 (0) 0x2c0
+  15: SECTION	LOCAL	 (0) 0x3e0
+  16: SECTION	LOCAL	 (0) 0x488
+  17: SECTION	LOCAL	 (0) 0x4a0
+  18: SECTION	LOCAL	 (0) 0x4c0
+  19: SECTION	LOCAL	 (0) 0x820
+  20: SECTION	LOCAL	 (0) 0x850
+  21: SECTION	LOCAL	 (0) 0x8a0
+  22: SECTION	LOCAL	 (0) 0xd30
+  23: SECTION	LOCAL	 (0) 0xd4c
+  24: SECTION	LOCAL	 (0) 0xd50
+  25: SECTION	LOCAL	 (0) 0xd70
+  26: SECTION	LOCAL	 (0) 0x1fde0
+  27: SECTION	LOCAL	 (0) 0x1fde8
+  28: SECTION	LOCAL	 (0) 0x1fdf0
+  29: SECTION	LOCAL	 (0) 0x1fdf8
+  30: SECTION	LOCAL	 (0) 0x1fe20
+  31: SECTION	LOCAL	 (0) 0x20000
+  32: SECTION	LOCAL	 (0) 0x20010
+  33: SECTION	LOCAL	 (0) 0x200d8
+  34: SECTION	LOCAL	 (0) 0x20110
+  35: SECTION	LOCAL	 (0) 0x20158
+  36: FUNC	GLOBAL	__libc_start_main (0) 0
+  37: NOTYPE	WEAK	_ITM_deregisterTMCloneTable (0) 0
+  38: NOTYPE	WEAK	__gmon_start__ (0) 0
+  39: FUNC	WEAK	__cxa_finalize (0) 0
+  40: NOTYPE	WEAK	_Jv_RegisterClasses (0) 0
+  41: NOTYPE	WEAK	_ITM_registerTMCloneTable (0) 0
+  42: NOTYPE	GLOBAL	_edata (0) 0x20110
+  43: NOTYPE	GLOBAL	_end (0) 0x20160
+  44: NOTYPE	GLOBAL	__bss_start (0) 0x20110
+EOF
+
+cat > testfile.minsym_pl.in <<\EOF
+   0: NOTYPE	LOCAL	 (0) 0
+   1: SECTION	LOCAL	 (0) 0x8001000238
+   2: SECTION	LOCAL	 (0) 0x800101fdf0
+   3: OBJECT	LOCAL	__do_global_dtors_aux_fini_array_entry (0) 0x800101fde8
+   4: OBJECT	LOCAL	__frame_dummy_init_array_entry (0) 0x800101fde0
+   5: NOTYPE	LOCAL	__glink_PLTresolve (0) 0x8001000ce8
+   6: NOTYPE	LOCAL	00000011.plt_call.__libc_start_main@@GLIBC_2.3 (0) 0x80010008a0
+   7: NOTYPE	LOCAL	00000011.plt_call.__cxa_finalize@@GLIBC_2.3 (0) 0x80010008b4
+   8: NOTYPE	LOCAL	__init_array_end (0) 0x800101fde8
+   9: NOTYPE	LOCAL	__init_array_start (0) 0x800101fde0
+  10: SECTION	LOCAL	 (0) 0x8001000238
+  11: SECTION	LOCAL	 (0) 0x800100024c
+  12: SECTION	LOCAL	 (0) 0x800100026c
+  13: SECTION	LOCAL	 (0) 0x8001000290
+  14: SECTION	LOCAL	 (0) 0x80010002c0
+  15: SECTION	LOCAL	 (0) 0x80010003e0
+  16: SECTION	LOCAL	 (0) 0x8001000488
+  17: SECTION	LOCAL	 (0) 0x80010004a0
+  18: SECTION	LOCAL	 (0) 0x80010004c0
+  19: SECTION	LOCAL	 (0) 0x8001000820
+  20: SECTION	LOCAL	 (0) 0x8001000850
+  21: SECTION	LOCAL	 (0) 0x80010008a0
+  22: SECTION	LOCAL	 (0) 0x8001000d30
+  23: SECTION	LOCAL	 (0) 0x8001000d4c
+  24: SECTION	LOCAL	 (0) 0x8001000d50
+  25: SECTION	LOCAL	 (0) 0x8001000d70
+  26: SECTION	LOCAL	 (0) 0x800101fde0
+  27: SECTION	LOCAL	 (0) 0x800101fde8
+  28: SECTION	LOCAL	 (0) 0x800101fdf0
+  29: SECTION	LOCAL	 (0) 0x800101fdf8
+  30: SECTION	LOCAL	 (0) 0x800101fe20
+  31: SECTION	LOCAL	 (0) 0x8001020000
+  32: SECTION	LOCAL	 (0) 0x8001020010
+  33: SECTION	LOCAL	 (0) 0x80010200d8
+  34: SECTION	LOCAL	 (0) 0x8001020110
+  35: SECTION	LOCAL	 (0) 0x8001020158
+  36: FUNC	GLOBAL	__libc_start_main (0) 0
+  37: NOTYPE	WEAK	_ITM_deregisterTMCloneTable (0) 0
+  38: NOTYPE	WEAK	__gmon_start__ (0) 0
+  39: FUNC	WEAK	__cxa_finalize (0) 0
+  40: NOTYPE	WEAK	_Jv_RegisterClasses (0) 0
+  41: NOTYPE	WEAK	_ITM_registerTMCloneTable (0) 0
+  42: NOTYPE	GLOBAL	_edata (0) 0x8001020110
+  43: NOTYPE	GLOBAL	_end (0) 0x8001020160
+  44: NOTYPE	GLOBAL	__bss_start (0) 0x8001020110
+EOF
+
+cat testfile.symtab.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebaztabppc64
+
+cat testfile.symtab.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdbgppc64
+
+cat testfile.symtab_pl.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdbgppc64_pl
+
+sed s/0x8001/0x4200/g testfile.symtab_pl.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdbgppc64_plr
+
+cat testfile.dynsym.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdynppc64
+
+cat testfile.symtab.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazmdbppc64
+
+cat testfile.minsym.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazminppc64
+
+cat testfile.minsym_pl.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazminppc64_pl
+
+sed s/0x8001/0x4200/g testfile.minsym_pl.in \
+  | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazminppc64_plr
+
 exit 0
diff --git a/tests/testfile66.bz2 b/tests/testfile66.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..4797590e2f4ad9e618de393bf498e76882eeecbb
GIT binary patch
literal 741
zcmV<B0vi27T4*^jL0KkKS!&pZ_5cGu|NsC0|9(uf<v@SuQgHs~{%4p&&`<<G00;m<
zLS#r}V`0DobvV$LL82sRWj!NLA{u%?^#A|>00003Mj`5HrqpO;dO&IrX&QP-=BAlO
zo}dp<X^;RK27mwn0MO7h(8vRT000^Q003wKpa2>G0B8UJ01_l3YM!T&00YVfk5B*y
zsA$ok&}aYv01X;6Jxv~8)y1h1g49BdEKx~7+h+t;QTG{U`f_MUC}2%iip2#LeH=}T
z>ZZZdMVrd9Z7C%onpDJh8if0G@v5$=Fura)i12QfYBP0Qm0vYStb{2{FPP+oF4~DJ
zB+xKhM7UcJ!G&mfgTNL!Lgi5E6p|4cnC&HYP}c!yy#6z{?WVd2O3hl==r1rchtJ{H
z!x0P+5S5NhNg1~_SrzPUUbK=H7K&={U@N6Jn~ZI(2-bMG^Pf5pmF8~R4o-dDG{LZ`
zzC<i>i34dQHj)9cHYUW{K-xzx2ux@MEXD|2##>}c8DBZ!IVtbbnCeCa+U>3cxRXpD
zGJ>$=v<T2<MJqf8a;HYxh9N=>3`(MNAe7t*6ehvBN<tTbf*}W)hGQs(%7TbG_qJ&o
ziHJ(2TN7i8?m}r@vKn-7(rvV)(1&(Ic+n%PI~u7XmO_(I;#txp!G2w`SZ;6U!p+Y1
zT2>u4v)+S?0R{jw2QH$CT@VQAq5D^rq~Z#RgqaDZN0A~SOq>?Oiw+0~MQzOlyFSbE
zr>e@)g+tlq1XWm`@@@}^#c)CkQ2s<b;qcctDiwPJY`gdF4yjr);xvXqP*quNkV#z2
zh{KO(NA0>iW~l^mI9EyxxH^FJ#C1%WcWs&3l-|6G)N(2i45(N(L`qb}i}3mh5EMSi
zCmtk4NMRYNDu@8W)|V!w!6$*QJsisrjCS-T`eLv@uy$Fpw3aG@ACLI}u}v78F=}KZ
XMJ*Sl22CbkU-5S&Q-uizt%z@6@PRxr

literal 0
HcmV?d00001

diff --git a/tests/testfile66.core.bz2 b/tests/testfile66.core.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..12e2d4442a18fe2d7074c79b365f1711a38b5dc4
GIT binary patch
literal 56448
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
Q<$wHL$rRy2L!*PWNFYxGr2qf`

literal 0
HcmV?d00001

diff --git a/tests/testfilebazdbgppc64.bz2 b/tests/testfilebazdbgppc64.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..17e77d6dfc8e706a4c9454406202d601ef6168a2
GIT binary patch
literal 2366
zcmV-E3BmS4T4*^jL0KkKSyM5_;{XcifB*mg|Ns4e|9}7gepLVe|9Agpa)0yWL~s1W
z&VT-F$M4_=u}0rry&V7=tKC#jThQ&by<w)J08=Nav?iLKp|njWlhIF27)?)83HnLm
zn<)Jhc_+0;sfnXTjXfjLG<r=vL(@<I1NBc(&<ub8$?7!IKtE9knG$48rY3}+iK(fw
zWet?m(ll(N(hW4w&;V!v00u)qXaE2J0B9Nw0002c0jZFU2~Sh>liH`K^*um(o791m
z)NM5efB*wcGzNo4BR~K&0000001W^D&;S4!p(<@7H9Z+MG-;ur$Qlg>Mu0K_pfUgr
zG6tFr4Kip3A)p3^hJXV=^#EvS88py9(8y?H8Z-kyX`?`CqY0460ANg+02(whGyq`@
z4H^Jw02%-?0j8M&paCKzLJX&=sp>q5y-0ePnE|8J0LU~NdP66u0BF(b8Vv@4k)QxH
z0MG%aqyRJk0iZNq5y)Q+t6W&@M%bqP^~O}IeIN`+9ZfM($Sl+jf-QlNc(|}I%HEb0
zh{(VcL0SPb^f}Zb>JAW7K$9mg3l}FKX_9F$12V%8*Ijkcb*I<K2hFzV(nM_tl=aaE
zPJFqB$wK?_6+FlE=v^s^G<kCWr&Ef!yi}VTNb{Xj0fI>+l1U_zRUYnCw;mwc+<pwZ
z7tS3b82?L*tmJ?XMjx80hp|@#!etcc=mmt)!K_o<!%|vM)6q=^s<Gr4uD*0wokeW*
z+0P?hfhkwH5Cm0GbR?#Bg{JOrJG0!t!d86NrqGdnan|Z<YFTgrA&V-JbcgoL#i&D*
zQwr$%t@2@isD6s*E*{Fdu3dPo*2^WwFsT+>)$qaFCY=EWHgOH2AQD1kiev}Q8Ld(+
zlkW^M(_vO#UcNRbm#%(bivn8%1kya?s@Q7$+;{?2B@qxJYi8N}+v-t8tNs4%#>Vb~
z#>(VrUSvoW=SFkvKrH{+eW|g;XRIWEIhKOXhgF~MWj(IDbrLl#h76<Cw1In!hB)tv
z`YkvdGVW_u5GU`ca<;4p04aFn00x`-R&->5!DvoVASGXl%xfMYHcu{6V|6i5tRzqf
z7ODfrdBZ0Hy#9Twb`eYVfJtF6NhoO`k{E!3ib)b_(oqJ9m=)b{d87oS5dx5-Ac(Sa
zkQKWRWDGz7Mw)0a+5k|;tly$xqyQWk(q9`A<(dGp9PAiu4TAx5ZD6wnU_y5o8!%`j
z7wpVeTLZ9WKJutFEZpuOv-1W}P%WttC{&&7?pN%3s_!)I>ThMSr<bPfN{~l#pfMzi
z11O^Q`(G!3s5_6&<(ex@A&%Y`sdLD(UAtvk5ZW4k1;W$nWe%#6YK{|!8^emC6LhSJ
zYGz5`p>{K&k_Lf{NJ%|ziiHSZo1J{sNle;O3fasx8YJhnK){M1dgl<(fQFJS4Un0o
zi=@%oq)oO!(M7hEI`|^AWH2|TA}j)oh>bmR<skeTw$NH>T2WL;L=Zr|1|UTVXjgKj
z2$x%hjm~6nj0!7AFi>K+7NV{mK_sha?-&rZ)e8F@(*uyKD@<45U&CW+@=gYd2hhbb
zk-28xLJ}+3Le=dfZ@%7=&L(zJMyVzg8JMP?lI6riA%-I?R~uvy#Aa4vLIJg3y<HM0
zdfFL~qbxE>Vn)VGdNl=1-!rAV>s1xkGLYE)$mh37f@CMm7dc>rHnAjvauxD$8wCpV
z0fvAPMHkF}DPuW#QFeWU3JNwE#vyH4c8(lE9tF1qvkDj)$cX3%$pDL{U_3-v_@jEW
zbtfwg9t1WqkBDlPiVWHMW%O<;!uIDEk*02dKl$qt^WZroi<h*4t@`rA87?O>MX(~|
zb4d{k#LS}z1S1&t&x<qbcAG0D<5UlNkl*SUOOXylv=Gt|T~Vwi2qD*FhO2o{8<b@5
zGZZesJGCYBpM)~yRE0GJt`*Qq((1hqiofY9{M0+C8x*k5#M!blSV0tiLfyQBL4=Q>
z@`t)^qfZ_!AtI3v#(FGZ>?R>eXXhn)lgz9J5g>?ENDDb_R!mweja-hk2GXALIOtIx
zKNs&4T;@#>PTf(i{+-d*unVd-Gne%XKqP@I2=3C47$(pfeanwNO%zzycIP7m2t94k
ztY$qx82BhqfS9Nc?7n;?9Kb|$Y=vNGW(aY@@fjQ8JE(r#bs~^oG-{Ohuc@QKehOf7
zT}@3D0C+78t@|RM95W!f$!|$nJD0D_vZHKM4dzs|=kb+ogvg<PxM_lKyyz2p4e`4N
z%#&&iz`zq+rUOEr4lXXfeVvg95;7514-zauZYB7=%*lYI$DR(>L^;IZgE}Rs41AYE
zB#41ZfIZ5!2SFh$LdsyGF-P|{m<V2FM?s}Q5@B~D*jq@S7y=Sza>T%RW{K{uUtt7H
zuqH4AkY~Vz7S9?BgC?NIzKjT`NU}cIhmN%&X`pa{8_5Ykd?*^wE%Rf8P_)1p+yd4m
zk<l;_G?Mum$rZ1@$U$#&jb*RfOs`8394&AlHUNSHn6k;GV=oh6GfKuL{_*p5Vc(F;
zK=arkP}Q9^xmusbBxnT~Q^jmdt>>qWvkDU>cfe_OoImYpREQ=CF#$e)%M3NE!Q(}@
zSm-xdwgQ3W5lO#MUj^2&9m}}xSR1V={0u?%i{c&5e3%gD2D6^-(!Ps(PU9+P%fsLZ
zi~#3ZOcE_2?UvQjl%-p5!U-=GA|Agq^3v4cS(3Ge5CnUX=bI@6Mj4rtH+dI*t?Z!~
z?;9CRBp{TY9aV#bLAVoom2do^w8)rtRnvh4c3sx8oWU2R4;*(KwK|W$&8E;W85R+!
zp3;Gc)ETfK<#6*w?6y>37gJJu<)~qX@rGgs7;jb?J{VzR_}{X}O+tbq0z-|8J%c#a
zdR6q+c^J0>^^0%|$b>-=Ap$|tTpMrzO;2;rlThV>paP-_wqZA&@-<g?%1rZ$GJq{r
zmMfNlMzaCb!wvzEUd#5^$s-?Y1Z-mFBBU%#)D)K4OIkM!R`inKPQf9w$&kZgpo)M1
zlKs(eVCvyQej}e@F~OuHQYjRg6uKd(B+!i$1$bitjpf#JM@D~zMpmqd$J~J=wAj}P
kLnkB=i_%zEO_s?<n@bWiWazAA&;P~TkxmpO6wGnB!0r|tSO5S3

literal 0
HcmV?d00001

diff --git a/tests/testfilebazdbgppc64.debug.bz2 b/tests/testfilebazdbgppc64.debug.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..8faa17af3603330e2570d34e840b169f8fbdd1e0
GIT binary patch
literal 2295
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
RVOjsh+>uTcBmg^a#Q?Aq{<r`D

literal 0
HcmV?d00001

diff --git a/tests/testfilebazdbgppc64_pl.bz2 b/tests/testfilebazdbgppc64_pl.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..9f372fb9810c121e431de9893f8e1717506f8b87
GIT binary patch
literal 2775
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

literal 0
HcmV?d00001

diff --git a/tests/testfilebazdbgppc64_plr.bz2 b/tests/testfilebazdbgppc64_plr.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..70f8e005d1756222a8b0d67d54a198078d611d30
GIT binary patch
literal 2399
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
Lu=gwZ_fY*8ce^_8

literal 0
HcmV?d00001

diff --git a/tests/testfilebazdynppc64.bz2 b/tests/testfilebazdynppc64.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..2e01699e4e13c90c60c8de9d0bdb2daf03aa303b
GIT binary patch
literal 2327
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

literal 0
HcmV?d00001

diff --git a/tests/testfilebazmdbppc64.bz2 b/tests/testfilebazmdbppc64.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..16c2dd0aa049121034891b4371e20ccc0aa2d626
GIT binary patch
literal 3528
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
CIEdH)

literal 0
HcmV?d00001

diff --git a/tests/testfilebazminppc64.bz2 b/tests/testfilebazminppc64.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..364d84c4bf4331413fa9efe7b4c5e0a4a035489c
GIT binary patch
literal 3464
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

literal 0
HcmV?d00001

diff --git a/tests/testfilebazminppc64_pl.bz2 b/tests/testfilebazminppc64_pl.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..668634030bce27f634ac0272d2cc24d50f10d367
GIT binary patch
literal 3900
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
F{x1Q}7^?sP

literal 0
HcmV?d00001

diff --git a/tests/testfilebazminppc64_plr.bz2 b/tests/testfilebazminppc64_plr.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..46102853c1f8caea4484b429f4eb35bff5d0dea0
GIT binary patch
literal 3535
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
J5*qKw)?o2@pM(Ga

literal 0
HcmV?d00001

diff --git a/tests/testfilebaztabppc64.bz2 b/tests/testfilebaztabppc64.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..03afb8c96091fa81b1c08867ce6589bc339eefaa
GIT binary patch
literal 3697
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
PAN*a(6yZWa!{7vXTMwbb

literal 0
HcmV?d00001

-- 
1.7.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]