using your real name (sorry, no pseudonyms or anonymous contributions.)
-git commit --signoff will add such a Signed-off-by line by at the end of
+git commit --signoff will add such a Signed-off-by line at the end of
the commit log message for you.
+2014-08-25 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac: Set version to 0.160.
+ * NEWS: Add removal of DW_TAG_mutable_type, LZMA .ko.xz kernel
+ module support, ARM THUMB functions and ppc64le ELFv2 abi backends.
+
+2014-08-15 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS: Add dwarf_cu_die.
+
+2014-08-15 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS: Add dwarf_cu_getdwarf.
+
+2014-07-18 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac (AC_CHECK_TYPE): Test for struct user_regs_struct.
+
+2014-05-26 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS: New section 0.160. Add unstrip --force.
+
+2014-05-17 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac: Set version to 0.159.
+ * NEWS: Add entries for version 0.159.
+
+2014-05-02 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS: Add note about dwz support no longer being experimental and
+ new helper functions.
+ * configure.ac: Remove --enable-dwz.
+ * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Remove --enable-dwz.
+
+2014-04-11 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (SUBDIRS): Add libdwelf.
+ * configure.ac (AC_CONFIG_FILES): Add libdwelf/Makefile.
+ * NEWS: Add note about libdwelf.
+
+2014-04-13 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac: Remove mudflap enable arg and MUDFLAP conditional.
+
+2014-01-21 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS (Version 0.159): Add stack -i.
+
+2014-01-20 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS (Version 0.159): New. Add stack -d.
+
+2014-01-03 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac: Set version to 0.158.
+ * NEWS: Add entries for version 0.158.
+
+2013-12-20 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS (libdwfl): Add dwfl_getthread_frames.
+ (stack): New entry.
+
+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-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * NEWS (Version 0.158) (libdwfl): Added Dwfl_Thread_Callbacks,
+ Dwfl_Thread, Dwfl_Frame, dwfl_attach_state, dwfl_pid, dwfl_thread_dwfl,
+ dwfl_thread_tid, dwfl_frame_thread, dwfl_thread_state_registers,
+ dwfl_thread_state_register_pc, dwfl_getthreads, dwfl_thread_getframes
+ and dwfl_frame_pc.
+
+2013-12-16 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS (libdwfl): Add dwfl_module_getsymtab_first_global.
+
+2013-12-09 Josh Stone <jistone@redhat.com>
+
+ * .gitignore: Add config/ar-lib, installed due to AM_PROG_AR.
+
+2013-12-02 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * configure.ac (CC_BIARCH): Remove AS_IF for it.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * configure.ac: New AC_CHECK_SIZEOF for long. Call utrace_BIARCH, new
+ AC_SUBST for CC_BIARCH.
+
+2013-11-06 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac (--enable-dwz): Add AC_MSG_WARN when disabled but
+ local system does have /usr/lib/debug/.dwz.
+
+2013-11-06 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac (--enable-thread-safety): Add AC_MSG_WARN experimental
+ option.
+
+2013-11-01 Michael Forney <mforney@mforney.org>
+
+ * configure.ac: Call AM_PROG_AR and AC_CHECK_TOOL for readelf and nm.
+
+2013-10-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * NEWS (Version 0.158): New.
+
+2013-09-30 Mark Wielaard <mjw@redhat.com>
+
+ * NEWS: Update for readelf NT_SIGINFO and NT_FILE core notes.
+
+2013-09-27 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac: Set version to 0.157.
+ * NEWS: Add entries for version 0.157.
+
+2013-09-20 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Add --enable-dwz.
+
+2013-07-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * configure.ac: Set version to 0.156.
+
+2013-07-19 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * NEWS: Remove bugfix only entries from Version 0.156.
+
+2013-07-18 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * NEWS: Add entries for Version 0.156.
+
+2013-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * NEWS (Version 0.156): New.
+
+2013-04-26 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac (AM_INIT_AUTOMAKE): Request parallel-tests.
+
+2013-04-25 Mark Wielaard <mjw@redhat.com>
+
+ * .gitignore: Add config/test-driver as installed by automake 1.13.
+ * configure.ac (AM_INIT_AUTOMAKE): Require at least automake 1.11.
+
+2012-10-01 Mark Wielaard <mjw@redhat.com>
+
+ * configure.ac: Add --enable-valgrind check.
+ * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Add --enable-valgrind.
+
2012-08-27 Mark Wielaard <mjw@redhat.com>
* configure.ac: Set version to 0.155.
Installation Instructions
*************************
-Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Inc.
Copying and distribution of this file, with or without modification,
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
+an Autoconf limitation. Until the limitation is lifted, you can use
+this workaround:
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+ CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
-
pkginclude_HEADERS = version.h
# Add doc back when we have some real content.
-SUBDIRS = config m4 lib libelf libebl libdwfl libdw libcpu libasm backends \
- src po tests
+SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \
+ backends src po tests
EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
COPYING COPYING-GPLV2 COPYING-LGPLV3
# Make sure the test install uses lib64 when $LIB will yield lib64.
# Make sure the test build uses the same compiler, which on e.g. ppc64
# determines which platform we are actually testing.
+# Run all tests under valgrind.
DISTCHECK_CONFIGURE_FLAGS = \
--libdir=`echo $(libdir) | sed "s,^$(exec_prefix),$$dc_install_base,"`\
+ --enable-valgrind \
CC="$(CC)"
distcheck-hook:
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
build_triplet = @build@
host_triplet = @host@
subdir = .
-DIST_COMMON = README $(am__configure_deps) $(pkginclude_HEADERS) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog THANKS \
+ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) \
$(srcdir)/config.h.in $(top_srcdir)/config/elfutils.spec.in \
- $(top_srcdir)/config/version.h.in $(top_srcdir)/configure \
- ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO
+ $(top_srcdir)/config/version.h.in $(pkginclude_HEADERS) \
+ ABOUT-NLS COPYING TODO $(top_srcdir)/config/ar-lib \
+ $(top_srcdir)/config/config.guess \
+ $(top_srcdir)/config/config.sub \
+ $(top_srcdir)/config/install-sh $(top_srcdir)/config/missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = elfutils.spec version.h
CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
HEADERS = $(pkginclude_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
&& rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
reldir="$$dir2"
GZIP_ENV = --best
DIST_ARCHIVES = $(distdir).tar.bz2
+DIST_TARGETS = dist-bzip2
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
pkginclude_HEADERS = version.h
# Add doc back when we have some real content.
-SUBDIRS = config m4 lib libelf libebl libdwfl libdw libcpu libasm backends \
- src po tests
+SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \
+ backends src po tests
EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
COPYING COPYING-GPLV2 COPYING-LGPLV3
# Make sure the test install uses lib64 when $LIB will yield lib64.
# Make sure the test build uses the same compiler, which on e.g. ppc64
# determines which platform we are actually testing.
+# Run all tests under valgrind.
DISTCHECK_CONFIGURE_FLAGS = \
--libdir=`echo $(libdir) | sed "s,^$(exec_prefix),$$dc_install_base,"`\
+ --enable-valgrind \
CC="$(CC)"
all: config.h
cd $(top_builddir) && $(SHELL) ./config.status $@
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
@case `sed 15q $(srcdir)/NEWS` in \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
- $(am__remove_distdir)
-
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
uninstall-am: uninstall-pkgincludeHEADERS
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- ctags-recursive install-am install-strip tags-recursive
+.MAKE: $(am__recursive_targets) all install-am install-strip
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-generic \
- ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
- dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-generic distclean-hdr \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-ps-am install-strip installcheck installcheck-am \
installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-pkgincludeHEADERS
+Version 0.160
+
+libdw: New functions dwarf_cu_getdwarf, dwarf_cu_die.
+ dwarf.h remove non-existing DW_TAG_mutable_type.
+
+libdwfl: Handle LZMA .ko.xz compressed kernel modules.
+
+unstrip: New option -F, --force to combining files even if some ELF headers
+ don't seem to match.
+
+backends: Handle ARM THUMB functions. Add support for ppc64le ELFv2 abi.
+
+Version 0.159
+
+stack: New option -d, --debugname to lookup DWARF debuginfo name for frame.
+ New option -i, --inlines to show inlined frames using DWARF debuginfo.
+
+libdwelf: New libdwelf.h header for libdw.so DWARF ELF Low-level Functions.
+ New function dwelf_elf_gnu_debuglink, dwelf_dwarf_gnu_debugaltlink,
+ and dwelf_elf_gnu_build_id.
+
+libdw: Support for DWZ multifile forms DW_FORM_GNU_ref_alt and
+ DW_FORM_GNU_strp_alt is now enabled by default and no longer
+ experimental. Added new functions dwarf_getalt and dwarf_setalt
+ to get or set the alternative debug file used for the alt FORMs.
+ The dwfl_linux_proc_find_elf callback will now find ELF from
+ process memory for (deleted) files if the Dwfl has process state
+ attached.
+
+libdwfl: The dwfl_build_id_find_debuginfo and dwfl_standard_find_debuginfo
+ functions will now try to resolve and set the alternative debug file.
+
+backends: Add CFI unwinding for arm. Relies on .debug_frame.
+ Add arm process initial register state compatible mode to AARCH64.
+ Add aarch64 native and core unwind support.
+
+other: All separate elfutils-robustify patches have been merged.
+ CVE-2014-0172 Check overflow before calling malloc to uncompress data.
+
+Version 0.158
+
+libdwfl: dwfl_core_file_report has new parameter executable.
+ New functions dwfl_module_getsymtab_first_global,
+ dwfl_module_getsym_info and dwfl_module_addrinfo.
+ Added unwinder with type Dwfl_Thread_Callbacks, opaque types
+ Dwfl_Thread and Dwfl_Frame and functions dwfl_attach_state,
+ dwfl_pid, dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
+ dwfl_thread_state_registers, dwfl_thread_state_register_pc,
+ dwfl_getthread_frames, dwfl_getthreads, dwfl_thread_getframes
+ and dwfl_frame_pc.
+
+addr2line: New option -x to show the section an address was found in.
+
+stack: New utility that uses the new unwinder for processes and cores.
+
+backends: Unwinder support for i386, x86_64, s390, s390x, ppc and ppc64.
+ aarch64 support.
+
+Version 0.157
+
+libdw: Add new functions dwarf_getlocations, dwarf_getlocation_attr
+ and dwarf_getlocation_die.
+
+readelf: Show contents of NT_SIGINFO and NT_FILE core notes.
+
+addr2line: Support -i, --inlines output option.
+
+backends: abi_cfi hook for arm, ppc and s390.
+
+Version 0.156
+
+lib: New macro COMPAT_VERSION_NEWPROTO.
+
+libdw: Handle GNU extension opcodes in dwarf_getlocation.
+
+libdwfl: Fix STB_GLOBAL over STB_WEAK preference in dwfl_module_addrsym.
+ Add minisymtab support.
+ Add parameter add_p_vaddr to dwfl_report_elf.
+ Use DT_DEBUG library search first.
+
+libebl: Handle new core note types in EBL.
+
+backends: Interpret NT_ARM_VFP.
+ Implement core file registers parsing for s390/s390x.
+
+readelf: Add --elf-section input option to inspect an embedded ELF file.
+ Add -U, --unresolved-address-offsets output control.
+ Add --debug-dump=decodedline support.
+ Accept version 8 .gdb_index section format.
+ Adjust output formatting width.
+ When highpc is in constant form print it also as address.
+ Display raw .debug_aranges. Use libdw only for decodedaranges.
+
+elflint: Add __bss_start__ to the list of allowed symbols.
+
+tests: Add configure --enable-valgrind option to run all tests under valgrind.
+ Enable automake parallel-tests for make check.
+
+translations: Updated Polish translation.
+
+Updates for Automake 1.13.
+
Version 0.155
libelf: elf*_xlatetomd now works for cross-endian ELF note data.
users must match. No third-party EBL module are supported or allowed.
The only reason there are separate modules is to not have the code for
all architectures in all the binaries.
+
+- although the public libraries (libasm, libdw) have a stable API and are
+ backwards ABI compatible they, and the elfutils tools, do depend on each
+ others internals, and on internals of libelf to provide their interfaces.
+ So they should always be upgraded in lockstep when packaging the tools
+ and libraries separately. For one example of how to do that, see the
+ config/elfutils.spec.
-# generated automatically by aclocal 1.11.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
-# Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 1
-
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.13'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.3], [],
+m4_if([$1], [1.13.4], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.3])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_AR([ACT-IF-FAIL])
+# -------------------------
+# Try to determine the archiver interface, and trigger the ar-lib wrapper
+# if it is needed. If the detection of archiver interface fails, run
+# ACT-IF-FAIL (default is to abort configure with a proper error message).
+AC_DEFUN([AM_PROG_AR],
+[AC_BEFORE([$0], [LT_INIT])dnl
+AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([ar-lib])dnl
+AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
+: ${AR=ar}
+
+AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
+ [am_cv_ar_interface=ar
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
+ [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([am_ar_try])
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=ar
+ else
+ am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([am_ar_try])
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=lib
+ else
+ am_cv_ar_interface=unknown
+ fi
+ fi
+ rm -f conftest.lib libconftest.a
+ ])
+ ])
+
+case $am_cv_ar_interface in
+ar)
+ ;;
+lib)
+ # Microsoft lib, so override with the ar-lib wrapper script.
+ # FIXME: It is wrong to rewrite AR.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__AR in this case,
+ # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+ # similar.
+ AR="$am_aux_dir/ar-lib $AR"
+ ;;
+unknown)
+ m4_default([$1],
+ [AC_MSG_ERROR([could not determine $AR interface])])
+ ;;
+esac
+AC_SUBST([AR])dnl
+])
+
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 1
-
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 9
-
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
-# 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 12
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
fi
;;
msvc7 | msvc7msys | msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-#serial 5
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
+# is enabled. FIXME. This creates each '.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 16
-
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES(OBJC)],
- [define([AC_PROG_OBJC],
- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
])
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
-# Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 1
-
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1998-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# AM_PROG_LEX
# -----------
# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a
# "missing" invocation, for better error output.
AC_DEFUN([AM_PROG_LEX],
-[AC_PREREQ(2.50)dnl
+[AC_PREREQ([2.50])dnl
AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
AC_REQUIRE([AC_PROG_LEX])dnl
if test "$LEX" = :; then
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
-# 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# AM_MAINTAINER_MODE([DEFAULT-MODE])
# ----------------------------------
# Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless `enable' is passed literally.
-# For symmetry, `disable' may be passed as well. Anyway, the user
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well. Anyway, the user
# can override the default with the --enable/--disable switch.
AC_DEFUN([AM_MAINTAINER_MODE],
[m4_case(m4_default([$1], [disable]),
AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
dnl maintainer-mode's default is 'disable' unless 'enable' is passed
AC_ARG_ENABLE([maintainer-mode],
-[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
- (and sometimes confusing) to the casual installer],
- [USE_MAINTAINER_MODE=$enableval],
- [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+ am_maintainer_other[ make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer])],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
MAINT=$MAINTAINER_MODE_TRUE
]
)
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
-
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
-
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
-
# AM_MISSING_HAS_RUN
# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
+ AC_MSG_WARN(['missing' script is too old or missing])
fi
])
-# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
-# Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 1
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
- [[\\/$]]* | ?:[[\\/]]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
# _AM_SET_OPTIONS(OPTIONS)
# ------------------------
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$[2]" = conftest.file
)
then
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 1
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 3
-
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
+#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+m4_include([m4/biarch.m4])
m4_include([m4/nls.m4])
m4_include([m4/po.m4])
m4_include([m4/progtest.m4])
+2014-07-18 Kyle McMartin <kyle@redhat.com>
+ Mark Wielaard <mjw@redhat.com>
+
+ * aarch64_initreg.c: Check HAVE_SYS_USER_REGS.
+ (aarch64_set_initial_registers_tid): Use user_regs_struct and
+ user_fpsimd_struct.
+ * arm_initreg.c: Check HAVE_SYS_USER_REGS.
+ (arm_set_initial_registers_tid): Use user_regs_struct in compat mode.
+
+2014-07-04 Menanteau Guy <menantea@linux.vnet.ibm.com>
+ Mark Wielaard <mjw@redhat.com>
+
+ * ppc64_init.c (ppc64_init): Hook check_st_other_bits.
+ * ppc64_reloc.def: TLSGD, TLSLD, TOCSAVE, ADDR16_HIGH, ADDR16_HIGHA,
+ TPREL16_HIGH, TPREL16_HIGHA, DTPREL16_HIGH, DTPREL16_HIGHA, JMP_IREL,
+ IRELATIVE, REL16, REL16_LO, REL16_HI and REL16_HA.
+ * ppc64_symbol.c (ppc64_dynamic_tag_name): Recognize DT_PPC64_OPT.
+ (ppc64_dynamic_tag_check): Likewise.
+ (ppc64_check_st_other_bits): New function.
+
+2014-07-04 Mark Wielaard <mjw@redhat.com>
+
+ * aarch64_retval.c (aarch64_return_value_location): Handle
+ DW_ATE_boolean.
+
+2014-06-18 Mark Wielaard <mjw@redhat.com>
+
+ * libebl_CPU.h (dwarf_peel_type): Remove DW_TAG_mutable_type
+ handling.
+
+2014-06-17 Mark Wielaard <mjw@redhat.com>
+
+ * arm_init.c (arm_init): Set func_addr_mask.
+
+2014-06-20 Petr Machata <pmachata@redhat.com>
+
+ * alpha_retval.c (alpha_return_value_location): Call
+ dwarf_peeled_die_type instead of inlining equivalent code.
+ * arm_retval.c (arm_return_value_location): Likewise.
+ * i386_retval.c (i386_return_value_location): Likewise.
+ * ia64_retval.c (ia64_return_value_location): Likewise.
+ * ppc64_retval.c (ppc64_return_value_location): Likewise.
+ * ppc_retval.c (ppc_return_value_location): Likewise.
+ * s390_retval.c (s390_return_value_location): Likewise.
+ * sh_retval.c (sh_return_value_location): Likewise.
+ * sparc_retval.c (sparc_return_value_location): Likewise.
+ * tilegx_retval.c (tilegx_return_value_location): Likewise.
+ * x86_64_retval.c (x86_64_return_value_location): Likewise.
+
+2014-05-19 Mark Wielaard <mjw@redhat.com>
+
+ * arm_init.c (arm_init): Hook check_reloc_target_type.
+ * arm_symbol.c (arm_check_reloc_target_type): New function.
+ * ia64_init.c (ia64_init): Hook check_reloc_target_type.
+ * ia64_symbol.c (ia64_check_reloc_target_type): New function.
+
+2014-04-22 Kurt Roeckx <kurt@roeckx.be>
+
+ * i386_initreg.c: Make Linux only.
+ * x86_64_initreg.c: Make Linux only.
+
+2014-04-13 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Remove libelf and libdw definitions when MUDFLAP
+ is defined. Remove libmudflap from LINK line.
+
+2014-04-09 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (aarch64_SRCS): Add aarch64_initreg.c.
+ * aarch64_corenote.c (prstatus_regs): Mark pc_register.
+ * aarch64_init.c: Assign frame_nregs. Hook set_initial_registers_tid.
+ * aarch64_initreg: New file.
+
+2014-03-28 Jean Pihet <jean.pihet@linaro.org>
+
+ * arm_initreg.c (arm_set_initial_registers_tid): Handle compat mode.
+ ARM compatible code running on AARCH64.
+
+2014-03-19 Mark Wielaard <mjw@redhat.com>
+
+ * aarch64_reloc.def: AARCH64_ABS32 and AARCH64_ABS64 are also valid
+ in ET_REL.
+
+2014-01-30 Petr Machata <pmachata@redhat.com>
+
+ * aarch64_regs.c (aarch64_register_info.regtype): Make this
+ variadic printf-like function. Call one vsnprintf instead of two
+ snprintf's.
+ (regtyper, regtypen): Drop.
+ (aarch64_register_info): Adjust callers.
+
+2014-01-26 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (arm_SRCS): Add arm_initreg.c.
+ * arm_init.c (arm_init): Define frame_nregs and hook
+ set_initial_registers_tid.
+ * arm_initreg.c: New file.
+
+2014-01-25 Mark Wielaard <mjw@redhat.com>
+
+ * arm_cfi.c (arm_abi_cfi): Restore SP (r13) from CFA.
+
+2014-01-24 Mark Wielaard <mjw@redhat.com>
+
+ * arm_reloc.def: Update list.
+
+2014-01-22 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (aarch64_regs_no_Wformat): Removed.
+ * aarch64_regs.c (regtype): Add bool nr argument. snprintf arg
+ when nr is true.
+ (regtyper): New function.
+ (regtypen): Likewise.
+ (aarch64_register_info): Call either regtyper or regtypen not
+ regtype directly.
+
+2014-01-14 Mark Wielaard <mjw@redhat.com>
+
+ * aarch64_symbol.c (aarch64_check_special_symbol): Check shdr is
+ not NULL before usage.
+
+2014-01-04 Mark Wielaard <mjw@redhat.com>
+
+ * ppc64_symbol.c (ppc64_machine_flag_check): New function.
+ * ppc64_init.c (ppc64_init): Hook machine_flag_check.
+
+2014-01-03 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (aarch64_SRCS): Add aarch64_cfi.c.
+ * aarch64_cfi.c: New file.
+ * aarch64_init.c (aarch64_init): Hook abi_cfi.
+ * aarch64_regs.c (aarch64_register_info): Set *prefix to "".
+
+2013-12-19 Mark Wielaard <mjw@redhat.com>
+
+ * aarch64_init.c (aarch64_init): Hook check_special_symbol.
+ * aarch64_symbol.c (aarch64_check_special_symbol): New function.
+
+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-18 Mark Wielaard <mjw@redhat.com>
+
+ * s390_initreg.c (s390_set_initial_registers_tid): Use union
+ to avoid type-punning when assigning a double to a Dwarf_Word.
+
+2013-12-18 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: s390 and s390x
+ * Makefile.am (s390_SRCS): Add s390_initreg.c and s390_unwind.c.
+ * s390_corenote.c (prstatus_regs): Set PC_REGISTER. Reindent all the
+ entries.
+ * s390_init.c (s390_init): Initialize frame_nregs,
+ set_initial_registers_tid, normalize_pc and unwind.
+ * s390_initreg.c: New file.
+ * s390_unwind.c: New file.
+
+2013-12-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: ppc and ppc64
+ * Makefile.am (ppc_SRCS, ppc64_SRCS): Add ppc_initreg.c.
+ * ppc64_init.c (ppc64_init): Initialize also frame_nregs,
+ set_initial_registers_tid and dwarf_to_regno.
+ * ppc_corenote.c (PRSTATUS_REGSET_ITEMS) <nip>: Set PC_REGISTER.
+ * ppc_init.c (ppc64_init): Initialize also frame_nregs,
+ set_initial_registers_tid and dwarf_to_regno.
+ * ppc_initreg.c: New file.
+
+2013-11-25 Petr Machata <pmachata@redhat.com>
+
+ * Makefile.am (modules): Add aarch64.
+ (libebl_pic): Add libebl_aarch64_pic.a.
+ (aarch64_SRCS): New variable.
+ (libebl_aarch64_pic_a_SOURCES): Likewise.
+ (am_libebl_aarch64_pic_a_OBJECTS): Likewise.
+ (aarch64_regs_no_Wformat): Likewise.
+ * aarch64_corenote.c, aarch64_init.c: New files.
+ * aarch64_regs.c, aarch64_reloc.def: Likewise.
+ * aarch64_retval.c, aarch64_symbol.c: Likewise.
+ * libebl_CPU.h (dwarf_peel_type): New function.
+ (dwarf_peeled_die_type): Likewise.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (i386_SRCS): Add i386_initreg.c.
+ (x86_64_SRCS): Add x86_64_initreg.c.
+ * i386_initreg.c: New file.
+ * i386_init.c (i386_init): Initialize frame_nregs and
+ set_initial_registers_tid.
+ * x86_64_initreg.c: New file.
+ * x86_64_init.c (x86_64_init): Initialize frame_nregs and
+ set_initial_registers_tid.
+
+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * ppc_cfi.c (ppc_abi_cfi): Use DW_CFA_val_offset for reg1, not
+ DW_CFA_val_expression.
+
+2013-08-29 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (arm_SRCS): Add arm_cfi.c.
+ * arm_cfi.c: New file.
+ * arm_init.c (arm_init): Initialize abi_cfi.
+
+2013-08-27 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * Makefile.am (ppc_SRCS, ppc64_SRCS): Add ppc_cfi.c.
+ (s390_SRCS): Add s390_cfi.c.
+ * ppc64_init.c (ppc64_init): Initialize abi_cfi.
+ * ppc_cfi.c: New file.
+ * ppc_init.c (ppc_init): Initialize abi_cfi.
+ * s390_cfi.c: New file.
+ * s390_init.c (s390_init): Initialize abi_cfi.
+
+2013-08-28 Mark Wielaard <mjw@redhat.com>
+
+ * arm_regs.c (arm_register_info): Set *prefix to "".
+ * ppc_regs.c (ppc_register_info): Likewise.
+ * sh_regs.c (sh_register_info): Likewise.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2013-02-06 Mark Wielaard <mjw@redhat.com>
+
+ * libebl_CPU.h (DWARF_TAG_OR_RETURN): New macro.
+ * backends/alpha_retval.c (alpha_return_value_location): Use new
+ DWARF_TAG_OR_RETURN macro instead of dwarf_tag ().
+ * backends/arm_retval.c (arm_return_value_location): Likewise.
+ * backends/i386_retval.c (i386_return_value_location): Likewise.
+ * backends/ia64_retval.c (hfa_type): Likewise.
+ (ia64_return_value_location): Likewise.
+ * backends/ppc64_retval.c (ppc64_return_value_location): Likewise.
+ * backends/ppc_retval.c (ppc_return_value_location): Likewise.
+ * backends/s390_retval.c (s390_return_value_location): Likewise.
+ * backends/sh_retval.c (sh_return_value_location): Likewise.
+ * backends/sparc_retval.c (sparc_return_value_location): Likewise.
+ * backends/tilegx_retval.c (tilegx_return_value_location): Likewise.
+ * backends/x86_64_retval.c (x86_64_return_value_location): Likewise.
+
+2013-01-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Roland McGrath <roland@hack.frob.com>
+
+ * Makefile.am (s390_SRCS): Add s390_corenote.c and s390x_corenote.c.
+ * linux-core-note.c (ALIGN_PR_REG): New definitions.
+ (struct EBLHOOK(prstatus)): Change field pr_reg to anonymous struct with
+ ALIGN_PR_REG.
+ (EXTRA_ITEMS): New macro.
+ * s390_corenote.c: New file.
+ * s390_init.c (s390x_core_note): New declaration.
+ (s390_init): Install s390x_core_note and s390_core_note.
+ * s390x_corenote.c: New file.
+
+2013-01-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * arm_corenote.c (vfp_items): Remove zero COUNT initializer.
+
+2012-10-12 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * linux-core-note.c (prstatus_items): Rename groups of sigpend and
+ sighold to signal2 and signal3.
+
+2012-09-24 Petr Machata <pmachata@redhat.com>
+
+ * arm_corenote.c (vfp_items, vfp_regs): New const variables.
+ (EXTRA_NOTES): Use it for NT_ARM_VFP.
+ * linux-core-note.c (EXTRA_REGSET_ITEMS): New macro.
+
+2012-09-17 Petr Machata <pmachata@redhat.com>
+
+ * arm_corenote.c (FPREGSET_SIZE): Change to 116.
+
2012-08-22 Jeff Kenton <jkenton@tilera.com>
* Makefile.am (modules): Add tilegx.
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 2000-2010 Red Hat, Inc.
+## Copyright (C) 2000-2010, 2013, 2014 Red Hat, Inc.
## Copyright (C) 2012 Tilera Corporation
## This file is part of elfutils.
##
## the GNU Lesser General Public License along with this program. If
## not, see <http://www.gnu.org/licenses/>.
include $(top_srcdir)/config/eu.am
-INCLUDES += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
+AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
-I$(top_srcdir)/libelf -I$(top_srcdir)/libdw
-modules = i386 sh x86_64 ia64 alpha arm sparc ppc ppc64 s390 tilegx
-libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \
- libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \
- libebl_sparc_pic.a libebl_ppc_pic.a libebl_ppc64_pic.a \
- libebl_s390_pic.a libebl_tilegx_pic.a
+modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
+ tilegx
+libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \
+ libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \
+ libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \
+ libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a
noinst_LIBRARIES = $(libebl_pic)
noinst_DATA = $(libebl_pic:_pic.a=.so)
-if MUDFLAP
-libelf = ../libelf/libelf.a
-libdw = ../libdw/libdw.a
-else
libelf = ../libelf/libelf.so
libdw = ../libdw/libdw.so
-endif
i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \
- i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c
+ i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \
+ i386_initreg.c
cpu_i386 = ../libcpu/libcpu_i386.a
libebl_i386_pic_a_SOURCES = $(i386_SRCS)
am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os)
am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os)
x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c x86_64_cfi.c \
- x86_64_retval.c x86_64_regs.c i386_auxv.c x86_64_syscall.c
+ x86_64_retval.c x86_64_regs.c i386_auxv.c x86_64_syscall.c \
+ x86_64_initreg.c
cpu_x86_64 = ../libcpu/libcpu_x86_64.a
libebl_x86_64_pic_a_SOURCES = $(x86_64_SRCS)
am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os)
am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os)
arm_SRCS = arm_init.c arm_symbol.c arm_regs.c arm_corenote.c \
- arm_auxv.c arm_attrs.c arm_retval.c
+ arm_auxv.c arm_attrs.c arm_retval.c arm_cfi.c arm_initreg.c
libebl_arm_pic_a_SOURCES = $(arm_SRCS)
am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os)
+aarch64_SRCS = aarch64_init.c aarch64_regs.c aarch64_symbol.c \
+ aarch64_corenote.c aarch64_retval.c aarch64_cfi.c \
+ aarch64_initreg.c
+libebl_aarch64_pic_a_SOURCES = $(aarch64_SRCS)
+am_libebl_aarch64_pic_a_OBJECTS = $(aarch64_SRCS:.c=.os)
+
sparc_SRCS = sparc_init.c sparc_symbol.c sparc_regs.c sparc_retval.c \
sparc_corenote.c sparc64_corenote.c sparc_auxv.c
libebl_sparc_pic_a_SOURCES = $(sparc_SRCS)
am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os)
ppc_SRCS = ppc_init.c ppc_symbol.c ppc_retval.c ppc_regs.c \
- ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c
+ ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \
+ ppc_cfi.c ppc_initreg.c
libebl_ppc_pic_a_SOURCES = $(ppc_SRCS)
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
+ ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.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)
-s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c
+s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c \
+ s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \
+ s390_unwind.c
libebl_s390_pic_a_SOURCES = $(s390_SRCS)
am_libebl_s390_pic_a_OBJECTS = $(s390_SRCS:.c=.os)
$(LINK) -shared -o $(@:.map=.so) \
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
-Wl,--version-script,$(@:.so=.map) \
- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) $(libmudflap)
+ -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
$(textrel_check)
libebl_i386.so: $(cpu_i386)
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(noinst_HEADERS) ChangeLog
subdir = backends
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libebl_aarch64_pic_a_AR = $(AR) $(ARFLAGS)
+libebl_aarch64_pic_a_LIBADD =
+am__objects_1 = aarch64_init.$(OBJEXT) aarch64_regs.$(OBJEXT) \
+ aarch64_symbol.$(OBJEXT) aarch64_corenote.$(OBJEXT) \
+ aarch64_retval.$(OBJEXT) aarch64_cfi.$(OBJEXT) \
+ aarch64_initreg.$(OBJEXT)
+libebl_aarch64_pic_a_OBJECTS = $(am_libebl_aarch64_pic_a_OBJECTS)
libebl_alpha_pic_a_AR = $(AR) $(ARFLAGS)
libebl_alpha_pic_a_LIBADD =
-am__objects_1 = alpha_init.$(OBJEXT) alpha_symbol.$(OBJEXT) \
+am__objects_2 = alpha_init.$(OBJEXT) alpha_symbol.$(OBJEXT) \
alpha_retval.$(OBJEXT) alpha_regs.$(OBJEXT) \
alpha_corenote.$(OBJEXT) alpha_auxv.$(OBJEXT)
libebl_alpha_pic_a_OBJECTS = $(am_libebl_alpha_pic_a_OBJECTS)
libebl_arm_pic_a_AR = $(AR) $(ARFLAGS)
libebl_arm_pic_a_LIBADD =
-am__objects_2 = arm_init.$(OBJEXT) arm_symbol.$(OBJEXT) \
+am__objects_3 = arm_init.$(OBJEXT) arm_symbol.$(OBJEXT) \
arm_regs.$(OBJEXT) arm_corenote.$(OBJEXT) arm_auxv.$(OBJEXT) \
- arm_attrs.$(OBJEXT) arm_retval.$(OBJEXT)
+ arm_attrs.$(OBJEXT) arm_retval.$(OBJEXT) arm_cfi.$(OBJEXT) \
+ arm_initreg.$(OBJEXT)
libebl_arm_pic_a_OBJECTS = $(am_libebl_arm_pic_a_OBJECTS)
libebl_i386_pic_a_AR = $(AR) $(ARFLAGS)
libebl_i386_pic_a_LIBADD =
-am__objects_3 = i386_init.$(OBJEXT) i386_symbol.$(OBJEXT) \
+am__objects_4 = i386_init.$(OBJEXT) i386_symbol.$(OBJEXT) \
i386_corenote.$(OBJEXT) i386_cfi.$(OBJEXT) \
i386_retval.$(OBJEXT) i386_regs.$(OBJEXT) i386_auxv.$(OBJEXT) \
- i386_syscall.$(OBJEXT)
+ i386_syscall.$(OBJEXT) i386_initreg.$(OBJEXT)
libebl_i386_pic_a_OBJECTS = $(am_libebl_i386_pic_a_OBJECTS)
libebl_ia64_pic_a_AR = $(AR) $(ARFLAGS)
libebl_ia64_pic_a_LIBADD =
-am__objects_4 = ia64_init.$(OBJEXT) ia64_symbol.$(OBJEXT) \
+am__objects_5 = ia64_init.$(OBJEXT) ia64_symbol.$(OBJEXT) \
ia64_regs.$(OBJEXT) ia64_retval.$(OBJEXT)
libebl_ia64_pic_a_OBJECTS = $(am_libebl_ia64_pic_a_OBJECTS)
libebl_ppc64_pic_a_AR = $(AR) $(ARFLAGS)
libebl_ppc64_pic_a_LIBADD =
-am__objects_5 = ppc64_init.$(OBJEXT) ppc64_symbol.$(OBJEXT) \
+am__objects_6 = ppc64_init.$(OBJEXT) ppc64_symbol.$(OBJEXT) \
ppc64_retval.$(OBJEXT) ppc64_corenote.$(OBJEXT) \
ppc_regs.$(OBJEXT) ppc_auxv.$(OBJEXT) ppc_attrs.$(OBJEXT) \
- ppc_syscall.$(OBJEXT)
+ ppc_syscall.$(OBJEXT) ppc_cfi.$(OBJEXT) ppc_initreg.$(OBJEXT) \
+ ppc64_resolve_sym.$(OBJEXT)
libebl_ppc64_pic_a_OBJECTS = $(am_libebl_ppc64_pic_a_OBJECTS)
libebl_ppc_pic_a_AR = $(AR) $(ARFLAGS)
libebl_ppc_pic_a_LIBADD =
-am__objects_6 = ppc_init.$(OBJEXT) ppc_symbol.$(OBJEXT) \
+am__objects_7 = ppc_init.$(OBJEXT) ppc_symbol.$(OBJEXT) \
ppc_retval.$(OBJEXT) ppc_regs.$(OBJEXT) ppc_corenote.$(OBJEXT) \
- ppc_auxv.$(OBJEXT) ppc_attrs.$(OBJEXT) ppc_syscall.$(OBJEXT)
+ ppc_auxv.$(OBJEXT) ppc_attrs.$(OBJEXT) ppc_syscall.$(OBJEXT) \
+ ppc_cfi.$(OBJEXT) ppc_initreg.$(OBJEXT)
libebl_ppc_pic_a_OBJECTS = $(am_libebl_ppc_pic_a_OBJECTS)
libebl_s390_pic_a_AR = $(AR) $(ARFLAGS)
libebl_s390_pic_a_LIBADD =
-am__objects_7 = s390_init.$(OBJEXT) s390_symbol.$(OBJEXT) \
- s390_regs.$(OBJEXT) s390_retval.$(OBJEXT)
+am__objects_8 = s390_init.$(OBJEXT) s390_symbol.$(OBJEXT) \
+ s390_regs.$(OBJEXT) s390_retval.$(OBJEXT) \
+ s390_corenote.$(OBJEXT) s390x_corenote.$(OBJEXT) \
+ s390_cfi.$(OBJEXT) s390_initreg.$(OBJEXT) \
+ s390_unwind.$(OBJEXT)
libebl_s390_pic_a_OBJECTS = $(am_libebl_s390_pic_a_OBJECTS)
libebl_sh_pic_a_AR = $(AR) $(ARFLAGS)
libebl_sh_pic_a_LIBADD =
-am__objects_8 = sh_init.$(OBJEXT) sh_symbol.$(OBJEXT) \
+am__objects_9 = sh_init.$(OBJEXT) sh_symbol.$(OBJEXT) \
sh_corenote.$(OBJEXT) sh_regs.$(OBJEXT) sh_retval.$(OBJEXT)
libebl_sh_pic_a_OBJECTS = $(am_libebl_sh_pic_a_OBJECTS)
libebl_sparc_pic_a_AR = $(AR) $(ARFLAGS)
libebl_sparc_pic_a_LIBADD =
-am__objects_9 = sparc_init.$(OBJEXT) sparc_symbol.$(OBJEXT) \
+am__objects_10 = sparc_init.$(OBJEXT) sparc_symbol.$(OBJEXT) \
sparc_regs.$(OBJEXT) sparc_retval.$(OBJEXT) \
sparc_corenote.$(OBJEXT) sparc64_corenote.$(OBJEXT) \
sparc_auxv.$(OBJEXT)
libebl_sparc_pic_a_OBJECTS = $(am_libebl_sparc_pic_a_OBJECTS)
libebl_tilegx_pic_a_AR = $(AR) $(ARFLAGS)
libebl_tilegx_pic_a_LIBADD =
-am__objects_10 = tilegx_init.$(OBJEXT) tilegx_symbol.$(OBJEXT) \
+am__objects_11 = tilegx_init.$(OBJEXT) tilegx_symbol.$(OBJEXT) \
tilegx_regs.$(OBJEXT) tilegx_retval.$(OBJEXT) \
tilegx_corenote.$(OBJEXT)
libebl_tilegx_pic_a_OBJECTS = $(am_libebl_tilegx_pic_a_OBJECTS)
libebl_x86_64_pic_a_AR = $(AR) $(ARFLAGS)
libebl_x86_64_pic_a_LIBADD =
-am__objects_11 = x86_64_init.$(OBJEXT) x86_64_symbol.$(OBJEXT) \
+am__objects_12 = x86_64_init.$(OBJEXT) x86_64_symbol.$(OBJEXT) \
x86_64_corenote.$(OBJEXT) x86_64_cfi.$(OBJEXT) \
x86_64_retval.$(OBJEXT) x86_64_regs.$(OBJEXT) \
- i386_auxv.$(OBJEXT) x86_64_syscall.$(OBJEXT)
+ i386_auxv.$(OBJEXT) x86_64_syscall.$(OBJEXT) \
+ x86_64_initreg.$(OBJEXT)
libebl_x86_64_pic_a_OBJECTS = $(am_libebl_x86_64_pic_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) \
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libebl_aarch64_pic_a_SOURCES) \
+ $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) \
$(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) \
$(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \
$(libebl_s390_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) \
$(libebl_sparc_pic_a_SOURCES) $(libebl_tilegx_pic_a_SOURCES) \
$(libebl_x86_64_pic_a_SOURCES)
-DIST_SOURCES = $(libebl_alpha_pic_a_SOURCES) \
- $(libebl_arm_pic_a_SOURCES) $(libebl_i386_pic_a_SOURCES) \
- $(libebl_ia64_pic_a_SOURCES) $(libebl_ppc64_pic_a_SOURCES) \
- $(libebl_ppc_pic_a_SOURCES) $(libebl_s390_pic_a_SOURCES) \
- $(libebl_sh_pic_a_SOURCES) $(libebl_sparc_pic_a_SOURCES) \
- $(libebl_tilegx_pic_a_SOURCES) $(libebl_x86_64_pic_a_SOURCES)
+DIST_SOURCES = $(libebl_aarch64_pic_a_SOURCES) \
+ $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) \
+ $(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) \
+ $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \
+ $(libebl_s390_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) \
+ $(libebl_sparc_pic_a_SOURCES) $(libebl_tilegx_pic_a_SOURCES) \
+ $(libebl_x86_64_pic_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
DATA = $(noinst_DATA)
HEADERS = $(noinst_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
-I$(top_srcdir)/libelf -I$(top_srcdir)/libdw
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
- $($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1)
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ $(if $($(*F)_no_Werror),,-Werror) \
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+ $($(*F)_CFLAGS)
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda $(foreach m,$(modules), libebl_$(m).map \
libebl_$(m).so $(am_libebl_$(m)_pic_a_OBJECTS))
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
-modules = i386 sh x86_64 ia64 alpha arm sparc ppc ppc64 s390 tilegx
-libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \
- libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \
- libebl_sparc_pic.a libebl_ppc_pic.a libebl_ppc64_pic.a \
- libebl_s390_pic.a libebl_tilegx_pic.a
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
+ tilegx
+
+libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \
+ libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \
+ libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \
+ libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a
noinst_LIBRARIES = $(libebl_pic)
noinst_DATA = $(libebl_pic:_pic.a=.so)
-@MUDFLAP_FALSE@libelf = ../libelf/libelf.so
-@MUDFLAP_TRUE@libelf = ../libelf/libelf.a
-@MUDFLAP_FALSE@libdw = ../libdw/libdw.so
-@MUDFLAP_TRUE@libdw = ../libdw/libdw.a
+libelf = ../libelf/libelf.so
+libdw = ../libdw/libdw.so
i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \
- i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c
+ i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \
+ i386_initreg.c
cpu_i386 = ../libcpu/libcpu_i386.a
libebl_i386_pic_a_SOURCES = $(i386_SRCS)
libebl_sh_pic_a_SOURCES = $(sh_SRCS)
am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os)
x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c x86_64_cfi.c \
- x86_64_retval.c x86_64_regs.c i386_auxv.c x86_64_syscall.c
+ x86_64_retval.c x86_64_regs.c i386_auxv.c x86_64_syscall.c \
+ x86_64_initreg.c
cpu_x86_64 = ../libcpu/libcpu_x86_64.a
libebl_x86_64_pic_a_SOURCES = $(x86_64_SRCS)
libebl_alpha_pic_a_SOURCES = $(alpha_SRCS)
am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os)
arm_SRCS = arm_init.c arm_symbol.c arm_regs.c arm_corenote.c \
- arm_auxv.c arm_attrs.c arm_retval.c
+ arm_auxv.c arm_attrs.c arm_retval.c arm_cfi.c arm_initreg.c
libebl_arm_pic_a_SOURCES = $(arm_SRCS)
am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os)
+aarch64_SRCS = aarch64_init.c aarch64_regs.c aarch64_symbol.c \
+ aarch64_corenote.c aarch64_retval.c aarch64_cfi.c \
+ aarch64_initreg.c
+
+libebl_aarch64_pic_a_SOURCES = $(aarch64_SRCS)
+am_libebl_aarch64_pic_a_OBJECTS = $(aarch64_SRCS:.c=.os)
sparc_SRCS = sparc_init.c sparc_symbol.c sparc_regs.c sparc_retval.c \
sparc_corenote.c sparc64_corenote.c sparc_auxv.c
libebl_sparc_pic_a_SOURCES = $(sparc_SRCS)
am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os)
ppc_SRCS = ppc_init.c ppc_symbol.c ppc_retval.c ppc_regs.c \
- ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c
+ ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \
+ ppc_cfi.c ppc_initreg.c
libebl_ppc_pic_a_SOURCES = $(ppc_SRCS)
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
+ ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.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)
-s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c
+s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c \
+ s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \
+ s390_unwind.c
+
libebl_s390_pic_a_SOURCES = $(s390_SRCS)
am_libebl_s390_pic_a_OBJECTS = $(s390_SRCS:.c=.os)
tilegx_SRCS = tilegx_init.c tilegx_symbol.c tilegx_regs.c \
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libebl_aarch64_pic.a: $(libebl_aarch64_pic_a_OBJECTS) $(libebl_aarch64_pic_a_DEPENDENCIES) $(EXTRA_libebl_aarch64_pic_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libebl_aarch64_pic.a
+ $(AM_V_AR)$(libebl_aarch64_pic_a_AR) libebl_aarch64_pic.a $(libebl_aarch64_pic_a_OBJECTS) $(libebl_aarch64_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_aarch64_pic.a
+
libebl_alpha_pic.a: $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_DEPENDENCIES) $(EXTRA_libebl_alpha_pic_a_DEPENDENCIES)
- -rm -f libebl_alpha_pic.a
- $(libebl_alpha_pic_a_AR) libebl_alpha_pic.a $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_LIBADD)
- $(RANLIB) libebl_alpha_pic.a
+ $(AM_V_at)-rm -f libebl_alpha_pic.a
+ $(AM_V_AR)$(libebl_alpha_pic_a_AR) libebl_alpha_pic.a $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_alpha_pic.a
+
libebl_arm_pic.a: $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_DEPENDENCIES) $(EXTRA_libebl_arm_pic_a_DEPENDENCIES)
- -rm -f libebl_arm_pic.a
- $(libebl_arm_pic_a_AR) libebl_arm_pic.a $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_LIBADD)
- $(RANLIB) libebl_arm_pic.a
+ $(AM_V_at)-rm -f libebl_arm_pic.a
+ $(AM_V_AR)$(libebl_arm_pic_a_AR) libebl_arm_pic.a $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_arm_pic.a
+
libebl_i386_pic.a: $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_DEPENDENCIES) $(EXTRA_libebl_i386_pic_a_DEPENDENCIES)
- -rm -f libebl_i386_pic.a
- $(libebl_i386_pic_a_AR) libebl_i386_pic.a $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_LIBADD)
- $(RANLIB) libebl_i386_pic.a
+ $(AM_V_at)-rm -f libebl_i386_pic.a
+ $(AM_V_AR)$(libebl_i386_pic_a_AR) libebl_i386_pic.a $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_i386_pic.a
+
libebl_ia64_pic.a: $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_DEPENDENCIES) $(EXTRA_libebl_ia64_pic_a_DEPENDENCIES)
- -rm -f libebl_ia64_pic.a
- $(libebl_ia64_pic_a_AR) libebl_ia64_pic.a $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_LIBADD)
- $(RANLIB) libebl_ia64_pic.a
+ $(AM_V_at)-rm -f libebl_ia64_pic.a
+ $(AM_V_AR)$(libebl_ia64_pic_a_AR) libebl_ia64_pic.a $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_ia64_pic.a
+
libebl_ppc64_pic.a: $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_DEPENDENCIES) $(EXTRA_libebl_ppc64_pic_a_DEPENDENCIES)
- -rm -f libebl_ppc64_pic.a
- $(libebl_ppc64_pic_a_AR) libebl_ppc64_pic.a $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_LIBADD)
- $(RANLIB) libebl_ppc64_pic.a
+ $(AM_V_at)-rm -f libebl_ppc64_pic.a
+ $(AM_V_AR)$(libebl_ppc64_pic_a_AR) libebl_ppc64_pic.a $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_ppc64_pic.a
+
libebl_ppc_pic.a: $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_DEPENDENCIES) $(EXTRA_libebl_ppc_pic_a_DEPENDENCIES)
- -rm -f libebl_ppc_pic.a
- $(libebl_ppc_pic_a_AR) libebl_ppc_pic.a $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_LIBADD)
- $(RANLIB) libebl_ppc_pic.a
+ $(AM_V_at)-rm -f libebl_ppc_pic.a
+ $(AM_V_AR)$(libebl_ppc_pic_a_AR) libebl_ppc_pic.a $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_ppc_pic.a
+
libebl_s390_pic.a: $(libebl_s390_pic_a_OBJECTS) $(libebl_s390_pic_a_DEPENDENCIES) $(EXTRA_libebl_s390_pic_a_DEPENDENCIES)
- -rm -f libebl_s390_pic.a
- $(libebl_s390_pic_a_AR) libebl_s390_pic.a $(libebl_s390_pic_a_OBJECTS) $(libebl_s390_pic_a_LIBADD)
- $(RANLIB) libebl_s390_pic.a
+ $(AM_V_at)-rm -f libebl_s390_pic.a
+ $(AM_V_AR)$(libebl_s390_pic_a_AR) libebl_s390_pic.a $(libebl_s390_pic_a_OBJECTS) $(libebl_s390_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_s390_pic.a
+
libebl_sh_pic.a: $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_DEPENDENCIES) $(EXTRA_libebl_sh_pic_a_DEPENDENCIES)
- -rm -f libebl_sh_pic.a
- $(libebl_sh_pic_a_AR) libebl_sh_pic.a $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_LIBADD)
- $(RANLIB) libebl_sh_pic.a
+ $(AM_V_at)-rm -f libebl_sh_pic.a
+ $(AM_V_AR)$(libebl_sh_pic_a_AR) libebl_sh_pic.a $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_sh_pic.a
+
libebl_sparc_pic.a: $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_DEPENDENCIES) $(EXTRA_libebl_sparc_pic_a_DEPENDENCIES)
- -rm -f libebl_sparc_pic.a
- $(libebl_sparc_pic_a_AR) libebl_sparc_pic.a $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_LIBADD)
- $(RANLIB) libebl_sparc_pic.a
+ $(AM_V_at)-rm -f libebl_sparc_pic.a
+ $(AM_V_AR)$(libebl_sparc_pic_a_AR) libebl_sparc_pic.a $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_sparc_pic.a
+
libebl_tilegx_pic.a: $(libebl_tilegx_pic_a_OBJECTS) $(libebl_tilegx_pic_a_DEPENDENCIES) $(EXTRA_libebl_tilegx_pic_a_DEPENDENCIES)
- -rm -f libebl_tilegx_pic.a
- $(libebl_tilegx_pic_a_AR) libebl_tilegx_pic.a $(libebl_tilegx_pic_a_OBJECTS) $(libebl_tilegx_pic_a_LIBADD)
- $(RANLIB) libebl_tilegx_pic.a
+ $(AM_V_at)-rm -f libebl_tilegx_pic.a
+ $(AM_V_AR)$(libebl_tilegx_pic_a_AR) libebl_tilegx_pic.a $(libebl_tilegx_pic_a_OBJECTS) $(libebl_tilegx_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_tilegx_pic.a
+
libebl_x86_64_pic.a: $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_DEPENDENCIES) $(EXTRA_libebl_x86_64_pic_a_DEPENDENCIES)
- -rm -f libebl_x86_64_pic.a
- $(libebl_x86_64_pic_a_AR) libebl_x86_64_pic.a $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_LIBADD)
- $(RANLIB) libebl_x86_64_pic.a
+ $(AM_V_at)-rm -f libebl_x86_64_pic.a
+ $(AM_V_AR)$(libebl_x86_64_pic_a_AR) libebl_x86_64_pic.a $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl_x86_64_pic.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_cfi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_corenote.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_initreg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_regs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_retval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_auxv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_init.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_attrs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_auxv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_cfi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_initreg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_regs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_retval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_cfi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_initreg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_regs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_retval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_resolve_sym.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_retval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_attrs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_auxv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_cfi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_initreg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_regs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_retval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_syscall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_cfi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_initreg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_regs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_retval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_symbol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_unwind.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390x_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_init.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_regs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_cfi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_corenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_initreg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_regs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_retval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_symbol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_syscall.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am
$(LINK) -shared -o $(@:.map=.so) \
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
-Wl,--version-script,$(@:.so=.map) \
- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) $(libmudflap)
+ -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
$(textrel_check)
libebl_i386.so: $(cpu_i386)
--- /dev/null
+/* arm ABI-specified defaults for DWARF CFI.
+ 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
+
+#include <dwarf.h>
+
+#define BACKEND aarch64_
+#include "libebl_CPU.h"
+
+
+/* ABI-specified state of DWARF CFI based on:
+
+ "DWARF for the ARM 64 bit architecture (AArch64) 1.0"
+http://infocenter.arm.com/help/topic/com.arm.doc.ihi0057b/IHI0057B_aadwarf64.pdf
+
+ "Procedure Call Standard for the ARM 64 bit Architecture 1.0"
+http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf
+*/
+
+int
+aarch64_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info)
+{
+ static const uint8_t abi_cfi[] =
+ {
+ /* The initial Canonical Frame Address is the value of the
+ Stack Pointer (r31) as setup in the previous frame. */
+ DW_CFA_def_cfa, ULEB128_7 (30), ULEB128_7 (0),
+
+#define SV(n) DW_CFA_same_value, ULEB128_7 (n)
+ /* Callee-saved regs r19-r28. */
+ SV (19), SV (20), SV (21), SV (22), SV (23),
+ SV (24), SV (25), SV (26), SV (27), SV (28),
+
+ /* The Frame Pointer (FP, r29) and Link Register (LR, r30). */
+ SV (29), SV (30),
+
+ /* Callee-saved fpregs v8-v15. v0 == 64. */
+ SV (72), SV (73), SV (74), SV (75),
+ SV (76), SV (77), SV (78), SV (79),
+#undef SV
+
+ /* XXX Note: registers intentionally unused by the program,
+ for example as a consequence of the procedure call standard
+ should be initialized as if by DW_CFA_same_value. */
+ };
+
+ abi_info->initial_instructions = abi_cfi;
+ abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi];
+ abi_info->data_alignment_factor = -4;
+
+ abi_info->return_address_register = 30; /* lr. */
+
+ return 0;
+}
--- /dev/null
+/* AArch64 specific core note handling.
+ 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
+
+#include <elf.h>
+#include <inttypes.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/time.h>
+
+#define BACKEND aarch64_
+#include "libebl_CPU.h"
+
+#define ULONG uint64_t
+#define PID_T int32_t
+#define UID_T uint32_t
+#define GID_T uint32_t
+#define ALIGN_ULONG 8
+#define ALIGN_PID_T 4
+#define ALIGN_UID_T 4
+#define ALIGN_GID_T 4
+#define TYPE_ULONG ELF_T_XWORD
+#define TYPE_PID_T ELF_T_SWORD
+#define TYPE_UID_T ELF_T_WORD
+#define TYPE_GID_T ELF_T_WORD
+
+#define PRSTATUS_REGS_SIZE (34 * 8)
+
+static const Ebl_Register_Location prstatus_regs[] =
+ {
+ { .offset = 0, .regno = 0, .count = 32, .bits = 64 }, /* x0..x30, sp */
+ };
+
+#define PRSTATUS_REGSET_ITEMS \
+ { \
+ .name = "pc", .type = ELF_T_XWORD, .format = 'x', \
+ .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \
+ + PRSTATUS_REGS_SIZE - 16), \
+ .group = "register", \
+ .pc_register = true \
+ }, \
+ { \
+ .name = "pstate", .type = ELF_T_XWORD, .format = 'x', \
+ .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \
+ + PRSTATUS_REGS_SIZE - 8), \
+ .group = "register" \
+ }
+
+static const Ebl_Register_Location aarch64_fpregset_regs[] =
+ {
+ { .offset = 0, .regno = 64, .count = 32, .bits = 128 }, /* v0..v31 */
+ };
+
+static const Ebl_Core_Item aarch64_fpregset_items[] =
+ {
+ {
+ .name = "fpsr", .type = ELF_T_WORD, .format = 'x',
+ .offset = 512, .group = "register"
+ },
+ {
+ .name = "fpcr", .type = ELF_T_WORD, .format = 'x',
+ .offset = 516, .group = "register"
+ }
+ };
+
+static const Ebl_Core_Item aarch64_tls_items[] =
+ {
+ {
+ .name = "tls", .type = ELF_T_XWORD, .format = 'x',
+ .offset = 0, .group = "register"
+ }
+ };
+
+#define AARCH64_HWBP_REG(KIND, N) \
+ { \
+ .name = "DBG" KIND "VR" #N "_EL1", .type = ELF_T_XWORD, .format = 'x', \
+ .offset = 8 + N * 16, .group = "register" \
+ }, \
+ { \
+ .name = "DBG" KIND "CR" #N "_EL1", .type = ELF_T_WORD, .format = 'x', \
+ .offset = 16 + N * 16, .group = "register" \
+ }
+
+#define AARCH64_BP_WP_GROUP(KIND, NAME) \
+ static const Ebl_Core_Item NAME[] = \
+ { \
+ { \
+ .name = "dbg_info", .type = ELF_T_WORD, .format = 'x', \
+ .offset = 0, .group = "control" \
+ }, \
+ /* N.B.: 4 bytes of padding here. */ \
+ \
+ AARCH64_HWBP_REG(KIND, 0), \
+ AARCH64_HWBP_REG(KIND, 1), \
+ AARCH64_HWBP_REG(KIND, 2), \
+ AARCH64_HWBP_REG(KIND, 3), \
+ AARCH64_HWBP_REG(KIND, 4), \
+ AARCH64_HWBP_REG(KIND, 5), \
+ AARCH64_HWBP_REG(KIND, 6), \
+ AARCH64_HWBP_REG(KIND, 7), \
+ AARCH64_HWBP_REG(KIND, 8), \
+ AARCH64_HWBP_REG(KIND, 9), \
+ AARCH64_HWBP_REG(KIND, 10), \
+ AARCH64_HWBP_REG(KIND, 11), \
+ AARCH64_HWBP_REG(KIND, 12), \
+ AARCH64_HWBP_REG(KIND, 13), \
+ AARCH64_HWBP_REG(KIND, 14), \
+ AARCH64_HWBP_REG(KIND, 15), \
+ \
+ /* The DBGBVR+DBGBCR pair only takes 12 bytes. There are 4 bytes \
+ of padding at the end of each pair. The item formatter in \
+ readelf can skip those, but the missing 4 bytes at the end of \
+ the whole block cause it to assume the whole item bunch \
+ repeats, so it loops around to read more. Insert an explicit \
+ (but invisible) padding word. */ \
+ { \
+ .name = "", .type = ELF_T_WORD, .format = 'h', \
+ .offset = 260, .group = "register" \
+ } \
+ }
+
+AARCH64_BP_WP_GROUP ("B", aarch64_hw_bp_items);
+AARCH64_BP_WP_GROUP ("W", aarch64_hw_wp_items);
+
+#undef AARCH64_BP_WP_GROUP
+#undef AARCH64_HWBP_REG
+
+#define EXTRA_NOTES \
+ EXTRA_REGSET_ITEMS (NT_FPREGSET, 528, \
+ aarch64_fpregset_regs, aarch64_fpregset_items) \
+ EXTRA_ITEMS (NT_ARM_TLS, 8, aarch64_tls_items) \
+ EXTRA_ITEMS (NT_ARM_HW_BREAK, 264, aarch64_hw_bp_items) \
+ EXTRA_ITEMS (NT_ARM_HW_WATCH, 264, aarch64_hw_wp_items)
+
+#include "linux-core-note.c"
--- /dev/null
+/* Initialization of AArch64 specific backend library.
+ 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 aarch64_
+#define RELOC_PREFIX R_AARCH64_
+#include "libebl_CPU.h"
+
+/* This defines the common reloc hooks based on aarch64_reloc.def. */
+#include "common-reloc.c"
+
+
+const char *
+aarch64_init (elf, machine, eh, ehlen)
+ Elf *elf __attribute__ ((unused));
+ GElf_Half machine __attribute__ ((unused));
+ Ebl *eh;
+ size_t ehlen;
+{
+ /* Check whether the Elf_BH object has a sufficent size. */
+ if (ehlen < sizeof (Ebl))
+ return NULL;
+
+ /* We handle it. */
+ eh->name = "AARCH64";
+ aarch64_init_reloc (eh);
+ HOOK (eh, register_info);
+ HOOK (eh, core_note);
+ HOOK (eh, reloc_simple_type);
+ HOOK (eh, return_value_location);
+ HOOK (eh, check_special_symbol);
+ HOOK (eh, abi_cfi);
+
+ /* X0-X30 (31 regs) + SP + 1 Reserved + ELR, 30 Reserved regs (34-43)
+ + V0-V31 (32 regs, least significant 64 bits only)
+ + ALT_FRAME_RETURN_COLUMN (used when LR isn't used) = 97 DWARF regs. */
+ eh->frame_nregs = 97;
+ HOOK (eh, set_initial_registers_tid);
+
+ return MODVERSION;
+}
--- /dev/null
+/* Fetch live process registers from TID.
+ Copyright (C) 2013, 2014 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
+
+#include "system.h"
+#include <assert.h>
+#ifdef __aarch64__
+# include <linux/uio.h>
+# include <sys/user.h>
+# include <sys/ptrace.h>
+/* Deal with old glibc defining user_pt_regs instead of user_regs_struct. */
+# ifndef HAVE_SYS_USER_REGS
+# define user_regs_struct user_pt_regs
+# define user_fpsimd_struct user_fpsimd_state
+# endif
+#endif
+
+#define BACKEND aarch64_
+#include "libebl_CPU.h"
+
+bool
+aarch64_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+ ebl_tid_registers_t *setfunc __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+#ifndef __aarch64__
+ return false;
+#else /* __aarch64__ */
+
+ /* General registers. */
+ struct user_regs_struct gregs;
+ struct iovec iovec;
+ iovec.iov_base = &gregs;
+ iovec.iov_len = sizeof (gregs);
+ if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0)
+ return false;
+
+ /* X0..X30 plus SP. */
+ if (! setfunc (0, 32, (Dwarf_Word *) &gregs.regs[0], arg))
+ return false;
+
+ /* PC. */
+ if (! setfunc (-1, 1, (Dwarf_Word *) &gregs.pc, arg))
+ return false;
+
+ /* ELR cannot be found. */
+
+ /* FP registers (only 64bits are used). */
+ struct user_fpsimd_struct fregs;
+ iovec.iov_base = &fregs;
+ iovec.iov_len = sizeof (fregs);
+ if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0)
+ return false;
+
+ Dwarf_Word dwarf_fregs[32];
+ for (int r = 0; r < 32; r++)
+ dwarf_fregs[r] = fregs.vregs[r] & 0xFFFFFFFF;
+
+ if (! setfunc (64, 32, dwarf_fregs, arg))
+ return false;
+
+ return true;
+#endif /* __aarch64__ */
+}
--- /dev/null
+/* Register names and numbers for AArch64 DWARF.
+ Copyright (C) 2013, 2014 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
+
+#include <stdio.h>
+#include <string.h>
+#include <dwarf.h>
+#include <stdarg.h>
+
+#define BACKEND aarch64_
+#include "libebl_CPU.h"
+
+ssize_t
+aarch64_register_info (Ebl *ebl __attribute__ ((unused)),
+ int regno, char *name, size_t namelen,
+ const char **prefix, const char **setnamep,
+ int *bits, int *typep)
+{
+ if (name == NULL)
+ return 128;
+
+ __attribute__ ((format (printf, 3, 4)))
+ ssize_t
+ regtype (const char *setname, int type, const char *fmt, ...)
+ {
+ *setnamep = setname;
+ *typep = type;
+
+ va_list ap;
+ va_start (ap, fmt);
+ int s = vsnprintf (name, namelen, fmt, ap);
+ va_end(ap);
+
+ if (s < 0 || (unsigned) s >= namelen)
+ return -1;
+ return s + 1;
+ }
+
+ *prefix = "";
+ *bits = 64;
+
+ switch (regno)
+ {
+ case 0 ... 30:
+ return regtype ("integer", DW_ATE_signed, "x%d", regno);
+
+ case 31:
+ return regtype ("integer", DW_ATE_address, "sp");
+
+ case 32:
+ return 0;
+
+ case 33:
+ return regtype ("integer", DW_ATE_address, "elr");
+
+ case 34 ... 63:
+ return 0;
+
+ case 64 ... 95:
+ /* FP/SIMD register file supports a variety of data types--it
+ can be thought of as a register holding a single integer or
+ floating-point value, or a vector of 8-, 16-, 32- or 64-bit
+ integers. 128-bit quad-word is the only singular value that
+ covers the whole register, so mark the register thus. */
+ *bits = 128;
+ return regtype ("FP/SIMD", DW_ATE_unsigned, "v%d", regno - 64);
+
+ case 96 ... 127:
+ return 0;
+
+ default:
+ return -1;
+ }
+}
--- /dev/null
+/* List the relocation types for AArch64. -*- C -*-
+ Copyright (C) 2013, 2014 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/>. */
+
+/* NAME, REL|EXEC|DYN */
+
+RELOC_TYPE (ABS64, REL|EXEC|DYN)
+RELOC_TYPE (ABS32, REL|EXEC|DYN)
+RELOC_TYPE (COPY, EXEC)
+RELOC_TYPE (GLOB_DAT, EXEC|DYN)
+RELOC_TYPE (JUMP_SLOT, EXEC|DYN)
+RELOC_TYPE (RELATIVE, EXEC|DYN)
+RELOC_TYPE (TLS_DTPMOD64, EXEC|DYN)
+RELOC_TYPE (TLS_DTPREL64, EXEC|DYN)
+RELOC_TYPE (TLS_TPREL64, EXEC|DYN)
+RELOC_TYPE (TLSDESC, EXEC|DYN)
+
+/* R_AARCH64_NONE records that the section containing the place to be
+ relocated depends on the section defining the symbol mentioned in
+ the relocation directive[.] (ARM IHI 0056B). */
+RELOC_TYPE (NONE, REL)
+
+RELOC_TYPE (ABS16, REL)
+RELOC_TYPE (PREL64, REL)
+RELOC_TYPE (PREL32, REL)
+RELOC_TYPE (PREL16, REL)
+RELOC_TYPE (MOVW_UABS_G0, REL)
+RELOC_TYPE (MOVW_UABS_G0_NC, REL)
+RELOC_TYPE (MOVW_UABS_G1, REL)
+RELOC_TYPE (MOVW_UABS_G1_NC, REL)
+RELOC_TYPE (MOVW_UABS_G2, REL)
+RELOC_TYPE (MOVW_UABS_G2_NC, REL)
+RELOC_TYPE (MOVW_UABS_G3, REL)
+RELOC_TYPE (MOVW_SABS_G0, REL)
+RELOC_TYPE (MOVW_SABS_G1, REL)
+RELOC_TYPE (MOVW_SABS_G2, REL)
+RELOC_TYPE (LD_PREL_LO19, REL)
+RELOC_TYPE (ADR_PREL_LO21, REL)
+RELOC_TYPE (ADR_PREL_PG_HI21, REL)
+RELOC_TYPE (ADR_PREL_PG_HI21_NC, REL)
+RELOC_TYPE (ADD_ABS_LO12_NC, REL)
+RELOC_TYPE (LDST8_ABS_LO12_NC, REL)
+RELOC_TYPE (LDST16_ABS_LO12_NC, REL)
+RELOC_TYPE (LDST32_ABS_LO12_NC, REL)
+RELOC_TYPE (LDST64_ABS_LO12_NC, REL)
+RELOC_TYPE (LDST128_ABS_LO12_NC, REL)
+RELOC_TYPE (TSTBR14, REL)
+RELOC_TYPE (CONDBR19, REL)
+RELOC_TYPE (JUMP26, REL)
+RELOC_TYPE (CALL26, REL)
+RELOC_TYPE (MOVW_PREL_G0, REL)
+RELOC_TYPE (MOVW_PREL_G0_NC, REL)
+RELOC_TYPE (MOVW_PREL_G1, REL)
+RELOC_TYPE (MOVW_PREL_G1_NC, REL)
+RELOC_TYPE (MOVW_PREL_G2, REL)
+RELOC_TYPE (MOVW_PREL_G2_NC, REL)
+RELOC_TYPE (MOVW_PREL_G3, REL)
+RELOC_TYPE (MOVW_GOTOFF_G0, REL)
+RELOC_TYPE (MOVW_GOTOFF_G0_NC, REL)
+RELOC_TYPE (MOVW_GOTOFF_G1, REL)
+RELOC_TYPE (MOVW_GOTOFF_G1_NC, REL)
+RELOC_TYPE (MOVW_GOTOFF_G2, REL)
+RELOC_TYPE (MOVW_GOTOFF_G2_NC, REL)
+RELOC_TYPE (MOVW_GOTOFF_G3, REL)
+RELOC_TYPE (GOTREL64, REL)
+RELOC_TYPE (GOTREL32, REL)
+RELOC_TYPE (GOT_LD_PREL19, REL)
+RELOC_TYPE (LD64_GOTOFF_LO15, REL)
+RELOC_TYPE (ADR_GOT_PAGE, REL)
+RELOC_TYPE (LD64_GOT_LO12_NC, REL)
+RELOC_TYPE (LD64_GOTPAGE_LO15, REL)
+RELOC_TYPE (TLSGD_ADR_PREL21, REL)
+RELOC_TYPE (TLSGD_ADR_PAGE21, REL)
+RELOC_TYPE (TLSGD_ADD_LO12_NC, REL)
+RELOC_TYPE (TLSGD_MOVW_G1, REL)
+RELOC_TYPE (TLSGD_MOVW_G0_NC, REL)
+RELOC_TYPE (TLSLD_ADR_PREL21, REL)
+RELOC_TYPE (TLSLD_ADR_PAGE21, REL)
+RELOC_TYPE (TLSLD_ADD_LO12_NC, REL)
+RELOC_TYPE (TLSLD_MOVW_G1, REL)
+RELOC_TYPE (TLSLD_MOVW_G0_NC, REL)
+RELOC_TYPE (TLSLD_LD_PREL19, REL)
+RELOC_TYPE (TLSLD_MOVW_DTPREL_G2, REL)
+RELOC_TYPE (TLSLD_MOVW_DTPREL_G1, REL)
+RELOC_TYPE (TLSLD_MOVW_DTPREL_G1_NC, REL)
+RELOC_TYPE (TLSLD_MOVW_DTPREL_G0, REL)
+RELOC_TYPE (TLSLD_MOVW_DTPREL_G0_NC, REL)
+RELOC_TYPE (TLSLD_ADD_DTPREL_HI12, REL)
+RELOC_TYPE (TLSLD_ADD_DTPREL_LO12, REL)
+RELOC_TYPE (TLSLD_ADD_DTPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLD_LDST8_DTPREL_LO12, REL)
+RELOC_TYPE (TLSLD_LDST8_DTPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLD_LDST16_DTPREL_LO12, REL)
+RELOC_TYPE (TLSLD_LDST16_DTPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLD_LDST32_DTPREL_LO12, REL)
+RELOC_TYPE (TLSLD_LDST32_DTPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLD_LDST64_DTPREL_LO12, REL)
+RELOC_TYPE (TLSLD_LDST64_DTPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLD_LDST128_DTPREL_LO12, REL)
+RELOC_TYPE (TLSLD_LDST128_DTPREL_LO12_NC, REL)
+RELOC_TYPE (TLSIE_MOVW_GOTTPREL_G1, REL)
+RELOC_TYPE (TLSIE_MOVW_GOTTPREL_G0_NC, REL)
+RELOC_TYPE (TLSIE_ADR_GOTTPREL_PAGE21, REL)
+RELOC_TYPE (TLSIE_LD64_GOTTPREL_LO12_NC, REL)
+RELOC_TYPE (TLSIE_LD_GOTTPREL_PREL19, REL)
+RELOC_TYPE (TLSLE_MOVW_TPREL_G2, REL)
+RELOC_TYPE (TLSLE_MOVW_TPREL_G1, REL)
+RELOC_TYPE (TLSLE_MOVW_TPREL_G1_NC, REL)
+RELOC_TYPE (TLSLE_MOVW_TPREL_G0, REL)
+RELOC_TYPE (TLSLE_MOVW_TPREL_G0_NC, REL)
+RELOC_TYPE (TLSLE_ADD_TPREL_HI12, REL)
+RELOC_TYPE (TLSLE_ADD_TPREL_LO12, REL)
+RELOC_TYPE (TLSLE_ADD_TPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLE_LDST8_TPREL_LO12, REL)
+RELOC_TYPE (TLSLE_LDST8_TPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLE_LDST16_TPREL_LO12, REL)
+RELOC_TYPE (TLSLE_LDST16_TPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLE_LDST32_TPREL_LO12, REL)
+RELOC_TYPE (TLSLE_LDST32_TPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLE_LDST64_TPREL_LO12, REL)
+RELOC_TYPE (TLSLE_LDST64_TPREL_LO12_NC, REL)
+RELOC_TYPE (TLSLE_LDST128_TPREL_LO12, REL)
+RELOC_TYPE (TLSLE_LDST128_TPREL_LO12_NC, REL)
+RELOC_TYPE (TLSDESC_LD_PREL19, REL)
+RELOC_TYPE (TLSDESC_ADR_PREL21, REL)
+RELOC_TYPE (TLSDESC_ADR_PAGE21, REL)
+RELOC_TYPE (TLSDESC_LD64_LO12, REL)
+RELOC_TYPE (TLSDESC_ADD_LO12, REL)
+RELOC_TYPE (TLSDESC_OFF_G1, REL)
+RELOC_TYPE (TLSDESC_OFF_G0_NC, REL)
+RELOC_TYPE (TLSDESC_LDR, REL)
+RELOC_TYPE (TLSDESC_ADD, REL)
+RELOC_TYPE (TLSDESC_CALL, REL)
--- /dev/null
+/* Function return value location for Linux/AArch64 ABI.
+ 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
+
+#include <stdio.h>
+#include <inttypes.h>
+
+#include <assert.h>
+#include <dwarf.h>
+
+#define BACKEND aarch64_
+#include "libebl_CPU.h"
+
+static int
+skip_until (Dwarf_Die *child, int tag)
+{
+ int i;
+ while (DWARF_TAG_OR_RETURN (child) != tag)
+ if ((i = dwarf_siblingof (child, child)) != 0)
+ /* If there are no members, then this is not a HFA. Errors
+ are propagated. */
+ return i;
+ return 0;
+}
+
+static int
+dwarf_bytesize_aux (Dwarf_Die *die, Dwarf_Word *sizep)
+{
+ int bits;
+ if (((bits = 8 * dwarf_bytesize (die)) < 0
+ && (bits = dwarf_bitsize (die)) < 0)
+ || bits % 8 != 0)
+ return -1;
+
+ *sizep = bits / 8;
+ return 0;
+}
+
+/* HFA (Homogeneous Floating-point Aggregate) is an aggregate type
+ whose members are all of the same floating-point type, which is
+ then base type of this HFA. Instead of being floating-point types
+ directly, members can instead themselves be HFA. Such HFA fields
+ are handled as if their type were HFA base type.
+
+ This function returns 0 if TYPEDIE is HFA, 1 if it is not, or -1 if
+ there were errors. In the former case, *SIZEP contains byte size
+ of the base type (e.g. 8 for IEEE double). *COUNT is set to the
+ number of leaf members of the HFA. */
+static int hfa_type (Dwarf_Die *ftypedie, int tag,
+ Dwarf_Word *sizep, Dwarf_Word *countp);
+
+/* Return 0 if MEMBDIE refers to a member with a floating-point or HFA
+ type, or 1 if it's not. Return -1 for errors. The meaning of the
+ remaining arguments is as documented at hfa_type. */
+static int
+member_is_fp (Dwarf_Die *membdie, Dwarf_Word *sizep, Dwarf_Word *countp)
+{
+ Dwarf_Die typedie;
+ int tag = dwarf_peeled_die_type (membdie, &typedie);
+ switch (tag)
+ {
+ case DW_TAG_base_type:;
+ Dwarf_Word encoding;
+ Dwarf_Attribute attr_mem;
+ if (dwarf_attr_integrate (&typedie, DW_AT_encoding, &attr_mem) == NULL
+ || dwarf_formudata (&attr_mem, &encoding) != 0)
+ return -1;
+
+ switch (encoding)
+ {
+ case DW_ATE_complex_float:
+ *countp = 2;
+ break;
+
+ case DW_ATE_float:
+ *countp = 1;
+ break;
+
+ default:
+ return 1;
+ }
+
+ if (dwarf_bytesize_aux (&typedie, sizep) < 0)
+ return -1;
+
+ *sizep /= *countp;
+ return 0;
+
+ case DW_TAG_structure_type:
+ case DW_TAG_union_type:
+ case DW_TAG_array_type:
+ return hfa_type (&typedie, tag, sizep, countp);
+ }
+
+ return 1;
+}
+
+static int
+hfa_type (Dwarf_Die *ftypedie, int tag, Dwarf_Word *sizep, Dwarf_Word *countp)
+{
+ assert (tag == DW_TAG_structure_type || tag == DW_TAG_class_type
+ || tag == DW_TAG_union_type || tag == DW_TAG_array_type);
+
+ int i;
+ if (tag == DW_TAG_array_type)
+ {
+ Dwarf_Word tot_size;
+ if (dwarf_aggregate_size (ftypedie, &tot_size) < 0)
+ return -1;
+
+ /* For vector types, we don't care about the underlying
+ type, but only about the vector type itself. */
+ bool vec;
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formflag (dwarf_attr_integrate (ftypedie, DW_AT_GNU_vector,
+ &attr_mem), &vec) == 0
+ && vec)
+ {
+ *sizep = tot_size;
+ *countp = 1;
+
+ return 0;
+ }
+
+ if ((i = member_is_fp (ftypedie, sizep, countp)) == 0)
+ {
+ *countp = tot_size / *sizep;
+ return 0;
+ }
+
+ return i;
+ }
+
+ /* Find first DW_TAG_member and determine its type. */
+ Dwarf_Die member;
+ if ((i = dwarf_child (ftypedie, &member) != 0))
+ return i;
+
+ if ((i = skip_until (&member, DW_TAG_member)) != 0)
+ return i;
+
+ *countp = 0;
+ if ((i = member_is_fp (&member, sizep, countp)) != 0)
+ return i;
+
+ while ((i = dwarf_siblingof (&member, &member)) == 0
+ && (i = skip_until (&member, DW_TAG_member)) == 0)
+ {
+ Dwarf_Word size, count;
+ if ((i = member_is_fp (&member, &size, &count)) != 0)
+ return i;
+
+ if (*sizep != size)
+ return 1;
+
+ *countp += count;
+ }
+
+ /* At this point we already have at least one FP member, which means
+ FTYPEDIE is an HFA. So either return 0, or propagate error. */
+ return i < 0 ? i : 0;
+}
+
+static int
+pass_in_gpr (const Dwarf_Op **locp, Dwarf_Word size)
+{
+ static const Dwarf_Op loc[] =
+ {
+ { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 8 },
+ { .atom = DW_OP_reg1 }, { .atom = DW_OP_piece, .number = 8 }
+ };
+
+ *locp = loc;
+ return size <= 8 ? 1 : 4;
+}
+
+static int
+pass_by_ref (const Dwarf_Op **locp)
+{
+ static const Dwarf_Op loc[] = { { .atom = DW_OP_breg0 } };
+
+ *locp = loc;
+ return 1;
+}
+
+static int
+pass_hfa (const Dwarf_Op **locp, Dwarf_Word size, Dwarf_Word count)
+{
+ assert (count >= 1 && count <= 4);
+ assert (size == 2 || size == 4 || size == 8 || size == 16);
+
+#define DEFINE_FPREG(NAME, SIZE) \
+ static const Dwarf_Op NAME[] = { \
+ { .atom = DW_OP_regx, .number = 64 }, \
+ { .atom = DW_OP_piece, .number = SIZE }, \
+ { .atom = DW_OP_regx, .number = 65 }, \
+ { .atom = DW_OP_piece, .number = SIZE }, \
+ { .atom = DW_OP_regx, .number = 66 }, \
+ { .atom = DW_OP_piece, .number = SIZE }, \
+ { .atom = DW_OP_regx, .number = 67 }, \
+ { .atom = DW_OP_piece, .number = SIZE } \
+ }
+
+ switch (size)
+ {
+ case 2:;
+ DEFINE_FPREG (loc_hfa_2, 2);
+ *locp = loc_hfa_2;
+ break;
+
+ case 4:;
+ DEFINE_FPREG (loc_hfa_4, 4);
+ *locp = loc_hfa_4;
+ break;
+
+ case 8:;
+ DEFINE_FPREG (loc_hfa_8, 8);
+ *locp = loc_hfa_8;
+ break;
+
+ case 16:;
+ DEFINE_FPREG (loc_hfa_16, 16);
+ *locp = loc_hfa_16;
+ break;
+ }
+#undef DEFINE_FPREG
+
+ return count == 1 ? 1 : 2 * count;
+}
+
+static int
+pass_in_simd (const Dwarf_Op **locp)
+{
+ /* This is like passing single-element HFA. Size doesn't matter, so
+ pretend it's for example double. */
+ return pass_hfa (locp, 8, 1);
+}
+
+int
+aarch64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
+{
+ /* Start with the function's type, and get the DW_AT_type attribute,
+ which is the type of the return value. */
+ Dwarf_Die typedie;
+ int tag = dwarf_peeled_die_type (functypedie, &typedie);
+ if (tag <= 0)
+ return tag;
+
+ Dwarf_Word size = (Dwarf_Word)-1;
+
+ /* If the argument type is a Composite Type that is larger than 16
+ bytes, then the argument is copied to memory allocated by the
+ caller and the argument is replaced by a pointer to the copy. */
+ if (tag == DW_TAG_structure_type || tag == DW_TAG_union_type
+ || tag == DW_TAG_class_type || tag == DW_TAG_array_type)
+ {
+ Dwarf_Word base_size, count;
+ switch (hfa_type (&typedie, tag, &base_size, &count))
+ {
+ default:
+ return -1;
+
+ case 0:
+ assert (count > 0);
+ if (count <= 4)
+ return pass_hfa (locp, base_size, count);
+ /* Fall through. */
+
+ case 1:
+ /* Not a HFA. */
+ if (dwarf_aggregate_size (&typedie, &size) < 0)
+ return -1;
+ if (size > 16)
+ return pass_by_ref (locp);
+ }
+ }
+
+ if (tag == DW_TAG_base_type
+ || tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ {
+ if (dwarf_bytesize_aux (&typedie, &size) < 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 8;
+ else
+ return -1;
+ }
+
+ Dwarf_Attribute attr_mem;
+ if (tag == DW_TAG_base_type)
+ {
+ Dwarf_Word encoding;
+ if (dwarf_formudata (dwarf_attr_integrate (&typedie, DW_AT_encoding,
+ &attr_mem),
+ &encoding) != 0)
+ return -1;
+
+ switch (encoding)
+ {
+ /* If the argument is a Half-, Single-, Double- or Quad-
+ precision Floating-point [...] the argument is allocated
+ to the least significant bits of register v[NSRN]. */
+ case DW_ATE_float:
+ switch (size)
+ {
+ case 2: /* half */
+ case 4: /* sigle */
+ case 8: /* double */
+ case 16: /* quad */
+ return pass_in_simd (locp);
+
+ default:
+ return -2;
+ }
+
+ case DW_ATE_complex_float:
+ switch (size)
+ {
+ case 8: /* float _Complex */
+ case 16: /* double _Complex */
+ case 32: /* long double _Complex */
+ return pass_hfa (locp, size / 2, 2);
+
+ default:
+ return -2;
+ }
+
+ /* If the argument is an Integral or Pointer Type, the
+ size of the argument is less than or equal to 8 bytes
+ [...] the argument is copied to the least significant
+ bits in x[NGRN]. */
+ case DW_ATE_boolean:
+ case DW_ATE_signed:
+ case DW_ATE_unsigned:
+ case DW_ATE_unsigned_char:
+ case DW_ATE_signed_char:
+ return pass_in_gpr (locp, size);
+ }
+
+ return -2;
+ }
+ else
+ return pass_in_gpr (locp, size);
+ }
+
+ *locp = NULL;
+ return 0;
+}
--- /dev/null
+/* AArch64 specific symbolic name handling.
+ 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
+
+#include <elf.h>
+#include <stddef.h>
+#include <string.h>
+
+#define BACKEND aarch64_
+#include "libebl_CPU.h"
+
+
+/* Check for the simple reloc types. */
+Elf_Type
+aarch64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type)
+{
+ switch (type)
+ {
+ case R_AARCH64_ABS64:
+ return ELF_T_XWORD;
+ case R_AARCH64_ABS32:
+ return ELF_T_WORD;
+ case R_AARCH64_ABS16:
+ return ELF_T_HALF;
+
+ default:
+ return ELF_T_NUM;
+ }
+}
+
+/* If this is the _GLOBAL_OFFSET_TABLE_ symbol, then it should point to
+ .got[0] even if there is a .got.plt section. */
+bool
+aarch64_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym,
+ const char *name, const GElf_Shdr *destshdr)
+{
+ if (name != NULL
+ && strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
+ {
+ const char *sname = elf_strptr (elf, ehdr->e_shstrndx, destshdr->sh_name);
+ if (sname != NULL && strcmp (sname, ".got.plt") == 0)
+ {
+ Elf_Scn *scn = NULL;
+ while ((scn = elf_nextscn (elf, scn)) != NULL)
+ {
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+ if (shdr != NULL)
+ {
+ sname = elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name);
+ if (sname != NULL && strcmp (sname, ".got") == 0)
+ return sym->st_value == shdr->sh_addr;
+ }
+ }
+ }
+ }
+
+ return false;
+}
/* Function return value location for Alpha ELF ABI.
- Copyright (C) 2005, 2007 Red Hat, Inc.
+ Copyright (C) 2005, 2007, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
switch (tag)
{
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
{
+ Dwarf_Attribute attr_mem;
Dwarf_Word size;
if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
&attr_mem), &size) != 0)
--- /dev/null
+/* arm ABI-specified defaults for DWARF CFI.
+ 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
+
+#include <dwarf.h>
+
+#define BACKEND arm_
+#include "libebl_CPU.h"
+
+
+/* ABI-specified state of DWARF CFI based on:
+
+ "DWARF for the ARM Architecture ABI r2.09"
+http://infocenter.arm.com/help/topic/com.arm.doc.ihi0040b/IHI0040B_aadwarf.pdf
+
+ "Procedure Call Standard for the ARM Architecture ABI r2.09"
+http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf
+*/
+
+int
+arm_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info)
+{
+ static const uint8_t abi_cfi[] =
+ {
+ /* The initial Canonical Frame Address is the value of the
+ Stack Pointer (r13) as setup in the previous frame. */
+ DW_CFA_def_cfa, ULEB128_7 (13), ULEB128_7 (0),
+
+ /* The Stack Pointer (r13) is restored from CFA address by default. */
+ DW_CFA_val_offset, ULEB128_7 (13), ULEB128_7 (0),
+
+#define SV(n) DW_CFA_same_value, ULEB128_7 (n)
+ /* Callee-saved regs r4-r8, r10, r11. */
+ SV (4), SV (5), SV (6), SV (7), SV (8), SV (10), SV (11),
+
+ /* The link register contains the return address setup by caller. */
+ SV (14),
+ DW_CFA_register, ULEB128_7 (15), ULEB128_7 (14), /* pc = lr */
+#undef SV
+
+ /* VFP S16-S31/D8-D15/Q4-Q7 are callee saved.
+ And uleb128 encoded with two bytes. */
+#define ULEB128_8_2(x) ((x & 0x7f) | 0x80), 0x02
+#define SV(n) DW_CFA_same_value, ULEB128_8_2 (n)
+ SV (264), SV (265), SV (266), SV (267),
+ SV (268), SV (269), SV (270), SV (271),
+
+ /* XXX Note: registers intentionally unused by the program,
+ for example as a consequence of the procedure call standard
+ should be initialized as if by DW_CFA_same_value. */
+ };
+#undef ULEB128_8_2
+#undef SV
+
+ abi_info->initial_instructions = abi_cfi;
+ abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi];
+ abi_info->data_alignment_factor = 4;
+
+ abi_info->return_address_register = 15; /* pc. */
+
+ return 0;
+}
/* ARM specific core note handling.
- Copyright (C) 2009 Red Hat, Inc.
+ Copyright (C) 2009, 2012 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
{ .offset = 0, .regno = 96, .count = 8, .bits = 96 }, /* f0..f7 */
};
-#define FPREGSET_SIZE 140
+#define FPREGSET_SIZE 116
#define ULONG uint32_t
#define PID_T int32_t
#define TYPE_UID_T ELF_T_HALF
#define TYPE_GID_T ELF_T_HALF
+#define ARM_VFPREGS_SIZE ( 32 * 8 /*fpregs*/ + 4 /*fpscr*/ )
+static const Ebl_Register_Location vfp_regs[] =
+ {
+ { .offset = 0, .regno = 256, .count = 32, .bits = 64 }, /* fpregs */
+ };
+
+static const Ebl_Core_Item vfp_items[] =
+ {
+ {
+ .name = "fpscr", .group = "register",
+ .offset = 0,
+ .type = ELF_T_WORD, .format = 'x',
+ },
+ };
+
+#define EXTRA_NOTES \
+ EXTRA_REGSET_ITEMS (NT_ARM_VFP, ARM_VFPREGS_SIZE, vfp_regs, vfp_items)
+
#include "linux-core-note.c"
/* Initialization of Arm specific backend library.
- Copyright (C) 2002, 2005, 2009 Red Hat, Inc.
+ Copyright (C) 2002, 2005, 2009, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
HOOK (eh, auxv_info);
HOOK (eh, check_object_attribute);
HOOK (eh, return_value_location);
+ HOOK (eh, abi_cfi);
+ HOOK (eh, check_reloc_target_type);
+
+ /* We only unwind the core integer registers. */
+ eh->frame_nregs = 16;
+ HOOK (eh, set_initial_registers_tid);
+
+ /* Bit zero encodes whether an function address is THUMB or ARM. */
+ eh->func_addr_mask = ~(GElf_Addr)1;
return MODVERSION;
}
--- /dev/null
+/* Fetch live process registers from TID.
+ Copyright (C) 2014 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
+
+#if defined __arm__
+# include <sys/types.h>
+# include <sys/user.h>
+# include <sys/ptrace.h>
+#endif
+
+#ifdef __aarch64__
+# include <linux/uio.h>
+# include <sys/user.h>
+# include <sys/ptrace.h>
+/* Deal with old glibc defining user_pt_regs instead of user_regs_struct. */
+# ifndef HAVE_SYS_USER_REGS
+# define user_regs_struct user_pt_regs
+# endif
+#endif
+
+#define BACKEND arm_
+#include "libebl_CPU.h"
+
+bool
+arm_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+ ebl_tid_registers_t *setfunc __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+#if !defined __arm__ && !defined __aarch64__
+ return false;
+#else /* __arm__ || __aarch64__ */
+#if defined __arm__
+ struct user_regs user_regs;
+ if (ptrace (PTRACE_GETREGS, tid, NULL, &user_regs) != 0)
+ return false;
+
+ Dwarf_Word dwarf_regs[16];
+ /* R0..R12 SP LR PC */
+ for (int i = 0; i < 16; i++)
+ dwarf_regs[i] = user_regs.uregs[i];
+
+ return setfunc (0, 16, dwarf_regs, arg);
+#elif defined __aarch64__
+ /* Compat mode: arm compatible code running on aarch64 */
+ int i;
+ struct user_regs_struct gregs;
+ struct iovec iovec;
+ iovec.iov_base = &gregs;
+ iovec.iov_len = sizeof (gregs);
+ if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0)
+ return false;
+
+ Dwarf_Word dwarf_regs[16];
+ /* R0..R12 SP LR PC, encoded as 32 bit quantities */
+ uint32_t *u32_ptr = (uint32_t *) &gregs.regs[0];
+ for (i = 0; i < 16; i++)
+ dwarf_regs[i] = u32_ptr[i];
+
+ return setfunc (0, 16, dwarf_regs, arg);
+#else
+# error "source file error, it cannot happen"
+#endif
+#endif
+}
if (regno < 0 || regno > 320 || namelen < 5)
return -1;
- *prefix = NULL;
+ *prefix = "";
*bits = 32;
*type = DW_ATE_signed;
*setname = "integer";
/* List the relocation types for arm. -*- C -*-
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
RELOC_TYPE (THM_PC22, REL)
RELOC_TYPE (THM_PC8, REL)
RELOC_TYPE (AMP_VCALL9, REL)
-RELOC_TYPE (SWI24, REL)
+RELOC_TYPE (TLS_DESC, EXEC|DYN)
RELOC_TYPE (THM_SWI8, REL)
RELOC_TYPE (XPC25, REL)
RELOC_TYPE (THM_XPC22, REL)
RELOC_TYPE (GOTPC, REL)
RELOC_TYPE (GOT32, REL)
RELOC_TYPE (PLT32, REL)
+RELOC_TYPE (CALL, REL)
+RELOC_TYPE (JUMP24, REL)
+RELOC_TYPE (THM_JUMP24, REL)
+RELOC_TYPE (BASE_ABS, REL)
RELOC_TYPE (ALU_PCREL_7_0, REL)
RELOC_TYPE (ALU_PCREL_15_8, REL)
RELOC_TYPE (ALU_PCREL_23_15, REL)
RELOC_TYPE (LDR_SBREL_11_0, REL)
RELOC_TYPE (ALU_SBREL_19_12, REL)
RELOC_TYPE (ALU_SBREL_27_20, REL)
+RELOC_TYPE (TARGET1, REL)
+RELOC_TYPE (SBREL31, REL)
+RELOC_TYPE (V4BX, REL)
+RELOC_TYPE (TARGET2, REL)
+RELOC_TYPE (PREL31, REL)
+RELOC_TYPE (MOVW_ABS_NC, REL)
+RELOC_TYPE (MOVT_ABS, REL)
+RELOC_TYPE (MOVW_PREL_NC, REL)
+RELOC_TYPE (MOVT_PREL, REL)
+RELOC_TYPE (THM_MOVW_ABS_NC, REL)
+RELOC_TYPE (THM_MOVT_ABS, REL)
+RELOC_TYPE (THM_MOVW_PREL_NC, REL)
+RELOC_TYPE (THM_MOVT_PREL, REL)
+RELOC_TYPE (THM_JUMP19, REL)
+RELOC_TYPE (THM_JUMP6, REL)
+RELOC_TYPE (THM_ALU_PREL_11_0, REL)
+RELOC_TYPE (THM_PC12, REL)
+RELOC_TYPE (ABS32_NOI, REL)
+RELOC_TYPE (REL32_NOI, REL)
+RELOC_TYPE (ALU_PC_G0_NC, REL)
+RELOC_TYPE (ALU_PC_G0, REL)
+RELOC_TYPE (ALU_PC_G1_NC, REL)
+RELOC_TYPE (ALU_PC_G1, REL)
+RELOC_TYPE (ALU_PC_G2, REL)
+RELOC_TYPE (LDR_PC_G1, REL)
+RELOC_TYPE (LDR_PC_G2, REL)
+RELOC_TYPE (LDRS_PC_G0, REL)
+RELOC_TYPE (LDRS_PC_G1, REL)
+RELOC_TYPE (LDRS_PC_G2, REL)
+RELOC_TYPE (LDC_PC_G0, REL)
+RELOC_TYPE (LDC_PC_G1, REL)
+RELOC_TYPE (LDC_PC_G2, REL)
+RELOC_TYPE (ALU_SB_G0_NC, REL)
+RELOC_TYPE (ALU_SB_G0, REL)
+RELOC_TYPE (ALU_SB_G1_NC, REL)
+RELOC_TYPE (ALU_SB_G1, REL)
+RELOC_TYPE (ALU_SB_G2, REL)
+RELOC_TYPE (LDR_SB_G0, REL)
+RELOC_TYPE (LDR_SB_G1, REL)
+RELOC_TYPE (LDR_SB_G2, REL)
+RELOC_TYPE (LDRS_SB_G0, REL)
+RELOC_TYPE (LDRS_SB_G1, REL)
+RELOC_TYPE (LDRS_SB_G2, REL)
+RELOC_TYPE (LDC_SB_G0, REL)
+RELOC_TYPE (LDC_SB_G1, REL)
+RELOC_TYPE (LDC_SB_G2, REL)
+RELOC_TYPE (MOVW_BREL_NC, REL)
+RELOC_TYPE (MOVT_BREL, REL)
+RELOC_TYPE (MOVW_BREL, REL)
+RELOC_TYPE (THM_MOVW_BREL_NC, REL)
+RELOC_TYPE (THM_MOVT_BREL, REL)
+RELOC_TYPE (THM_MOVW_BREL, REL)
+RELOC_TYPE (TLS_GOTDESC, REL)
+RELOC_TYPE (TLS_CALL, REL)
+RELOC_TYPE (TLS_DESCSEQ, REL)
+RELOC_TYPE (THM_TLS_CALL, REL)
+RELOC_TYPE (PLT32_ABS, REL)
+RELOC_TYPE (GOT_ABS, REL)
+RELOC_TYPE (GOT_PREL, REL)
+RELOC_TYPE (GOT_BREL12, REL)
+RELOC_TYPE (GOTOFF12, REL)
+RELOC_TYPE (GOTRELAX, REL)
RELOC_TYPE (GNU_VTENTRY, REL)
RELOC_TYPE (GNU_VTINHERIT, REL)
RELOC_TYPE (THM_PC11, REL)
RELOC_TYPE (TLS_LDO32, REL)
RELOC_TYPE (TLS_IE32, REL)
RELOC_TYPE (TLS_LE32, REL)
+RELOC_TYPE (TLS_LDO12, REL)
+RELOC_TYPE (TLS_LE12, REL)
+RELOC_TYPE (TLS_IE12GP, REL)
+
+RELOC_TYPE (ME_TOO, REL)
+RELOC_TYPE (THM_TLS_DESCSEQ16, REL)
+RELOC_TYPE (THM_TLS_DESCSEQ32, REL)
+RELOC_TYPE (THM_GOT_BREL12, REL)
+
+RELOC_TYPE (IRELATIVE, EXEC|DYN)
+
RELOC_TYPE (RXPC25, REL)
RELOC_TYPE (RSBREL32, REL)
RELOC_TYPE (THM_RPC22, REL)
/* Function return value location for ARM EABI.
- Copyright (C) 2009-2010 Red Hat, Inc.
+ Copyright (C) 2009-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 4;
- else
- return -1;
- }
- if (size <= 16)
- {
- intreg:
- *locp = loc_intreg;
- return size <= 4 ? nloc_intreg : nloc_intregs ((size + 3) / 4);
- }
-
- aggregate:
- *locp = loc_aggregate;
- return nloc_aggregate;
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 4;
+ else
+ return -1;
+ }
+ if (size <= 16)
+ {
+ intreg:
+ *locp = loc_intreg;
+ return size <= 4 ? nloc_intreg : nloc_intregs ((size + 3) / 4);
+ }
+
+ aggregate:
+ *locp = loc_aggregate;
+ return nloc_aggregate;
+ }
case DW_TAG_structure_type:
case DW_TAG_class_type:
/* Arm specific symbolic name handling.
- Copyright (C) 2002-2009 Red Hat, Inc.
+ Copyright (C) 2002-2009, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
return ELF_T_NUM;
}
}
+
+/* The SHT_ARM_EXIDX section type is a valid target for relocation. */
+bool
+arm_check_reloc_target_type (Ebl *ebl __attribute__ ((unused)), Elf64_Word sh_type)
+{
+ return sh_type == SHT_ARM_EXIDX;
+}
/* Initialization of i386 specific backend library.
- Copyright (C) 2000-2009 Red Hat, Inc.
+ Copyright (C) 2000-2009, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
HOOK (eh, auxv_info);
HOOK (eh, disasm);
HOOK (eh, abi_cfi);
+ /* gcc/config/ #define DWARF_FRAME_REGISTERS. For i386 it is 17, why? */
+ eh->frame_nregs = 9;
+ HOOK (eh, set_initial_registers_tid);
return MODVERSION;
}
--- /dev/null
+/* Fetch live process registers from TID.
+ 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
+
+#if defined __i386__ || defined __x86_64__
+# include <sys/types.h>
+# include <sys/user.h>
+# include <sys/ptrace.h>
+#endif
+
+#define BACKEND i386_
+#include "libebl_CPU.h"
+
+bool
+i386_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+ ebl_tid_registers_t *setfunc __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+#if (!defined __i386__ && !defined __x86_64__) || !defined(__linux__)
+ return false;
+#else /* __i386__ || __x86_64__ */
+ struct user_regs_struct user_regs;
+ if (ptrace (PTRACE_GETREGS, tid, NULL, &user_regs) != 0)
+ return false;
+ Dwarf_Word dwarf_regs[9];
+# if defined __i386__
+ dwarf_regs[0] = user_regs.eax;
+ dwarf_regs[1] = user_regs.ecx;
+ dwarf_regs[2] = user_regs.edx;
+ dwarf_regs[3] = user_regs.ebx;
+ dwarf_regs[4] = user_regs.esp;
+ dwarf_regs[5] = user_regs.ebp;
+ dwarf_regs[6] = user_regs.esi;
+ dwarf_regs[7] = user_regs.edi;
+ dwarf_regs[8] = user_regs.eip;
+# elif defined __x86_64__
+ dwarf_regs[0] = user_regs.rax;
+ dwarf_regs[1] = user_regs.rcx;
+ dwarf_regs[2] = user_regs.rdx;
+ dwarf_regs[3] = user_regs.rbx;
+ dwarf_regs[4] = user_regs.rsp;
+ dwarf_regs[5] = user_regs.rbp;
+ dwarf_regs[6] = user_regs.rsi;
+ dwarf_regs[7] = user_regs.rdi;
+ dwarf_regs[8] = user_regs.rip;
+# else /* (__i386__ || __x86_64__) && (!__i386__ && !__x86_64__) */
+# error "source file error, it cannot happen"
+# endif /* (__i386__ || __x86_64__) && (!__i386__ && !__x86_64__) */
+ return setfunc (0, 9, dwarf_regs, arg);
+#endif /* __i386__ || __x86_64__ */
+}
/* Function return value location for Linux/i386 ABI.
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
switch (tag)
{
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_ptr_to_member_type:
{
Dwarf_Word size;
+ Dwarf_Attribute attr_mem;
if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
&attr_mem), &size) != 0)
{
/* Initialization of IA-64 specific backend library.
- Copyright (C) 2002, 2003, 2005, 2006, 2007 Red Hat, Inc.
+ Copyright (C) 2002, 2003, 2005, 2006, 2007, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
HOOK (eh, machine_section_flag_check);
HOOK (eh, register_info);
HOOK (eh, return_value_location);
+ HOOK (eh, check_reloc_target_type);
return MODVERSION;
}
/* Function return value location for IA64 ABI.
- Copyright (C) 2006-2010 Red Hat, Inc.
+ Copyright (C) 2006-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
return fpregs_used + nregs;
}
- int tag = dwarf_tag (typedie);
+ int tag = DWARF_TAG_OR_RETURN (typedie);
switch (tag)
{
Dwarf_Attribute attr_mem;
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 8;
- else
- return -1;
- }
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 8;
+ else
+ return -1;
+ }
+ }
+
if (tag == DW_TAG_base_type)
{
+ Dwarf_Attribute attr_mem;
Dwarf_Word encoding;
if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
&attr_mem),
/* IA-64 specific symbolic name handling.
- Copyright (C) 2002-2009 Red Hat, Inc.
+ Copyright (C) 2002-2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
return ELF_T_NUM;
}
+
+/* The SHT_IA_64_UNWIND section type is a valid target for relocation. */
+bool
+ia64_check_reloc_target_type (Ebl *ebl __attribute__ ((unused)), Elf64_Word sh_type)
+{
+ return sh_type == SHT_IA_64_UNWIND;
+}
/* Common interface for libebl modules.
- Copyright (C) 2000, 2001, 2002, 2003, 2005 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003, 2005, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#ifndef _LIBEBL_CPU_H
#define _LIBEBL_CPU_H 1
+#include <dwarf.h>
#include <libeblP.h>
#define EBLHOOK(name) EBLHOOK_1(BACKEND, name)
extern bool (*generic_debugscn_p) (const char *) attribute_hidden;
+/* Helper for retval. Return dwarf_tag (die), but calls return -1
+ if there where previous errors that leave die NULL. */
+#define DWARF_TAG_OR_RETURN(die) \
+ ({ Dwarf_Die *_die = (die); \
+ if (_die == NULL) return -1; \
+ dwarf_tag (_die); })
+
+/* Follow typedefs and qualifiers to get to the actual type. */
+static inline int
+dwarf_peel_type (Dwarf_Die *typediep, Dwarf_Attribute *attrp)
+{
+ int tag = DWARF_TAG_OR_RETURN (typediep);
+ while (tag == DW_TAG_typedef
+ || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
+ || tag == DW_TAG_restrict_type)
+ {
+ attrp = dwarf_attr_integrate (typediep, DW_AT_type, attrp);
+ typediep = dwarf_formref_die (attrp, typediep);
+ tag = DWARF_TAG_OR_RETURN (typediep);
+ }
+
+ return tag;
+}
+
+/* Get a type die corresponding to DIE. Peel CV qualifiers off
+ it. */
+static inline int
+dwarf_peeled_die_type (Dwarf_Die *die, Dwarf_Die *result)
+{
+ Dwarf_Attribute attr_mem;
+ Dwarf_Attribute *attr = dwarf_attr_integrate (die, DW_AT_type, &attr_mem);
+ if (attr == NULL)
+ /* The function has no return value, like a `void' function in C. */
+ return 0;
+
+ if (dwarf_formref_die (attr, result) == NULL)
+ return -1;
+
+ return dwarf_peel_type (result, attr);
+}
#endif /* libebl_CPU.h */
#define INT int32_t
#define ALIGN_INT 4
#define TYPE_INT ELF_T_SWORD
+#ifndef ALIGN_PR_REG
+# define ALIGN_PR_REG ALIGN_ULONG
+#endif
#define FIELD(type, name) type name __attribute__ ((aligned (ALIGN_##type)))
struct EBLHOOK(timeval) pr_stime;
struct EBLHOOK(timeval) pr_cutime;
struct EBLHOOK(timeval) pr_cstime;
- FIELD (ULONG, pr_reg[PRSTATUS_REGS_SIZE / sizeof (ULONG)]);
+ struct
+ {
+ FIELD (ULONG, pr_reg[PRSTATUS_REGS_SIZE / sizeof (ULONG)]);
+ }
+#ifdef ALIGN_PR_REG
+ __attribute__ ((aligned (ALIGN_PR_REG)))
+#endif
+ ;
FIELD (INT, pr_fpvalid);
};
FIELD (signal, INT, info.si_code, 'd'),
FIELD (signal, INT, info.si_errno, 'd'),
FIELD (signal, SHORT, cursig, 'd'),
- FIELD (signal, ULONG, sigpend, 'B'),
- FIELD (signal, ULONG, sighold, 'B'),
+
+ /* Use different group name for a newline delimiter. */
+ FIELD (signal2, ULONG, sigpend, 'B'),
+ FIELD (signal3, ULONG, sighold, 'B'),
FIELD (identity, PID_T, pid, 'd', .thread_identifier = true),
FIELD (identity, PID_T, ppid, 'd'),
FIELD (identity, PID_T, pgrp, 'd'),
*items = NULL; \
return 1;
+#define EXTRA_REGSET_ITEMS(type, size, table, extra_items) \
+ case type: \
+ if (nhdr->n_descsz != size) \
+ return 0; \
+ *regs_offset = 0; \
+ *nregloc = sizeof table / sizeof table[0]; \
+ *reglocs = table; \
+ *nitems = sizeof extra_items / sizeof extra_items[0]; \
+ *items = extra_items; \
+ return 1;
+
+#define EXTRA_ITEMS(type, size, extra_items) \
+ case type: \
+ if (nhdr->n_descsz != size) \
+ return 0; \
+ *regs_offset = 0; \
+ *nregloc = 0; \
+ *reglocs = NULL; \
+ *nitems = sizeof extra_items / sizeof extra_items[0]; \
+ *items = extra_items; \
+ return 1;
+
#ifdef FPREGSET_SIZE
EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
#endif
/* Initialization of PPC64 specific backend library.
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Red Hat, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
# include <config.h>
#endif
+#include <string.h>
+
#define BACKEND ppc64_
#define RELOC_PREFIX R_PPC64_
#include "libebl_CPU.h"
HOOK (eh, reloc_simple_type);
HOOK (eh, dynamic_tag_name);
HOOK (eh, dynamic_tag_check);
+ HOOK (eh, machine_flag_check);
HOOK (eh, copy_reloc_p);
HOOK (eh, check_special_symbol);
+ HOOK (eh, check_st_other_bits);
HOOK (eh, bss_plt_p);
HOOK (eh, return_value_location);
HOOK (eh, register_info);
HOOK (eh, syscall_abi);
HOOK (eh, core_note);
HOOK (eh, auxv_info);
+ HOOK (eh, abi_cfi);
+ /* gcc/config/ #define DWARF_FRAME_REGISTERS. */
+ 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;
}
RELOC_TYPE (DTPREL16_HIGHERA, REL)
RELOC_TYPE (DTPREL16_HIGHEST, REL)
RELOC_TYPE (DTPREL16_HIGHESTA, REL)
+RELOC_TYPE (TLSGD, REL)
+RELOC_TYPE (TLSLD, REL)
+RELOC_TYPE (TOCSAVE, REL)
+RELOC_TYPE (ADDR16_HIGH, REL)
+RELOC_TYPE (ADDR16_HIGHA, REL)
+RELOC_TYPE (TPREL16_HIGH, REL)
+RELOC_TYPE (TPREL16_HIGHA, REL)
+RELOC_TYPE (DTPREL16_HIGH, REL)
+RELOC_TYPE (DTPREL16_HIGHA, REL)
+RELOC_TYPE (JMP_IREL, REL)
+RELOC_TYPE (IRELATIVE, REL)
+RELOC_TYPE (REL16, REL)
+RELOC_TYPE (REL16_LO, REL)
+RELOC_TYPE (REL16_HI, REL)
+RELOC_TYPE (REL16_HA, REL)
/* Notes from Alan Modra:
--- /dev/null
+/* 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;
+}
/* Function return value location for Linux/PPC64 ABI.
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 8;
- else
- return -1;
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 8;
+ else
+ return -1;
}
+ }
+
if (tag == DW_TAG_base_type)
{
+ Dwarf_Attribute attr_mem;
Dwarf_Word encoding;
if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
&attr_mem),
case DW_TAG_array_type:
{
+ Dwarf_Attribute attr_mem;
bool is_vector;
if (dwarf_formflag (dwarf_attr_integrate (typedie, DW_AT_GNU_vector,
&attr_mem), &is_vector) == 0
if (tag == DW_TAG_array_type)
{
/* Check if it's a character array. */
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
if (tag != DW_TAG_base_type)
goto aggregate;
if (dwarf_formudata (dwarf_attr_integrate (typedie,
/* PPC64 specific symbolic name handling.
- Copyright (C) 2004, 2005 Red Hat, Inc.
+ Copyright (C) 2004, 2005, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
return "PPC64_OPD";
case DT_PPC64_OPDSZ:
return "PPC64_OPDSZ";
+ case DT_PPC64_OPT:
+ return "PPC64_OPT";
default:
break;
}
{
return (tag == DT_PPC64_GLINK
|| tag == DT_PPC64_OPD
- || tag == DT_PPC64_OPDSZ);
+ || tag == DT_PPC64_OPDSZ
+ || tag == DT_PPC64_OPT);
}
{
return true;
}
+
+/* Check whether machine flags are valid. PPC64 has three possible values:
+ 0 - for unspecified ABI, or not using any specific ABI features.
+ 1 - for the original ELF PPC64 ABI using function descriptors.
+ 2 - for the revised ELFv2 PPC64 ABI without function descriptors. */
+bool
+ppc64_machine_flag_check (GElf_Word flags)
+{
+ return flags == 0 || flags == 1 || flags == 2;
+}
+
+bool
+ppc64_check_st_other_bits (unsigned char st_other)
+{
+ return (PPC64_LOCAL_ENTRY_OFFSET (st_other) != 0);
+}
--- /dev/null
+/* ppc ABI-specified defaults for DWARF CFI.
+ Copyright (C) 2012, 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
+
+#include <dwarf.h>
+
+#define BACKEND ppc_
+#include "libebl_CPU.h"
+
+int
+ppc_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info)
+{
+ static const uint8_t abi_cfi[] =
+ {
+ /* This instruction is provided in every CIE. It is not repeated here:
+ DW_CFA_def_cfa, ULEB128_7 (1), ULEB128_7 (0) */
+ /* r1 is assumed to be restored from cfa adress,
+ r1 acts as a stack frame pointer. */
+ DW_CFA_val_offset, ULEB128_7 (1), ULEB128_7 (0),
+ /* lr is not callee-saved but it needs to be preserved as it is pre-set
+ by the caller. */
+ DW_CFA_same_value, ULEB128_7 (65), /* lr */
+
+ /* Callee-saved regs. */
+#define SV(n) DW_CFA_same_value, ULEB128_7 (n)
+ SV (2), /* r2 is TOC pointer. */
+ SV (13), /* Reserved as system thread id (is it for CFI?). */
+ /* r14-r31 are non-volatile registers. */
+ SV (14), SV (15), SV (16), SV (17), SV (18), SV (19), SV (20), SV (21),
+ SV (22), SV (23), SV (24), SV (25), SV (26), SV (27), SV (28), SV (29),
+ SV (30), SV (31)
+ /* VMX registers v20-v31 and vrsave are non-volatile but they are
+ assigned DWARF registers 1144-1156 (v20-v31) which is outside of the
+ CFI supported range. */
+#undef SV
+ };
+
+ abi_info->initial_instructions = abi_cfi;
+ abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi];
+ abi_info->data_alignment_factor = ebl->class == ELFCLASS64 ? 8 : 4;
+
+ abi_info->return_address_register = 65;
+
+ return 0;
+}
+
+__typeof (ppc_abi_cfi)
+ ppc64_abi_cfi
+ __attribute__ ((alias ("ppc_abi_cfi")));
{ \
.name = "nip", .type = ELF_T_ADDR, .format = 'x', \
.offset = offsetof (struct EBLHOOK(prstatus), pr_reg[32]), \
- .group = "register" \
+ .group = "register", .pc_register = true \
}, \
{ \
.name = "orig_gpr3", .type = TYPE_LONG, .format = 'd', \
/* Initialization of PPC specific backend library.
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Red Hat, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
HOOK (eh, core_note);
HOOK (eh, auxv_info);
HOOK (eh, check_object_attribute);
+ HOOK (eh, abi_cfi);
+ /* gcc/config/ #define DWARF_FRAME_REGISTERS. */
+ eh->frame_nregs = (114 - 1) + 32;
+ HOOK (eh, set_initial_registers_tid);
+ HOOK (eh, dwarf_to_regno);
return MODVERSION;
}
--- /dev/null
+/* Fetch live process registers from TID.
+ 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
+
+#include "system.h"
+#include <stdlib.h>
+#ifdef __powerpc__
+# include <sys/user.h>
+# include <sys/ptrace.h>
+#endif
+
+#define BACKEND ppc_
+#include "libebl_CPU.h"
+
+bool
+ppc_dwarf_to_regno (Ebl *ebl __attribute__ ((unused)), unsigned *regno)
+{
+ switch (*regno)
+ {
+ case 108:
+ // LR uses both 65 and 108 numbers, there is no consistency for it.
+ *regno = 65;
+ return true;
+ case 0 ... 107:
+ case 109 ... (114 - 1) -1:
+ return true;
+ case 1200 ... 1231:
+ *regno = *regno - 1200 + (114 - 1);
+ return true;
+ default:
+ return false;
+ }
+ abort ();
+}
+
+__typeof (ppc_dwarf_to_regno)
+ ppc64_dwarf_to_regno
+ __attribute__ ((alias ("ppc_dwarf_to_regno")));
+
+bool
+ppc_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+ ebl_tid_registers_t *setfunc __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+#ifndef __powerpc__
+ return false;
+#else /* __powerpc__ */
+ union
+ {
+ struct pt_regs r;
+ long l[sizeof (struct pt_regs) / sizeof (long)];
+ }
+ user_regs;
+ eu_static_assert (sizeof (struct pt_regs) % sizeof (long) == 0);
+ /* PTRACE_GETREGS is EIO on kernel-2.6.18-308.el5.ppc64. */
+ errno = 0;
+ for (unsigned regno = 0; regno < sizeof (user_regs) / sizeof (long);
+ regno++)
+ {
+ user_regs.l[regno] = ptrace (PTRACE_PEEKUSER, tid,
+ (void *) (uintptr_t) (regno
+ * sizeof (long)),
+ NULL);
+ if (errno != 0)
+ return false;
+ }
+ const size_t gprs = sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr);
+ Dwarf_Word dwarf_regs[gprs];
+ for (unsigned gpr = 0; gpr < gprs; gpr++)
+ dwarf_regs[gpr] = user_regs.r.gpr[gpr];
+ if (! setfunc (0, gprs, dwarf_regs, arg))
+ return false;
+ dwarf_regs[0] = user_regs.r.link;
+ // LR uses both 65 and 108 numbers, there is no consistency for it.
+ if (! setfunc (65, 1, dwarf_regs, arg))
+ return false;
+ /* Registers like msr, ctr, xer, dar, dsisr etc. are probably irrelevant
+ for CFI. */
+ dwarf_regs[0] = user_regs.r.nip;
+ return setfunc (-1, 1, dwarf_regs, arg);
+#endif /* __powerpc__ */
+}
+
+__typeof (ppc_set_initial_registers_tid)
+ ppc64_set_initial_registers_tid
+ __attribute__ ((alias ("ppc_set_initial_registers_tid")));
if (regno < 0 || regno > 1155 || namelen < 8)
return -1;
- *prefix = NULL;
+ *prefix = "";
*bits = ebl->machine == EM_PPC64 ? 64 : 32;
*type = (regno < 32 ? DW_ATE_signed
: regno < 64 ? DW_ATE_float : DW_ATE_unsigned);
/* Function return value location for Linux/PPC ABI.
- Copyright (C) 2005, 2006, 2007, 2010 Red Hat, Inc.
+ Copyright (C) 2005, 2006, 2007, 2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 4;
- else
- return -1;
- }
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 4;
+ else
+ return -1;
+ }
+ }
+
if (size <= 8)
{
if (tag == DW_TAG_base_type)
{
+ Dwarf_Attribute attr_mem;
Dwarf_Word encoding;
if (dwarf_formudata (dwarf_attr_integrate (typedie,
DW_AT_encoding,
case DW_TAG_array_type:
{
+ Dwarf_Attribute attr_mem;
bool is_vector;
if (dwarf_formflag (dwarf_attr_integrate (typedie, DW_AT_GNU_vector,
&attr_mem), &is_vector) == 0
--- /dev/null
+/* s390 ABI-specified defaults for DWARF CFI.
+ Copyright (C) 2012, 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
+
+#include <dwarf.h>
+
+#define BACKEND s390_
+#include "libebl_CPU.h"
+
+int
+s390_abi_cfi (Ebl *ebl, Dwarf_CIE *abi_info)
+{
+ static const uint8_t abi_cfi[] =
+ {
+ /* This instruction is provided in every CIE. It is not repeated here:
+ DW_CFA_def_cfa, ULEB128_7 (15), ULEB128_7 (96) */
+ /* r14 is not callee-saved but it needs to be preserved as it is pre-set
+ by the caller. */
+ DW_CFA_same_value, ULEB128_7 (14), /* r14 */
+
+ /* Callee-saved regs. */
+#define SV(n) DW_CFA_same_value, ULEB128_7 (n)
+ SV (6), SV (7), SV (8), SV (9), SV (10), /* r6-r13, r15 */
+ SV (11), SV (12), SV (13), SV (15),
+ SV (16 + 8), SV (16 + 9), SV (16 + 10), SV (16 + 11), /* f8-f15 */
+ SV (16 + 12), SV (16 + 13), SV (16 + 14), SV (16 + 15)
+#undef SV
+ };
+
+ abi_info->initial_instructions = abi_cfi;
+ abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi];
+ abi_info->data_alignment_factor = ebl->class == ELFCLASS64 ? 8 : 4;
+
+ abi_info->return_address_register = 14;
+
+ return 0;
+}
--- /dev/null
+/* S390-specific core note handling.
+ Copyright (C) 2012 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of 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
+
+#include <elf.h>
+#include <inttypes.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/time.h>
+
+#ifndef BITS
+# define BITS 32
+# define BACKEND s390_
+#else
+# define BITS 64
+# define BACKEND s390x_
+#endif
+#include "libebl_CPU.h"
+
+static const Ebl_Register_Location prstatus_regs[] =
+ {
+#define GR(at, n, dwreg, b...) \
+ { .offset = at * BITS/8, .regno = dwreg, .count = n, .bits = b }
+
+ GR ( 0, 1, 64, BITS), /* pswm */
+ GR ( 1, 1, 65, BITS, .pc_register = true ), /* pswa */
+ GR ( 2, 16, 0, BITS), /* r0-r15 */
+ GR (18, 16, 48, 32), /* ar0-ar15 */
+
+#undef GR
+ };
+
+ /* orig_r2 is at offset (BITS == 32 ? 34 * 4 : 26 * 8). */
+#define PRSTATUS_REGS_SIZE (BITS / 8 * (BITS == 32 ? 35 : 27))
+
+static const Ebl_Register_Location fpregset_regs[] =
+ {
+#define FPR(at, n, dwreg) \
+ { .offset = at * 64/8, .regno = dwreg, .count = n, .bits = 64 }
+
+ /* fpc is at offset 0, see fpregset_items, it has no assigned DWARF regno.
+ Bytes at offsets 4 to 7 are unused. */
+ FPR (1 + 0, 1, 16), /* f0 */
+ FPR (1 + 1, 1, 20), /* f1 */
+ FPR (1 + 2, 1, 17), /* f2 */
+ FPR (1 + 3, 1, 21), /* f3 */
+ FPR (1 + 4, 1, 18), /* f4 */
+ FPR (1 + 5, 1, 22), /* f5 */
+ FPR (1 + 6, 1, 19), /* f6 */
+ FPR (1 + 7, 1, 23), /* f7 */
+ FPR (1 + 8, 1, 24), /* f8 */
+ FPR (1 + 9, 1, 28), /* f9 */
+ FPR (1 + 10, 1, 25), /* f10 */
+ FPR (1 + 11, 1, 29), /* f11 */
+ FPR (1 + 12, 1, 26), /* f12 */
+ FPR (1 + 13, 1, 30), /* f13 */
+ FPR (1 + 14, 1, 27), /* f14 */
+ FPR (1 + 15, 1, 31), /* f15 */
+
+#undef FPR
+ };
+
+static const Ebl_Core_Item fpregset_items[] =
+ {
+ {
+ .name = "fpc", .group = "register", .offset = 0, .type = ELF_T_WORD,
+ .format = 'x',
+ },
+ };
+
+/* Do not set FPREGSET_SIZE so that we can supply fpregset_items. */
+#define EXTRA_NOTES_FPREGSET \
+ EXTRA_REGSET_ITEMS (NT_FPREGSET, 17 * 8, fpregset_regs, fpregset_items)
+
+#if BITS == 32
+# define ULONG uint32_t
+# define ALIGN_ULONG 4
+# define TYPE_ULONG ELF_T_WORD
+# define TYPE_LONG ELF_T_SWORD
+# define UID_T uint16_t
+# define GID_T uint16_t
+# define ALIGN_UID_T 2
+# define ALIGN_GID_T 2
+# define TYPE_UID_T ELF_T_HALF
+# define TYPE_GID_T ELF_T_HALF
+#else
+# define ULONG uint64_t
+# define ALIGN_ULONG 8
+# define TYPE_ULONG ELF_T_XWORD
+# define TYPE_LONG ELF_T_SXWORD
+# define UID_T uint32_t
+# define GID_T uint32_t
+# define ALIGN_UID_T 4
+# define ALIGN_GID_T 4
+# define TYPE_UID_T ELF_T_WORD
+# define TYPE_GID_T ELF_T_WORD
+#endif
+#define PID_T int32_t
+#define ALIGN_PID_T 4
+#define TYPE_PID_T ELF_T_SWORD
+/* s390 psw_compat_t has alignment 8 bytes where it is inherited from. */
+#define ALIGN_PR_REG 8
+
+#define PRSTATUS_REGSET_ITEMS \
+ { \
+ .name = "orig_r2", .type = TYPE_LONG, .format = 'd', \
+ .offset = offsetof (struct EBLHOOK(prstatus), \
+ pr_reg[BITS == 32 ? 34 : 26]), \
+ .group = "register" \
+ }
+
+#if BITS == 32
+
+static const Ebl_Core_Item high_regs_items[] =
+ {
+#define HR(n) \
+ { \
+ .name = "high_r" #n , .group = "register", .offset = (n) * 4, \
+ .type = ELF_T_WORD, .format = 'x', \
+ }
+
+ /* Upper halves of r0-r15 are stored here.
+ FIXME: They are currently not combined with the r0-r15 lower halves. */
+ HR (0), HR (1), HR (2), HR (3), HR (4), HR (5), HR (6), HR (7),
+ HR (8), HR (9), HR (10), HR (11), HR (12), HR (13), HR (14), HR (15)
+
+#undef HR
+ };
+
+#define EXTRA_NOTES_HIGH_GPRS \
+ EXTRA_ITEMS (NT_S390_HIGH_GPRS, 16 * 4, high_regs_items)
+
+#else /* BITS == 64 */
+
+#define EXTRA_NOTES_HIGH_GPRS
+
+#endif /* BITS == 64 */
+
+static const Ebl_Core_Item last_break_items[] =
+ {
+ {
+ .name = "last_break", .group = "system", .offset = BITS == 32 ? 4 : 0,
+ .type = BITS == 32 ? ELF_T_WORD : ELF_T_XWORD, .format = 'x',
+ },
+ };
+
+static const Ebl_Core_Item system_call_items[] =
+ {
+ {
+ .name = "system_call", .group = "system", .offset = 0, .type = ELF_T_WORD,
+ .format = 'd',
+ },
+ };
+
+#define EXTRA_NOTES \
+ EXTRA_NOTES_FPREGSET \
+ EXTRA_NOTES_HIGH_GPRS \
+ EXTRA_ITEMS (NT_S390_LAST_BREAK, 8, last_break_items) \
+ EXTRA_ITEMS (NT_S390_SYSTEM_CALL, 4, system_call_items)
+
+#include "linux-core-note.c"
/* Initialization of S/390 specific backend library.
- Copyright (C) 2005, 2006 Red Hat, Inc.
+ Copyright (C) 2005, 2006, 2013 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
/* This defines the common reloc hooks based on arm_reloc.def. */
#include "common-reloc.c"
+extern __typeof (s390_core_note) s390x_core_note;
+
const char *
s390_init (elf, machine, eh, ehlen)
HOOK (eh, reloc_simple_type);
HOOK (eh, register_info);
HOOK (eh, return_value_location);
+ if (eh->class == ELFCLASS64)
+ eh->core_note = s390x_core_note;
+ else
+ HOOK (eh, core_note);
+ HOOK (eh, abi_cfi);
+ /* gcc/config/ #define DWARF_FRAME_REGISTERS 34.
+ But from the gcc/config/s390/s390.h "Register usage." comment it looks as
+ if #32 (Argument pointer) and #33 (Condition code) are not used for
+ unwinding. */
+ eh->frame_nregs = 32;
+ HOOK (eh, set_initial_registers_tid);
+ if (eh->class == ELFCLASS32)
+ HOOK (eh, normalize_pc);
+ HOOK (eh, unwind);
/* Only the 64-bit format uses the incorrect hash table entry size. */
if (eh->class == ELFCLASS64)
--- /dev/null
+/* Fetch live process registers from TID.
+ 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
+
+#include "system.h"
+#include <assert.h>
+#ifdef __s390__
+# include <sys/user.h>
+# include <asm/ptrace.h>
+# include <sys/ptrace.h>
+#endif
+
+#define BACKEND s390_
+#include "libebl_CPU.h"
+
+bool
+s390_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+ ebl_tid_registers_t *setfunc __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+#ifndef __s390__
+ return false;
+#else /* __s390__ */
+ struct user user_regs;
+ ptrace_area parea;
+ parea.process_addr = (uintptr_t) &user_regs;
+ parea.kernel_addr = 0;
+ parea.len = sizeof (user_regs);
+ if (ptrace (PTRACE_PEEKUSR_AREA, tid, &parea, NULL) != 0)
+ return false;
+ /* If we run as s390x we get the 64-bit registers of tid.
+ But -m31 executable seems to use only the 32-bit parts of its
+ registers so we ignore the upper half. */
+ Dwarf_Word dwarf_regs[16];
+ for (unsigned u = 0; u < 16; u++)
+ dwarf_regs[u] = user_regs.regs.gprs[u];
+ if (! setfunc (0, 16, dwarf_regs, arg))
+ return false;
+ /* Avoid conversion double -> integer. */
+ eu_static_assert (sizeof user_regs.regs.fp_regs.fprs[0]
+ == sizeof dwarf_regs[0]);
+ for (unsigned u = 0; u < 16; u++)
+ {
+ // Store the double bits as is in the Dwarf_Word without conversion.
+ union
+ {
+ double d;
+ Dwarf_Word w;
+ } fpr = { .d = user_regs.regs.fp_regs.fprs[u] };
+ dwarf_regs[u] = fpr.w;
+ }
+
+ if (! setfunc (16, 16, dwarf_regs, arg))
+ return false;
+ dwarf_regs[0] = user_regs.regs.psw.addr;
+ return setfunc (-1, 1, dwarf_regs, arg);
+#endif /* __s390__ */
+}
+
+void
+s390_normalize_pc (Ebl *ebl __attribute__ ((unused)), Dwarf_Addr *pc)
+{
+ assert (ebl->class == ELFCLASS32);
+
+ /* Clear S390 bit 31. */
+ *pc &= (1U << 31) - 1;
+}
/* Function return value location for S/390 ABI.
- Copyright (C) 2006, 2007 Red Hat, Inc.
+ Copyright (C) 2006, 2007, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
if (dwarf_diecu (typedie, &cudie, &asize, NULL) == NULL)
return -1;
+ Dwarf_Attribute attr_mem;
if (dwarf_formudata (dwarf_attr (typedie, DW_AT_byte_size,
&attr_mem), &size) != 0)
{
--- /dev/null
+/* Get previous frame state for an existing frame state.
+ 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
+
+#include <stdlib.h>
+#include <assert.h>
+
+#define BACKEND s390_
+#include "libebl_CPU.h"
+
+/* s390/s390x do not annotate signal handler frame by CFI. It would be also
+ difficult as PC points into a stub built on stack. Function below is called
+ only if unwinder could not find CFI. Function then verifies the register
+ state for this frame really belongs to a signal frame. In such case it
+ fetches original registers saved by the signal frame. */
+
+bool
+s390_unwind (Ebl *ebl, Dwarf_Addr pc, ebl_tid_registers_t *setfunc,
+ ebl_tid_registers_get_t *getfunc, ebl_pid_memory_read_t *readfunc,
+ void *arg, bool *signal_framep)
+{
+ /* Caller already assumed caller adjustment but S390 instructions are 4 bytes
+ long. Undo it. */
+ if ((pc & 0x3) != 0x3)
+ return false;
+ pc++;
+ /* We can assume big-endian read here. */
+ Dwarf_Word instr;
+ if (! readfunc (pc, &instr, arg))
+ return false;
+ /* Fetch only the very first two bytes. */
+ instr = (instr >> (ebl->class == ELFCLASS64 ? 48 : 16)) & 0xffff;
+ /* See GDB s390_sigtramp_frame_sniffer. */
+ /* Check for 'svc' as the first instruction. */
+ if (((instr >> 8) & 0xff) != 0x0a)
+ return false;
+ /* Check for 'sigreturn' or 'rt_sigreturn' as the second instruction. */
+ if ((instr & 0xff) != 119 && (instr & 0xff) != 173)
+ return false;
+ /* See GDB s390_sigtramp_frame_unwind_cache. */
+ Dwarf_Word this_sp;
+ if (! getfunc (0 + 15, 1, &this_sp, arg))
+ return false;
+ unsigned word_size = ebl->class == ELFCLASS64 ? 8 : 4;
+ Dwarf_Addr next_cfa = this_sp + 16 * word_size + 32;
+ /* "New-style RT frame" is not supported,
+ assuming "Old-style RT frame and all non-RT frames".
+ Pointer to the array of saved registers is at NEXT_CFA + 8. */
+ Dwarf_Word sigreg_ptr;
+ if (! readfunc (next_cfa + 8, &sigreg_ptr, arg))
+ return false;
+ /* Skip PSW mask. */
+ sigreg_ptr += word_size;
+ /* Read PSW address. */
+ Dwarf_Word val;
+ if (! readfunc (sigreg_ptr, &val, arg))
+ return false;
+ if (! setfunc (-1, 1, &val, arg))
+ return false;
+ sigreg_ptr += word_size;
+ /* Then the GPRs. */
+ Dwarf_Word gprs[16];
+ for (int i = 0; i < 16; i++)
+ {
+ if (! readfunc (sigreg_ptr, &gprs[i], arg))
+ return false;
+ sigreg_ptr += word_size;
+ }
+ /* Then the ACRs. Skip them, they are not used in CFI. */
+ for (int i = 0; i < 16; i++)
+ sigreg_ptr += 4;
+ /* The floating-point control word. */
+ sigreg_ptr += 8;
+ /* And finally the FPRs. */
+ Dwarf_Word fprs[16];
+ for (int i = 0; i < 16; i++)
+ {
+ if (! readfunc (sigreg_ptr, &val, arg))
+ return false;
+ if (ebl->class == ELFCLASS32)
+ {
+ Dwarf_Addr val_low;
+ if (! readfunc (sigreg_ptr + 4, &val_low, arg))
+ return false;
+ val = (val << 32) | val_low;
+ }
+ fprs[i] = val;
+ sigreg_ptr += 8;
+ }
+ /* If we have them, the GPR upper halves are appended at the end. */
+ if (ebl->class == ELFCLASS32)
+ {
+ /* Skip signal number. */
+ sigreg_ptr += 4;
+ for (int i = 0; i < 16; i++)
+ {
+ if (! readfunc (sigreg_ptr, &val, arg))
+ return false;
+ Dwarf_Word val_low = gprs[i];
+ val = (val << 32) | val_low;
+ gprs[i] = val;
+ sigreg_ptr += 4;
+ }
+ }
+ if (! setfunc (0, 16, gprs, arg))
+ return false;
+ if (! setfunc (16, 16, fprs, arg))
+ return false;
+ *signal_framep = true;
+ return true;
+}
--- /dev/null
+#define BITS 64
+#include "s390_corenote.c"
if (regno < 0 || regno > 103 || namelen < 6)
return -1;
- *prefix = NULL;
+ *prefix = "";
*bits = 32;
*type = DW_ATE_signed;
/* Function return value location for Linux/SH ABI.
- Copyright (C) 2010 Red Hat, Inc.
+ Copyright (C) 2010, 2014 Red Hat, Inc.
This file is part of elfutils.
Contributed by Matt Fleming <matt@console-pimps.org>.
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 4;
- else
- return -1;
- }
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 4;
+ else
+ return -1;
+ }
+ }
+
if (size <= 8)
{
if (tag == DW_TAG_base_type)
{
+ Dwarf_Attribute attr_mem;
Dwarf_Word encoding;
if (dwarf_formudata (dwarf_attr_integrate (typedie,
DW_AT_encoding,
/* Function return value location for SPARC.
- Copyright (C) 2006-2010 Red Hat, Inc.
+ Copyright (C) 2006-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- uint8_t asize;
- Dwarf_Die cudie;
- if ((tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- && dwarf_diecu (typedie, &cudie, &asize, NULL) != NULL)
- size = asize;
- else
- return -1;
- }
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ uint8_t asize;
+ Dwarf_Die cudie;
+ if ((tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ && dwarf_diecu (typedie, &cudie, &asize, NULL) != NULL)
+ size = asize;
+ else
+ return -1;
+ }
+ }
+
if (tag == DW_TAG_base_type)
{
+ Dwarf_Attribute attr_mem;
Dwarf_Word encoding;
if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
&attr_mem),
/* Function return value location for Linux/TILE-Gx ABI.
Copyright (C) 2012 Tilera Corporation
+ Copyright (C) 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 8;
- else
- return -1;
- }
- if (tag == DW_TAG_base_type)
- {
- Dwarf_Word encoding;
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
- &attr_mem),
- &encoding) != 0)
- return -1;
- }
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 8;
+ else
+ return -1;
+ }
+ if (tag == DW_TAG_base_type)
+ {
+ Dwarf_Word encoding;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
+ &attr_mem),
+ &encoding) != 0)
+ return -1;
+ }
+ }
/* Small enough structs are passed directly in registers R0 ... R7. */
if (size <= 8)
{
if (tag == DW_TAG_array_type)
{
+ Dwarf_Attribute attr_mem, *attr;
/* Check if it's a character array. */
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
if (tag != DW_TAG_base_type)
goto aggregate;
if (dwarf_formudata (dwarf_attr_integrate (typedie,
/* Initialization of x86-64 specific backend library.
- Copyright (C) 2002-2009 Red Hat, Inc.
+ Copyright (C) 2002-2009, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
HOOK (eh, auxv_info);
HOOK (eh, disasm);
HOOK (eh, abi_cfi);
+ /* gcc/config/ #define DWARF_FRAME_REGISTERS. */
+ eh->frame_nregs = 17;
+ HOOK (eh, set_initial_registers_tid);
return MODVERSION;
}
--- /dev/null
+/* Fetch live process registers from TID.
+ 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
+
+#include <stdlib.h>
+#ifdef __x86_64__
+# include <sys/user.h>
+# include <sys/ptrace.h>
+#endif
+
+#define BACKEND x86_64_
+#include "libebl_CPU.h"
+
+bool
+x86_64_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+ ebl_tid_registers_t *setfunc __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+#if !defined(__x86_64__) || !defined(__linux__)
+ return false;
+#else /* __x86_64__ */
+ struct user_regs_struct user_regs;
+ if (ptrace (PTRACE_GETREGS, tid, NULL, &user_regs) != 0)
+ return false;
+ Dwarf_Word dwarf_regs[17];
+ dwarf_regs[0] = user_regs.rax;
+ dwarf_regs[1] = user_regs.rdx;
+ dwarf_regs[2] = user_regs.rcx;
+ dwarf_regs[3] = user_regs.rbx;
+ dwarf_regs[4] = user_regs.rsi;
+ dwarf_regs[5] = user_regs.rdi;
+ dwarf_regs[6] = user_regs.rbp;
+ dwarf_regs[7] = user_regs.rsp;
+ dwarf_regs[8] = user_regs.r8;
+ dwarf_regs[9] = user_regs.r9;
+ dwarf_regs[10] = user_regs.r10;
+ dwarf_regs[11] = user_regs.r11;
+ dwarf_regs[12] = user_regs.r12;
+ dwarf_regs[13] = user_regs.r13;
+ dwarf_regs[14] = user_regs.r14;
+ dwarf_regs[15] = user_regs.r15;
+ dwarf_regs[16] = user_regs.rip;
+ return setfunc (0, 17, dwarf_regs, arg);
+#endif /* __x86_64__ */
+}
/* Function return value location for Linux/x86-64 ABI.
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{
/* Start with the function's type, and get the DW_AT_type attribute,
which is the type of the return value. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type,
- &attr_mem);
- if (attr == NULL)
- /* The function has no return value, like a `void' function in C. */
- return 0;
-
- Dwarf_Die die_mem;
- Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem);
- int tag = dwarf_tag (typedie);
-
- /* Follow typedefs and qualifiers to get to the actual type. */
- while (tag == DW_TAG_typedef
- || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type
- || tag == DW_TAG_restrict_type || tag == DW_TAG_mutable_type)
- {
- attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
+ Dwarf_Die die_mem, *typedie = &die_mem;
+ int tag = dwarf_peeled_die_type (functypedie, typedie);
+ if (tag <= 0)
+ return tag;
Dwarf_Word size;
switch (tag)
case DW_TAG_subrange_type:
if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
{
+ Dwarf_Attribute attr_mem, *attr;
attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
+ tag = DWARF_TAG_OR_RETURN (typedie);
}
/* Fall through. */
case DW_TAG_enumeration_type:
case DW_TAG_pointer_type:
case DW_TAG_ptr_to_member_type:
- if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
- &attr_mem), &size) != 0)
- {
- if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
- size = 8;
- else
- return -1;
- }
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
+ &attr_mem), &size) != 0)
+ {
+ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ size = 8;
+ else
+ return -1;
+ }
+ }
+
if (tag == DW_TAG_base_type)
{
+ Dwarf_Attribute attr_mem;
Dwarf_Word encoding;
if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
&attr_mem),
/* Should ar and ranlib use -D behavior by default? */
#undef DEFAULT_AR_DETERMINISTIC
-/* Defined if libdw should support GNU ref_alt FORM, dwz multi files. */
-#undef ENABLE_DWZ
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if <sys/user.h> defines struct user_regs_struct */
+#undef HAVE_SYS_USER_REGS
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
/* $libdir subdirectory containing libebl modules. */
#undef LIBEBL_SUBDIR
/* Define to the version of this package. */
#undef PACKAGE_VERSION
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
/* Support bzip2 decompression via -lbz2. */
#undef USE_BZLIB
`char[]'. */
#undef YYTEXT_POINTER
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
+2014-08-25 Mark Wielaard <mjw@redhat.com>
+
+ * elfutils.spec.in: Update for 0.160.
+
+2014-05-17 Mark Wielaard <mjw@redhat.com>
+
+ * elfutils.spec.in: Update for 0.159.
+ (%files devel): Add libdwelf.h.
+
+2014-04-13 Mark Wielaard <mjw@redhat.com>
+
+ * eu.am (AM_CFLAGS): Don't add -fmudflap.
+ (COMPILE.os): Don't remove no_mudflap.os.
+
+2014-01-22 Mark Wielaard <mjw@redhat.com>
+
+ * eu.am (AM_CFLAGS): Unconditionally add -Wformat=2.
+
+2014-01-03 Mark Wielaard <mjw@redhat.com>
+
+ * elfutils.spec.in: Update for 0.158.
+
+2013-11-01 Michael Forney <mforney@mforney.org>
+
+ * eu.am: Use READELF.
+
+2013-09-30 Mark Wielaard <mjw@redhat.com>
+
+ * elfutils.spec.in: Update for readelf NT_SIGINFO and NT_FILE
+ core notes.
+
+2013-09-27 Mark Wielaard <mjw@redhat.com>
+
+ * config/elfutils.spec.in: Update for 0.157.
+
+2013-07-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * config/elfutils.spec.in: Update for 0.156.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * eu.am: Use AM_CPPFLAGS instead of INCLUDES.
+
2012-08-27 Mark Wielaard <mjw@redhat.com>
* config/elfutils.spec.in: Update for 0.155.
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
build_triplet = @build@
host_triplet = @host@
subdir = config
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \
- config.guess config.sub depcomp install-sh missing ylwrap
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ChangeLog \
+ ar-lib config.guess config.sub depcomp install-sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-tags: TAGS
-TAGS:
+tags TAGS:
+
+ctags CTAGS:
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
distdir: $(DISTFILES)
.MAKE: install-am install-strip
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am
@MAINTAINER_MODE_TRUE@$(srcdir)/elfutils.spec.in: $(top_srcdir)/NEWS
--- /dev/null
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2012-03-01.08; # UTC
+
+# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda@lysator.liu.se>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+
+# func_error message
+func_error ()
+{
+ echo "$me: $1" 1>&2
+ exit 1
+}
+
+file_conv=
+
+# func_file_conv build_file
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv in
+ mingw)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_at_file at_file operation archive
+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
+# for each of them.
+# When interpreting the content of the @FILE, do NOT use func_file_conv,
+# since the user would need to supply preconverted file names to
+# binutils ar, at least for MinGW.
+func_at_file ()
+{
+ operation=$2
+ archive=$3
+ at_file_contents=`cat "$1"`
+ eval set x "$at_file_contents"
+ shift
+
+ for member
+ do
+ $AR -NOLOGO $operation:"$member" "$archive" || exit $?
+ done
+}
+
+case $1 in
+ '')
+ func_error "no command. Try '$0 --help' for more information."
+ ;;
+ -h | --h*)
+ cat <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "$me, version $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test $# -lt 3; then
+ func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+ if test $# -lt 2; then
+ func_error "you must specify a program, an action and an archive"
+ fi
+ case $1 in
+ -lib | -LIB \
+ | -ltcg | -LTCG \
+ | -machine* | -MACHINE* \
+ | -subsystem* | -SUBSYSTEM* \
+ | -verbose | -VERBOSE \
+ | -wx* | -WX* )
+ AR="$AR $1"
+ shift
+ ;;
+ *)
+ action=$1
+ shift
+ break
+ ;;
+ esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+ case $action in
+ d*) delete=yes ;;
+ x*) extract=yes ;;
+ t*) list=yes ;;
+ q*) quick=yes ;;
+ r*) replace=yes ;;
+ s*) index=yes ;;
+ S*) ;; # the index is always updated implicitly
+ c*) create=yes ;;
+ u*) ;; # TODO: don't ignore the update modifier
+ v*) ;; # TODO: don't ignore the verbose modifier
+ *)
+ func_error "unknown action specified"
+ ;;
+ esac
+ action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+ yes,* | ,yes)
+ ;;
+ yesyes*)
+ func_error "more than one action specified"
+ ;;
+ *)
+ func_error "no action specified"
+ ;;
+esac
+
+if test -n "$delete"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -REMOVE "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+
+elif test -n "$extract"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ if test $# -gt 0; then
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -EXTRACT "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+ else
+ $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+ do
+ $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+ done
+ fi
+
+elif test -n "$quick$replace"; then
+ if test ! -f "$orig_archive"; then
+ if test -z "$create"; then
+ echo "$me: creating $orig_archive"
+ fi
+ orig_archive=
+ else
+ orig_archive=$archive
+ fi
+
+ for member
+ do
+ case $1 in
+ @*)
+ func_file_conv "${1#@}"
+ set x "$@" "@$file"
+ ;;
+ *)
+ func_file_conv "$1"
+ set x "$@" "$file"
+ ;;
+ esac
+ shift
+ shift
+ done
+
+ if test -n "$orig_archive"; then
+ $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+ else
+ $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+ fi
+
+elif test -n "$list"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ $AR -NOLOGO -LIST "$archive" || exit $?
+fi
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# 2011, 2012, 2013 Free Software Foundation, Inc.
-timestamp='2012-01-01'
+timestamp='2012-12-29'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+2012, 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# 2011, 2012, 2013 Free Software Foundation, Inc.
-timestamp='2012-01-01'
+timestamp='2012-12-29'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
-# This program 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.
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+2012, 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
- | be32 | be64 \
+ | arc \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
-
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
xscaleeb)
basic_machine=armeb-unknown
;;
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
;;
ppc64) basic_machine=powerpc64-unknown
;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
c4x-* | tic4x-*)
os=-coff
;;
+ hexagon-*)
+ os=-elf
+ ;;
tic54x-*)
os=-coff
;;
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2011-12-04.11; # UTC
+scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Environment variables:
depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputting dependencies.
;;
esac
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
rm -f "$tmpdepfile"
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
fi
if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvisualcpp
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
- # This is just like msvc7 but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvc7
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
fi
case "$depmode" in
done
"$@"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
;;
gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
+## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
-
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
+ # the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+ | tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
-
# The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
+ # current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
"$@" -M
fi
stat=$?
-
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
do
test -f "$tmpdepfile" && break
done
- if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ aix_post_process_depfile
+ ;;
+
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
fi
+ rm -f "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
+ # and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
+ set_dir_from "$object"
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ set_base_from "$source"
+ tmpdepfile=$base.d
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0; do
+ # mkdir is a portable test-and-set.
+ if mkdir "$lockdir" 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rmdir "$lockdir"
+ break
+ else
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" +Maked
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add 'dependent.h:' lines.
sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
msvc7)
if test "$libtool" = yes; then
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
- if test "$stat" = 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
-s/\(.*\)/ \1 \\/p
+s/\(.*\)/'"$tab"'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
- s/.*/ /
+ s/.*/'"$tab"'/
G
p
}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
done
test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
+ # Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
esac
done
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
+ set fnord "$@"
+ shift
+ shift
+ ;;
*)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
%{_includedir}/elfutils/libebl.h
%{_includedir}/elfutils/libdw.h
%{_includedir}/elfutils/libdwfl.h
+%{_includedir}/elfutils/libdwelf.h
%{_libdir}/libebl.a
#%{_libdir}/libasm.so
%{_libdir}/libdw.so
%{_libdir}/libelf.a
%changelog
+* Mon Aug 25 2014 Mark Wielaard <mjw@redhat.com> 0.160-1
+- libdw: New functions dwarf_cu_getdwarf, dwarf_cu_die.
+ dwarf.h remove non-existing DW_TAG_mutable_type.
+- libdwfl: Handle LZMA .ko.xz compressed kernel modules.
+- unstrip: New option -F, --force to combining files even if some ELF
+ headers don't seem to match.
+- backends: Handle ARM THUMB functions. Add support for ppc64le ELFv2 abi.
+
+* Sat May 17 2014 Mark Wielaard <mjw@redhat.com> 0.159-1
+- stack: New option -d, --debugname to lookup DWARF debuginfo name
+ for frame. New option -i, --inlines to show inlined frames
+ using DWARF debuginfo.
+- libdwelf: New libdwelf.h header for libdw.so DWARF ELF Low-level
+ Functions. New function dwelf_elf_gnu_debuglink,
+ dwelf_dwarf_gnu_debugaltlink, and dwelf_elf_gnu_build_id.
+- libdw: Support for DWZ multifile forms DW_FORM_GNU_ref_alt and
+ DW_FORM_GNU_strp_alt is now enabled by default and no longer
+ experimental. Added new functions dwarf_getalt and dwarf_setalt
+ to get or set the alternative debug file used for the alt FORMs.
+ The dwfl_linux_proc_find_elf callback will now find ELF from
+ process memory for (deleted) files if the Dwfl has process state
+ attached.
+- libdwfl: The dwfl_build_id_find_debuginfo and
+ dwfl_standard_find_debuginfo functions will now try to
+ resolve and set the alternative debug file.
+- backends: Add CFI unwinding for arm. Relies on .debug_frame.
+ Add arm process initial register state compatible mode to AARCH64.
+ Add aarch64 native and core unwind support.
+- other: All separate elfutils-robustify patches have been merged.
+ CVE-2014-0172 Check overflow before calling malloc to uncompress
+ data.
+
+* Fri Jan 3 2014 Mark Wielaard <mjw@redhat.com> 0.158-1
+- libdwfl: dwfl_core_file_report has new parameter executable.
+ New functions dwfl_module_getsymtab_first_global,
+ dwfl_module_getsym_info and dwfl_module_addrinfo.
+ Added unwinder with type Dwfl_Thread_Callbacks, opaque types
+ Dwfl_Thread and Dwfl_Frame and functions dwfl_attach_state,
+ dwfl_pid, dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
+ dwfl_thread_state_registers, dwfl_thread_state_register_pc,
+ dwfl_getthread_frames, dwfl_getthreads, dwfl_thread_getframes
+ and dwfl_frame_pc.
+- addr2line: New option -x to show the section an address was found in.
+- stack: New utility that uses the new unwinder for processes and cores.
+- backends: Unwinder support for i386, x86_64, s390, s390x, ppc and ppc64.
+ aarch64 support.
+
+* Mon Sep 30 2013 Mark Wielaard <mjw@redhat.com> 0.157-1
+- libdw: Add new functions dwarf_getlocations, dwarf_getlocation_attr
+ and dwarf_getlocation_die.
+- readelf: Show contents of NT_SIGINFO and NT_FILE core notes.
+- addr2line: Support -i, --inlines output option.
+- backends: abi_cfi hook for arm, ppc and s390.
+
+* Thu Jul 25 2013 Jan Kratochvil <jan.kratochvil@redhat.com> 0.156-1
+- lib: New macro COMPAT_VERSION_NEWPROTO.
+- libdw: Handle GNU extension opcodes in dwarf_getlocation.
+- libdwfl: Fix STB_GLOBAL over STB_WEAK preference in
+ dwfl_module_addrsym. Add minisymtab support. Add
+ parameter add_p_vaddr to dwfl_report_elf. Use DT_DEBUG
+ library search first.
+- libebl: Handle new core note types in EBL.
+- backends: Interpret NT_ARM_VFP. Implement core file
+ registers parsing for s390/s390x.
+- readelf: Add --elf-section input option to inspect an embedded ELF
+ file. Add -U, --unresolved-address-offsets output control.
+ Add --debug-dump=decodedline support. Accept version
+ 8 .gdb_index section format. Adjust output formatting width.
+ When highpc is in constant form print it also as address.
+ Display raw .debug_aranges. Use libdw only for decodedaranges.
+- elflint: Add __bss_start__ to the list of allowed symbols.
+- tests: Add configure --enable-valgrind option to run all tests
+ under valgrind. Enable automake parallel-tests for make check.
+- translations: Updated Polish translation.
+- Updates for Automake 1.13.
+
* Fri Aug 24 2012 Mark Wielaard <mjw@redhat.com> 0.155-1
- libelf: elf*_xlatetomd now works for cross-endian ELF note data.
elf_getshdr now works consistently on non-mmaped ELF files after
## Common automake fragments for elfutils subdirectory makefiles.
##
-## Copyright (C) 2010 Red Hat, Inc.
+## Copyright (C) 2010, 2014 Red Hat, Inc.
##
## This file is part of elfutils.
##
##
DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
$(if $($(*F)_no_Werror),,-Werror) \
$(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
- $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) \
$($(*F)_CFLAGS)
-if MUDFLAP
-AM_CFLAGS += -fmudflap
-libmudflap = -lmudflap
-else
-libmudflap =
-endif
-
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
%.os: %.c %.o
if AMDEP
CLEANFILES = *.gcno *.gcda
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-01-19.21; # UTC
+scriptversion=2011-11-20.07; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
- # Protect names problematic for `test' and other utilities.
+ # Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
fi
shift # arg
dst_arg=$arg
- # Protect names problematic for `test' and other utilities.
+ # Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
echo "$0: no input file specified." >&2
exit 1
fi
- # It's OK to call `install-sh -d' without argument.
+ # It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
for src
do
- # Protect names problematic for `test' and other utilities.
+ # Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
+ # other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2012-01-06.13; # UTC
+scriptversion=2012-06-26.16; # UTC
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
+case $1 in
-msg="missing on your system"
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
-case $1 in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
-# normalize program name to check for.
-program=`echo "$1" | sed '
- s/^gnu-//; t
- s/^gnu//; t
- s/^g//; t'`
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program). This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
- lex*|yacc*)
- # Not GNU programs, they don't have --version.
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case $f in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te*)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison*|yacc*)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
- eval LASTARG=\${$#}
- case $LASTARG in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if test ! -f y.tab.h; then
- echo >y.tab.h
- fi
- if test ! -f y.tab.c; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex*|flex*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if test $# -ne 1; then
- eval LASTARG=\${$#}
- case $LASTARG in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if test ! -f lex.yy.c; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit $?
- fi
- ;;
-
- makeinfo*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'automa4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
;;
-esac
-
-exit 0
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
--- /dev/null
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error. This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+ echo "$0: $*" >&2
+ print_usage >&2
+ exit 2
+}
+
+print_usage ()
+{
+ cat <<END
+Usage:
+ test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+ [--expect-failure={yes|no}] [--color-tests={yes|no}]
+ [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file= # Where to save the output of the test script.
+trs_file= # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+ case $1 in
+ --help) print_usage; exit $?;;
+ --version) echo "test-driver $scriptversion"; exit $?;;
+ --test-name) test_name=$2; shift;;
+ --log-file) log_file=$2; shift;;
+ --trs-file) trs_file=$2; shift;;
+ --color-tests) color_tests=$2; shift;;
+ --expect-failure) expect_failure=$2; shift;;
+ --enable-hard-errors) enable_hard_errors=$2; shift;;
+ --) shift; break;;
+ -*) usage_error "invalid option: '$1'";;
+ esac
+ shift
+done
+
+if test $color_tests = yes; then
+ # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+ red='\e[0;31m' # Red.
+ grn='\e[0;32m' # Green.
+ lgn='\e[1;32m' # Light green.
+ blu='\e[1;34m' # Blue.
+ mgn='\e[0;35m' # Magenta.
+ std='\e[m' # No color.
+else
+ red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+ estatus=1
+fi
+
+case $estatus:$expect_failure in
+ 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+ 0:*) col=$grn res=PASS recheck=no gcopy=no;;
+ 77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
+ 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
+ *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
+ *:*) col=$red res=FAIL recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
-scriptversion=2011-08-25.18; # UTC
+scriptversion=2012-12-21.17; # UTC
-# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-# 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
#
# Written by Tom Tromey <tromey@cygnus.com>.
#
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
+get_dirname ()
+{
+ case $1 in
+ */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';;
+ # Otherwise, we want the empty string (not ".").
+ esac
+}
+
+# guard FILE
+# ----------
+# The CPP macro used to guard inclusion of FILE.
+guard()
+{
+ printf '%s\n' "$1" \
+ | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
+ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \
+ -e 's/__*/_/g'
+}
+
+# quote_for_sed [STRING]
+# ----------------------
+# Return STRING (or stdin) quoted to be used as a sed pattern.
+quote_for_sed ()
+{
+ case $# in
+ 0) cat;;
+ 1) printf '%s\n' "$1";;
+ esac \
+ | sed -e 's|[][\\.*]|\\&|g'
+}
+
case "$1" in
'')
- echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No files given. Try '$0 --help' for more information." 1>&2
exit 1
;;
--basedir)
# The input.
input="$1"
shift
+# We'll later need for a correct munging of "#line" directives.
+input_sub_rx=`get_dirname "$input" | quote_for_sed`
case "$input" in
[\\/]* | ?:[\\/]*)
# Absolute path; do nothing.
input="`pwd`/$input"
;;
esac
+input_rx=`get_dirname "$input" | quote_for_sed`
+
+# Since DOS filename conventions don't allow two dots,
+# the DOS version of Bison writes out y_tab.c instead of y.tab.c
+# and y_tab.h instead of y.tab.h. Test to see if this is the case.
+y_tab_nodot=false
+if test -f y_tab.c || test -f y_tab.h; then
+ y_tab_nodot=true
+fi
+
+# The parser itself, the first file, is the destination of the .y.c
+# rule in the Makefile.
+parser=$1
+
+# A sed program to s/FROM/TO/g for all the FROM/TO so that, for
+# instance, we rename #include "y.tab.h" into #include "parse.h"
+# during the conversion from y.tab.c to parse.c.
+sed_fix_filenames=
+
+# Also rename header guards, as Bison 2.7 for instance uses its header
+# guard in its implementation file.
+sed_fix_header_guards=
-pairlist=
while test "$#" -ne 0; do
if test "$1" = "--"; then
shift
break
fi
- pairlist="$pairlist $1"
+ from=$1
+ # Handle y_tab.c and y_tab.h output by DOS
+ if $y_tab_nodot; then
+ case $from in
+ "y.tab.c") from=y_tab.c;;
+ "y.tab.h") from=y_tab.h;;
+ esac
+ fi
shift
+ to=$1
+ shift
+ sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;"
+ sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;"
done
# The program to run.
ret=$?
if test $ret -eq 0; then
- set X $pairlist
- shift
- first=yes
- # Since DOS filename conventions don't allow two dots,
- # the DOS version of Bison writes out y_tab.c instead of y.tab.c
- # and y_tab.h instead of y.tab.h. Test to see if this is the case.
- y_tab_nodot="no"
- if test -f y_tab.c || test -f y_tab.h; then
- y_tab_nodot="yes"
- fi
-
- # The directory holding the input.
- input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
- # Quote $INPUT_DIR so we can use it in a regexp.
- # FIXME: really we should care about more than `.' and `\'.
- input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
-
- while test "$#" -ne 0; do
- from="$1"
- # Handle y_tab.c and y_tab.h output by DOS
- if test $y_tab_nodot = "yes"; then
- if test $from = "y.tab.c"; then
- from="y_tab.c"
- else
- if test $from = "y.tab.h"; then
- from="y_tab.h"
- fi
- fi
- fi
+ for from in *
+ do
+ to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"`
if test -f "$from"; then
# If $2 is an absolute path name, then just use that,
- # otherwise prepend `../'.
- case "$2" in
- [\\/]* | ?:[\\/]*) target="$2";;
- *) target="../$2";;
+ # otherwise prepend '../'.
+ case $to in
+ [\\/]* | ?:[\\/]*) target=$to;;
+ *) target="../$to";;
esac
- # We do not want to overwrite a header file if it hasn't
- # changed. This avoid useless recompilations. However the
- # parser itself (the first file) should always be updated,
- # because it is the destination of the .y.c rule in the
- # Makefile. Divert the output of all other files to a temporary
- # file so we can compare them to existing versions.
- if test $first = no; then
+ # Do not overwrite unchanged header files to avoid useless
+ # recompilations. Always update the parser itself: it is the
+ # destination of the .y.c rule in the Makefile. Divert the
+ # output of all other files to a temporary file so we can
+ # compare them to existing versions.
+ if test $from != $parser; then
realtarget="$target"
- target="tmp-`echo $target | sed s/.*[\\/]//g`"
+ target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'`
fi
- # Edit out `#line' or `#' directives.
- #
- # We don't want the resulting debug information to point at
- # an absolute srcdir; it is better for it to just mention the
- # .y file with no path.
- #
- # We want to use the real output file name, not yy.lex.c for
- # instance.
- #
- # We want the include guards to be adjusted too.
- FROM=`echo "$from" | sed \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
- -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
- TARGET=`echo "$2" | sed \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
- -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
-
- sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
- -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
-
- # Check whether header files must be updated.
- if test $first = no; then
+
+ # Munge "#line" or "#" directives. Don't let the resulting
+ # debug information point at an absolute srcdir. Use the real
+ # output file name, not yy.lex.c for instance. Adjust the
+ # include guards too.
+ sed -e "/^#/!b" \
+ -e "s|$input_rx|$input_sub_rx|" \
+ -e "$sed_fix_filenames" \
+ -e "$sed_fix_header_guards" \
+ "$from" >"$target" || ret=$?
+
+ # Check whether files must be updated.
+ if test "$from" != "$parser"; then
if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
- echo "$2" is unchanged
+ echo "$to is unchanged"
rm -f "$target"
else
- echo updating "$2"
+ echo "updating $to"
mv -f "$target" "$realtarget"
fi
fi
else
- # A missing file is only an error for the first file. This
- # is a blatant hack to let us support using "yacc -d". If -d
- # is not specified, we don't want an error when the header
- # file is "missing".
- if test $first = yes; then
+ # A missing file is only an error for the parser. This is a
+ # blatant hack to let us support using "yacc -d". If -d is not
+ # specified, don't fail when the header file is "missing".
+ if test "$from" = "$parser"; then
ret=1
fi
fi
- shift
- shift
- first=no
done
-else
- ret=$?
fi
# Remove the directory.
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for elfutils 0.155.
+# Generated by GNU Autoconf 2.69 for elfutils 0.160.
#
# Report bugs to <https://bugzilla.redhat.com/>.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
#
-# Copyright (C) 1996-2012 Red Hat, Inc.
+# Copyright (C) 1996-2014 Red Hat, Inc.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
if (eval "$as_required") 2>/dev/null; then :
as_have_required=yes
else
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Identity of this package.
PACKAGE_NAME='elfutils'
PACKAGE_TARNAME='elfutils'
-PACKAGE_VERSION='0.155'
-PACKAGE_STRING='elfutils 0.155'
+PACKAGE_VERSION='0.160'
+PACKAGE_STRING='elfutils 0.160'
PACKAGE_BUGREPORT='https://bugzilla.redhat.com/'
PACKAGE_URL=''
ac_unique_file="libelf/libelf.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
LIBOBJS
+CC_BIARCH
+BIARCH_FALSE
+BIARCH_TRUE
+EGREP
+GREP
+CPP
eu_version
XGETTEXT_EXTRA_OPTIONS
MSGMERGE
TESTS_RPATH_TRUE
BUILD_STATIC_FALSE
BUILD_STATIC_TRUE
+USE_VALGRIND_FALSE
+USE_VALGRIND_TRUE
+HAVE_VALGRIND
GCOV_FALSE
GCOV_TRUE
GPROF_FALSE
GPROF_TRUE
DEBUGPRED
-MUDFLAP_FALSE
-MUDFLAP_TRUE
NEVER_FALSE
NEVER_TRUE
base_cpu
NATIVE_LD_FALSE
NATIVE_LD_TRUE
+NM
+READELF
+ac_ct_AR
+AR
LEXLIB
LEX_OUTPUT_ROOT
LEX
LDFLAGS
CFLAGS
CC
-ENABLE_DWZ_FALSE
-ENABLE_DWZ_TRUE
USE_LOCKS_FALSE
USE_LOCKS_TRUE
host_os
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
am__untar
am__tar
AMTAR
ac_subst_files=''
ac_user_opts='
enable_option_checking
+enable_silent_rules
enable_maintainer_mode
enable_deterministic_archives
enable_thread_safety
-enable_dwz
enable_dependency_tracking
enable_largefile
enable_generic
-enable_mudflap
enable_debugpred
enable_gprof
enable_gcov
+enable_valgrind
enable_tests_rpath
enable_libebl_subdir
with_zlib
with_bzlib
with_lzma
enable_nls
+with_biarch
'
ac_precious_vars='build_alias
host_alias
LIBS
CPPFLAGS
YACC
-YFLAGS'
+YFLAGS
+CPP'
# Initialize some variables set by options.
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures elfutils 0.155 to adapt to many kinds of systems.
+\`configure' configures elfutils 0.160 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of elfutils 0.155:";;
+ short | recursive ) echo "Configuration of elfutils 0.160:";;
esac
cat <<\_ACEOF
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-maintainer-mode enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
--enable-deterministic-archives
ar and ranlib default to -D behavior
- --enable-thread-safety enable thread safety of libraries
- --enable-dwz enable experimental GNU ref_alt FORM, dwz multi file
- support in libdw
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-thread-safety enable thread safety of libraries EXPERIMENTAL
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
--disable-largefile omit support for large files
--disable-generic do not build generic linker
- --enable-mudflap build binaries with mudflap instrumentation
--enable-debugpred build binaries with support to debug branch
prediction
--enable-gprof build binaries with gprof support
--enable-gcov build binaries with gcov support
+ --enable-valgrind run all tests under valgrind
--enable-tests-rpath build $ORIGIN-using rpath into tests
--enable-libebl-subdir=DIR
install libebl_CPU modules in $(libdir)/DIR
--with-zlib support [zlib] compression in libdwfl
--with-bzlib support [bzlib] compression in libdwfl
--with-lzma support [lzma] compression in libdwfl
+ --with-biarch enable biarch tests despite build problems
Some influential environment variables:
CC C compiler command
YFLAGS The list of arguments that will be passed by default to $YACC.
This script will default YFLAGS to the empty string to avoid a
default value of `-d' given by some make applications.
+ CPP C preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-elfutils configure 0.155
-generated by GNU Autoconf 2.68
+elfutils configure 0.160
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
-Copyright (C) 1996-2012 Red Hat, Inc.
+Copyright (C) 1996-2014 Red Hat, Inc.
_ACEOF
exit
fi
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
as_fn_set_status $ac_retval
} # ac_fn_c_try_link
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid; break
+else
+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=$ac_mid; break
+else
+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid
+else
+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (($2) < 0)
+ {
+ long int i = longval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+ ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+ fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by elfutils $as_me 0.155, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+It was created by elfutils $as_me 0.160, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
-am__api_version='1.11'
+am__api_version='1.13'
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
-alias in your environment" "$LINENO" 5
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$2" = conftest.file
)
then
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
test "$program_prefix" != NONE &&
program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh}" != xset; then
esac
fi
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
if test "$cross_compiling" != no; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
$as_echo "$MKDIR_P" >&6; }
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
- [\\/$]* | ?:[\\/]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
rmdir .tst 2>/dev/null
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- am__isrc=' -I$(srcdir)'
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
- fi
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
fi
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
# Define the identity of the package.
PACKAGE='elfutils'
- VERSION='0.155'
+ VERSION='0.160'
cat >>confdefs.h <<_ACEOF
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Check whether --enable-maintainer-mode was given.
$as_echo "#define USE_LOCKS 1" >>confdefs.h
fi
-
-
-
-# Check whether --enable-dwz was given.
-if test "${enable_dwz+set}" = set; then :
- enableval=$enable_dwz; enable_dwz=$enableval
-else
- enable_dwz=no
-fi
-
- if test "$enable_dwz" = yes; then
- ENABLE_DWZ_TRUE=
- ENABLE_DWZ_FALSE='#'
-else
- ENABLE_DWZ_TRUE='#'
- ENABLE_DWZ_FALSE=
-fi
-
-if test "$enable_dwz" = yes; then :
- $as_echo "#define ENABLE_DWZ 1" >>confdefs.h
-
+if test "$use_locks" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: thread-safety is EXPERIMENTAL tests might fail." >&5
+$as_echo "$as_me: WARNING: thread-safety is EXPERIMENTAL tests might fail." >&2;}
fi
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
fi
;;
msvc7 | msvc7msys | msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_YACC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LEX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
b { REJECT; }
c { yymore (); }
d { yyless (1); }
-e { yyless (input () != 0); }
+e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */
+ yyless ((input () != 0)); }
f { unput (yytext[0]); }
. { BEGIN INITIAL; }
%%
if test "$LEX" = :; then
LEX=${am_missing_run}flex
fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc with C99 support" >&5
-$as_echo_n "checking for gcc with C99 support... " >&6; }
-if ${ac_cv_c99+:} false; then :
+# Only available since automake 1.12
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar lib "link -lib"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
- old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -std=gnu99"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c99=yes
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
else
- ac_cv_c99=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$old_CFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c99" >&5
-$as_echo "$ac_cv_c99" >&6; }
-if test "x$ac_cv_c99" != xyes; then :
- as_fn_error $? "gcc with C99 support required" "$LINENO" 5
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __thread support" >&5
-$as_echo_n "checking for __thread support... " >&6; }
-if ${ac_cv_tls+:} false; then :
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar lib "link -lib"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
- # 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.
-save_CFLAGS="$CFLAGS"
-save_LDFLAGS="$LDFLAGS"
-CFLAGS="-fpic $CFLAGS"
-LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#undef __thread
-static __thread int a; int foo (int b) { return a + b; }
-int
-main ()
-{
-exit (foo (0));
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_tls=yes
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
- ac_cv_tls=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
-LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
-$as_echo "$ac_cv_tls" >&6; }
-if test "x$ac_cv_tls" != xyes; then :
- as_fn_error $? "__thread support required" "$LINENO" 5
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
- enableval=$enable_largefile;
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
fi
-if test "$enable_largefile" != no; then
+: ${AR=ar}
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
+$as_echo_n "checking the archiver ($AR) interface... " >&6; }
+if ${am_cv_ar_interface+:} false; then :
$as_echo_n "(cached) " >&6
else
- ac_cv_sys_largefile_CC=no
- if test "$GCC" != yes; then
- ac_save_CC=$CC
- while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ am_cv_ar_interface=ar
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
+int some_variable = 0;
_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
- break
-fi
-rm -f core conftest.err conftest.$ac_objext
- CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_largefile_CC=' -n32'; break
+if ac_fn_c_try_compile "$LINENO"; then :
+ am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+ (eval $am_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=ar
+ else
+ am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+ (eval $am_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=lib
+ else
+ am_cv_ar_interface=unknown
+ fi
+ fi
+ rm -f conftest.lib libconftest.a
+
fi
-rm -f core conftest.err conftest.$ac_objext
- break
- done
- CC=$ac_save_CC
- rm -f conftest.$ac_ext
- fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
- if test "$ac_cv_sys_largefile_CC" != no; then
- CC=$CC$ac_cv_sys_largefile_CC
- fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
+$as_echo "$am_cv_ar_interface" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
+case $am_cv_ar_interface in
+ar)
+ ;;
+lib)
+ # Microsoft lib, so override with the ar-lib wrapper script.
+ # FIXME: It is wrong to rewrite AR.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__AR in this case,
+ # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+ # similar.
+ AR="$am_aux_dir/ar-lib $AR"
+ ;;
+unknown)
+ as_fn_error $? "could not determine $AR interface" "$LINENO" 5
+ ;;
+esac
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}readelf", so it can be a program name with args.
+set dummy ${ac_tool_prefix}readelf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_READELF+:} false; then :
$as_echo_n "(cached) " >&6
else
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
+ if test -n "$READELF"; then
+ ac_cv_prog_READELF="$READELF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_READELF="${ac_tool_prefix}readelf"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_file_offset_bits=no; break
+fi
+fi
+READELF=$ac_cv_prog_READELF
+if test -n "$READELF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
+$as_echo "$READELF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_READELF"; then
+ ac_ct_READELF=$READELF
+ # Extract the first word of "readelf", so it can be a program name with args.
+set dummy readelf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_READELF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_READELF"; then
+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_READELF="readelf"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
+if test -n "$ac_ct_READELF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5
+$as_echo "$ac_ct_READELF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_READELF" = x; then
+ READELF=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ READELF=$ac_ct_READELF
+ fi
+else
+ READELF="$ac_cv_prog_READELF"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ ac_cv_prog_NM="$NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NM="${ac_tool_prefix}nm"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NM"; then
+ ac_ct_NM=$NM
+ # Extract the first word of "nm", so it can be a program name with args.
+set dummy nm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NM"; then
+ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NM="nm"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
+$as_echo "$ac_ct_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NM" = x; then
+ NM=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NM=$ac_ct_NM
+ fi
+else
+ NM="$ac_cv_prog_NM"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc with C99 support" >&5
+$as_echo_n "checking for gcc with C99 support... " >&6; }
+if ${ac_cv_c99+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ old_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -std=gnu99"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c99=yes
+else
+ ac_cv_c99=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+CFLAGS="$old_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c99" >&5
+$as_echo "$ac_cv_c99" >&6; }
+if test "x$ac_cv_c99" != xyes; then :
+ as_fn_error $? "gcc with C99 support required" "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __thread support" >&5
+$as_echo_n "checking for __thread support... " >&6; }
+if ${ac_cv_tls+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # 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.
+save_CFLAGS="$CFLAGS"
+save_LDFLAGS="$LDFLAGS"
+CFLAGS="-fpic $CFLAGS"
+LDFLAGS="-shared -Wl,-z,defs,-z,relro $LDFLAGS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#undef __thread
+static __thread int a; int foo (int b) { return a + b; }
+int
+main ()
+{
+exit (foo (0));
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_tls=yes
+else
+ ac_cv_tls=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+CFLAGS="$save_CFLAGS"
+LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
+$as_echo "$ac_cv_tls" >&6; }
+if test "x$ac_cv_tls" != xyes; then :
+ as_fn_error $? "__thread support required" "$LINENO" 5
+fi
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
We can't simply define LARGE_OFF_T to be 9223372036854775807,
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_file_offset_bits=unknown
+ if ac_fn_c_try_compile "$LINENO"; then :
break
-done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
- no | unknown) ;;
- *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
- if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
$as_echo_n "(cached) " >&6
else
while :; do
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_large_files=no; break
+ ac_cv_sys_file_offset_bits=no; break
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#define _LARGE_FILES 1
+#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
We can't simply define LARGE_OFF_T to be 9223372036854775807,
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_large_files=1; break
+ ac_cv_sys_file_offset_bits=64; break
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_large_files=unknown
+ ac_cv_sys_file_offset_bits=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
no | unknown) ;;
*)
cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
_ACEOF
;;
esac
rm -rf conftest*
- fi
-fi
-
-
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+
+
+fi
+
+
native_ld=no
# Check whether --enable-generic was given.
if test "${enable_generic+set}" = set; then :
fi
-use_mudflap=no
-# Check whether --enable-mudflap was given.
-if test "${enable_mudflap+set}" = set; then :
- enableval=$enable_mudflap; if test "x$enable_mudflap" = xyes; then
- # Check whether the compiler support -fmudflap.
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fmudflap"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- use_mudflap=yes
-else
- use_mudflap=fail
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$old_CFLAGS"
-fi
-fi
-
-if test "$use_mudflap" = fail; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "--enable-mudflap requires a compiler which understands this option
-See \`config.log' for more details" "$LINENO" 5; }
-fi
- if test "$use_mudflap" = yes; then
- MUDFLAP_TRUE=
- MUDFLAP_FALSE='#'
-else
- MUDFLAP_TRUE='#'
- MUDFLAP_FALSE=
-fi
-
-
# Check whether --enable-debugpred was given.
if test "${enable_debugpred+set}" = set; then :
enableval=$enable_debugpred; use_debugpred=$enableval
fi
- if test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes; then
+# Check whether --enable-valgrind was given.
+if test "${enable_valgrind+set}" = set; then :
+ enableval=$enable_valgrind; use_valgrind=$enableval
+else
+ use_valgrind=no
+fi
+
+if test "$use_valgrind" = yes; then
+ # Extract the first word of "valgrind", so it can be a program name with args.
+set dummy valgrind; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_HAVE_VALGRIND+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$HAVE_VALGRIND"; then
+ ac_cv_prog_HAVE_VALGRIND="$HAVE_VALGRIND" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_HAVE_VALGRIND="yes"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_prog_HAVE_VALGRIND" && ac_cv_prog_HAVE_VALGRIND="no"
+fi
+fi
+HAVE_VALGRIND=$ac_cv_prog_HAVE_VALGRIND
+if test -n "$HAVE_VALGRIND"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_VALGRIND" >&5
+$as_echo "$HAVE_VALGRIND" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "$HAVE_VALGRIND" = "no"; then
+ as_fn_error $? "valgrind not found" "$LINENO" 5
+ fi
+fi
+ if test "$use_valgrind" = yes; then
+ USE_VALGRIND_TRUE=
+ USE_VALGRIND_FALSE='#'
+else
+ USE_VALGRIND_TRUE='#'
+ USE_VALGRIND_FALSE=
+fi
+
+
+ if test "$use_gprof" = yes -o "$use_gcov" = yes; then
BUILD_STATIC_TRUE=
BUILD_STATIC_FALSE='#'
else
ac_config_files="$ac_config_files libebl/Makefile"
+ac_config_files="$ac_config_files libdwelf/Makefile"
+
+
ac_config_files="$ac_config_files libdw/Makefile"
- GETTEXT_MACRO_VERSION=0.17
+ GETTEXT_MACRO_VERSION=0.18
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
$as_echo "$GMSGFMT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XGETTEXT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$XGETTEXT" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ rm -f messages.po
+
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGMERGE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGMERGE" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
+ ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+ ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$localedir" || localedir='${datadir}/locale'
+
+
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+
+
+ ac_config_commands="$ac_config_commands po-directories"
+
+
+
+
+
+ac_config_files="$ac_config_files version.h:config/version.h.in"
+
+
+
+# 1.234<whatever> -> 1234<whatever>
+case "$PACKAGE_VERSION" in
+[0-9].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
+*) as_fn_error $? "confused by version number '$PACKAGE_VERSION'" "$LINENO" 5 ;;
+esac
+case "$eu_version" in
+*.*)
+ # 1234.567 -> "1234", "567"
+ eu_extra_version="${eu_version#*.}"
+ eu_version="${eu_version%%.*}"
+ case "$eu_extra_version" in
+ [0-9][0-9][0-9]) ;;
+ [0-9][0-9]) eu_extra_version="${eu_extra_version}0" ;;
+ [0-9]) eu_extra_version="${eu_extra_version}00" ;;
+ *) as_fn_error $? "confused by version number '$PACKAGE_VERSION'" "$LINENO" 5 ;;
+ esac
+ ;;
+*)
+ eu_extra_version=000
+ ;;
+esac
+
+case "$eu_version" in
+ 0[0-9][0-9][0-9]) eu_version="${eu_version#0}$eu_extra_version" ;;
+[0-9][0-9][0-9][0-9]) eu_version="${eu_version}$eu_extra_version" ;;
+[0-9][0-9][0-9]) eu_version="${eu_version}0$eu_extra_version" ;;
+[0-9][0-9]) eu_version="${eu_version}00$eu_extra_version";;
+*) as_fn_error $? "confused by version number '$PACKAGE_VERSION'" "$LINENO" 5 ;;
+esac
+
+# Round up to the next release API (x.y) version.
+eu_version=$(( (eu_version + 999) / 1000 ))
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
- case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
- *) MSGFMT_015=$MSGFMT ;;
- esac
+fi
- case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
- *) GMSGFMT_015=$GMSGFMT ;;
- esac
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+fi
+done
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
-# Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XGETTEXT+:} false; then :
- $as_echo_n "(cached) " >&6
else
- case "$XGETTEXT" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
- ;;
-esac
+ if test "$ac_cv_type_long" = yes; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_long=0
+ fi
fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
-$as_echo "$XGETTEXT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
- rm -f messages.po
- case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
- *) XGETTEXT_015=$XGETTEXT ;;
- esac
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
+# On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
+# of the user_regs_struct from sys/user.h. They are structurally the same
+# but we get either one or the other.
+ac_fn_c_check_type "$LINENO" "struct user_regs_struct" "ac_cv_type_struct_user_regs_struct" "#include <sys/ptrace.h>
+ #include <sys/time.h>
+ #include <sys/user.h>
+"
+if test "x$ac_cv_type_struct_user_regs_struct" = xyes; then :
+ sys_user_has_user_regs=yes
else
- ac_executable_p="test -f"
+ sys_user_has_user_regs=no
fi
-rm -f conf$$.file
-# Extract the first word of "msgmerge", so it can be a program name with args.
-set dummy msgmerge; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGMERGE+:} false; then :
+if test "$sys_user_has_user_regs" = "yes"; then
+
+$as_echo "#define HAVE_SYS_USER_REGS 1" >>confdefs.h
+
+fi
+
+# On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
+# Likewise in a 32-bit build on a host where $CC -m64 works.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $CC option for 32-bit word size" >&5
+$as_echo_n "checking $CC option for 32-bit word size... " >&6; }
+if ${utrace_cv_CC_m32+:} false; then :
$as_echo_n "(cached) " >&6
else
- case "$MSGMERGE" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
- ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
- ;;
-esac
+ save_CC="$CC"
+utrace_cv_CC_m32=none
+for ut_try in -m32 -m31; do
+ CC=`echo "$save_CC" | sed 's/ -m[36][241]//'`" $ut_try"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (void) { return 1; }
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ utrace_cv_CC_m32=$ut_try
fi
-MSGMERGE="$ac_cv_path_MSGMERGE"
-if test "$MSGMERGE" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
-$as_echo "$MSGMERGE" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test x$utrace_cv_CC_m32 = xnone || break
+done
+CC="$save_CC"
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $utrace_cv_CC_m32" >&5
+$as_echo "$utrace_cv_CC_m32" >&6; }
+if test x$utrace_cv_CC_m32 != xnone; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+$as_echo_n "checking for 64-bit host... " >&6; }
+if ${utrace_cv_host64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdint.h>
+#if (UINTPTR_MAX > 0xffffffffUL)
+@utrace_host64@
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "@utrace_host64@" >/dev/null 2>&1; then :
+ utrace_cv_host64=yes
+else
+ utrace_cv_host64=no
+fi
+rm -f conftest*
- test -n "$localedir" || localedir='${datadir}/locale'
-
-
- test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
-
-
- ac_config_commands="$ac_config_commands po-directories"
-
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $utrace_cv_host64" >&5
+$as_echo "$utrace_cv_host64" >&6; }
+if test $utrace_cv_host64 = no; then :
+ utrace_biarch=-m64 utrace_thisarch=$utrace_cv_CC_m32
+else
+ utrace_biarch=$utrace_cv_CC_m32 utrace_thisarch=-m64
+fi
+biarch_CC=`echo "$CC" | sed "s/ *${utrace_thisarch}//"`
+biarch_CC="$biarch_CC $utrace_biarch"
+fi
+utrace_biarch_forced=no
+# Check whether --with-biarch was given.
+if test "${with_biarch+set}" = set; then :
+ withval=$with_biarch; if test "x$with_biarch" != xno; then :
+ utrace_biarch_forced=yes
+fi
+fi
-ac_config_files="$ac_config_files version.h:config/version.h.in"
+if test $utrace_biarch_forced = yes; then :
+ utrace_cv_cc_biarch=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: enabling biarch tests regardless using $biarch_CC" >&5
+$as_echo "$as_me: enabling biarch tests regardless using $biarch_CC" >&6;}
+else
+ if test x$utrace_cv_CC_m32 != xnone; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $biarch_CC makes executables we can run" >&5
+$as_echo_n "checking whether $biarch_CC makes executables we can run... " >&6; }
+if ${utrace_cv_cc_biarch+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_CC="$CC"
+CC="$biarch_CC"
+if test "$cross_compiling" = yes; then :
+ utrace_cv_cc_biarch=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int
+main ()
+{
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ utrace_cv_cc_biarch=yes
+else
+ utrace_cv_cc_biarch=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
-# 1.234<whatever> -> 1234<whatever>
-case "$PACKAGE_VERSION" in
-[0-9].*) eu_version=`echo "$PACKAGE_VERSION" | sed 's@\.@@'` ;;
-*) as_fn_error $? "confused by version number '$PACKAGE_VERSION'" "$LINENO" 5 ;;
-esac
-case "$eu_version" in
-*.*)
- # 1234.567 -> "1234", "567"
- eu_extra_version="${eu_version#*.}"
- eu_version="${eu_version%%.*}"
- case "$eu_extra_version" in
- [0-9][0-9][0-9]) ;;
- [0-9][0-9]) eu_extra_version="${eu_extra_version}0" ;;
- [0-9]) eu_extra_version="${eu_extra_version}00" ;;
- *) as_fn_error $? "confused by version number '$PACKAGE_VERSION'" "$LINENO" 5 ;;
- esac
- ;;
-*)
- eu_extra_version=000
- ;;
-esac
+CC="$save_CC"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $utrace_cv_cc_biarch" >&5
+$as_echo "$utrace_cv_cc_biarch" >&6; }
+else
+ utrace_cv_cc_biarch=no
+fi
+if test $utrace_cv_cc_biarch != yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: not running biarch tests, $biarch_CC does not work" >&5
+$as_echo "$as_me: WARNING: not running biarch tests, $biarch_CC does not work" >&2;}
+fi
+fi
+ if test $utrace_cv_cc_biarch = yes; then
+ BIARCH_TRUE=
+ BIARCH_FALSE='#'
+else
+ BIARCH_TRUE='#'
+ BIARCH_FALSE=
+fi
-case "$eu_version" in
- 0[0-9][0-9][0-9]) eu_version="${eu_version#0}$eu_extra_version" ;;
-[0-9][0-9][0-9][0-9]) eu_version="${eu_version}$eu_extra_version" ;;
-[0-9][0-9][0-9]) eu_version="${eu_version}0$eu_extra_version" ;;
-[0-9][0-9]) eu_version="${eu_version}00$eu_extra_version";;
-*) as_fn_error $? "confused by version number '$PACKAGE_VERSION'" "$LINENO" 5 ;;
-esac
+# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
+CC_BIARCH="$CC $utrace_biarch"
-# Round up to the next release API (x.y) version.
-eu_version=$(( (eu_version + 999) / 1000 ))
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
LTLIBOBJS=$ac_ltlibobjs
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'
as_fn_error $? "conditional \"USE_LOCKS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${ENABLE_DWZ_TRUE}" && test -z "${ENABLE_DWZ_FALSE}"; then
- as_fn_error $? "conditional \"ENABLE_DWZ\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
as_fn_error $? "conditional \"AMDEP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
as_fn_error $? "conditional \"NEVER\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${MUDFLAP_TRUE}" && test -z "${MUDFLAP_FALSE}"; then
- as_fn_error $? "conditional \"MUDFLAP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${GPROF_TRUE}" && test -z "${GPROF_FALSE}"; then
as_fn_error $? "conditional \"GPROF\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
as_fn_error $? "conditional \"GCOV\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${USE_VALGRIND_TRUE}" && test -z "${USE_VALGRIND_FALSE}"; then
+ as_fn_error $? "conditional \"USE_VALGRIND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${BUILD_STATIC_TRUE}" && test -z "${BUILD_STATIC_FALSE}"; then
as_fn_error $? "conditional \"BUILD_STATIC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
as_fn_error $? "conditional \"STANDALONE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${BIARCH_TRUE}" && test -z "${BIARCH_FALSE}"; then
+ as_fn_error $? "conditional \"BIARCH\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by elfutils $as_me 0.155, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+This file was extended by elfutils $as_me 0.160, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-elfutils config.status 0.155
-configured by $0, generated by GNU Autoconf 2.68,
+elfutils config.status 0.160
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
"lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
"libelf/Makefile") CONFIG_FILES="$CONFIG_FILES libelf/Makefile" ;;
"libebl/Makefile") CONFIG_FILES="$CONFIG_FILES libebl/Makefile" ;;
+ "libdwelf/Makefile") CONFIG_FILES="$CONFIG_FILES libdwelf/Makefile" ;;
"libdw/Makefile") CONFIG_FILES="$CONFIG_FILES libdw/Makefile" ;;
"libdwfl/Makefile") CONFIG_FILES="$CONFIG_FILES libdwfl/Makefile" ;;
"libcpu/Makefile") CONFIG_FILES="$CONFIG_FILES libcpu/Makefile" ;;
case $ac_file$ac_mode in
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`$as_dirname -- "$file" ||
case "$ac_file" in */Makefile.in)
# Adjust a relative srcdir.
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
# In autoconf-2.13 it is called $ac_given_srcdir.
# In autoconf-2.50 it is called $srcdir.
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
rm -f "$ac_dir/POTFILES"
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ gt_tab=`printf '\t'`
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
POMAKEFILEDEPS="POTFILES.in"
# ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
# on $ac_dir but don't depend on user-specified configuration
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
fi
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
else
# The set of available languages was given in configure.in.
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
fi
# Compute POFILES
dnl Process this file with autoconf to produce a configure script.
dnl Configure input file for elfutils. -*-autoconf-*-
dnl
-dnl Copyright (C) 1996-2012 Red Hat, Inc.
+dnl Copyright (C) 1996-2014 Red Hat, Inc.
dnl
dnl This file is part of elfutils.
dnl
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
-AC_INIT([elfutils],[0.155],[https://bugzilla.redhat.com/],[elfutils])
+AC_INIT([elfutils],[0.160],[https://bugzilla.redhat.com/],[elfutils])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_FILES([config/Makefile])
-AC_COPYRIGHT([Copyright (C) 1996-2012 Red Hat, Inc.])
+AC_COPYRIGHT([Copyright (C) 1996-2014 Red Hat, Inc.])
AC_PREREQ(2.63) dnl Minimum Autoconf version required.
dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
-AM_INIT_AUTOMAKE([gnits 1.8 -Wno-portability dist-bzip2 no-dist-gzip])
+AM_INIT_AUTOMAKE([gnits 1.11 -Wno-portability dist-bzip2 no-dist-gzip parallel-tests])
AM_MAINTAINER_MODE
dnl Unique ID for this build.
[Should ar and ranlib use -D behavior by default?])
AC_ARG_ENABLE([thread-safety],
-AS_HELP_STRING([--enable-thread-safety], [enable thread safety of libraries]),
-use_locks=$enableval, use_locks=no)
+AS_HELP_STRING([--enable-thread-safety],
+ [enable thread safety of libraries EXPERIMENTAL]),
+ use_locks=$enableval, use_locks=no)
AM_CONDITIONAL(USE_LOCKS, test "$use_locks" = yes)
AS_IF([test "$use_locks" = yes], [AC_DEFINE(USE_LOCKS)])
+AS_IF([test "$use_locks" = yes],
+ [AC_MSG_WARN([thread-safety is EXPERIMENTAL tests might fail.])])
AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
-AC_ARG_ENABLE([dwz],
-AS_HELP_STRING([--enable-dwz], [enable experimental GNU ref_alt FORM, dwz multi file support in libdw]),
-enable_dwz=$enableval, enable_dwz=no)
-AM_CONDITIONAL(ENABLE_DWZ, test "$enable_dwz" = yes)
-AS_IF([test "$enable_dwz" = yes], [AC_DEFINE(ENABLE_DWZ)])
-
-AH_TEMPLATE([ENABLE_DWZ], [Defined if libdw should support GNU ref_alt FORM, dwz multi files.])
-
AC_PROG_CC
AC_PROG_RANLIB
AC_PROG_YACC
AM_PROG_LEX
+# Only available since automake 1.12
+m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+AC_CHECK_TOOL([READELF], [readelf])
+AC_CHECK_TOOL([NM], [nm])
AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
old_CFLAGS="$CFLAGS"
dnl See src/Makefile.am for more information.
AM_CONDITIONAL(NEVER, false)
-dnl Enable debugging via mudflap. This option will cause most libraries
-dnl to be built as archives which are statically linked into the applications.
-dnl All code, as far as possible, is compiled instrumented to catch all
-dnl the bugs valgrind is able to catch.
-use_mudflap=no
-AC_ARG_ENABLE([mudflap],
-AS_HELP_STRING([--enable-mudflap],
-[build binaries with mudflap instrumentation]), [dnl
-if test "x$enable_mudflap" = xyes; then
- # Check whether the compiler support -fmudflap.
- old_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fmudflap"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[use_mudflap=yes],[use_mudflap=fail])
- CFLAGS="$old_CFLAGS"
-fi])
-if test "$use_mudflap" = fail; then
- AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option])
-fi
-AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes)
-
dnl enable debugging of branch prediction.
AC_ARG_ENABLE([debugpred],
AS_HELP_STRING([--enable-debugpred],[build binaries with support to debug branch prediction]),
fi
AM_CONDITIONAL(GCOV, test "$use_gcov" = yes)
+AC_ARG_ENABLE([valgrind],
+AS_HELP_STRING([--enable-valgrind],[run all tests under valgrind]),
+[use_valgrind=$enableval], [use_valgrind=no])
+if test "$use_valgrind" = yes; then
+ AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
+ if test "$HAVE_VALGRIND" = "no"; then
+ AC_MSG_ERROR([valgrind not found])
+ fi
+fi
+AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
+
AM_CONDITIONAL(BUILD_STATIC, [dnl
-test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
+test "$use_gprof" = yes -o "$use_gcov" = yes])
AC_ARG_ENABLE([tests-rpath],
AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
dnl Higher-level ELF support library.
AC_CONFIG_FILES([libebl/Makefile])
+dnl DWARF-ELF Lower-level Functions support library.
+AC_CONFIG_FILES([libdwelf/Makefile])
+
dnl DWARF library.
AC_CONFIG_FILES([libdw/Makefile])
# Round up to the next release API (x.y) version.
eu_version=$(( (eu_version + 999) / 1000 ))
+AC_CHECK_SIZEOF(long)
+
+# On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
+# of the user_regs_struct from sys/user.h. They are structurally the same
+# but we get either one or the other.
+AC_CHECK_TYPE([struct user_regs_struct],
+ [sys_user_has_user_regs=yes], [sys_user_has_user_regs=no],
+ [[#include <sys/ptrace.h>]
+ [#include <sys/time.h>]
+ [#include <sys/user.h>]])
+if test "$sys_user_has_user_regs" = "yes"; then
+ AC_DEFINE(HAVE_SYS_USER_REGS, 1,
+ [Define to 1 if <sys/user.h> defines struct user_regs_struct])
+fi
+
+# On a 64-bit host where can can use $CC -m32, we'll run two sets of tests.
+# Likewise in a 32-bit build on a host where $CC -m64 works.
+utrace_BIARCH
+# `$utrace_biarch' will be `-m64' even on an uniarch i386 machine.
+CC_BIARCH="$CC $utrace_biarch"
+AC_SUBST([CC_BIARCH])
+
AC_OUTPUT
# -*- rpm-spec-*-
Summary: A collection of utilities and DSOs to handle compiled objects
Name: elfutils
-Version: 0.155
+Version: 0.160
Release: 1
License: GPLv3+ and (GPLv2+ or LGPLv3+)
Group: Development/Tools
%{_includedir}/elfutils/libebl.h
%{_includedir}/elfutils/libdw.h
%{_includedir}/elfutils/libdwfl.h
+%{_includedir}/elfutils/libdwelf.h
%{_libdir}/libebl.a
#%{_libdir}/libasm.so
%{_libdir}/libdw.so
%{_libdir}/libelf.a
%changelog
+* Mon Aug 25 2014 Mark Wielaard <mjw@redhat.com> 0.160-1
+- libdw: New functions dwarf_cu_getdwarf, dwarf_cu_die.
+ dwarf.h remove non-existing DW_TAG_mutable_type.
+- libdwfl: Handle LZMA .ko.xz compressed kernel modules.
+- unstrip: New option -F, --force to combining files even if some ELF
+ headers don't seem to match.
+- backends: Handle ARM THUMB functions. Add support for ppc64le ELFv2 abi.
+
+* Sat May 17 2014 Mark Wielaard <mjw@redhat.com> 0.159-1
+- stack: New option -d, --debugname to lookup DWARF debuginfo name
+ for frame. New option -i, --inlines to show inlined frames
+ using DWARF debuginfo.
+- libdwelf: New libdwelf.h header for libdw.so DWARF ELF Low-level
+ Functions. New function dwelf_elf_gnu_debuglink,
+ dwelf_dwarf_gnu_debugaltlink, and dwelf_elf_gnu_build_id.
+- libdw: Support for DWZ multifile forms DW_FORM_GNU_ref_alt and
+ DW_FORM_GNU_strp_alt is now enabled by default and no longer
+ experimental. Added new functions dwarf_getalt and dwarf_setalt
+ to get or set the alternative debug file used for the alt FORMs.
+ The dwfl_linux_proc_find_elf callback will now find ELF from
+ process memory for (deleted) files if the Dwfl has process state
+ attached.
+- libdwfl: The dwfl_build_id_find_debuginfo and
+ dwfl_standard_find_debuginfo functions will now try to
+ resolve and set the alternative debug file.
+- backends: Add CFI unwinding for arm. Relies on .debug_frame.
+ Add arm process initial register state compatible mode to AARCH64.
+ Add aarch64 native and core unwind support.
+- other: All separate elfutils-robustify patches have been merged.
+ CVE-2014-0172 Check overflow before calling malloc to uncompress
+ data.
+
+* Fri Jan 3 2014 Mark Wielaard <mjw@redhat.com> 0.158-1
+- libdwfl: dwfl_core_file_report has new parameter executable.
+ New functions dwfl_module_getsymtab_first_global,
+ dwfl_module_getsym_info and dwfl_module_addrinfo.
+ Added unwinder with type Dwfl_Thread_Callbacks, opaque types
+ Dwfl_Thread and Dwfl_Frame and functions dwfl_attach_state,
+ dwfl_pid, dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
+ dwfl_thread_state_registers, dwfl_thread_state_register_pc,
+ dwfl_getthread_frames, dwfl_getthreads, dwfl_thread_getframes
+ and dwfl_frame_pc.
+- addr2line: New option -x to show the section an address was found in.
+- stack: New utility that uses the new unwinder for processes and cores.
+- backends: Unwinder support for i386, x86_64, s390, s390x, ppc and ppc64.
+ aarch64 support.
+
+* Mon Sep 30 2013 Mark Wielaard <mjw@redhat.com> 0.157-1
+- libdw: Add new functions dwarf_getlocations, dwarf_getlocation_attr
+ and dwarf_getlocation_die.
+- readelf: Show contents of NT_SIGINFO and NT_FILE core notes.
+- addr2line: Support -i, --inlines output option.
+- backends: abi_cfi hook for arm, ppc and s390.
+
+* Thu Jul 25 2013 Jan Kratochvil <jan.kratochvil@redhat.com> 0.156-1
+- lib: New macro COMPAT_VERSION_NEWPROTO.
+- libdw: Handle GNU extension opcodes in dwarf_getlocation.
+- libdwfl: Fix STB_GLOBAL over STB_WEAK preference in
+ dwfl_module_addrsym. Add minisymtab support. Add
+ parameter add_p_vaddr to dwfl_report_elf. Use DT_DEBUG
+ library search first.
+- libebl: Handle new core note types in EBL.
+- backends: Interpret NT_ARM_VFP. Implement core file
+ registers parsing for s390/s390x.
+- readelf: Add --elf-section input option to inspect an embedded ELF
+ file. Add -U, --unresolved-address-offsets output control.
+ Add --debug-dump=decodedline support. Accept version
+ 8 .gdb_index section format. Adjust output formatting width.
+ When highpc is in constant form print it also as address.
+ Display raw .debug_aranges. Use libdw only for decodedaranges.
+- elflint: Add __bss_start__ to the list of allowed symbols.
+- tests: Add configure --enable-valgrind option to run all tests
+ under valgrind. Enable automake parallel-tests for make check.
+- translations: Updated Polish translation.
+- Updates for Automake 1.13.
+
* Fri Aug 24 2012 Mark Wielaard <mjw@redhat.com> 0.155-1
- libelf: elf*_xlatetomd now works for cross-endian ELF note data.
elf_getshdr now works consistently on non-mmaped ELF files after
+2014-01-17 Lei Zhang <thestig@google.com>
+
+ * crc32_file.c: Include config.h.
+
+2013-12-12 Josh Stone <jistone@redhat.com>
+
+ * dynamicsizehash.c (lookup): Add a shortcut around division.
+
+2013-04-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * eu-config.h (COMPAT_VERSION_NEWPROTO): New. Twice.
+
+2013-04-26 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * system.h (LE64, BE64): Move here the definitions from
+ libdwfl/link_map.c.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2012-10-09 Adam Markey <adam@etinternational.com>
+
+ * system.h: Changed pwrite_retry, write_retry, and pread_retry to
+ handle case where not all data was read/written.
+
+2012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * system.h (eu_static_assert): New macro.
+
2012-01-21 Ulrich Drepper <drepper@gmail.com>
* Makefile.am (libeu_a_SOURCES): Add color.c.
##
include $(top_srcdir)/config/eu.am
AM_CFLAGS += -fpic
-INCLUDES += -I$(srcdir)/../libelf
+AM_CPPFLAGS += -I$(srcdir)/../libelf
noinst_LIBRARIES = libeu.a
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(noinst_HEADERS) ChangeLog
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libeu_a_AR = $(AR) $(ARFLAGS)
libeu_a_LIBADD =
am_libeu_a_OBJECTS = xstrdup.$(OBJEXT) xstrndup.$(OBJEXT) \
crc32_file.$(OBJEXT) md5.$(OBJEXT) sha1.$(OBJEXT) \
color.$(OBJEXT)
libeu_a_OBJECTS = $(am_libeu_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libeu_a_SOURCES)
DIST_SOURCES = $(libeu_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
HEADERS = $(noinst_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
$($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1) -fpic
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
-
+ $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) -fpic
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
noinst_LIBRARIES = libeu.a
libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c \
crc32.c crc32_file.c md5.c sha1.c \
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
libeu.a: $(libeu_a_OBJECTS) $(libeu_a_DEPENDENCIES) $(EXTRA_libeu_a_DEPENDENCIES)
- -rm -f libeu.a
- $(libeu_a_AR) libeu.a $(libeu_a_OBJECTS) $(libeu_a_LIBADD)
- $(RANLIB) libeu.a
+ $(AM_V_at)-rm -f libeu.a
+ $(AM_V_AR)$(libeu_a_AR) libeu.a $(libeu_a_OBJECTS) $(libeu_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libeu.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am
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
+
#include "system.h"
#include <errno.h>
#include <unistd.h>
HASHTYPE hval;
TYPE val __attribute__ ((unused));
{
- /* First hash function: simply take the modul but prevent zero. */
- size_t idx = 1 + hval % htab->size;
+ /* First hash function: simply take the modul but prevent zero. Small values
+ can skip the division, which helps performance when this is common. */
+ size_t idx = 1 + (hval < htab->size ? hval : hval % htab->size);
if (htab->table[idx].hashval != 0)
{
".symver _compat." #version "." #name "," #name "@" #version);
# define NEW_VERSION(name, version) \
asm (".symver " #name "," #name "@@@" #version);
+# define COMPAT_VERSION_NEWPROTO(name, version, prefix) \
+ asm (".symver _compat." #version "." #name "," #name "@" #version); \
+ __typeof (_compat_##prefix##_##name) _compat_##prefix##_##name \
+ asm ("_compat." #version "." #name);
# define COMPAT_VERSION(name, version, prefix) \
asm (".symver _compat." #version "." #name "," #name "@" #version); \
__typeof (name) _compat_##prefix##_##name asm ("_compat." #version "." #name);
#else
# define OLD_VERSION(name, version) /* Nothing for static linking. */
# define NEW_VERSION(name, version) /* Nothing for static linking. */
+# define COMPAT_VERSION_NEWPROTO(name, version, prefix) \
+ error "should use #ifdef SHARED"
# define COMPAT_VERSION(name, version, prefix) error "should use #ifdef SHARED"
#endif
#include <stdint.h>
#include <endian.h>
#include <byteswap.h>
+#include <unistd.h>
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define LE32(n) (n)
+# define LE64(n) (n)
# define BE32(n) bswap_32 (n)
+# define BE64(n) bswap_64 (n)
#elif __BYTE_ORDER == __BIG_ENDIAN
# define BE32(n) (n)
+# define BE64(n) (n)
# define LE32(n) bswap_32 (n)
+# define LE64(n) bswap_64 (n)
#else
# error "Unknown byte order"
#endif
#define gettext_noop(Str) Str
-#define pwrite_retry(fd, buf, len, off) \
- TEMP_FAILURE_RETRY (pwrite (fd, buf, len, off))
-#define write_retry(fd, buf, n) \
- TEMP_FAILURE_RETRY (write (fd, buf, n))
-#define pread_retry(fd, buf, len, off) \
- TEMP_FAILURE_RETRY (pread (fd, buf, len, off))
+static inline ssize_t __attribute__ ((unused))
+pwrite_retry (int fd, const void *buf, size_t len, off_t off)
+{
+ ssize_t recvd = 0;
+
+ do
+ {
+ ssize_t ret = TEMP_FAILURE_RETRY (pwrite (fd, buf + recvd, len - recvd,
+ off + recvd));
+ if (ret <= 0)
+ return ret < 0 ? ret : recvd;
+
+ recvd += ret;
+ }
+ while ((size_t) recvd < len);
+
+ return recvd;
+}
+
+static inline ssize_t __attribute__ ((unused))
+write_retry (int fd, const void *buf, size_t len)
+{
+ ssize_t recvd = 0;
+
+ do
+ {
+ ssize_t ret = TEMP_FAILURE_RETRY (write (fd, buf + recvd, len - recvd));
+ if (ret <= 0)
+ return ret < 0 ? ret : recvd;
+
+ recvd += ret;
+ }
+ while ((size_t) recvd < len);
+
+ return recvd;
+}
+
+static inline ssize_t __attribute__ ((unused))
+pread_retry (int fd, void *buf, size_t len, off_t off)
+{
+ ssize_t recvd = 0;
+
+ do
+ {
+ ssize_t ret = TEMP_FAILURE_RETRY (pread (fd, buf + recvd, len - recvd,
+ off + recvd));
+ if (ret <= 0)
+ return ret < 0 ? ret : recvd;
+
+ recvd += ret;
+ }
+ while ((size_t) recvd < len);
+
+ return recvd;
+}
/* We need define two variables, argp_program_version_hook and
extern const char color_off[];
+/* A static assertion. This will cause a compile-time error if EXPR,
+ which must be a compile-time constant, is false. */
+
+#define eu_static_assert(expr) \
+ extern int never_defined_just_used_for_checking[(expr) ? 1 : -1] \
+ __attribute__ ((unused))
+
#endif /* system.h */
+2014-04-13 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Remove !MUDFLAP conditions.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
2011-02-08 Roland McGrath <roland@redhat.com>
* asm_newscn.c (asm_newscn): Remove unused variable.
## not, see <http://www.gnu.org/licenses/>.
##
include $(top_srcdir)/config/eu.am
-INCLUDES += -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl -I$(top_srcdir)/libdw
+AM_CPPFLAGS += -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl -I$(top_srcdir)/libdw
GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
VERSION = 1
lib_LIBRARIES = libasm.a
-if !MUDFLAP
noinst_LIBRARIES = libasm_pic.a
noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
-endif
pkginclude_HEADERS = libasm.h
libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \
disasm_begin.c disasm_cb.c disasm_end.c disasm_str.c \
symbolhash.c
-if !MUDFLAP
libasm_pic_a_SOURCES =
am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os)
endif
libasm_so_SOURCES =
-libasm.so: libasm_pic.a libasm.map
+libasm.so$(EXEEXT): libasm_pic.a libasm.map
$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
-Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \
-Wl,--soname,$@.$(VERSION) \
../libebl/libebl.a ../libelf/libelf.so $(libasm_so_LDLIBS)
- if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+ if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
ln -fs $@ $@.$(VERSION)
install: install-am libasm.so
rm -f $(DESTDIR)$(libdir)/libasm.so.$(VERSION)
rm -f $(DESTDIR)$(libdir)/libasm.so
rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils
-endif
noinst_HEADERS = libasmP.h symbolhash.h
EXTRA_DIST = libasm.map
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
-@MUDFLAP_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1)
-@MUDFLAP_TRUE@am_libasm_pic_a_OBJECTS =
-@MUDFLAP_FALSE@@USE_LOCKS_TRUE@am__append_2 = -lpthread
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
+noinst_PROGRAMS = $(am__EXEEXT_1)
+@USE_LOCKS_TRUE@am__append_1 = -lpthread
subdir = libasm
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
}
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"
LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libasm_a_AR = $(AR) $(ARFLAGS)
libasm_a_LIBADD =
am_libasm_a_OBJECTS = asm_begin.$(OBJEXT) asm_abort.$(OBJEXT) \
libasm_pic_a_AR = $(AR) $(ARFLAGS)
libasm_pic_a_LIBADD =
libasm_pic_a_OBJECTS = $(am_libasm_pic_a_OBJECTS)
-@MUDFLAP_FALSE@am__EXEEXT_1 = libasm.so$(EXEEXT)
+am__EXEEXT_1 = libasm.so$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am_libasm_so_OBJECTS =
libasm_so_OBJECTS = $(am_libasm_so_OBJECTS)
libasm_so_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) \
$(libasm_so_SOURCES)
DIST_SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) \
$(libasm_so_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \
-I$(top_srcdir)/libdw
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
- $($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1)
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ $(if $($(*F)_no_Werror),,-Werror) \
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+ $($(*F)_CFLAGS)
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda $(am_libasm_pic_a_OBJECTS) \
libasm.so.$(VERSION)
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
lib_LIBRARIES = libasm.a
-@MUDFLAP_FALSE@noinst_LIBRARIES = libasm_pic.a
+noinst_LIBRARIES = libasm_pic.a
pkginclude_HEADERS = libasm.h
libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \
asm_getelf.c asm_newscn.c asm_newscn_ingrp.c \
disasm_begin.c disasm_cb.c disasm_end.c disasm_str.c \
symbolhash.c
-@MUDFLAP_FALSE@libasm_pic_a_SOURCES =
-@MUDFLAP_FALSE@am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os)
-@MUDFLAP_FALSE@libasm_so_LDLIBS = $(am__append_2)
-@MUDFLAP_FALSE@libasm_so_SOURCES =
+libasm_pic_a_SOURCES =
+am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os)
+libasm_so_LDLIBS = $(am__append_1)
+libasm_so_SOURCES =
noinst_HEADERS = libasmP.h symbolhash.h
EXTRA_DIST = libasm.map
all: all-am
$(am__aclocal_m4_deps):
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
else :; fi; \
done; \
test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
$(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
@$(POST_INSTALL)
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
libasm.a: $(libasm_a_OBJECTS) $(libasm_a_DEPENDENCIES) $(EXTRA_libasm_a_DEPENDENCIES)
- -rm -f libasm.a
- $(libasm_a_AR) libasm.a $(libasm_a_OBJECTS) $(libasm_a_LIBADD)
- $(RANLIB) libasm.a
+ $(AM_V_at)-rm -f libasm.a
+ $(AM_V_AR)$(libasm_a_AR) libasm.a $(libasm_a_OBJECTS) $(libasm_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libasm.a
+
libasm_pic.a: $(libasm_pic_a_OBJECTS) $(libasm_pic_a_DEPENDENCIES) $(EXTRA_libasm_pic_a_DEPENDENCIES)
- -rm -f libasm_pic.a
- $(libasm_pic_a_AR) libasm_pic.a $(libasm_pic_a_OBJECTS) $(libasm_pic_a_LIBADD)
- $(RANLIB) libasm_pic.a
+ $(AM_V_at)-rm -f libasm_pic.a
+ $(AM_V_AR)$(libasm_pic_a_AR) libasm_pic.a $(libasm_pic_a_OBJECTS) $(libasm_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libasm_pic.a
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-@MUDFLAP_TRUE@libasm.so$(EXEEXT): $(libasm_so_OBJECTS) $(libasm_so_DEPENDENCIES) $(EXTRA_libasm_so_DEPENDENCIES)
-@MUDFLAP_TRUE@ @rm -f libasm.so$(EXEEXT)
-@MUDFLAP_TRUE@ $(LINK) $(libasm_so_OBJECTS) $(libasm_so_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symbolhash.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
-@MUDFLAP_TRUE@install: install-am
install-exec: install-exec-am
install-data: install-data-am
-@MUDFLAP_TRUE@uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \
- ctags distclean distclean-compile distclean-generic \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am \
- install-libLIBRARIES install-man install-pdf install-pdf-am \
- install-pkgincludeHEADERS install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-libLIBRARIES \
- uninstall-pkgincludeHEADERS
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-libLIBRARIES install-man install-pdf \
+ install-pdf-am install-pkgincludeHEADERS install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-libLIBRARIES uninstall-pkgincludeHEADERS
%.os: %.c %.o
@AMDEP_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
@AMDEP_TRUE@ fi
@AMDEP_FALSE@ $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
-@MUDFLAP_FALSE@libasm.so: libasm_pic.a libasm.map
-@MUDFLAP_FALSE@ $(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
-@MUDFLAP_FALSE@ -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \
-@MUDFLAP_FALSE@ -Wl,--soname,$@.$(VERSION) \
-@MUDFLAP_FALSE@ ../libebl/libebl.a ../libelf/libelf.so $(libasm_so_LDLIBS)
-@MUDFLAP_FALSE@ if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
-@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION)
-
-@MUDFLAP_FALSE@install: install-am libasm.so
-@MUDFLAP_FALSE@ $(mkinstalldirs) $(DESTDIR)$(libdir)
-@MUDFLAP_FALSE@ $(INSTALL_PROGRAM) libasm.so $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so
-@MUDFLAP_FALSE@ ln -fs libasm-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libasm.so.$(VERSION)
-@MUDFLAP_FALSE@ ln -fs libasm.so.$(VERSION) $(DESTDIR)$(libdir)/libasm.so
-
-@MUDFLAP_FALSE@uninstall: uninstall-am
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libasm.so.$(VERSION)
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libasm.so
-@MUDFLAP_FALSE@ rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils
+libasm.so$(EXEEXT): libasm_pic.a libasm.map
+ $(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
+ -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \
+ -Wl,--soname,$@.$(VERSION) \
+ ../libebl/libebl.a ../libelf/libelf.so $(libasm_so_LDLIBS)
+ if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+ ln -fs $@ $@.$(VERSION)
+
+install: install-am libasm.so
+ $(mkinstalldirs) $(DESTDIR)$(libdir)
+ $(INSTALL_PROGRAM) libasm.so $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so
+ ln -fs libasm-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libasm.so.$(VERSION)
+ ln -fs libasm.so.$(VERSION) $(DESTDIR)$(libdir)/libasm.so
+
+uninstall: uninstall-am
+ rm -f $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so
+ rm -f $(DESTDIR)$(libdir)/libasm.so.$(VERSION)
+ rm -f $(DESTDIR)$(libdir)/libasm.so
+ rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
+2014-04-13 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (i386_gendis_LDADD): Remove libmudflap.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2012-10-10 Roland McGrath <roland@hack.frob.com>
+
+ * Makefile.am (%_defs, $(srcdir)/%_dis.h): Redirect to temp file,
+ mv into place with separate command.
+
2012-06-26 Roland McGrath <roland@hack.frob.com>
* Makefile.am [!MAINTAINER_MODE] ($(srcdir)/%_dis.h): New rule.
## not, see <http://www.gnu.org/licenses/>.
##
include $(top_srcdir)/config/eu.am
-INCLUDES += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
+AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
-I$(srcdir)/../libdw -I$(srcdir)/../libasm
AM_CFLAGS += -fpic -fdollars-in-identifiers
LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -P$(<F:lex.l=)
x86_64_disasm.o: x86_64.mnemonics $(srcdir)/x86_64_dis.h
%_defs: $(srcdir)/defs/i386
- m4 -D$* -DDISASSEMBLER $< > $@
+ m4 -D$* -DDISASSEMBLER $< > $@T
+ mv -f $@T $@
if MAINTAINER_MODE
noinst_HEADERS = memory-access.h i386_parse.h i386_data.h
noinst_PROGRAMS = i386_gendis
$(srcdir)/%_dis.h: %_defs i386_gendis
- ./i386_gendis $< > $@
+ ./i386_gendis $< > $@T
+ mv -f $@T $@
else
i386_parse.o: i386_parse.c i386.mnemonics
i386_parse_CFLAGS = -DNMNES="`wc -l < i386.mnemonics`"
i386_lex.o: i386_parse.h
-i386_gendis_LDADD = $(libeu) -lm $(libmudflap)
+i386_gendis_LDADD = $(libeu) -lm
i386_parse.h: i386_parse.c ;
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(am__noinst_HEADERS_DIST) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/config/eu.am ChangeLog \
- i386_lex.c i386_parse.c
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am i386_lex.c i386_parse.c \
+ $(top_srcdir)/config/depcomp $(top_srcdir)/config/ylwrap \
+ $(am__noinst_HEADERS_DIST) ChangeLog
@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = i386_gendis$(EXEEXT)
subdir = libcpu
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libcpu_i386_a_AR = $(AR) $(ARFLAGS)
libcpu_i386_a_LIBADD =
am_libcpu_i386_a_OBJECTS = i386_disasm.$(OBJEXT)
am_i386_gendis_OBJECTS = i386_gendis.$(OBJEXT) i386_lex.$(OBJEXT) \
i386_parse.$(OBJEXT)
i386_gendis_OBJECTS = $(am_i386_gendis_OBJECTS)
-am__DEPENDENCIES_1 =
-i386_gendis_DEPENDENCIES = $(libeu) $(am__DEPENDENCIES_1)
+i386_gendis_DEPENDENCIES = $(libeu)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
+AM_V_LEX = $(am__v_LEX_@AM_V@)
+am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
+am__v_LEX_0 = @echo " LEX " $@;
+am__v_LEX_1 =
YLWRAP = $(top_srcdir)/config/ylwrap
@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+ -e s/c++$$/h++/ -e s/c$$/h/
YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+AM_V_YACC = $(am__v_YACC_@AM_V@)
+am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
+am__v_YACC_0 = @echo " YACC " $@;
+am__v_YACC_1 =
SOURCES = $(libcpu_i386_a_SOURCES) $(libcpu_x86_64_a_SOURCES) \
$(i386_gendis_SOURCES)
DIST_SOURCES = $(libcpu_i386_a_SOURCES) $(libcpu_x86_64_a_SOURCES) \
$(i386_gendis_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__noinst_HEADERS_DIST = memory-access.h i386_parse.h i386_data.h
HEADERS = $(noinst_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf -I$(srcdir)/../libebl \
-I$(srcdir)/../libdw -I$(srcdir)/../libasm
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
$($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1) -fpic -fdollars-in-identifiers
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
-
+ $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) -fpic \
+ -fdollars-in-identifiers
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda $(foreach P,i386 x86_64,$P_defs \
$P.mnemonics)
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -P$(<F:lex.l=)
AM_YFLAGS = -p$(<F:parse.y=)
noinst_LIBRARIES = libcpu_i386.a libcpu_x86_64.a
libeu = ../lib/libeu.a
i386_lex_CFLAGS = -Wno-unused-label -Wno-unused-function -Wno-sign-compare
i386_parse_CFLAGS = -DNMNES="`wc -l < i386.mnemonics`"
-i386_gendis_LDADD = $(libeu) -lm $(libmudflap)
+i386_gendis_LDADD = $(libeu) -lm
EXTRA_DIST = defs/i386
MAINTAINERCLEANFILES = $(foreach P,i386 x86_64, $P_dis.h)
all: all-am
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
libcpu_i386.a: $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_DEPENDENCIES) $(EXTRA_libcpu_i386_a_DEPENDENCIES)
- -rm -f libcpu_i386.a
- $(libcpu_i386_a_AR) libcpu_i386.a $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_LIBADD)
- $(RANLIB) libcpu_i386.a
+ $(AM_V_at)-rm -f libcpu_i386.a
+ $(AM_V_AR)$(libcpu_i386_a_AR) libcpu_i386.a $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libcpu_i386.a
+
libcpu_x86_64.a: $(libcpu_x86_64_a_OBJECTS) $(libcpu_x86_64_a_DEPENDENCIES) $(EXTRA_libcpu_x86_64_a_DEPENDENCIES)
- -rm -f libcpu_x86_64.a
- $(libcpu_x86_64_a_AR) libcpu_x86_64.a $(libcpu_x86_64_a_OBJECTS) $(libcpu_x86_64_a_LIBADD)
- $(RANLIB) libcpu_x86_64.a
+ $(AM_V_at)-rm -f libcpu_x86_64.a
+ $(AM_V_AR)$(libcpu_x86_64_a_AR) libcpu_x86_64.a $(libcpu_x86_64_a_OBJECTS) $(libcpu_x86_64_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libcpu_x86_64.a
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
i386_gendis$(EXEEXT): $(i386_gendis_OBJECTS) $(i386_gendis_DEPENDENCIES) $(EXTRA_i386_gendis_DEPENDENCIES)
@rm -f i386_gendis$(EXEEXT)
- $(LINK) $(i386_gendis_OBJECTS) $(i386_gendis_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(i386_gendis_OBJECTS) $(i386_gendis_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_disasm.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.l.c:
- $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+ $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
.y.c:
- $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES clean-noinstPROGRAMS cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
%.os: %.c %.o
x86_64_disasm.o: x86_64.mnemonics $(srcdir)/x86_64_dis.h
%_defs: $(srcdir)/defs/i386
- m4 -D$* -DDISASSEMBLER $< > $@
+ m4 -D$* -DDISASSEMBLER $< > $@T
+ mv -f $@T $@
@MAINTAINER_MODE_TRUE@$(srcdir)/%_dis.h: %_defs i386_gendis
-@MAINTAINER_MODE_TRUE@ ./i386_gendis $< > $@
+@MAINTAINER_MODE_TRUE@ ./i386_gendis $< > $@T
+@MAINTAINER_MODE_TRUE@ mv -f $@T $@
@MAINTAINER_MODE_FALSE@$(srcdir)/%_dis.h:
@MAINTAINER_MODE_FALSE@ @echo '*** missing $@; configure with --enable-maintainer-mode'
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 37
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
#define UINT32_MAX (4294967295U)
#endif
+#endif /* ! C99 */
+
#endif /* ! FLEXINT_H */
#ifdef __cplusplus
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif
-extern int i386_leng;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t i386_leng;
extern FILE *i386_in, *i386_out;
#define unput(c) yyunput( c, (yytext_ptr) )
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
/* Number of characters read into yy_ch_buf, not including EOB
* characters.
*/
- int yy_n_chars;
+ yy_size_t yy_n_chars;
/* Whether we "own" the buffer - i.e., we know we created it,
* and can realloc() it to grow it, and should free() it to
/* yy_hold_char holds the character lost when i386_text is formed. */
static char yy_hold_char;
-static int yy_n_chars; /* number of characters read into yy_ch_buf */
-int i386_leng;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t i386_leng;
/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
YY_BUFFER_STATE i386__scan_buffer (char *base,yy_size_t size );
YY_BUFFER_STATE i386__scan_string (yyconst char *yy_str );
-YY_BUFFER_STATE i386__scan_bytes (yyconst char *bytes,int len );
+YY_BUFFER_STATE i386__scan_bytes (yyconst char *bytes,yy_size_t len );
void *i386_alloc (yy_size_t );
void *i386_realloc (void *,yy_size_t );
/* Begin user sect3 */
-#define i386_wrap(n) 1
+#define i386_wrap() 1
#define YY_SKIP_YYWRAP
typedef unsigned char YY_CHAR;
static void eat_to_eol (void);
static void invalid_char (int ch);
-#line 584 "i386_lex.c"
+#line 585 "i386_lex.c"
#define INITIAL 0
#define MAIN 1
void i386_set_out (FILE * out_str );
-int i386_get_leng (void );
+yy_size_t i386_get_leng (void );
char *i386_get_text (void );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- unsigned n; \
+ size_t n; \
for ( n = 0; n < max_size && \
(c = getc( i386_in )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
#line 57 "i386_lex.l"
-#line 773 "i386_lex.c"
+#line 774 "i386_lex.c"
if ( !(yy_init) )
{
if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
{
- int yyl;
+ yy_size_t yyl;
for ( yyl = 0; yyl < i386_leng; ++yyl )
if ( i386_text[yyl] == '\n' )
#line 104 "i386_lex.l"
ECHO;
YY_BREAK
-#line 977 "i386_lex.c"
+#line 978 "i386_lex.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(MAIN):
yyterminate();
else
{
- int num_to_read =
+ yy_size_t num_to_read =
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
{ /* Not enough room in the buffer - grow it. */
/* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
int yy_c_buf_p_offset =
(int) ((yy_c_buf_p) - b->yy_ch_buf);
if ( b->yy_is_our_buffer )
{
- int new_size = b->yy_buf_size * 2;
+ yy_size_t new_size = b->yy_buf_size * 2;
if ( new_size <= 0 )
b->yy_buf_size += b->yy_buf_size / 8;
/* Read in more data. */
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- (yy_n_chars), (size_t) num_to_read );
+ (yy_n_chars), num_to_read );
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 61);
- return yy_is_jam ? 0 : yy_current_state;
+ return yy_is_jam ? 0 : yy_current_state;
}
static void yyunput (int c, register char * yy_bp )
if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
{ /* need to shift things up to make room */
/* +2 for EOB chars. */
- register int number_to_move = (yy_n_chars) + 2;
+ register yy_size_t number_to_move = (yy_n_chars) + 2;
register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
register char *source =
else
{ /* need more input */
- int offset = (yy_c_buf_p) - (yytext_ptr);
+ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
++(yy_c_buf_p);
switch ( yy_get_next_buffer( ) )
*/
static void i386_ensure_buffer_stack (void)
{
- int num_to_alloc;
+ yy_size_t num_to_alloc;
if (!(yy_buffer_stack)) {
/** Setup the input buffer state to scan the given bytes. The next call to i386_lex() will
* scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
*
* @return the newly allocated buffer state object.
*/
-YY_BUFFER_STATE i386__scan_bytes (yyconst char * yybytes, int _yybytes_len )
+YY_BUFFER_STATE i386__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
{
YY_BUFFER_STATE b;
char *buf;
yy_size_t n;
- int i;
+ yy_size_t i;
/* Get memory for full buffer, including space for trailing EOB's. */
n = _yybytes_len + 2;
/** Get the length of the current token.
*
*/
-int i386_get_leng (void)
+yy_size_t i386_get_leng (void)
{
return i386_leng;
}
-/* A Bison parser, made by GNU Bison 2.5. */
+/* A Bison parser, made by GNU Bison 2.7. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.7"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
/* Pull parsers. */
#define YYPULL 1
-/* Using locations. */
-#define YYLSP_NEEDED 0
/* Substitute the variable and function names. */
#define yyparse i386_parse
#define yydebug i386_debug
#define yynerrs i386_nerrs
-
/* Copy the first part of user declarations. */
-
-/* Line 268 of yacc.c */
+/* Line 371 of yacc.c */
#line 1 "i386_parse.y"
/* Parser for i386 CPU description.
static size_t best_mnemonic_bits;
#endif
+/* Line 371 of yacc.c */
+#line 291 "i386_parse.c"
-/* Line 268 of yacc.c */
-#line 296 "i386_parse.c"
-
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+# ifndef YY_NULL
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULL nullptr
+# else
+# define YY_NULL 0
+# endif
+# endif
/* Enabling verbose error messages. */
#ifdef YYERROR_VERBOSE
# define YYERROR_VERBOSE 0
#endif
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+ by #include "y.tab.h". */
+#ifndef YY_I386_I_PARSE_H_INCLUDED
+# define YY_I386_I_PARSE_H_INCLUDED
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int i386_debug;
#endif
-
/* Tokens. */
#ifndef YYTOKENTYPE
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
-
-/* Line 293 of yacc.c */
+/* Line 387 of yacc.c */
#line 217 "i386_parse.y"
unsigned long int num;
struct argument *arg;
-
-/* Line 293 of yacc.c */
-#line 368 "i386_parse.c"
+/* Line 387 of yacc.c */
+#line 369 "i386_parse.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
+extern YYSTYPE i386_lval;
-/* Copy the second part of user declarations. */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int i386_parse (void *YYPARSE_PARAM);
+#else
+int i386_parse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int i386_parse (void);
+#else
+int i386_parse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_I386_I_PARSE_H_INCLUDED */
+/* Copy the second part of user declarations. */
-/* Line 343 of yacc.c */
-#line 380 "i386_parse.c"
+/* Line 390 of yacc.c */
+#line 397 "i386_parse.c"
#ifdef short
# undef short
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
# endif
# endif
# ifndef YY_
-# define YY_(msgid) msgid
+# define YY_(Msgid) Msgid
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
#else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
#endif
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
#else
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
# endif
#endif
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO. The source and destination do
+/* Copy COUNT objects from SRC to DST. The source and destination do
not overlap. */
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
while (YYID (0))
# endif
# endif
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
"kSYNONYM", "kID", "kNUMBER", "kPERCPERC", "kBITFIELD", "kCHAR",
"kSPACE", "'\\n'", "':'", "','", "'0'", "'1'", "$accept", "spec",
"masks", "mask", "instrs", "instr", "bitfieldopt", "bytes", "byte",
- "bit", "optargs", "args", "arg", "argcomp", 0
+ "bit", "optargs", "args", "arg", "argcomp", YY_NULL
};
#endif
27, 48, 37, 34, 36, 0, 46, 18
};
-#define yypact_value_is_default(yystate) \
- ((yystate) == (-35))
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-35)))
-#define yytable_value_is_error(yytable_value) \
+#define yytable_value_is_error(Yytable_value) \
YYID (0)
static const yytype_int8 yycheck[] =
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
yyerror (YY_("syntax error: cannot back up")); \
YYERROR; \
} \
while (YYID (0))
-
+/* Error token number */
#define YYTERROR 1
#define YYERRCODE 256
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (YYID (N)) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
- while (YYID (0))
-#endif
-
-
/* This macro is provided for backward compatibility. */
-
#ifndef YY_LOCATION_PRINT
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
/* YYLEX -- calling `yylex' with the right arguments. */
-
#ifdef YYLEX_PARAM
# define YYLEX yylex (YYLEX_PARAM)
#else
YYSTYPE const * const yyvaluep;
#endif
{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
if (!yyvaluep)
return;
# ifdef YYPRINT
switch (yytype)
{
default:
- break;
+ break;
}
}
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
yytype_int16 *yyssp, int yytoken)
{
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
- const char *yyformat = 0;
+ const char *yyformat = YY_NULL;
/* Arguments of yyformat. */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Number of reported tokens (one for the "unexpected", one per
break;
}
yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
+ {
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
}
}
}
# undef YYCASE_
}
- yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
if (*yymsg_alloc < yysize)
{
{
default:
- break;
+ break;
}
}
-/* Prevent warnings from -Wmissing-prototypes. */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
/* The lookahead symbol. */
int yychar;
+
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
/* Number of syntax errors so far. */
int yynerrs;
`yyss': related to states.
`yyvs': related to semantic values.
- Refer to the stacks thru separate pointers, to allow yyoverflow
+ Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
/* The state stack. */
int yyn;
int yyresult;
/* Lookahead token as an internal (translated) token number. */
- int yytoken;
+ int yytoken = 0;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
Keep to zero when no symbol should be popped. */
int yylen = 0;
- yytoken = 0;
- yyss = yyssa;
- yyvs = yyvsa;
+ yyssp = yyss = yyssa;
+ yyvsp = yyvs = yyvsa;
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
yyerrstatus = 0;
yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
- yyssp = yyss;
- yyvsp = yyvs;
-
goto yysetstate;
/*------------------------------------------------------------.
yychar = YYEMPTY;
yystate = yyn;
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
goto yynewstate;
switch (yyn)
{
case 2:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 248 "i386_parse.y"
{
if (error_message_count != 0)
break;
case 5:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 262 "i386_parse.y"
{ new_bitfield ((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].num)); }
break;
case 6:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 264 "i386_parse.y"
{ new_bitfield ((yyvsp[(2) - (2)].str), -1); }
break;
case 7:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 266 "i386_parse.y"
{ new_bitfield ((yyvsp[(2) - (2)].str), -2); }
break;
case 8:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 268 "i386_parse.y"
{
struct synonym *newp = xmalloc (sizeof (*newp));
break;
case 12:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 287 "i386_parse.y"
{
if ((yyvsp[(3) - (6)].field) != NULL && strcmp ((yyvsp[(3) - (6)].field)->name, "RE") != 0
break;
case 14:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 373 "i386_parse.y"
{
struct known_bitfield search;
break;
case 15:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 388 "i386_parse.y"
{ (yyval.field) = NULL; }
break;
case 16:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 392 "i386_parse.y"
{
check_bits ((yyvsp[(3) - (3)].bit));
break;
case 17:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 402 "i386_parse.y"
{
check_bits ((yyvsp[(1) - (1)].bit));
break;
case 18:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 409 "i386_parse.y"
{
struct bitvalue *runp = (yyvsp[(1) - (2)].bit);
break;
case 19:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 417 "i386_parse.y"
{ (yyval.bit) = (yyvsp[(1) - (1)].bit); }
break;
case 20:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 421 "i386_parse.y"
{
(yyval.bit) = xmalloc (sizeof (struct bitvalue));
break;
case 21:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 428 "i386_parse.y"
{
(yyval.bit) = xmalloc (sizeof (struct bitvalue));
break;
case 22:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 435 "i386_parse.y"
{
(yyval.bit) = xmalloc (sizeof (struct bitvalue));
break;
case 23:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 457 "i386_parse.y"
{ (yyval.arg) = (yyvsp[(2) - (2)].arg); }
break;
case 24:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 459 "i386_parse.y"
{ (yyval.arg) = NULL; }
break;
case 25:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 463 "i386_parse.y"
{
struct argument *runp = (yyvsp[(1) - (3)].arg);
break;
case 26:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 473 "i386_parse.y"
{
(yyval.arg) = xmalloc (sizeof (struct argument));
break;
case 27:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 481 "i386_parse.y"
{
struct argname *runp = (yyvsp[(1) - (2)].name);
break;
case 28:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 489 "i386_parse.y"
{ (yyval.name) = (yyvsp[(1) - (1)].name); }
break;
case 29:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 492 "i386_parse.y"
{
(yyval.name) = xmalloc (sizeof (struct argname));
break;
case 30:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 524 "i386_parse.y"
{
(yyval.name) = xmalloc (sizeof (struct argname));
break;
case 31:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 533 "i386_parse.y"
{
(yyval.name) = xmalloc (sizeof (struct argname));
break;
case 32:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 540 "i386_parse.y"
{
(yyval.name) = xmalloc (sizeof (struct argname));
break;
-
-/* Line 1806 of yacc.c */
-#line 2031 "i386_parse.c"
+/* Line 1792 of yacc.c */
+#line 1989 "i386_parse.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
YY_STACK_PRINT (yyss, yyssp);
}
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
/* Shift the error token. */
yyresult = 1;
goto yyreturn;
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
}
-
-/* Line 2067 of yacc.c */
+/* Line 2055 of yacc.c */
#line 550 "i386_parse.y"
}
}
#endif
-
-/* A Bison parser, made by GNU Bison 2.5. */
+/* A Bison parser, made by GNU Bison 2.7. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+#ifndef YY_I386_I_PARSE_H_INCLUDED
+# define YY_I386_I_PARSE_H_INCLUDED
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int i386_debug;
+#endif
/* Tokens. */
#ifndef YYTOKENTYPE
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
-
-/* Line 2068 of yacc.c */
+/* Line 2058 of yacc.c */
#line 217 "i386_parse.y"
unsigned long int num;
struct argument *arg;
-
-/* Line 2068 of yacc.c */
-#line 86 "i386_parse.h"
+/* Line 2058 of yacc.c */
+#line 92 "i386_parse.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
extern YYSTYPE i386_lval;
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int i386_parse (void *YYPARSE_PARAM);
+#else
+int i386_parse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int i386_parse (void);
+#else
+int i386_parse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+#endif /* !YY_I386_I_PARSE_H_INCLUDED */
+2014-08-15 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_cu_die.c: New file.
+ * Makefile.am (libdw_a_SOURCES): Add dwarf_cu_die.c.
+ * libdw.h (dwarf_cu_die): New function declaration.
+ * libdw.map (ELFUTILS_0.160): Add dwarf_cu_die.
+
+2014-08-15 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_cu_getdwarf.c: New file.
+ * Makefile.am (libdw_a_SOURCES): Add dwarf_cu_getdwarf.c.
+ * libdw.h (Dwarf_CU): New typedef.
+ (dwarf_cu_getdwarf): New function declaration.
+ * libdw.map (ELFUTILS_0.160): New. Add dwarf_cu_getdwarf.
+
+2014-06-18 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf.h: Remove DW_TAG_mutable_type.
+
+2014-05-02 Mark Wielaard <mjw@redhat.com>
+
+ * libdwP.h (__check_build_id): Removed now unused.
+
+2014-05-01 Mark Wielaard <mjw@redhat.com>
+
+ * libdwP.h (struct Dwarf): Remove free_alt.
+ * dwarf_end.c (dwarf_end): Don't check free_alt, don't end alt_dwarf.
+ * dwarf_setalt.c (dwarf_setalt): Don't check or set free_alt.
+
+2014-04-30 Mark Wielaard <mjw@redhat.com>
+
+ * libdw.map (ELFUTILS_0.159): Add dwelf_elf_gnu_build_id.
+
+2014-04-15 Florian Weimer <fweimer@redhat.com>
+
+ * dwarf_begin_elf.c (__check_build_id, try_debugaltlink)
+ (open_debugaltlink): Move to libdwfl.
+ (check_section): Do not locate alternate debuginfo.
+
+2014-04-24 Florian Weimer <fweimer@redhat.com>
+
+ * libdw.map (ELFUTILS_0.159): Export dwelf_dwarf_gnu_debugaltlink.
+
+2014-04-22 Florian Weimer <fweimer@redhat.com>
+
+ * dwarf_getalt.c, dwarf_setalt.c: New files.
+ * Makefile.am (libdw_a_SOURCES): Add them.
+ * libdw.h (dwarf_getalt, dwarf_setalt): Add function declarations.
+ * libdwP.h (dwarf_getalt, dwarf_setalt): Add internal function
+ declarations.
+ * libdw.map (ELFUTILS_0.159): Export the two new functions.
+
+2014-04-15 Florian Weimer <fweimer@redhat.com>
+
+ * libdwP.h (enum IDX_gnu_debugaltlink): New.
+ * dwarf_begin_elf.c (dwarf_scnnames): Increase string size and add
+ .gnu_debugaltlink.
+ (check_section): Obtain .gnu_debugaltlink section from the
+ setiondata array.
+
+2014-04-11 Mark Wielaard <mjw@redhat.com>
+
+ * libdw.map (ELFUTILS_0.159): New. Add dwelf_elf_gnu_debuglink.
+ * Makefile.am (libdw.so): Depend on libdwelf_pic.a.
+ (libdwelf_objects): New variable.
+ (libdw_a_LIBADD): Add libdwelf objects.
+
+2014-04-22 Mark Wielaard <mjw@redhat.com>
+
+ * memory-access.h (get_sleb128_step): Remove undefined behavior
+ of left shifting a signed value. Replace it with a multiplication.
+
+2014-04-13 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Remove !MUDFLAP conditions.
+
+2014-04-09 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_begin_elf.c (check_section): Check for unsigned overflow
+ before calling malloc to uncompress data.
+
+2014-03-03 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix abort() on missing section headers.
+ * dwarf_begin_elf.c (check_section): Replace abort call by goto err.
+ New label err to return NULL.
+
+2014-02-05 Josh Stone <jistone@redhat.com>
+
+ * dwarf_decl_file.c (dwarf_decl_file): Read the idx as unsigned.
+ * dwarf_decl_line.c (__libdw_attr_intval): Read the line/column as
+ unsigned. Change the range assert to DWARF_E_INVALID_DWARF.
+
+2013-12-30 Mark Wielaard <mjw@redhat.com>
+
+ * libdw.map (ELFUTILS_0.158): Add dwfl_core_file_attach and
+ dwfl_linux_proc_attach.
+
+2013-12-20 Mark Wielaard <mjw@redhat.com>
+
+ * libdw.map (ELFUTILS_0.158): Add dwfl_getthread_frames.
+
+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.
+
+2013-12-10 Josh Stone <jistone@redhat.com>
+
+ * memory-access.h (get_uleb128_rest_return): Removed.
+ (get_sleb128_rest_return): Removed.
+ (get_uleb128_step): Make this a self-contained block.
+ (get_sleb128_step): Ditto, and use a bitfield to extend signs.
+ (get_uleb128): Make this wholly implemented by __libdw_get_uleb128.
+ (get_sleb128): Make this wholly implemented by __libdw_get_sleb128.
+ (__libdw_get_uleb128): Simplify and inline for all callers.
+ (__libdw_get_sleb128): Ditto.
+ * dwarf_getlocation.c (store_implicit_value): Void the unused uleb128.
+ * memory-access.c: Delete file.
+ * Makefile.am (libdw_a_SOURCES): Remove it.
+ (DEFS): Remove the now unused -DIS_LIBDW.
+
+2013-12-09 Josh Stone <jistone@redhat.com>
+
+ * libdw_form.c (__libdw_form_val_compute_len): Renamed function from
+ __libdw_form_val_len, now handling only non-constant form lengths.
+ * libdwP.h (__libdw_form_val_len): New inlined function.
+
+2013-12-09 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getlocation.c (__libdw_intern_expression): Handle empty
+ location expressions.
+ * dwarf_getlocation_attr.c (dwarf_getlocation_attr): When no
+ location found, return empty location expression.
+ * dwarf_getlocation_implicit_pointer.c
+ (dwarf_getlocation_implicit_pointer): Likewise.
+ (__libdw_empty_loc_attr): New internal function.
+ * libdwP.h (__libdw_empty_loc_attr): Define.
+
+2013-11-27 Mark Wielaard <mjw@redhat.com>
+
+ * libdw.map (ELFUTILS_0.158): Add dwfl_module_addrsym_elf and
+ dwfl_module_getsym_elf.
+
+2013-11-26 Mark Wielaard <mjw@redhat.com>
+
+ * libdw.map (ELFUTILS_0.156): Move dwfl_attach_state, dwfl_pid,
+ dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
+ dwfl_thread_state_registers, dwfl_thread_state_register_pc,
+ dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc to ...
+ (ELFUTILS_0.158): ... here.
+
+2013-11-09 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getaranges.c (dwarf_getaranges): Read segment_size and
+ check that it is zero.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * cfi.h (struct Dwarf_Frame_s): Make the comment more specific.
+ * libdw.map (ELFUTILS_0.156): Add dwfl_attach_state, dwfl_pid,
+ dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
+ dwfl_thread_state_registers, dwfl_thread_state_register_pc,
+ dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc.
+
+2013-11-01 Michael Forney <mforney@mforney.org>
+
+ * Makefile.am (libdwfl_objects): New definition.
+ (libdw_a_LIBADD): Use libdwfl_objects.
+
+2013-11-01 Michael Forney <mforney@mforney.org>
+
+ * Makefile.am: Use READELF.
+
+2013-10-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * libdw.map (ELFUTILS_0.158): New.
+
+2013-10-10 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getfuncs.c (struct visitor_info): Rename start_offset to
+ start_addr and rename last_offset to last_addr. Now both void *.
+ (tree_visitor): Use start_add and die_addr instead of start_offset
+ and die_offset.
+ (dwarf_getfuncs): Use last_addr instead of last_offset.
+
+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * cfi.c (execute_cfi): Make sure DW_CFA_expression and
+ DW_CFA_val_expression are not used with abi_cfi.
+
+2013-10-03 Josh Stone <jistone@redhat.com>
+
+ * dwarf_formref_die.c (dwarf_formref_die): Don't hash the sig8 here.
+ * libdw_findcu.c (__libdw_intern_next_unit): Since this never revisits
+ a unit, make sure to always hash the sig8 here, so none are missed.
+
+2013-09-29 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getlocation.c (store_implicit_value): Cast op->number2 to
+ uintptr_t before casting to char *.
+ (__libdw_intern_expression): Cast data to uintptr_t before casting
+ to Dwarf_Word.
+ * dwarf_getlocation_attr.c (dwarf_getlocation_attr): Cast
+ op->number2 to uintptr_t before casting to char *.
+
+2013-09-24 Josh Stone <jistone@redhat.com>
+
+ * libdw_visit_scopes.c (classify_die): Removed.
+ (may_have_scopes): New function to replace classify_die. There's no
+ need for full classification; just find tags that may contain scopes.
+ (__libdw_visit_scopes): Use a direct tag comparison for imported
+ units, and use may_have_scopes to test if recursion is needed.
+
+2013-09-20 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getfuncs.c (visitor_info): New struct.
+ (tree_visitor): New function.
+ (dwarf_getfuncs): Use __libdw_visit_scopes with tree_visitor.
+ * libdw.h (dwarf_getfuncs): Expand function documentation.
+
+2013-09-12 Mark Wielaard <mjw@redhat.com>
+
+ * fde.c (intern_fde): Free fde and set libdw errno when start
+ or end could not be read.
+
+2013-08-24 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getlocation.c (store_implicit_value): Don't take data
+ as argument, get block data from op number2. Return false when
+ block data length and op number don't match up.
+ (__libdw_intern_expression): Store start of block for
+ DW_OP_implicit_value and DW_OP_GNU_entry_value instead of
+ relative data offset. Also store block start (including length)
+ for DW_OP_GNU_const_type. Don't pass data to store_implicit_value.
+ * dwarf_getlocation_attr.c: New file.
+ * dwarf_getlocation_die.c: Likewise.
+ * libdw.h (dwarf_getlocation_die): New function definition.
+ (dwarf_getlocation_attr): Likewise.
+ * libdwP.h: Declare internal dwarf_getlocation_die.
+ * libdw.map (ELFUTILS_0.157): Add dwarf_getlocation_die and
+ dwarf_getlocation_attr.
+ * Makefile.am (libdw_a_SOURCES): Add dwarf_getlocation_die.c and
+ dwarf_getlocation_attr.c.
+
+2013-08-23 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getlocation.c (attr_ok): Also accept DW_AT_segment.
+ (attr_base_address): New function.
+ (initial_offset_base): New function.
+ (getlocations_addr): New function. Taken from...
+ (dwarf_getlocation_addr): here. Use new initial_offset_base and
+ getlocations_addr.
+ (dwarf_getlocations): New function.
+ * libdw.h (dwarf_getlocations): New function definition.
+ * libdw.map (ELFUTILS_0.157): New.
+
+2013-07-02 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getsrclines.c (dwarf_getsrclines): Add new stack allocation
+ limit MAX_STACK_ALLOC. After MAX_STACK_ALLOC lines use malloc in
+ NEW_LINE macro. Free malloced line records if any at the end.
+
+2013-07-02 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getcfi_elf.c (getcfi_shdr): Check sh_type == SHT_PROGBITS.
+
+2013-06-26 Mark Wielaard <mjw@redhat.com>
+
+ * libdw_visit_scopes.c (__libdw_visit_scopes): Don't reject root
+ DIEs without children. Return an error whenever dwarf_child or
+ dwarf_siblingof return an error. Don't call recurse and increase
+ the depth for an imported unit. Walk the children of an imported
+ unit as if they are logical children of the parent root DIE.
+
+2013-05-03 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getsrclines.c (dwarf_getsrclines): Only set end_sequence
+ when nlinelist > 0.
+
+2013-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * libdw.map (ELFUTILS_0.156): New.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2013-04-10 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_formref_die.c (dwarf_formref_die): Reference size is only
+ equal to address size when we have a DW_FORM_ref_addr for DWARF
+ version 2.
+
+2013-03-25 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getsrclines.c (dwarf_getsrclines): Mark highest address as
+ end_sequence.
+
+2013-03-12 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_getsrcfiles.c (dwarf_getsrcfiles): Allow DW_TAG_partial_unit.
+ * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
+
+2013-02-15 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_formstring.c (dwarf_formstring): Check dbg_ret->sectiondata,
+ not dbg->sectiondata.
+
+2013-01-07 Roland McGrath <roland@hack.frob.com>
+
+ * memory-access.h
+ [ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New macro.
+ [!ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New inline function.
+
+2012-12-18 Mark Wielaard <mjw@redhat.com>
+
+ * dwarf_begin_elf.c (valid_p): Call Dwarf_Sig8_Hash_free if invalid.
+ (check_section): Likewise on error.
+ (scngrp_read): Likewise.
+ (dwarf_begin_elf): Likewise.
+
+2012-10-09 Petr Machata <pmachata@redhat.com>
+
+ * dwarf_getlocation.c (__libdw_intern_expression): Handle
+ DW_OP_GNU_parameter_ref, DW_OP_GNU_convert, DW_OP_GNU_reinterpret,
+ DW_OP_GNU_regval_type, DW_OP_GNU_entry_value,
+ DW_OP_GNU_deref_type, DW_OP_GNU_const_type.
+
+2012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * cfi.c: New include system.h.
+ (execute_cfi) (enough_registers): Clear new memory after realloc.
+
+2012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * fde.c (__libdw_find_fde): Change <fde != NULL> to likely. Return
+ DWARF_E_NO_MATCH if .eh_frame_hdr points to FDE which is too short for
+ searched PC.
+
+2012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf_getlocation.c (__libdw_intern_expression) <cfap>: Make new
+ loclist element DW_OP_call_frame_cfa before decoding the opcodes.
+ Remove the later DW_OP_call_frame_cfa push to RESULT.
+
+2012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Code cleanup.
+ * fde.c (binary_search_fde): Remove always true <address >= start>
+ conditional. Move L initialization upwards.
+
2012-08-24 Mark Wielaard <mjw@redhat.com>
* dwarf_begin_elf.c (check_section): Only probe for dwz multi files
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 2002-2010, 2012 Red Hat, Inc.
+## Copyright (C) 2002-2010, 2012, 2014 Red Hat, Inc.
## This file is part of elfutils.
##
## This file is free software; you can redistribute it and/or modify
## not, see <http://www.gnu.org/licenses/>.
##
include $(top_srcdir)/config/eu.am
-DEFS += -DIS_LIBDW
if BUILD_STATIC
AM_CFLAGS += -fpic
endif
-INCLUDES += -I$(srcdir)/../libelf
+AM_CPPFLAGS += -I$(srcdir)/../libelf
VERSION = 1
lib_LIBRARIES = libdw.a
-if !MUDFLAP
noinst_LIBRARIES = libdw_pic.a
noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
-endif
include_HEADERS = dwarf.h
pkginclude_HEADERS = libdw.h
dwarf_getfuncs.c \
dwarf_decl_file.c dwarf_decl_line.c dwarf_decl_column.c \
dwarf_func_inline.c dwarf_getsrc_file.c \
- libdw_findcu.c libdw_form.c libdw_alloc.c memory-access.c \
+ libdw_findcu.c libdw_form.c libdw_alloc.c \
libdw_visit_scopes.c \
dwarf_entry_breakpoints.c \
dwarf_next_cfi.c \
dwarf_frame_info.c dwarf_frame_cfa.c dwarf_frame_register.c \
dwarf_cfi_addrframe.c \
dwarf_getcfi.c dwarf_getcfi_elf.c dwarf_cfi_end.c \
- dwarf_aggregate_size.c dwarf_getlocation_implicit_pointer.c
+ dwarf_aggregate_size.c dwarf_getlocation_implicit_pointer.c \
+ dwarf_getlocation_die.c dwarf_getlocation_attr.c \
+ dwarf_getalt.c dwarf_setalt.c dwarf_cu_getdwarf.c \
+ dwarf_cu_die.c
if MAINTAINER_MODE
BUILT_SOURCES = $(srcdir)/known-dwarf.h
mv -f $@.new $@
endif
-if !MUDFLAP
libdw_pic_a_SOURCES =
am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
libdw_so_SOURCES =
-libdw.so: $(srcdir)/libdw.map libdw_pic.a \
+libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
../libelf/libelf.so
# The rpath is necessary for libebl because its $ORIGIN use will
-Wl,--version-script,$<,--no-undefined \
-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
-ldl $(zip_LIBS)
- if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+ if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
ln -fs $@ $@.$(VERSION)
install: install-am libdw.so
rm -f $(DESTDIR)$(libdir)/libdw.so.$(VERSION)
rm -f $(DESTDIR)$(libdir)/libdw.so
rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils
-endif
-libdw_a_LIBADD = $(addprefix ../libdwfl/,$(shell $(AR) t ../libdwfl/libdwfl.a))
+libdwfl_objects = $(shell $(AR) t ../libdwfl/libdwfl.a)
+libdw_a_LIBADD = $(addprefix ../libdwfl/,$(libdwfl_objects))
+
+libdwelf_objects = $(shell $(AR) t ../libdwelf/libdwelf.a)
+libdw_a_LIBADD += $(addprefix ../libdwelf/,$(libdwelf_objects))
noinst_HEADERS = libdwP.h memory-access.h dwarf_abbrev_hash.h \
dwarf_sig8_hash.h cfi.h encoded-value.h
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(include_HEADERS) $(noinst_HEADERS) \
- $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
-@BUILD_STATIC_TRUE@am__append_2 = -fpic
-@MUDFLAP_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1)
-@MUDFLAP_TRUE@am_libdw_pic_a_OBJECTS =
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS) \
+ ChangeLog
+@BUILD_STATIC_TRUE@am__append_1 = -fpic
+noinst_PROGRAMS = $(am__EXEEXT_1)
subdir = libdw
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" \
"$(DESTDIR)$(pkgincludedir)"
LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libdw_a_AR = $(AR) $(ARFLAGS)
-libdw_a_DEPENDENCIES = $(addprefix ../libdwfl/,$(shell $(AR) t \
- ../libdwfl/libdwfl.a))
+libdw_a_DEPENDENCIES = $(addprefix ../libdwfl/,$(libdwfl_objects)) \
+ $(addprefix ../libdwelf/,$(libdwelf_objects))
am_libdw_a_OBJECTS = dwarf_begin.$(OBJEXT) dwarf_begin_elf.$(OBJEXT) \
dwarf_end.$(OBJEXT) dwarf_getelf.$(OBJEXT) \
dwarf_getpubnames.$(OBJEXT) dwarf_getabbrev.$(OBJEXT) \
dwarf_decl_column.$(OBJEXT) dwarf_func_inline.$(OBJEXT) \
dwarf_getsrc_file.$(OBJEXT) libdw_findcu.$(OBJEXT) \
libdw_form.$(OBJEXT) libdw_alloc.$(OBJEXT) \
- memory-access.$(OBJEXT) libdw_visit_scopes.$(OBJEXT) \
- dwarf_entry_breakpoints.$(OBJEXT) dwarf_next_cfi.$(OBJEXT) \
- cie.$(OBJEXT) fde.$(OBJEXT) cfi.$(OBJEXT) \
- frame-cache.$(OBJEXT) dwarf_frame_info.$(OBJEXT) \
+ libdw_visit_scopes.$(OBJEXT) dwarf_entry_breakpoints.$(OBJEXT) \
+ dwarf_next_cfi.$(OBJEXT) cie.$(OBJEXT) fde.$(OBJEXT) \
+ cfi.$(OBJEXT) frame-cache.$(OBJEXT) dwarf_frame_info.$(OBJEXT) \
dwarf_frame_cfa.$(OBJEXT) dwarf_frame_register.$(OBJEXT) \
dwarf_cfi_addrframe.$(OBJEXT) dwarf_getcfi.$(OBJEXT) \
dwarf_getcfi_elf.$(OBJEXT) dwarf_cfi_end.$(OBJEXT) \
dwarf_aggregate_size.$(OBJEXT) \
- dwarf_getlocation_implicit_pointer.$(OBJEXT)
+ dwarf_getlocation_implicit_pointer.$(OBJEXT) \
+ dwarf_getlocation_die.$(OBJEXT) \
+ dwarf_getlocation_attr.$(OBJEXT) dwarf_getalt.$(OBJEXT) \
+ dwarf_setalt.$(OBJEXT) dwarf_cu_getdwarf.$(OBJEXT) \
+ dwarf_cu_die.$(OBJEXT)
libdw_a_OBJECTS = $(am_libdw_a_OBJECTS)
libdw_pic_a_AR = $(AR) $(ARFLAGS)
libdw_pic_a_LIBADD =
libdw_pic_a_OBJECTS = $(am_libdw_pic_a_OBJECTS)
-@MUDFLAP_FALSE@am__EXEEXT_1 = libdw.so$(EXEEXT)
+am__EXEEXT_1 = libdw.so$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am_libdw_so_OBJECTS =
libdw_so_OBJECTS = $(am_libdw_so_OBJECTS)
libdw_so_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) \
$(libdw_so_SOURCES)
DIST_SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) \
$(libdw_so_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
HEADERS = $(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
-DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"' \
- -DIS_LIBDW
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
$($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1) $(am__append_2)
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
-
+ $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) \
+ $(am__append_1)
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
lib_LIBRARIES = libdw.a
-@MUDFLAP_FALSE@noinst_LIBRARIES = libdw_pic.a
+noinst_LIBRARIES = libdw_pic.a
include_HEADERS = dwarf.h
pkginclude_HEADERS = libdw.h
libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \
dwarf_getfuncs.c \
dwarf_decl_file.c dwarf_decl_line.c dwarf_decl_column.c \
dwarf_func_inline.c dwarf_getsrc_file.c \
- libdw_findcu.c libdw_form.c libdw_alloc.c memory-access.c \
+ libdw_findcu.c libdw_form.c libdw_alloc.c \
libdw_visit_scopes.c \
dwarf_entry_breakpoints.c \
dwarf_next_cfi.c \
dwarf_frame_info.c dwarf_frame_cfa.c dwarf_frame_register.c \
dwarf_cfi_addrframe.c \
dwarf_getcfi.c dwarf_getcfi_elf.c dwarf_cfi_end.c \
- dwarf_aggregate_size.c dwarf_getlocation_implicit_pointer.c
+ dwarf_aggregate_size.c dwarf_getlocation_implicit_pointer.c \
+ dwarf_getlocation_die.c dwarf_getlocation_attr.c \
+ dwarf_getalt.c dwarf_setalt.c dwarf_cu_getdwarf.c \
+ dwarf_cu_die.c
@MAINTAINER_MODE_TRUE@BUILT_SOURCES = $(srcdir)/known-dwarf.h
@MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = $(srcdir)/known-dwarf.h
-@MUDFLAP_FALSE@libdw_pic_a_SOURCES =
-@MUDFLAP_FALSE@am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
-@MUDFLAP_FALSE@libdw_so_SOURCES =
-libdw_a_LIBADD = $(addprefix ../libdwfl/,$(shell $(AR) t ../libdwfl/libdwfl.a))
+libdw_pic_a_SOURCES =
+am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
+libdw_so_SOURCES =
+libdwfl_objects = $(shell $(AR) t ../libdwfl/libdwfl.a)
+libdw_a_LIBADD = $(addprefix ../libdwfl/,$(libdwfl_objects)) \
+ $(addprefix ../libdwelf/,$(libdwelf_objects))
+libdwelf_objects = $(shell $(AR) t ../libdwelf/libdwelf.a)
noinst_HEADERS = libdwP.h memory-access.h dwarf_abbrev_hash.h \
dwarf_sig8_hash.h cfi.h encoded-value.h
$(am__aclocal_m4_deps):
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
else :; fi; \
done; \
test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
$(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
@$(POST_INSTALL)
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
libdw.a: $(libdw_a_OBJECTS) $(libdw_a_DEPENDENCIES) $(EXTRA_libdw_a_DEPENDENCIES)
- -rm -f libdw.a
- $(libdw_a_AR) libdw.a $(libdw_a_OBJECTS) $(libdw_a_LIBADD)
- $(RANLIB) libdw.a
+ $(AM_V_at)-rm -f libdw.a
+ $(AM_V_AR)$(libdw_a_AR) libdw.a $(libdw_a_OBJECTS) $(libdw_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdw.a
+
libdw_pic.a: $(libdw_pic_a_OBJECTS) $(libdw_pic_a_DEPENDENCIES) $(EXTRA_libdw_pic_a_DEPENDENCIES)
- -rm -f libdw_pic.a
- $(libdw_pic_a_AR) libdw_pic.a $(libdw_pic_a_OBJECTS) $(libdw_pic_a_LIBADD)
- $(RANLIB) libdw_pic.a
+ $(AM_V_at)-rm -f libdw_pic.a
+ $(AM_V_AR)$(libdw_pic_a_AR) libdw_pic.a $(libdw_pic_a_OBJECTS) $(libdw_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdw_pic.a
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-@MUDFLAP_TRUE@libdw.so$(EXEEXT): $(libdw_so_OBJECTS) $(libdw_so_DEPENDENCIES) $(EXTRA_libdw_so_DEPENDENCIES)
-@MUDFLAP_TRUE@ @rm -f libdw.so$(EXEEXT)
-@MUDFLAP_TRUE@ $(LINK) $(libdw_so_OBJECTS) $(libdw_so_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_cfi_addrframe.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_cfi_end.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_child.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_cu_die.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_cu_getdwarf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_cuoffset.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_decl_column.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_decl_file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getabbrevattr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getabbrevcode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getabbrevtag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getalt.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getarange_addr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getarangeinfo.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getaranges.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getelf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getfuncs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getlocation.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getlocation_attr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getlocation_die.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getlocation_implicit_pointer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getmacros.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getpubnames.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_onearange.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_onesrcline.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_ranges.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_setalt.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_siblingof.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_sig8_hash.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_srclang.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdw_findcu.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdw_form.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdw_visit_scopes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory-access.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
-@MUDFLAP_TRUE@install: $(BUILT_SOURCES)
-@MUDFLAP_TRUE@ $(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
-@MUDFLAP_TRUE@uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
.MAKE: all check install install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \
- ctags distclean distclean-compile distclean-generic \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-includeHEADERS install-info \
- install-info-am install-libLIBRARIES install-man install-pdf \
- install-pdf-am install-pkgincludeHEADERS install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am \
+ install-includeHEADERS install-info install-info-am \
+ install-libLIBRARIES install-man install-pdf install-pdf-am \
+ install-pkgincludeHEADERS install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
uninstall-libLIBRARIES uninstall-pkgincludeHEADERS
@MAINTAINER_MODE_TRUE@$(srcdir)/known-dwarf.h: $(top_srcdir)/config/known-dwarf.awk $(srcdir)/dwarf.h
@MAINTAINER_MODE_TRUE@ gawk -f $^ > $@.new
@MAINTAINER_MODE_TRUE@ mv -f $@.new $@
-@MUDFLAP_FALSE@libdw.so: $(srcdir)/libdw.map libdw_pic.a \
-@MUDFLAP_FALSE@ ../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
-@MUDFLAP_FALSE@ ../libelf/libelf.so
+libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
+ ../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
+ ../libelf/libelf.so
# The rpath is necessary for libebl because its $ORIGIN use will
# not fly in a setuid executable that links in libdw.
-@MUDFLAP_FALSE@ $(LINK) -shared -o $@ -Wl,--soname,$@.$(VERSION),-z,defs \
-@MUDFLAP_FALSE@ -Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
-@MUDFLAP_FALSE@ -Wl,--version-script,$<,--no-undefined \
-@MUDFLAP_FALSE@ -Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
-@MUDFLAP_FALSE@ -ldl $(zip_LIBS)
-@MUDFLAP_FALSE@ if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
-@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION)
-
-@MUDFLAP_FALSE@install: install-am libdw.so
-@MUDFLAP_FALSE@ $(mkinstalldirs) $(DESTDIR)$(libdir)
-@MUDFLAP_FALSE@ $(INSTALL_PROGRAM) libdw.so $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so
-@MUDFLAP_FALSE@ ln -fs libdw-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libdw.so.$(VERSION)
-@MUDFLAP_FALSE@ ln -fs libdw.so.$(VERSION) $(DESTDIR)$(libdir)/libdw.so
-
-@MUDFLAP_FALSE@uninstall: uninstall-am
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libdw.so.$(VERSION)
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libdw.so
-@MUDFLAP_FALSE@ rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils
+ $(LINK) -shared -o $@ -Wl,--soname,$@.$(VERSION),-z,defs \
+ -Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
+ -Wl,--version-script,$<,--no-undefined \
+ -Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
+ -ldl $(zip_LIBS)
+ if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+ ln -fs $@ $@.$(VERSION)
+
+install: install-am libdw.so
+ $(mkinstalldirs) $(DESTDIR)$(libdir)
+ $(INSTALL_PROGRAM) libdw.so $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so
+ ln -fs libdw-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libdw.so.$(VERSION)
+ ln -fs libdw.so.$(VERSION) $(DESTDIR)$(libdir)/libdw.so
+
+uninstall: uninstall-am
+ rm -f $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so
+ rm -f $(DESTDIR)$(libdir)/libdw.so.$(VERSION)
+ rm -f $(DESTDIR)$(libdir)/libdw.so
+ rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
#include "cfi.h"
#include "memory-access.h"
#include "encoded-value.h"
+#include "system.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
}
else
{
+ eu_static_assert (reg_unspecified == 0);
+ memset (bigger->regs + bigger->nregs, 0,
+ (reg + 1 - bigger->nregs) * sizeof bigger->regs[0]);
bigger->nregs = reg + 1;
fs = bigger;
}
continue;
case DW_CFA_expression:
+ /* Expression rule relies on section data, abi_cfi cannot use it. */
+ assert (! abi_cfi);
get_uleb128 (regno, program);
offset = program - (const uint8_t *) cache->data->d.d_buf;
/* DW_FORM_block is a ULEB128 length followed by that many bytes. */
continue;
case DW_CFA_val_expression:
+ /* Expression rule relies on section data, abi_cfi cannot use it. */
+ assert (! abi_cfi);
get_uleb128 (regno, program);
/* DW_FORM_block is a ULEB128 length followed by that many bytes. */
offset = program - (const uint8_t *) cache->data->d.d_buf;
/* Internal definitions for libdw CFI interpreter.
- Copyright (C) 2009-2010 Red Hat, Inc.
+ Copyright (C) 2009-2010, 2013 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
Dwarf_Sword value:(sizeof (Dwarf_Sword) * 8 - 3);
};
-/* This holds everything we know about the state of the frame
- at a particular PC location described by an FDE. */
+/* This holds instructions for unwinding frame at a particular PC location
+ described by an FDE. */
struct Dwarf_Frame_s
{
/* This frame description covers PC values in [start, end). */
/* This file defines standard DWARF types, structures, and macros.
- Copyright (C) 2000-2011 Red Hat, Inc.
+ Copyright (C) 2000-2011, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
DW_TAG_unspecified_type = 0x3b,
DW_TAG_partial_unit = 0x3c,
DW_TAG_imported_unit = 0x3d,
- DW_TAG_mutable_type = 0x3e,
+ /* 0x3e reserved. */
DW_TAG_condition = 0x3f,
DW_TAG_shared_type = 0x40,
DW_TAG_type_unit = 0x41,
/* Create descriptor from ELF descriptor for processing file.
- Copyright (C) 2002-2011 Red Hat, Inc.
+ Copyright (C) 2002-2011, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
#endif
#include <assert.h>
-#include <inttypes.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
/* Section names. */
-static const char dwarf_scnnames[IDX_last][17] =
+static const char dwarf_scnnames[IDX_last][18] =
{
[IDX_debug_info] = ".debug_info",
[IDX_debug_types] = ".debug_types",
[IDX_debug_str] = ".debug_str",
[IDX_debug_macinfo] = ".debug_macinfo",
[IDX_debug_macro] = ".debug_macro",
- [IDX_debug_ranges] = ".debug_ranges"
+ [IDX_debug_ranges] = ".debug_ranges",
+ [IDX_gnu_debugaltlink] = ".gnu_debugaltlink"
};
#define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0]))
-#ifdef ENABLE_DWZ
-internal_function int
-__check_build_id (Dwarf *dw, const uint8_t *build_id, const size_t id_len)
-{
- if (dw == NULL)
- return -1;
-
- Elf *elf = dw->elf;
- Elf_Scn *scn = elf_nextscn (elf, NULL);
- if (scn == NULL)
- return -1;
-
- do
- {
- GElf_Shdr shdr_mem;
- GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
- if (likely (shdr != NULL) && shdr->sh_type == SHT_NOTE)
- {
- size_t pos = 0;
- GElf_Nhdr nhdr;
- size_t name_pos;
- size_t desc_pos;
- Elf_Data *data = elf_getdata (scn, NULL);
- while ((pos = gelf_getnote (data, pos, &nhdr, &name_pos,
- &desc_pos)) > 0)
- if (nhdr.n_type == NT_GNU_BUILD_ID
- && nhdr.n_namesz == sizeof "GNU"
- && ! memcmp (data->d_buf + name_pos, "GNU", sizeof "GNU"))
- return (nhdr.n_descsz == id_len
- && ! memcmp (data->d_buf + desc_pos,
- build_id, id_len)) ? 0 : 1;
- }
- }
- while ((scn = elf_nextscn (elf, scn)) != NULL);
-
- return -1;
-}
-
-/* Try to open an debug alt link by name, checking build_id.
- Marks free_alt on success, return NULL on failure. */
-static Dwarf *
-try_debugaltlink (Dwarf *result, const char *try_name,
- const uint8_t *build_id, const size_t id_len)
-{
- int fd = open (try_name, O_RDONLY);
- if (fd > 0)
- {
- result->alt_dwarf = INTUSE (dwarf_begin) (fd, DWARF_C_READ);
- if (result->alt_dwarf != NULL)
- {
- Elf *elf = result->alt_dwarf->elf;
- if (__check_build_id (result->alt_dwarf, build_id, id_len) == 0
- && elf_cntl (elf, ELF_C_FDREAD) == 0)
- {
- close (fd);
- result->free_alt = 1;
- return result;
- }
- INTUSE (dwarf_end) (result->alt_dwarf);
- }
- close (fd);
- }
- return NULL;
-}
-
-/* For dwz multifile support, ignore if it looks wrong. */
-static Dwarf *
-open_debugaltlink (Dwarf *result, const char *alt_name,
- const uint8_t *build_id, const size_t id_len)
-{
- /* First try the name itself, it is either an absolute path or
- a relative one. Sadly we don't know relative from where at
- this point. */
- if (try_debugaltlink (result, alt_name, build_id, id_len) != NULL)
- return result;
-
- /* Lets try based on the build-id. This is somewhat distro specific,
- we are following the Fedora implementation described at
- https://fedoraproject.org/wiki/Releases/FeatureBuildId#Find_files_by_build_ID
- */
-#define DEBUG_PREFIX "/usr/lib/debug/.build-id/"
-#define PREFIX_LEN sizeof (DEBUG_PREFIX)
- char id_name[PREFIX_LEN + 1 + id_len * 2 + sizeof ".debug" - 1];
- strcpy (id_name, DEBUG_PREFIX);
- int n = snprintf (&id_name[PREFIX_LEN - 1],
- 4, "%02" PRIx8 "/", (uint8_t) build_id[0]);
- assert (n == 3);
- for (size_t i = 1; i < id_len; ++i)
- {
- n = snprintf (&id_name[PREFIX_LEN - 1 + 3 + (i - 1) * 2],
- 3, "%02" PRIx8, (uint8_t) build_id[i]);
- assert (n == 2);
- }
- strcpy (&id_name[PREFIX_LEN - 1 + 3 + (id_len - 1) * 2],
- ".debug");
-
- if (try_debugaltlink (result, id_name, build_id, id_len))
- return result;
-
- /* Everything failed, mark this Dwarf as not having an alternate,
- but don't fail the load. The user may want to set it by hand
- before usage. */
- result->alt_dwarf = NULL;
- return result;
-}
-#endif /* ENABLE_DWZ */
-
static Dwarf *
check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
{
/* Get the section header data. */
shdr = gelf_getshdr (scn, &shdr_mem);
if (shdr == NULL)
- /* This should never happen. If it does something is
- wrong in the libelf library. */
- abort ();
+ /* We may read /proc/PID/mem with only program headers mapped and section
+ headers out of the mapped pages. */
+ goto err;
/* Ignore any SHT_NOBITS sections. Debugging sections should not
have been stripped, but in case of a corrupt file we won't try
{
/* The section name must be valid. Otherwise is the ELF file
invalid. */
+ err:
__libdw_free_zdata (result);
+ Dwarf_Sig8_Hash_free (&result->sig8_hash);
__libdw_seterrno (DWARF_E_INVALID_ELF);
free (result);
return NULL;
}
-#ifdef ENABLE_DWZ
- /* For dwz multifile support, ignore if it looks wrong. */
- if (strcmp (scnname, ".gnu_debugaltlink") == 0)
- {
- Elf_Data *data = elf_getdata (scn, NULL);
- if (data != NULL && data->d_size != 0)
- {
- const char *alt_name = data->d_buf;
- const void *build_id = memchr (data->d_buf, '\0', data->d_size);
- const int id_len = data->d_size - (build_id - data->d_buf + 1);
- if (alt_name && build_id && id_len > 0)
- return open_debugaltlink (result, alt_name, build_id + 1, id_len);
- }
- }
-#endif /* ENABLE_DWZ */
-
/* Recognize the various sections. Most names start with .debug_. */
size_t cnt;
for (cnt = 0; cnt < ndwarf_scnnames; ++cnt)
memcpy (&size, data->d_buf + 4, sizeof size);
size = be64toh (size);
+ /* Check for unsigned overflow so malloc always allocated
+ enough memory for both the Elf_Data header and the
+ uncompressed section data. */
+ if (unlikely (sizeof (Elf_Data) + size < size))
+ break;
+
Elf_Data *zdata = malloc (sizeof (Elf_Data) + size);
if (unlikely (zdata == NULL))
break;
&& unlikely (result->sectiondata[IDX_debug_info] == NULL))
{
__libdw_free_zdata (result);
+ Dwarf_Sig8_Hash_free (&result->sig8_hash);
__libdw_seterrno (DWARF_E_NO_DWARF);
free (result);
result = NULL;
{
/* We cannot read the section content. Fail! */
__libdw_free_zdata (result);
+ Dwarf_Sig8_Hash_free (&result->sig8_hash);
free (result);
return NULL;
}
/* A section group refers to a non-existing section. Should
never happen. */
__libdw_free_zdata (result);
+ Dwarf_Sig8_Hash_free (&result->sig8_hash);
__libdw_seterrno (DWARF_E_INVALID_ELF);
free (result);
return NULL;
}
else if (cmd == DWARF_C_WRITE)
{
+ Dwarf_Sig8_Hash_free (&result->sig8_hash);
__libdw_seterrno (DWARF_E_UNIMPL);
free (result);
return NULL;
}
+ Dwarf_Sig8_Hash_free (&result->sig8_hash);
__libdw_seterrno (DWARF_E_INVALID_CMD);
free (result);
return NULL;
--- /dev/null
+/* Internal definitions for libdwarf.
+ Copyright (C) 2014 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
+
+#include <stddef.h>
+#include "libdwP.h"
+
+
+Dwarf_Die *
+dwarf_cu_die (cu, result, versionp, abbrev_offsetp, address_sizep,
+ offset_sizep, type_signaturep, type_offsetp)
+ Dwarf_CU *cu;
+ Dwarf_Die *result;
+ Dwarf_Half *versionp;
+ Dwarf_Off *abbrev_offsetp;
+ uint8_t *address_sizep;
+ uint8_t *offset_sizep;
+ uint64_t *type_signaturep;
+ Dwarf_Off *type_offsetp;
+{
+ if (cu == NULL)
+ return NULL;
+
+ *result = CUDIE (cu);
+
+ if (versionp != NULL)
+ *versionp = cu->version;
+ if (abbrev_offsetp != NULL)
+ *abbrev_offsetp = cu->orig_abbrev_offset;
+ if (address_sizep != NULL)
+ *address_sizep = cu->address_size;
+ if (offset_sizep != NULL)
+ *offset_sizep = cu->offset_size;
+ if (type_signaturep != NULL)
+ *type_signaturep = cu->type_sig8;
+ if (type_offsetp != NULL)
+ *type_offsetp = cu->type_offset;
+
+ return result;
+}
-/* Out of line functions for memory-access.h macros.
- Copyright (C) 2005, 2006 Red Hat, Inc.
+/* Retrieve Dwarf descriptor underlying a Dwarf_CU.
+ Copyright (C) 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
+
+#include <stddef.h>
+
#include "libdwP.h"
-#include "memory-access.h"
-uint64_t
-internal_function
-__libdw_get_uleb128 (uint64_t acc, unsigned int i, const unsigned char **addrp)
-{
- unsigned char __b;
- get_uleb128_rest_return (acc, i, addrp);
-}
-int64_t
-internal_function
-__libdw_get_sleb128 (int64_t acc, unsigned int i, const unsigned char **addrp)
+Dwarf *
+dwarf_cu_getdwarf (cu)
+ Dwarf_CU *cu;
{
- unsigned char __b;
- int64_t _v = acc;
- get_sleb128_rest_return (acc, i, addrp);
+ if (cu == NULL)
+ /* Some error occurred before. */
+ return NULL;
+
+ return cu->dbg;
}
dwarf_decl_file (Dwarf_Die *die)
{
Dwarf_Attribute attr_mem;
- Dwarf_Sword idx = 0;
+ Dwarf_Word idx = 0;
- if (INTUSE(dwarf_formsdata) (INTUSE(dwarf_attr_integrate)
+ if (INTUSE(dwarf_formudata) (INTUSE(dwarf_attr_integrate)
(die, DW_AT_decl_file, &attr_mem),
&idx) != 0)
return NULL;
__libdw_attr_intval (Dwarf_Die *die, int *linep, int attval)
{
Dwarf_Attribute attr_mem;
- Dwarf_Sword line;
+ Dwarf_Word line;
- int res = INTUSE(dwarf_formsdata) (INTUSE(dwarf_attr_integrate)
+ int res = INTUSE(dwarf_formudata) (INTUSE(dwarf_attr_integrate)
(die, attval, &attr_mem),
&line);
if (res == 0)
{
- assert (line >= 0 && line <= INT_MAX);
- *linep = line;
+ if (line > INT_MAX)
+ {
+ __libdw_seterrno (DWARF_E_INVALID_DWARF);
+ res = -1;
+ }
+ else
+ *linep = line;
}
return res;
/* Release debugging handling context.
- Copyright (C) 2002-2011 Red Hat, Inc.
+ Copyright (C) 2002-2011, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
if (dwarf->free_elf)
elf_end (dwarf->elf);
- /* Free the alternative Dwarf descriptor if necessary. */
- if (dwarf->free_alt)
- INTUSE (dwarf_end) (dwarf->alt_dwarf);
-
/* Free the context descriptor. */
free (dwarf);
}
{
/* This has an absolute offset. */
- uint8_t ref_size = (cu->version == 2
+ uint8_t ref_size = (cu->version == 2 && attr->form == DW_FORM_ref_addr
? cu->address_size
: cu->offset_size);
?: DWARF_E_INVALID_REFERENCE);
return NULL;
}
- Dwarf_Sig8_Hash_insert (&cu->dbg->sig8_hash, cu->type_sig8, cu);
}
while (cu->type_sig8 != sig);
/* Return string associated with given attribute.
- Copyright (C) 2003-2010 Red Hat, Inc.
+ Copyright (C) 2003-2010, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2003.
if (unlikely (attrp->form != DW_FORM_strp
&& attrp->form != DW_FORM_GNU_strp_alt)
- || dbg->sectiondata[IDX_debug_str] == NULL)
+ || dbg_ret->sectiondata[IDX_debug_str] == NULL)
{
__libdw_seterrno (DWARF_E_NO_STRING);
return NULL;
--- /dev/null
+/* Retrieves the DWARF descriptor for debugaltlink data.
+ Copyright (C) 2014 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
+
+#include "libdwP.h"
+
+Dwarf *
+dwarf_getalt (Dwarf *main)
+{
+ if (main == NULL)
+ return NULL;
+ return main->alt_dwarf;
+}
+INTDEF (dwarf_getalt)
if (address_size != 4 && address_size != 8)
goto invalid;
- /* Ignore the segment size value. */
- // XXX Really?
- (void) *readp++;
+ /* We don't actually support segment selectors. */
+ unsigned int segment_size = *readp++;
+ if (segment_size != 0)
+ goto invalid;
/* Round the address to the next multiple of 2*address_size. */
readp += ((2 * address_size - ((readp - hdrstart) % (2 * address_size)))
hdr_vaddr = shdr->sh_addr;
}
else if (!strcmp (name, ".eh_frame"))
- return getcfi_scn_eh_frame (elf, ehdr, scn, shdr,
- hdr_scn, hdr_vaddr);
+ {
+ if (shdr->sh_type == SHT_PROGBITS)
+ return getcfi_scn_eh_frame (elf, ehdr, scn, shdr,
+ hdr_scn, hdr_vaddr);
+ else
+ return NULL;
+ }
}
}
/* Get function information.
- Copyright (C) 2005 Red Hat, Inc.
+ Copyright (C) 2005, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2005.
#include "libdwP.h"
+struct visitor_info
+{
+ /* The user callback of dwarf_getfuncs. */
+ int (*callback) (Dwarf_Die *, void *);
+
+ /* The user arg value to dwarf_getfuncs. */
+ void *arg;
+
+ /* Addr of the DIE offset where to (re)start the search. Zero for all. */
+ void *start_addr;
+
+ /* Last subprogram DIE addr seen. */
+ void *last_addr;
+
+ /* The CU only contains C functions. Allows pruning of most subtrees. */
+ bool c_cu;
+};
+
+static int
+tree_visitor (unsigned int depth __attribute__ ((unused)),
+ struct Dwarf_Die_Chain *chain, void *arg)
+{
+ struct visitor_info *const v = arg;
+ Dwarf_Die *die = &chain->die;
+ void *start_addr = v->start_addr;
+ void *die_addr = die->addr;
+
+ /* Pure C CUs can only contain defining subprogram DIEs as direct
+ children of the CU DIE or as nested function inside a normal C
+ code constructs. */
+ int tag = INTUSE(dwarf_tag) (die);
+ if (v->c_cu
+ && tag != DW_TAG_subprogram
+ && tag != DW_TAG_lexical_block
+ && tag != DW_TAG_inlined_subroutine)
+ {
+ chain->prune = true;
+ return DWARF_CB_OK;
+ }
+
+ /* Skip all DIEs till we found the (re)start addr. */
+ if (start_addr != NULL)
+ {
+ if (die_addr == start_addr)
+ v->start_addr = NULL;
+ return DWARF_CB_OK;
+ }
+
+ /* If this isn't a (defining) subprogram entity, skip DIE. */
+ if (tag != DW_TAG_subprogram
+ || INTUSE(dwarf_hasattr) (die, DW_AT_declaration))
+ return DWARF_CB_OK;
+
+ v->last_addr = die_addr;
+ return (*v->callback) (die, v->arg);
+}
+
ptrdiff_t
dwarf_getfuncs (Dwarf_Die *cudie, int (*callback) (Dwarf_Die *, void *),
void *arg, ptrdiff_t offset)
|| INTUSE(dwarf_tag) (cudie) != DW_TAG_compile_unit))
return -1;
- Dwarf_Die die_mem;
- Dwarf_Die *die;
+ int lang = INTUSE(dwarf_srclang) (cudie);
+ bool c_cu = (lang == DW_LANG_C89
+ || lang == DW_LANG_C
+ || lang == DW_LANG_C99);
- int res;
- if (offset == 0)
- res = INTUSE(dwarf_child) (cudie, &die_mem);
- else
- {
- die = INTUSE(dwarf_offdie) (cudie->cu->dbg, offset, &die_mem);
- res = INTUSE(dwarf_siblingof) (die, &die_mem);
- }
- die = res != 0 ? NULL : &die_mem;
+ struct visitor_info v = { callback, arg, (void *) offset, NULL, c_cu };
+ struct Dwarf_Die_Chain chain = { .die = CUDIE (cudie->cu),
+ .parent = NULL };
+ int res = __libdw_visit_scopes (0, &chain, &tree_visitor, NULL, &v);
- while (die != NULL)
- {
- if (INTUSE(dwarf_tag) (die) == DW_TAG_subprogram)
- {
- if (callback (die, arg) != DWARF_CB_OK)
- return INTUSE(dwarf_dieoffset) (die);
- }
-
- if (INTUSE(dwarf_siblingof) (die, &die_mem) != 0)
- break;
- }
-
- /* That's all. */
- return 0;
+ if (res == DWARF_CB_ABORT)
+ return (ptrdiff_t) v.last_addr;
+ else
+ return res;
}
/* Return location expression list.
- Copyright (C) 2000-2010 Red Hat, Inc.
+ Copyright (C) 2000-2010, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
case DW_AT_frame_base:
case DW_AT_return_addr:
case DW_AT_static_link:
+ case DW_AT_segment:
break;
default:
/* For each DW_OP_implicit_value, we store a special entry in the cache.
This points us directly to the block data for later fetching. */
static void
-store_implicit_value (Dwarf *dbg, void **cache, Dwarf_Op *op,
- unsigned char *data)
+store_implicit_value (Dwarf *dbg, void **cache, Dwarf_Op *op)
{
struct loc_block_s *block = libdw_alloc (dbg, struct loc_block_s,
sizeof (struct loc_block_s), 1);
+ const unsigned char *data = (const unsigned char *) (uintptr_t) op->number2;
+ (void) __libdw_get_uleb128 (&data); // Ignored, equal to op->number.
block->addr = op;
- block->data = data + op->number2;
+ block->data = (unsigned char *) data;
block->length = op->number;
(void) tsearch (block, cache, loc_compare);
}
bool cfap, bool valuep,
Dwarf_Op **llbuf, size_t *listlen, int sec_index)
{
+ /* Empty location expressions don't have any ops to intern. */
+ if (block->length == 0)
+ {
+ *listlen = 0;
+ return 0;
+ }
+
/* Check whether we already looked at this list. */
struct loc_s fake = { .addr = block->data };
struct loc_s **found = tfind (&fake, cache, loc_compare);
struct loclist *loclist = NULL;
unsigned int n = 0;
+
+ if (cfap)
+ {
+ /* Synthesize the operation to push the CFA before the expression. */
+ struct loclist *newloc;
+ newloc = (struct loclist *) alloca (sizeof (struct loclist));
+ newloc->atom = DW_OP_call_frame_cfa;
+ newloc->number = 0;
+ newloc->number2 = 0;
+ newloc->offset = -1;
+ newloc->next = loclist;
+ loclist = newloc;
+ ++n;
+ }
+
/* Decode the opcodes. It is possible in some situations to have a
block of size zero. */
while (data < end_data)
case DW_OP_const4s:
case DW_OP_call4:
+ case DW_OP_GNU_parameter_ref:
if (unlikely (data + 4 > end_data))
goto invalid;
case DW_OP_plus_uconst:
case DW_OP_regx:
case DW_OP_piece:
+ case DW_OP_GNU_convert:
+ case DW_OP_GNU_reinterpret:
/* XXX Check size. */
get_uleb128 (newloc->number, data);
break;
break;
case DW_OP_bit_piece:
+ case DW_OP_GNU_regval_type:
/* XXX Check size. */
get_uleb128 (newloc->number, data);
get_uleb128 (newloc->number2, data);
break;
case DW_OP_implicit_value:
+ case DW_OP_GNU_entry_value:
/* This cannot be used in a CFI expression. */
if (unlikely (dbg == NULL))
goto invalid;
+ /* start of block inc. len. */
+ newloc->number2 = (Dwarf_Word) (uintptr_t) data;
/* XXX Check size. */
get_uleb128 (newloc->number, data); /* Block length. */
if (unlikely ((Dwarf_Word) (end_data - data) < newloc->number))
goto invalid;
- newloc->number2 = data - block->data; /* Relative block offset. */
data += newloc->number; /* Skip the block. */
break;
get_uleb128 (newloc->number2, data); /* Byte offset. */
break;
+ case DW_OP_GNU_deref_type:
+ if (unlikely (data >= end_data))
+ goto invalid;
+ newloc->number = *data++;
+ get_uleb128 (newloc->number2, data);
+ break;
+
+ case DW_OP_GNU_const_type:
+ {
+ size_t size;
+
+ /* XXX Check size. */
+ get_uleb128 (newloc->number, data);
+ if (unlikely (data >= end_data))
+ goto invalid;
+
+ /* start of block inc. len. */
+ newloc->number2 = (Dwarf_Word) (uintptr_t) data;
+ size = *data++;
+ if (unlikely ((Dwarf_Word) (end_data - data) < size))
+ goto invalid;
+ data += size; /* Skip the block. */
+ }
+ break;
+
default:
goto invalid;
}
if (unlikely (n == 0))
{
/* This is not allowed.
-
- XXX Is it? */
+ It would mean an empty location expression, which we handled
+ already as a special case above. */
goto invalid;
}
++n;
}
- if (cfap)
- ++n;
-
/* Allocate the array. */
Dwarf_Op *result;
if (dbg != NULL)
*llbuf = result;
*listlen = n;
- if (cfap)
- {
- /* Synthesize the operation to push the CFA before the expression. */
- --n;
- result[0].atom = DW_OP_call_frame_cfa;
- result[0].number = 0;
- result[0].number2 = 0;
- result[0].offset = -1;
- }
-
do
{
/* We populate the array from the back since the list is backwards. */
result[n].offset = loclist->offset;
if (result[n].atom == DW_OP_implicit_value)
- store_implicit_value (dbg, cache, &result[n], block->data);
+ store_implicit_value (dbg, cache, &result[n]);
loclist = loclist->next;
}
return getlocation (attr->cu, &block, llbuf, listlen, cu_sec_idx (attr->cu));
}
+static int
+attr_base_address (attr, basep)
+ Dwarf_Attribute *attr;
+ Dwarf_Addr *basep;
+{
+ /* Fetch the CU's base address. */
+ Dwarf_Die cudie = CUDIE (attr->cu);
+
+ /* Find the base address of the compilation unit. It will
+ normally be specified by DW_AT_low_pc. In DWARF-3 draft 4,
+ the base address could be overridden by DW_AT_entry_pc. It's
+ been removed, but GCC emits DW_AT_entry_pc and not DW_AT_lowpc
+ for compilation units with discontinuous ranges. */
+ Dwarf_Attribute attr_mem;
+ if (unlikely (INTUSE(dwarf_lowpc) (&cudie, basep) != 0)
+ && INTUSE(dwarf_formaddr) (INTUSE(dwarf_attr) (&cudie,
+ DW_AT_entry_pc,
+ &attr_mem),
+ basep) != 0)
+ {
+ if (INTUSE(dwarf_errno) () != 0)
+ return -1;
+
+ /* The compiler provided no base address when it should
+ have. Buggy GCC does this when it used absolute
+ addresses in the location list and no DW_AT_ranges. */
+ *basep = 0;
+ }
+ return 0;
+}
+
+static int
+initial_offset_base (attr, offset, basep)
+ Dwarf_Attribute *attr;
+ ptrdiff_t *offset;
+ Dwarf_Addr *basep;
+{
+ if (attr_base_address (attr, basep) != 0)
+ return -1;
+
+ Dwarf_Word start_offset;
+ if (__libdw_formptr (attr, IDX_debug_loc,
+ DWARF_E_NO_LOCLIST,
+ NULL, &start_offset) == NULL)
+ return -1;
+
+ *offset = start_offset;
+ return 0;
+}
+
+static ptrdiff_t
+getlocations_addr (attr, offset, basep, startp, endp, address,
+ locs, expr, exprlen)
+ Dwarf_Attribute *attr;
+ ptrdiff_t offset;
+ Dwarf_Addr *basep;
+ Dwarf_Addr *startp;
+ Dwarf_Addr *endp;
+ Dwarf_Addr address;
+ Elf_Data *locs;
+ Dwarf_Op **expr;
+ size_t *exprlen;
+{
+ unsigned char *readp = locs->d_buf + offset;
+ unsigned char *readendp = locs->d_buf + locs->d_size;
+
+ next:
+ if (readendp - readp < attr->cu->address_size * 2)
+ {
+ invalid:
+ __libdw_seterrno (DWARF_E_INVALID_DWARF);
+ return -1;
+ }
+
+ Dwarf_Addr begin;
+ Dwarf_Addr end;
+
+ switch (__libdw_read_begin_end_pair_inc (attr->cu->dbg, IDX_debug_loc,
+ &readp, attr->cu->address_size,
+ &begin, &end, basep))
+ {
+ case 0: /* got location range. */
+ break;
+ case 1: /* base address setup. */
+ goto next;
+ case 2: /* end of loclist */
+ return 0;
+ default: /* error */
+ return -1;
+ }
+
+ if (readendp - readp < 2)
+ goto invalid;
+
+ /* We have a location expression. */
+ Dwarf_Block block;
+ block.length = read_2ubyte_unaligned_inc (attr->cu->dbg, readp);
+ block.data = readp;
+ if (readendp - readp < (ptrdiff_t) block.length)
+ goto invalid;
+ readp += block.length;
+
+ *startp = *basep + begin;
+ *endp = *basep + end;
+
+ /* If address is minus one we want them all, otherwise only matching. */
+ if (address != (Dwarf_Word) -1 && (address < *startp || address >= *endp))
+ goto next;
+
+ if (getlocation (attr->cu, &block, expr, exprlen, IDX_debug_loc) != 0)
+ return -1;
+
+ return readp - (unsigned char *) locs->d_buf;
+}
+
int
dwarf_getlocation_addr (attr, address, llbufs, listlens, maxlocs)
Dwarf_Attribute *attr;
if (result != 1)
return result ?: 1;
- unsigned char *endp;
- unsigned char *readp = __libdw_formptr (attr, IDX_debug_loc,
- DWARF_E_NO_LOCLIST, &endp, NULL);
- if (readp == NULL)
+ Dwarf_Addr base, start, end;
+ Dwarf_Op *expr;
+ size_t expr_len;
+ ptrdiff_t off = 0;
+ size_t got = 0;
+
+ /* This is a true loclistptr, fetch the initial base address and offset. */
+ if (initial_offset_base (attr, &off, &base) != 0)
return -1;
- Dwarf_Addr base = (Dwarf_Addr) -1;
- size_t got = 0;
- while (got < maxlocs)
+ const Elf_Data *d = attr->cu->dbg->sectiondata[IDX_debug_loc];
+ if (d == NULL)
{
- if (endp - readp < attr->cu->address_size * 2)
+ __libdw_seterrno (DWARF_E_NO_LOCLIST);
+ return -1;
+ }
+
+ while (got < maxlocs
+ && (off = getlocations_addr (attr, off, &base, &start, &end,
+ address, d, &expr, &expr_len)) > 0)
+ {
+ /* This one matches the address. */
+ if (llbufs != NULL)
{
- invalid:
- __libdw_seterrno (DWARF_E_INVALID_DWARF);
- return -1;
+ llbufs[got] = expr;
+ listlens[got] = expr_len;
}
+ ++got;
+ }
- Dwarf_Addr begin;
- Dwarf_Addr end;
+ /* We might stop early, so off can be zero or positive on success. */
+ if (off < 0)
+ return -1;
- int status
- = __libdw_read_begin_end_pair_inc (attr->cu->dbg, IDX_debug_loc,
- &readp, attr->cu->address_size,
- &begin, &end, &base);
- if (status == 2) /* End of list entry. */
- break;
- else if (status == 1) /* Base address selected. */
- continue;
- else if (status < 0)
- return status;
-
- if (endp - readp < 2)
- goto invalid;
-
- /* We have a location expression. */
- block.length = read_2ubyte_unaligned_inc (attr->cu->dbg, readp);
- block.data = readp;
- if (endp - readp < (ptrdiff_t) block.length)
- goto invalid;
- readp += block.length;
-
- if (base == (Dwarf_Addr) -1)
+ return got;
+}
+
+ptrdiff_t
+dwarf_getlocations (attr, offset, basep, startp, endp, expr, exprlen)
+ Dwarf_Attribute *attr;
+ ptrdiff_t offset;
+ Dwarf_Addr *basep;
+ Dwarf_Addr *startp;
+ Dwarf_Addr *endp;
+ Dwarf_Op **expr;
+ size_t *exprlen;
+{
+ if (! attr_ok (attr))
+ return -1;
+
+ /* 1 is an invalid offset, meaning no more locations. */
+ if (offset == 1)
+ return 0;
+
+ if (offset == 0)
+ {
+ /* If it has a block form, it's a single location expression. */
+ Dwarf_Block block;
+ if (INTUSE(dwarf_formblock) (attr, &block) == 0)
{
- /* Fetch the CU's base address. */
- Dwarf_Die cudie = CUDIE (attr->cu);
-
- /* Find the base address of the compilation unit. It will
- normally be specified by DW_AT_low_pc. In DWARF-3 draft 4,
- the base address could be overridden by DW_AT_entry_pc. It's
- been removed, but GCC emits DW_AT_entry_pc and not DW_AT_lowpc
- for compilation units with discontinuous ranges. */
- Dwarf_Attribute attr_mem;
- if (unlikely (INTUSE(dwarf_lowpc) (&cudie, &base) != 0)
- && INTUSE(dwarf_formaddr) (INTUSE(dwarf_attr) (&cudie,
- DW_AT_entry_pc,
- &attr_mem),
- &base) != 0)
- {
- if (INTUSE(dwarf_errno) () != 0)
- return -1;
+ if (getlocation (attr->cu, &block, expr, exprlen,
+ cu_sec_idx (attr->cu)) != 0)
+ return -1;
- /* The compiler provided no base address when it should
- have. Buggy GCC does this when it used absolute
- addresses in the location list and no DW_AT_ranges. */
- base = 0;
- }
+ /* This is the one and only location covering everything. */
+ *startp = 0;
+ *endp = -1;
+ return 1;
}
- if (address >= base + begin && address < base + end)
+ int error = INTUSE(dwarf_errno) ();
+ if (unlikely (error != DWARF_E_NO_BLOCK))
{
- /* This one matches the address. */
- if (llbufs != NULL
- && unlikely (getlocation (attr->cu, &block,
- &llbufs[got], &listlens[got],
- IDX_debug_loc) != 0))
- return -1;
- ++got;
+ __libdw_seterrno (error);
+ return -1;
}
+
+ int result = check_constant_offset (attr, expr, exprlen);
+ if (result != 1)
+ {
+ if (result == 0)
+ {
+ /* This is the one and only location covering everything. */
+ *startp = 0;
+ *endp = -1;
+ return 1;
+ }
+ return result;
+ }
+
+ /* We must be looking at a true loclistptr, fetch the initial
+ base address and offset. */
+ if (initial_offset_base (attr, &offset, basep) != 0)
+ return -1;
}
- return got;
+ const Elf_Data *d = attr->cu->dbg->sectiondata[IDX_debug_loc];
+ if (d == NULL)
+ {
+ __libdw_seterrno (DWARF_E_NO_LOCLIST);
+ return -1;
+ }
+
+ return getlocations_addr (attr, offset, basep, startp, endp,
+ (Dwarf_Word) -1, d, expr, exprlen);
}
--- /dev/null
+/* Return DWARF attribute associated with a location expression op.
+ 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
+
+#include <dwarf.h>
+#include <libdwP.h>
+
+
+int
+dwarf_getlocation_attr (attr, op, result)
+ Dwarf_Attribute *attr;
+ const Dwarf_Op *op;
+ Dwarf_Attribute *result;
+{
+ if (attr == NULL)
+ return -1;
+
+ result->cu = attr->cu;
+
+ switch (op->atom)
+ {
+ case DW_OP_implicit_value:
+ result->code = DW_AT_const_value;
+ result->form = DW_FORM_block;
+ result->valp = (unsigned char *) (uintptr_t) op->number2;
+ break;
+
+ case DW_OP_GNU_entry_value:
+ result->code = DW_AT_location;
+ result->form = DW_FORM_exprloc;
+ result->valp = (unsigned char *) (uintptr_t) op->number2;
+ break;
+
+ case DW_OP_GNU_const_type:
+ result->code = DW_AT_const_value;
+ result->form = DW_FORM_block1;
+ result->valp = (unsigned char *) (uintptr_t) op->number2;
+ break;
+
+ case DW_OP_call2:
+ case DW_OP_call4:
+ case DW_OP_call_ref:
+ {
+ Dwarf_Die die;
+ if (INTUSE(dwarf_getlocation_die) (attr, op, &die) != 0)
+ return -1;
+ if (INTUSE(dwarf_attr) (&die, DW_AT_location, result) == NULL)
+ {
+ __libdw_empty_loc_attr (result, attr->cu);
+ return 0;
+ }
+ }
+ break;
+
+ case DW_OP_GNU_implicit_pointer:
+ {
+ Dwarf_Die die;
+ if (INTUSE(dwarf_getlocation_die) (attr, op, &die) != 0)
+ return -1;
+ if (INTUSE(dwarf_attr) (&die, DW_AT_location, result) == NULL
+ && INTUSE(dwarf_attr) (&die, DW_AT_const_value, result) == NULL)
+ {
+ __libdw_empty_loc_attr (result, attr->cu);
+ return 0;
+ }
+ }
+ break;
+
+ default:
+ __libdw_seterrno (DWARF_E_INVALID_ACCESS);
+ return -1;
+ }
+
+ return 0;
+}
--- /dev/null
+/* Return DIE associated with a location expression op.
+ 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
+
+#include <dwarf.h>
+#include <libdwP.h>
+
+int
+dwarf_getlocation_die (attr, op, result)
+ Dwarf_Attribute *attr;
+ const Dwarf_Op *op;
+ Dwarf_Die *result;
+{
+ if (attr == NULL)
+ return -1;
+
+ Dwarf_Off dieoff;
+ switch (op->atom)
+ {
+ case DW_OP_GNU_implicit_pointer:
+ case DW_OP_call_ref:
+ dieoff = op->number;
+ break;
+
+ case DW_OP_GNU_parameter_ref:
+ case DW_OP_GNU_convert:
+ case DW_OP_GNU_reinterpret:
+ case DW_OP_GNU_const_type:
+ case DW_OP_call2:
+ case DW_OP_call4:
+ dieoff = attr->cu->start + op->number;
+ break;
+
+ case DW_OP_GNU_regval_type:
+ case DW_OP_GNU_deref_type:
+ dieoff = attr->cu->start + op->number2;
+ break;
+
+ default:
+ __libdw_seterrno (DWARF_E_INVALID_ACCESS);
+ return -1;
+ }
+
+ if (__libdw_offdie (attr->cu->dbg, dieoff, result,
+ attr->cu->type_offset != 0) == NULL)
+ return -1;
+
+ return 0;
+}
+INTDEF(dwarf_getlocation_die);
#include <dwarf.h>
+static unsigned char empty_exprloc = 0;
+
+void
+internal_function
+__libdw_empty_loc_attr (Dwarf_Attribute *attr, struct Dwarf_CU *cu )
+{
+ attr->code = DW_AT_location;
+ attr->form = DW_FORM_exprloc;
+ attr->valp = &empty_exprloc;
+ attr->cu = cu;
+}
+
int
dwarf_getlocation_implicit_pointer (attr, op, result)
Dwarf_Attribute *attr;
if (INTUSE(dwarf_attr) (&die, DW_AT_location, result) == NULL
&& INTUSE(dwarf_attr) (&die, DW_AT_const_value, result) == NULL)
{
- __libdw_seterrno (DWARF_E_INVALID_DWARF);
- return -1;
+ __libdw_empty_loc_attr (result, attr->cu);
+ return 0;
}
return 0;
/* Return source file information of CU.
- Copyright (C) 2004, 2005 Red Hat, Inc.
+ Copyright (C) 2004, 2005, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
dwarf_getsrcfiles (Dwarf_Die *cudie, Dwarf_Files **files, size_t *nfiles)
{
if (unlikely (cudie == NULL
- || INTUSE(dwarf_tag) (cudie) != DW_TAG_compile_unit))
+ || (INTUSE(dwarf_tag) (cudie) != DW_TAG_compile_unit
+ && INTUSE(dwarf_tag) (cudie) != DW_TAG_partial_unit)))
return -1;
int res = -1;
/* Return line number information of CU.
- Copyright (C) 2004-2010 Red Hat, Inc.
+ Copyright (C) 2004-2010, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
dwarf_getsrclines (Dwarf_Die *cudie, Dwarf_Lines **lines, size_t *nlines)
{
if (unlikely (cudie == NULL
- || INTUSE(dwarf_tag) (cudie) != DW_TAG_compile_unit))
+ || (INTUSE(dwarf_tag) (cudie) != DW_TAG_compile_unit
+ && INTUSE(dwarf_tag) (cudie) != DW_TAG_partial_unit)))
return -1;
int res = -1;
+ struct linelist *linelist = NULL;
+ unsigned int nlinelist = 0;
+
+ /* If there are a large number of lines don't blow up the stack.
+ Keep track of the last malloced linelist record and free them
+ through the next pointer at the end. */
+#define MAX_STACK_ALLOC 4096
+ struct linelist *malloc_linelist = NULL;
+
/* Get the information if it is not already known. */
struct Dwarf_CU *const cu = cudie->cu;
if (cu->lines == NULL)
}
/* Process the instructions. */
- struct linelist *linelist = NULL;
- unsigned int nlinelist = 0;
/* Adds a new line to the matrix.
We cannot simply define a function because we want to use alloca. */
#define NEW_LINE(end_seq) \
do { \
- if (unlikely (add_new_line (alloca (sizeof (struct linelist)), \
- end_seq))) \
+ struct linelist *ll = (nlinelist < MAX_STACK_ALLOC \
+ ? alloca (sizeof (struct linelist)) \
+ : malloc (sizeof (struct linelist))); \
+ if (nlinelist >= MAX_STACK_ALLOC) \
+ malloc_linelist = ll; \
+ if (unlikely (add_new_line (ll, end_seq))) \
goto invalid_data; \
} while (0)
inline bool add_new_line (struct linelist *new_line, bool end_sequence)
{
+ new_line->next = linelist;
+ linelist = new_line;
+ ++nlinelist;
+
/* Set the line information. For some fields we use bitfields,
so we would lose information if the encoded values are too large.
Check just for paranoia, and call the data "invalid" if it
#undef SET
- new_line->next = linelist;
- linelist = new_line;
- ++nlinelist;
-
return false;
}
cu->lines->info[i].files = files;
}
+ /* Make sure the highest address for the CU is marked as end_sequence.
+ This is required by the DWARF spec, but some compilers forget and
+ dwfl_module_getsrc depends on it. */
+ if (nlinelist > 0)
+ cu->lines->info[nlinelist - 1].end_sequence = 1;
+
/* Success. */
res = 0;
}
}
out:
+ /* Free malloced line records, if any. */
+ for (unsigned int i = MAX_STACK_ALLOC; i < nlinelist; i++)
+ {
+ struct linelist *ll = malloc_linelist->next;
+ free (malloc_linelist);
+ malloc_linelist = ll;
+ }
+
// XXX Eventually: unlocking here.
return res;
--- /dev/null
+/* Provides the data referenced by the .gnu_debugaltlink section.
+ Copyright (C) 2014 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
+
+#include "libdwP.h"
+
+void
+dwarf_setalt (Dwarf *main, Dwarf *alt)
+{
+ main->alt_dwarf = alt;
+}
+INTDEF (dwarf_setalt)
&fde->instructions, &fde->start))
|| unlikely (read_encoded_value (cache, cie->fde_encoding & 0x0f,
&fde->instructions, &fde->end)))
- return NULL;
+ {
+ free (fde);
+ __libdw_seterrno (DWARF_E_INVALID_DWARF);
+ return NULL;
+ }
fde->end += fde->start;
fde->cie = cie;
u = idx;
else
{
+ l = idx + 1;
+
Dwarf_Addr fde;
if (unlikely (read_encoded_value (&dummy_cfi,
cache->search_table_encoding, &p,
&fde)))
break;
- if (address >= start)
+
+ /* If this is the last entry, its upper bound is assumed to be
+ the end of the module.
+ XXX really should be end of containing PT_LOAD segment */
+ if (l < cache->search_table_entries)
{
- l = idx + 1;
-
- /* If this is the last entry, its upper bound is assumed to be
- the end of the module.
- XXX really should be end of containing PT_LOAD segment */
- if (l < cache->search_table_entries)
- {
- /* Look at the start address in the following entry. */
- Dwarf_Addr end;
- if (unlikely (read_encoded_value
- (&dummy_cfi, cache->search_table_encoding, &p,
- &end)))
- break;
- if (address >= end)
- continue;
- }
-
- return fde - cache->frame_vaddr;
+ /* Look at the start address in the following entry. */
+ Dwarf_Addr end;
+ if (unlikely (read_encoded_value
+ (&dummy_cfi, cache->search_table_encoding, &p,
+ &end)))
+ break;
+ if (address >= end)
+ continue;
}
+
+ return fde - cache->frame_vaddr;
}
}
if (offset == (Dwarf_Off) -1l)
goto no_match;
struct dwarf_fde *fde = __libdw_fde_by_offset (cache, offset);
- if (unlikely (fde != NULL)
- /* Sanity check the address range. */
- && unlikely (address < fde->start || address >= fde->end))
+ if (likely (fde != NULL))
{
- __libdw_seterrno (DWARF_E_INVALID_DWARF);
- return NULL;
+ /* Sanity check the address range. */
+ if (unlikely (address < fde->start))
+ {
+ __libdw_seterrno (DWARF_E_INVALID_DWARF);
+ return NULL;
+ }
+ /* .eh_frame_hdr does not indicate length covered by FDE. */
+ if (unlikely (address >= fde->end))
+ goto no_match;
}
return fde;
}
ONE_KNOWN_DW_TAG (lexical_block, DW_TAG_lexical_block) \
ONE_KNOWN_DW_TAG (member, DW_TAG_member) \
ONE_KNOWN_DW_TAG (module, DW_TAG_module) \
- ONE_KNOWN_DW_TAG (mutable_type, DW_TAG_mutable_type) \
ONE_KNOWN_DW_TAG (namelist, DW_TAG_namelist) \
ONE_KNOWN_DW_TAG (namelist_item, DW_TAG_namelist_item) \
ONE_KNOWN_DW_TAG (namespace, DW_TAG_namespace) \
/* Interfaces for libdw.
- Copyright (C) 2002-2010 Red Hat, Inc.
+ Copyright (C) 2002-2010, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
/* CU representation. */
struct Dwarf_CU;
+typedef struct Dwarf_CU Dwarf_CU;
/* Macro information. */
typedef struct Dwarf_Macro_s Dwarf_Macro;
/* Retrieve ELF descriptor used for DWARF access. */
extern Elf *dwarf_getelf (Dwarf *dwarf);
+/* Retieve DWARF descriptor used for a Dwarf_Die or Dwarf_Attribute.
+ A Dwarf_Die or a Dwarf_Attribute is associated with a particular
+ Dwarf_CU handle. This function returns the DWARF descriptor for
+ that Dwarf_CU. */
+extern Dwarf *dwarf_cu_getdwarf (Dwarf_CU *cu);
+
+/* Retrieves the DWARF descriptor for debugaltlink data. Returns NULL
+ if no alternate debug data has been supplied. */
+extern Dwarf *dwarf_getalt (Dwarf *main);
+
+/* Provides the data referenced by the .gnu_debugaltlink section. The
+ caller should check that MAIN and ALT match (i.e., they have the
+ same build ID). It is the responsibility of the caller to ensure
+ that the data referenced by ALT stays valid while it is used by
+ MAIN, until dwarf_setalt is called on MAIN with a different
+ descriptor, or dwarf_end. */
+extern void dwarf_setalt (Dwarf *main, Dwarf *alt);
+
/* Release debugging handling context. */
extern int dwarf_end (Dwarf *dwarf);
uint8_t *address_sizep, uint8_t *offset_sizep)
__nonnull_attribute__ (2);
+/* Return the CU DIE and the header info associated with a Dwarf_Die
+ or Dwarf_Attribute. A Dwarf_Die or a Dwarf_Attribute is associated
+ with a particular Dwarf_CU handle. This function returns the CU or
+ type unit DIE and header information for that Dwarf_CU. The
+ returned DIE is either a compile_unit, partial_unit or type_unit.
+ If it is a type_unit, then the type signature and type offset are
+ also provided, otherwise type_offset will be set to zero. See also
+ dwarf_diecu and dwarf_next_unit. */
+extern Dwarf_Die *dwarf_cu_die (Dwarf_CU *cu, Dwarf_Die *result,
+ Dwarf_Half *versionp,
+ Dwarf_Off *abbrev_offsetp,
+ uint8_t *address_sizep,
+ uint8_t *offset_sizep,
+ uint64_t *type_signaturep,
+ Dwarf_Off *type_offsetp)
+ __nonnull_attribute__ (2);
+
/* Return CU DIE containing given address. */
extern Dwarf_Die *dwarf_addrdie (Dwarf *dbg, Dwarf_Addr addr,
Dwarf_Die *result) __nonnull_attribute__ (3);
Dwarf_Op **exprs, size_t *exprlens,
size_t nlocs);
+/* Enumerate the locations ranges and descriptions covered by the
+ given attribute. In the first call OFFSET should be zero and
+ *BASEP need not be initialized. Returns -1 for errors, zero when
+ there are no more locations to report, or a nonzero OFFSET
+ value to pass to the next call. Each subsequent call must preserve
+ *BASEP from the prior call. Successful calls fill in *STARTP and
+ *ENDP with a contiguous address range and *EXPR with a pointer to
+ an array of operations with length *EXPRLEN. If the attribute
+ describes a single location description and not a location list the
+ first call (with OFFSET zero) will return the location description
+ in *EXPR with *STARTP set to zero and *ENDP set to minus one. */
+extern ptrdiff_t dwarf_getlocations (Dwarf_Attribute *attr,
+ ptrdiff_t offset, Dwarf_Addr *basep,
+ Dwarf_Addr *startp, Dwarf_Addr *endp,
+ Dwarf_Op **expr, size_t *exprlen);
+
/* Return the block associated with a DW_OP_implicit_value operation.
The OP pointer must point into an expression that dwarf_getlocation
or dwarf_getlocation_addr has returned given the same ATTR. */
Dwarf_Attribute *result)
__nonnull_attribute__ (2, 3);
+/* Return the DIE associated with an operation such as
+ DW_OP_GNU_implicit_pointer, DW_OP_GNU_parameter_ref, DW_OP_GNU_convert,
+ DW_OP_GNU_reinterpret, DW_OP_GNU_const_type, DW_OP_GNU_regval_type or
+ DW_OP_GNU_deref_type. The OP pointer must point into an expression that
+ dwarf_getlocation or dwarf_getlocation_addr has returned given the same
+ ATTR. The RESULT is a DIE that expresses a type or value needed by the
+ given OP. */
+extern int dwarf_getlocation_die (Dwarf_Attribute *attr,
+ const Dwarf_Op *op,
+ Dwarf_Die *result)
+ __nonnull_attribute__ (2, 3);
+
+/* Return the attribute expressing a value associated with an operation such
+ as DW_OP_implicit_value, DW_OP_GNU_entry_value or DW_OP_GNU_const_type.
+ The OP pointer must point into an expression that dwarf_getlocation
+ or dwarf_getlocation_addr has returned given the same ATTR.
+ The RESULT is a value expressed by an attribute such as DW_AT_location
+ or DW_AT_const_value. */
+extern int dwarf_getlocation_attr (Dwarf_Attribute *attr,
+ const Dwarf_Op *op,
+ Dwarf_Attribute *result)
+ __nonnull_attribute__ (2, 3);
+
/* Compute the byte-size of a type DIE according to DWARF rules.
For most types, this is just DW_AT_byte_size.
-/* Get functions in CUDIE. */
+/* Get functions in CUDIE. The given callback will be called for all
+ defining DW_TAG_subprograms in the CU DIE tree. If the callback
+ returns DWARF_CB_ABORT the return value can be used as offset argument
+ to resume the function to find all remaining functions (this is not
+ really recommended, since it needs to rewalk the CU DIE tree first till
+ that offset is found again). If the callback returns DWARF_CB_OK
+ dwarf_getfuncs will not return but keep calling the callback for each
+ function DIE it finds. Pass zero for offset on the first call to walk
+ the full CU DIE tree. If no more functions can be found and the callback
+ returned DWARF_CB_OK then the function returns zero. */
extern ptrdiff_t dwarf_getfuncs (Dwarf_Die *cudie,
int (*callback) (Dwarf_Die *, void *),
void *arg, ptrdiff_t offset);
dwfl_dwarf_line;
} ELFUTILS_0.148;
+
+ELFUTILS_0.156 {
+ global:
+ # Replaced ELFUTILS_0.122 version, which has a wrapper without add_p_vaddr.
+ dwfl_report_elf;
+} ELFUTILS_0.149;
+
+ELFUTILS_0.157 {
+ global:
+ dwarf_getlocations;
+ dwarf_getlocation_die;
+ dwarf_getlocation_attr;
+} ELFUTILS_0.156;
+
+ELFUTILS_0.158 {
+ global:
+ # Replaced ELFUTILS_0.146 version, which has a wrapper without executable.
+ dwfl_core_file_report;
+
+ dwfl_attach_state;
+ dwfl_pid;
+ dwfl_thread_dwfl;
+ dwfl_thread_tid;
+ dwfl_frame_thread;
+ dwfl_thread_state_registers;
+ dwfl_thread_state_register_pc;
+ dwfl_getthread_frames;
+ dwfl_getthreads;
+ dwfl_thread_getframes;
+ dwfl_frame_pc;
+
+ dwfl_module_getsymtab_first_global;
+ dwfl_module_addrinfo;
+ dwfl_module_getsym_info;
+
+ dwfl_core_file_attach;
+ dwfl_linux_proc_attach;
+} ELFUTILS_0.157;
+
+ELFUTILS_0.159 {
+ global:
+ dwarf_getalt;
+ dwarf_setalt;
+ dwelf_dwarf_gnu_debugaltlink;
+ dwelf_elf_gnu_debuglink;
+ dwelf_elf_gnu_build_id;
+} ELFUTILS_0.158;
+
+ELFUTILS_0.160 {
+ global:
+ dwarf_cu_getdwarf;
+ dwarf_cu_die;
+} ELFUTILS_0.159;
\ No newline at end of file
/* Internal definitions for libdwarf.
- Copyright (C) 2002-2011 Red Hat, Inc.
+ Copyright (C) 2002-2011, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
#include <stdbool.h>
#include <libdw.h>
+#include <dwarf.h>
/* gettext helper macros. */
IDX_debug_macinfo,
IDX_debug_macro,
IDX_debug_ranges,
+ IDX_gnu_debugaltlink,
IDX_last
};
/* If true, we allocated the ELF descriptor ourselves. */
bool free_elf;
- /* If true, we allocated the Dwarf descriptor for alt_dwarf ourselves. */
- bool free_alt;
-
/* Information for traversing the .debug_pubnames section. This is
an array and separately allocated with malloc. */
struct pubnames_s
__nonnull_attribute__ (1) internal_function;
/* Helper functions for form handling. */
-extern size_t __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu,
- unsigned int form,
- const unsigned char *valp)
+extern size_t __libdw_form_val_compute_len (Dwarf *dbg, struct Dwarf_CU *cu,
+ unsigned int form,
+ const unsigned char *valp)
__nonnull_attribute__ (1, 2, 4) internal_function;
+/* Find the length of a form attribute. */
+static inline size_t
+__nonnull_attribute__ (1, 2, 4)
+__libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu,
+ unsigned int form, const unsigned char *valp)
+{
+ /* Small lookup table of forms with fixed lengths. Absent indexes are
+ initialized 0, so any truly desired 0 is set to 0x80 and masked. */
+ static const uint8_t form_lengths[] =
+ {
+ [DW_FORM_flag_present] = 0x80,
+ [DW_FORM_data1] = 1, [DW_FORM_ref1] = 1, [DW_FORM_flag] = 1,
+ [DW_FORM_data2] = 2, [DW_FORM_ref2] = 2,
+ [DW_FORM_data4] = 4, [DW_FORM_ref4] = 4,
+ [DW_FORM_data8] = 8, [DW_FORM_ref8] = 8, [DW_FORM_ref_sig8] = 8,
+ };
+
+ /* Return immediately for forms with fixed lengths. */
+ if (form < sizeof form_lengths / sizeof form_lengths[0])
+ {
+ uint8_t len = form_lengths[form];
+ if (len != 0)
+ return len & 0x7f; /* Mask to allow 0x80 -> 0. */
+ }
+
+ /* Other forms require some computation. */
+ return __libdw_form_val_compute_len (dbg, cu, form, valp);
+}
+
/* Helper function for DW_FORM_ref* handling. */
extern int __libdw_formref (Dwarf_Attribute *attr, Dwarf_Off *return_offset)
__nonnull_attribute__ (1, 2) internal_function;
Dwarf_Off *offsetp)
internal_function;
-#ifdef ENABLE_DWZ
-/* Checks that the build_id of the underlying Elf matches the expected.
- Returns zero on match, -1 on error or no build_id found or 1 when
- build_id doesn't match. */
-int __check_build_id (Dwarf *dw, const uint8_t *build_id, const size_t id_len)
+/* Fills in the given attribute to point at an empty location expression. */
+void __libdw_empty_loc_attr (Dwarf_Attribute *attr, struct Dwarf_CU *cu)
internal_function;
-#endif /* ENABLE_DWZ */
/* Aliases to avoid PLTs. */
INTDECL (dwarf_formsdata)
INTDECL (dwarf_formstring)
INTDECL (dwarf_formudata)
+INTDECL (dwarf_getalt)
INTDECL (dwarf_getarange_addr)
INTDECL (dwarf_getarangeinfo)
INTDECL (dwarf_getaranges)
+INTDECL (dwarf_getlocation_die)
INTDECL (dwarf_getsrcfiles)
INTDECL (dwarf_getsrclines)
INTDECL (dwarf_hasattr)
INTDECL (dwarf_next_unit)
INTDECL (dwarf_offdie)
INTDECL (dwarf_ranges)
+INTDECL (dwarf_setalt)
INTDECL (dwarf_siblingof)
INTDECL (dwarf_srclang)
INTDECL (dwarf_tag)
newp->lines = NULL;
newp->locs = NULL;
+ if (debug_types)
+ Dwarf_Sig8_Hash_insert (&dbg->sig8_hash, type_sig8, newp);
+
/* Add the new entry to the search tree. */
if (tsearch (newp, tree, findcu_cb) == NULL)
{
size_t
internal_function
-__libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, unsigned int form,
- const unsigned char *valp)
+__libdw_form_val_compute_len (Dwarf *dbg, struct Dwarf_CU *cu,
+ unsigned int form, const unsigned char *valp)
{
const unsigned char *saved;
Dwarf_Word u128;
size_t result;
+ /* NB: This doesn't cover constant form lengths, which are
+ already handled by the inlined __libdw_form_val_len. */
switch (form)
{
case DW_FORM_addr:
result = u128 + (valp - saved);
break;
- case DW_FORM_flag_present:
- result = 0;
- break;
-
- case DW_FORM_ref1:
- case DW_FORM_data1:
- case DW_FORM_flag:
- result = 1;
- break;
-
- case DW_FORM_data2:
- case DW_FORM_ref2:
- result = 2;
- break;
-
- case DW_FORM_data4:
- case DW_FORM_ref4:
- result = 4;
- break;
-
- case DW_FORM_data8:
- case DW_FORM_ref8:
- case DW_FORM_ref_sig8:
- result = 8;
- break;
-
case DW_FORM_string:
result = strlen ((char *) valp) + 1;
break;
#include "libdwP.h"
#include <dwarf.h>
-enum die_class { ignore, match, match_inline, walk, imported };
-static enum die_class
-classify_die (Dwarf_Die *die)
+static bool
+may_have_scopes (Dwarf_Die *die)
{
switch (INTUSE(dwarf_tag) (die))
{
case DW_TAG_catch_block:
case DW_TAG_try_block:
case DW_TAG_entry_point:
- return match;
case DW_TAG_inlined_subroutine:
- return match_inline;
case DW_TAG_subprogram:
- /* This might be a concrete out-of-line instance of an inline, in
- which case it is not guaranteed to be owned by the right scope and
- we will search for its origin as for DW_TAG_inlined_subroutine. */
- return (INTUSE(dwarf_hasattr) (die, DW_AT_abstract_origin)
- ? match_inline : match);
+ return true;
/* DIEs without addresses that can own DIEs with addresses. */
case DW_TAG_namespace:
case DW_TAG_class_type:
case DW_TAG_structure_type:
- return walk;
-
- /* Special indirection required. */
- case DW_TAG_imported_unit:
- return imported;
+ return true;
/* Other DIEs we have no reason to descend. */
default:
break;
}
- return ignore;
+ return false;
}
int
void *arg;
{
struct Dwarf_Die_Chain child;
+ int ret;
child.parent = root;
- if (INTUSE(dwarf_child) (&root->die, &child.die) != 0)
- return -1;
+ if ((ret = INTUSE(dwarf_child) (&root->die, &child.die)) != 0)
+ return ret < 0 ? -1 : 0; // Having zero children is legal.
inline int recurse (void)
{
previsit, postvisit, arg);
}
- do
- {
- child.prune = false;
-
- if (previsit != NULL)
- {
- int result = (*previsit) (depth + 1, &child, arg);
- if (result != DWARF_CB_OK)
- return result;
- }
-
- if (!child.prune)
- switch (classify_die (&child.die))
+ inline int walk_children ()
+ {
+ do
+ {
+ /* For an imported unit, it is logically as if the children of
+ that unit are siblings of the other children. So don't do
+ a full recursion into the imported unit, but just walk the
+ children in place before moving to the next real child. */
+ while (INTUSE(dwarf_tag) (&child.die) == DW_TAG_imported_unit)
{
- case match:
- case match_inline:
- case walk:
- if (INTUSE(dwarf_haschildren) (&child.die))
+ Dwarf_Die orig_child_die = child.die;
+ Dwarf_Attribute attr_mem;
+ Dwarf_Attribute *attr = INTUSE(dwarf_attr) (&child.die,
+ DW_AT_import,
+ &attr_mem);
+ if (INTUSE(dwarf_formref_die) (attr, &child.die) != NULL
+ && INTUSE(dwarf_child) (&child.die, &child.die) == 0)
{
- int result = recurse ();
+ int result = walk_children ();
if (result != DWARF_CB_OK)
return result;
}
- break;
-
- case imported:
- {
- /* This imports another compilation unit to appear
- as part of this one, inside the current scope.
- Recurse to search the referenced unit, but without
- recording it as an inner scoping level. */
-
- Dwarf_Attribute attr_mem;
- Dwarf_Attribute *attr = INTUSE(dwarf_attr) (&child.die,
- DW_AT_import,
- &attr_mem);
- if (INTUSE(dwarf_formref_die) (attr, &child.die) != NULL)
- {
- int result = recurse ();
- if (result != DWARF_CB_OK)
- return result;
- }
- }
- break;
-
- default:
- break;
+
+ /* Any "real" children left? */
+ if ((ret = INTUSE(dwarf_siblingof) (&orig_child_die,
+ &child.die)) != 0)
+ return ret < 0 ? -1 : 0;
+ };
+
+ child.prune = false;
+
+ if (previsit != NULL)
+ {
+ int result = (*previsit) (depth + 1, &child, arg);
+ if (result != DWARF_CB_OK)
+ return result;
}
- if (postvisit != NULL)
- {
- int result = (*postvisit) (depth + 1, &child, arg);
- if (result != DWARF_CB_OK)
- return result;
- }
- }
- while (INTUSE(dwarf_siblingof) (&child.die, &child.die) == 0);
+ if (!child.prune && may_have_scopes (&child.die)
+ && INTUSE(dwarf_haschildren) (&child.die))
+ {
+ int result = recurse ();
+ if (result != DWARF_CB_OK)
+ return result;
+ }
+
+ if (postvisit != NULL)
+ {
+ int result = (*postvisit) (depth + 1, &child, arg);
+ if (result != DWARF_CB_OK)
+ return result;
+ }
+ }
+ while ((ret = INTUSE(dwarf_siblingof) (&child.die, &child.die)) == 0);
+
+ return ret < 0 ? -1 : 0;
+ }
- return 0;
+ return walk_children ();
}
/* Unaligned memory access functionality.
- Copyright (C) 2000-2010 Red Hat, Inc.
+ Copyright (C) 2000-2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2001.
/* Number decoding macros. See 7.6 Variable Length Data. */
-#define get_uleb128_step(var, addr, nth, break) \
- __b = *(addr)++; \
- var |= (uintmax_t) (__b & 0x7f) << (nth * 7); \
- if (likely ((__b & 0x80) == 0)) \
- break
-
-#define get_uleb128(var, addr) \
- do { \
- unsigned char __b; \
- var = 0; \
- get_uleb128_step (var, addr, 0, break); \
- var = __libdw_get_uleb128 (var, 1, &(addr)); \
- } while (0)
+#define len_leb128(var) ((8 * sizeof (var) + 6) / 7)
-#define get_uleb128_rest_return(var, i, addrp) \
+#define get_uleb128_step(var, addr, nth) \
do { \
- for (; i < 10; ++i) \
- { \
- get_uleb128_step (var, *addrp, i, return var); \
- } \
- /* Other implementations set VALUE to UINT_MAX in this \
- case. So we better do this as well. */ \
- return UINT64_MAX; \
+ unsigned char __b = *(addr)++; \
+ (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7); \
+ if (likely ((__b & 0x80) == 0)) \
+ return (var); \
} while (0)
-/* The signed case is similar, but we sign-extend the result. */
+static inline uint64_t
+__libdw_get_uleb128 (const unsigned char **addrp)
+{
+ uint64_t acc = 0;
+ /* Unroll the first step to help the compiler optimize
+ for the common single-byte case. */
+ get_uleb128_step (acc, *addrp, 0);
+ for (unsigned int i = 1; i < len_leb128 (acc); ++i)
+ get_uleb128_step (acc, *addrp, i);
+ /* Other implementations set VALUE to UINT_MAX in this
+ case. So we better do this as well. */
+ return UINT64_MAX;
+}
-#define get_sleb128_step(var, addr, nth, break) \
- __b = *(addr)++; \
- _v |= (uint64_t) (__b & 0x7f) << (nth * 7); \
- if (likely ((__b & 0x80) == 0)) \
- { \
- var = (_v << (64 - (nth * 7) - 7)) >> (64 - (nth * 7) - 7); \
- break; \
- } \
- else do {} while (0)
+#define get_uleb128(var, addr) ((var) = __libdw_get_uleb128 (&(addr)))
-#define get_sleb128(var, addr) \
- do { \
- unsigned char __b; \
- int64_t _v = 0; \
- get_sleb128_step (var, addr, 0, break); \
- var = __libdw_get_sleb128 (_v, 1, &(addr)); \
- } while (0)
+/* The signed case is similar, but we sign-extend the result. */
-#define get_sleb128_rest_return(var, i, addrp) \
+#define get_sleb128_step(var, addr, nth) \
do { \
- for (; i < 9; ++i) \
+ unsigned char __b = *(addr)++; \
+ if (likely ((__b & 0x80) == 0)) \
{ \
- get_sleb128_step (var, *addrp, i, return var); \
+ struct { signed int i:7; } __s = { .i = __b }; \
+ (var) |= (typeof (var)) __s.i * ((typeof (var)) 1 << ((nth) * 7)); \
+ return (var); \
} \
- __b = *(*addrp)++; \
- if (likely ((__b & 0x80) == 0)) \
- return var | ((uint64_t) __b << 63); \
- else \
- /* Other implementations set VALUE to INT_MAX in this \
- case. So we better do this as well. */ \
- return INT64_MAX; \
+ (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7); \
} while (0)
-#ifdef IS_LIBDW
-extern uint64_t __libdw_get_uleb128 (uint64_t acc, unsigned int i,
- const unsigned char **addrp)
- internal_function attribute_hidden;
-extern int64_t __libdw_get_sleb128 (int64_t acc, unsigned int i,
- const unsigned char **addrp)
- internal_function attribute_hidden;
-#else
-static inline uint64_t
-__attribute__ ((unused))
-__libdw_get_uleb128 (uint64_t acc, unsigned int i, const unsigned char **addrp)
-{
- unsigned char __b;
- get_uleb128_rest_return (acc, i, addrp);
-}
static inline int64_t
-__attribute__ ((unused))
-__libdw_get_sleb128 (int64_t acc, unsigned int i, const unsigned char **addrp)
+__libdw_get_sleb128 (const unsigned char **addrp)
{
- unsigned char __b;
- int64_t _v = acc;
- get_sleb128_rest_return (acc, i, addrp);
+ int64_t acc = 0;
+ /* Unrolling 0 like uleb128 didn't prove to benefit optimization. */
+ for (unsigned int i = 0; i < len_leb128 (acc); ++i)
+ get_sleb128_step (acc, *addrp, i);
+ /* Other implementations set VALUE to INT_MAX in this
+ case. So we better do this as well. */
+ return INT64_MAX;
}
-#endif
+
+#define get_sleb128(var, addr) ((var) = __libdw_get_sleb128 (&(addr)))
/* We use simple memory access functions in case the hardware allows it.
? (int32_t) bswap_32 (*((const int32_t *) (Addr))) \
: *((const int32_t *) (Addr)))
+# define read_8ubyte_unaligned_noncvt(Addr) \
+ *((const uint64_t *) (Addr))
# define read_8ubyte_unaligned(Dbg, Addr) \
(unlikely ((Dbg)->other_byte_order) \
? bswap_64 (*((const uint64_t *) (Addr))) \
}
static inline uint64_t
+read_8ubyte_unaligned_noncvt (const void *p)
+{
+ const union unaligned *up = p;
+ return up->u8;
+}
+static inline uint64_t
read_8ubyte_unaligned_1 (bool other_byte_order, const void *p)
{
const union unaligned *up = p;
--- /dev/null
+2014-04-30 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (AM_CPPFLAGS): Add libdwfl and libebl include dirs.
+ (libdwelf_a_SOURCES): Add dwelf_elf_gnu_build_id.c
+ * dwelf_elf_gnu_build_id.c: New file. Moved libdwfl function
+ __libdwfl_find_elf_build_id here.
+ * libdwelf.h (dwelf_elf_gnu_build_id): Declare new function.
+ * libdwelfP.h (dwelf_elf_gnu_build_id): Add internal declaration.
+
+2014-04-24 Florian Weimer <fweimer@redhat.com>
+
+ * dwelf_dwarf_gnu_debugaltlink.c: New file.
+ * Makefile.am (libdwelf_a_SOURCES): Add it.
+ * libdwelf.h (dwelf_dwarf_gnu_debugaltlink): Declare new function.
+ * libdwelfP.h (dwelf_dwarf_gnu_debugaltlink): Add internal
+ declaration.
+
+2014-04-11 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: New file.
+ * libdwelf.h: Likewise.
+ * libdwelfP.h: Likewise.
+ * dwelf_elf_gnu_debuglink.c: Likewise.
--- /dev/null
+## Makefile.am for libdwelf library subdirectory in elfutils.
+##
+## Process this file with automake to create Makefile.in
+##
+## Copyright (C) 2014 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/>.
+##
+include $(top_srcdir)/config/eu.am
+AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libdw \
+ -I$(srcdir)/../libdwfl -I$(srcdir)/../libebl
+VERSION = 1
+
+noinst_LIBRARIES = libdwelf.a libdwelf_pic.a
+
+pkginclude_HEADERS = libdwelf.h
+noinst_HEADERS = libdwelfP.h
+
+libdwelf_a_SOURCES = dwelf_elf_gnu_debuglink.c dwelf_dwarf_gnu_debugaltlink.c \
+ dwelf_elf_gnu_build_id.c
+
+libdwelf = $(libdw)
+
+libdw = ../libdw/libdw.so
+libelf = ../libelf/libelf.so
+libebl = ../libebl/libebl.a
+libeu = ../lib/libeu.a
+
+libdwelf_pic_a_SOURCES =
+am_libdwelf_pic_a_OBJECTS = $(libdwelf_a_SOURCES:.c=.os)
+
+CLEANFILES += $(am_libdwelf_pic_a_OBJECTS)
--- /dev/null
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
+subdir = libdwelf
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libdwelf_a_AR = $(AR) $(ARFLAGS)
+libdwelf_a_LIBADD =
+am_libdwelf_a_OBJECTS = dwelf_elf_gnu_debuglink.$(OBJEXT) \
+ dwelf_dwarf_gnu_debugaltlink.$(OBJEXT) \
+ dwelf_elf_gnu_build_id.$(OBJEXT)
+libdwelf_a_OBJECTS = $(am_libdwelf_a_OBJECTS)
+libdwelf_pic_a_AR = $(AR) $(ARFLAGS)
+libdwelf_pic_a_LIBADD =
+libdwelf_pic_a_OBJECTS = $(am_libdwelf_pic_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libdwelf_a_SOURCES) $(libdwelf_pic_a_SOURCES)
+DIST_SOURCES = $(libdwelf_a_SOURCES) $(libdwelf_pic_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkgincludedir)"
+HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUGPRED = @DEBUGPRED@
+DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBEBL_SUBDIR = @LIBEBL_SUBDIR@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MODVERSION = @MODVERSION@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+READELF = @READELF@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = 1
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+base_cpu = @base_cpu@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+eu_version = @eu_version@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+zip_LIBS = @zip_LIBS@
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+ -I$(srcdir)/../libelf -I$(srcdir)/../libdw \
+ -I$(srcdir)/../libdwfl -I$(srcdir)/../libebl
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ $(if $($(*F)_no_Werror),,-Werror) \
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+ $($(*F)_CFLAGS)
+
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+CLEANFILES = *.gcno *.gcda $(am_libdwelf_pic_a_OBJECTS)
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+noinst_LIBRARIES = libdwelf.a libdwelf_pic.a
+pkginclude_HEADERS = libdwelf.h
+noinst_HEADERS = libdwelfP.h
+libdwelf_a_SOURCES = dwelf_elf_gnu_debuglink.c dwelf_dwarf_gnu_debugaltlink.c \
+ dwelf_elf_gnu_build_id.c
+
+libdwelf = $(libdw)
+libdw = ../libdw/libdw.so
+libelf = ../libelf/libelf.so
+libebl = ../libebl/libebl.a
+libeu = ../lib/libeu.a
+libdwelf_pic_a_SOURCES =
+am_libdwelf_pic_a_OBJECTS = $(libdwelf_a_SOURCES:.c=.os)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/eu.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libdwelf/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnits libdwelf/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/config/eu.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+libdwelf.a: $(libdwelf_a_OBJECTS) $(libdwelf_a_DEPENDENCIES) $(EXTRA_libdwelf_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libdwelf.a
+ $(AM_V_AR)$(libdwelf_a_AR) libdwelf.a $(libdwelf_a_OBJECTS) $(libdwelf_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdwelf.a
+
+libdwelf_pic.a: $(libdwelf_pic_a_OBJECTS) $(libdwelf_pic_a_DEPENDENCIES) $(EXTRA_libdwelf_pic_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libdwelf_pic.a
+ $(AM_V_AR)$(libdwelf_pic_a_AR) libdwelf_pic.a $(libdwelf_pic_a_OBJECTS) $(libdwelf_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdwelf_pic.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwelf_dwarf_gnu_debugaltlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwelf_elf_gnu_build_id.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwelf_elf_gnu_debuglink.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkgincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkgincludeHEADERS install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-pkgincludeHEADERS
+
+
+%.os: %.c %.o
+@AMDEP_TRUE@ if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \
+@AMDEP_TRUE@ -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \
+@AMDEP_TRUE@ then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \
+@AMDEP_TRUE@ rm -f "$(DEPDIR)/$*.Tpo"; \
+@AMDEP_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@AMDEP_TRUE@ fi
+@AMDEP_FALSE@ $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+/* Returns the file name and build ID stored in the .gnu_altdebuglink if found.
+ Copyright (C) 2014 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
+
+#include "libdwelfP.h"
+
+ssize_t
+dwelf_dwarf_gnu_debugaltlink (Dwarf *dwarf,
+ const char **name_p,
+ const void **build_idp)
+{
+ Elf_Data *data = dwarf->sectiondata[IDX_gnu_debugaltlink];
+ if (data == NULL)
+ {
+ return 0;
+ }
+
+ const void *ptr = memchr (data->d_buf, '\0', data->d_size);
+ if (ptr == NULL)
+ {
+ __libdw_seterrno (DWARF_E_INVALID_ELF);
+ return -1;
+ }
+ size_t build_id_len = data->d_size - (ptr - data->d_buf + 1);
+ if (build_id_len == 0 || (size_t) (ssize_t) build_id_len != build_id_len)
+ {
+ __libdw_seterrno (DWARF_E_INVALID_ELF);
+ return -1;
+ }
+ *name_p = data->d_buf;
+ *build_idp = ptr + 1;
+ return build_id_len;
+}
+INTDEF(dwelf_dwarf_gnu_debugaltlink)
--- /dev/null
+/* Returns the build id if found in a NT_GNU_BUILD_ID note.
+ Copyright (C) 2014 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
+
+#include "libdwelfP.h"
+#include "libdwflP.h"
+
+#define NO_VADDR ((GElf_Addr) -1l)
+
+/* Defined here for reuse. The dwelf interface doesn't care about the
+ address of the note, but libdwfl does. */
+static int
+find_elf_build_id (Dwfl_Module *mod, int e_type, Elf *elf,
+ const void **build_id_bits, GElf_Addr *build_id_elfaddr,
+ int *build_id_len)
+{
+ int check_notes (Elf_Data *data, GElf_Addr data_elfaddr)
+ {
+ size_t pos = 0;
+ GElf_Nhdr nhdr;
+ size_t name_pos;
+ size_t desc_pos;
+ while ((pos = gelf_getnote (data, pos, &nhdr, &name_pos, &desc_pos)) > 0)
+ if (nhdr.n_type == NT_GNU_BUILD_ID
+ && nhdr.n_namesz == sizeof "GNU" && !memcmp (data->d_buf + name_pos,
+ "GNU", sizeof "GNU"))
+ {
+ *build_id_bits = data->d_buf + desc_pos;
+ *build_id_elfaddr = (data_elfaddr == NO_VADDR
+ ? 0 : data_elfaddr + desc_pos);
+ *build_id_len = nhdr.n_descsz;
+ return 1;
+ }
+ return 0;
+ }
+
+ size_t shstrndx = SHN_UNDEF;
+ int result = 0;
+
+ Elf_Scn *scn = elf_nextscn (elf, NULL);
+
+ if (scn == NULL)
+ {
+ /* No sections, have to look for phdrs. */
+ size_t phnum;
+ if (unlikely (elf_getphdrnum (elf, &phnum) != 0))
+ {
+ if (mod != NULL)
+ __libdwfl_seterrno (DWFL_E_LIBELF);
+ return -1;
+ }
+ for (size_t i = 0; result == 0 && i < phnum; ++i)
+ {
+ GElf_Phdr phdr_mem;
+ GElf_Phdr *phdr = gelf_getphdr (elf, i, &phdr_mem);
+ if (likely (phdr != NULL) && phdr->p_type == PT_NOTE)
+ result = check_notes (elf_getdata_rawchunk (elf,
+ phdr->p_offset,
+ phdr->p_filesz,
+ ELF_T_NHDR),
+ phdr->p_vaddr);
+ }
+ }
+ else
+ do
+ {
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+ if (likely (shdr != NULL) && shdr->sh_type == SHT_NOTE)
+ {
+ /* Determine the right sh_addr in this module. */
+ GElf_Addr vaddr = 0;
+ if (!(shdr->sh_flags & SHF_ALLOC))
+ vaddr = NO_VADDR;
+ else if (mod == NULL || e_type != ET_REL)
+ vaddr = shdr->sh_addr;
+ else if (__libdwfl_relocate_value (mod, elf, &shstrndx,
+ elf_ndxscn (scn), &vaddr))
+ vaddr = NO_VADDR;
+ result = check_notes (elf_getdata (scn, NULL), vaddr);
+ }
+ }
+ while (result == 0 && (scn = elf_nextscn (elf, scn)) != NULL);
+
+ return result;
+}
+
+int
+internal_function
+__libdwfl_find_elf_build_id (Dwfl_Module *mod, Elf *elf,
+ const void **build_id_bits,
+ GElf_Addr *build_id_elfaddr, int *build_id_len)
+{
+ GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem);
+ if (unlikely (ehdr == NULL))
+ {
+ __libdwfl_seterrno (DWFL_E_LIBELF);
+ return -1;
+ }
+ // MOD->E_TYPE is zero here.
+ assert (ehdr->e_type != ET_REL || mod != NULL);
+
+ return find_elf_build_id (mod, ehdr->e_type, elf,
+ build_id_bits, build_id_elfaddr, build_id_len);
+}
+
+ssize_t
+dwelf_elf_gnu_build_id (Elf *elf, const void **build_idp)
+{
+ GElf_Addr build_id_elfaddr;
+ int build_id_len;
+ int result = find_elf_build_id (NULL, ET_NONE, elf, build_idp,
+ &build_id_elfaddr, &build_id_len);
+ if (result > 0)
+ return build_id_len;
+
+ return result;
+}
+INTDEF(dwelf_elf_gnu_build_id)
--- /dev/null
+/* Returns the file name and crc stored in the .gnu_debuglink if found.
+ Copyright (C) 2014 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
+
+#include "libdwelfP.h"
+
+const char *
+dwelf_elf_gnu_debuglink (Elf *elf, GElf_Word *crc)
+{
+ size_t shstrndx;
+ if (elf_getshdrstrndx (elf, &shstrndx) < 0)
+ return NULL;
+
+ Elf_Scn *scn = NULL;
+ while ((scn = elf_nextscn (elf, scn)) != NULL)
+ {
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+ if (shdr == NULL)
+ return NULL;
+
+ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
+ if (name == NULL)
+ return NULL;
+
+ if (!strcmp (name, ".gnu_debuglink"))
+ break;
+ }
+
+ if (scn == NULL)
+ return NULL;
+
+ /* Found the .gnu_debuglink section. Extract its contents. */
+ Elf_Data *rawdata = elf_rawdata (scn, NULL);
+ if (rawdata == NULL)
+ return NULL;
+
+ /* The CRC comes after the zero-terminated file name,
+ (aligned up to 4 bytes) at the end of the section data. */
+ if (rawdata->d_size <= sizeof *crc
+ || memchr (rawdata->d_buf, '\0', rawdata->d_size - sizeof *crc) == NULL)
+ return NULL;
+
+ Elf_Data crcdata =
+ {
+ .d_type = ELF_T_WORD,
+ .d_buf = crc,
+ .d_size = sizeof *crc,
+ .d_version = EV_CURRENT,
+ };
+ Elf_Data conv =
+ {
+ .d_type = ELF_T_WORD,
+ .d_buf = rawdata->d_buf + rawdata->d_size - sizeof *crc,
+ .d_size = sizeof *crc,
+ .d_version = EV_CURRENT,
+ };
+
+ GElf_Ehdr ehdr_mem;
+ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
+ if (ehdr == NULL)
+ return NULL;
+
+ Elf_Data *d = gelf_xlatetom (elf, &crcdata, &conv, ehdr->e_ident[EI_DATA]);
+ if (d == NULL)
+ return NULL;
+ assert (d == &crcdata);
+
+ return rawdata->d_buf;
+}
+INTDEF(dwelf_elf_gnu_debuglink)
--- /dev/null
+/* Interfaces for libdwelf. DWARF ELF Low-level Functions.
+ Copyright (C) 2014 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/>. */
+
+#ifndef _LIBDWELF_H
+#define _LIBDWELF_H 1
+
+#include "libdw.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DWARF ELF Low-level Functions (dwelf).
+ Functions starting with dwelf_elf will take a (libelf) Elf object as
+ first argument and might set elf_errno on error. Functions starting
+ with dwelf_dwarf will take a (libdw) Dwarf object as first argument
+ and might set dwarf_errno on error. */
+
+/* Returns the name and the CRC32 of the separate debug file from the
+ .gnu_debuglink section if found in the ELF. Return NULL if the ELF
+ file didn't have a .gnu_debuglink section, had malformed data in the
+ section or some other error occured. */
+extern const char *dwelf_elf_gnu_debuglink (Elf *elf, GElf_Word *crc);
+
+/* Returns the name and build ID from the .gnu_debugaltlink section if
+ found in the ELF. On success, pointers to the name and build ID
+ are written to *NAMEP and *BUILDID_P, and the positive length of
+ the build ID is returned. Returns 0 if the ELF lacks a
+ .gnu_debugaltlink section. Returns -1 in case of malformed data or
+ other errors. */
+extern ssize_t dwelf_dwarf_gnu_debugaltlink (Dwarf *dwarf,
+ const char **namep,
+ const void **build_idp);
+
+/* Returns the build ID as found in a NT_GNU_BUILD_ID note from either
+ a SHT_NOTE section or from a PT_NOTE segment if the ELF file
+ doesn't contain any section headers. On success a pointer to the
+ build ID is written to *BUILDID_P, and the positive length of the
+ build ID is returned. Returns 0 if the ELF lacks a NT_GNU_BUILD_ID
+ note. Returns -1 in case of malformed data or other errors. */
+extern ssize_t dwelf_elf_gnu_build_id (Elf *elf, const void **build_idp);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* libdwelf.h */
--- /dev/null
+/* Internal definitions for libdwelf. DWARF ELF Low-level Functions.
+ Copyright (C) 2014 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/>. */
+
+#ifndef _LIBDWELFP_H
+#define _LIBDWELFP_H 1
+
+#include <libdwelf.h>
+#include "../libdw/libdwP.h" /* We need its INTDECLs. */
+#include <assert.h>
+#include <string.h>
+
+/* Avoid PLT entries. */
+INTDECL (dwelf_elf_gnu_debuglink)
+INTDECL (dwelf_dwarf_gnu_debugaltlink)
+INTDECL (dwelf_elf_gnu_build_id)
+
+#endif /* libdwelfP.h */
+2014-08-14 Mark Wielaard <mjw@redhat.com>
+
+ * linux-kernel-modules.c (check-suffix): Also TRY .ko.xz.
+
+2014-07-24 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix report_r_debug for prelinked libraries.
+ * link_map.c (report_r_debug): Comment out variable l_addr.
+ Use instead new variable base recalculated from l_ld.
+
+2014-06-24 Kurt Roeckx <kurt@roeckx.be>
+
+ * linux-pid-attach.c: Make it build on non linux hosts.
+
+2014-06-17 Mark Wielaard <mjw@redhat.com>
+
+ * frame_unwind.c (handle_cfi): Use ebl_func_addr_mask.
+ * dwfl_module_getsym.c (__libdwfl_getsym): Likewise.
+
+2014-06-15 Mark Wielaard <mjw@redhat.com>
+
+ * linux-core-attach.c (core_memory_read): Use libdw/memory-access.h
+ macros read_4ubyte_unaligned_noncvt and read_8ubyte_unaligned_noncvt
+ to read possibly unaligned data.
+ (core_next_thread): Likewise.
+ (core_set_initial_registers): Likewise.
+ (dwfl_core_file_attach): Likewise.
+
+2014-06-11 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_frame.c (__libdwfl_process_free): Reset dwfl->attacherr.
+ (dwfl_attach_state): Set dwfl->attacherr.
+ (dwfl_pid): Check and return dwfl->attacherr if set.
+ (dwfl_getthreads): Likewise.
+ (getthread): Likewise.
+ * libdwflP.h: Add DWFL_E_NO_CORE_FILE.
+ (struct Dwfl): Add attacherr field.
+ * linux-core-attach.c (dwfl_core_file_attach): Set dwfl->attacherr.
+ Don't assert if ELF file is not ET_CORE, just return error.
+ * linux-pid-attach.c (dwfl_linux_proc_attach): Set dwfl->attacherr.
+
+2014-06-10 Mark Wielaard <mjw@redhat.com>
+
+ * argp-std.c (parse_opt): Ignore errors from dwfl_core_file_attach
+ or dwfl_linux_proc_attach.
+
+2014-05-15 Mark Wielaard <mjw@redhat.com>
+
+ * linux-proc-maps.c (grovel_auxv): Close fd on error.
+
+2014-05-02 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_module_getdwarf: Remove ENABLE_DWZ ifdefs so find_debug_altlink
+ is always called.
+
+2014-05-01 Mark Wielaard <mjw@redhat.com>
+
+ * libdwflP.h (struct Dwfl_Module): Add alt, alt_fd and alt_elf fields.
+ (__libdwfl_open_mod_by_build_id): Renamed __libdwfl_open_by_build_id.
+ (__libdwfl_open_by_build_id): New declaration that takes an explicit
+ build-id.
+ * dwfl_build_id_find_debuginfo.c (dwfl_build_id_find_debuginfo): If
+ we already have the Dwarf then look for the alt dwz multi file by
+ build-id.
+ * dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Add the
+ build-id we are looking for as argument.
+ (__libdwfl_open_mod_by_build_id): New function, calls
+ __libdwfl_open_by_build_id.
+ (dwfl_build_id_find_elf): Call __libdwfl_open_mod_by_build_id.
+ * dwfl_module.c (__libdwfl_module_free): Release alt, alt_elf and
+ close alt_fd if necessary.
+ * dwfl_module_getdwarf.c (__check_build_id): Removed.
+ (try_debugaltlink): Removed.
+ (open_debugaltlink): Removed.
+ (open_elf_file): First half of open_elf that just opens the elf
+ file but doesn't setup the load address.
+ (open_elf): Call open_elf_file.
+ (find_debug_altlink): New function.
+ (load_dw): Remove loading of dwz multifile.
+ (find_dw): Call find_debug_altlink.
+ * find-debuginfo.c (validate): Handle alt debug case using
+ dwelf_dwarf_gnu_debugaltlink and mod->alt_elf.
+ (find_debuginfo_in_path): Handle alt debug files possibly in .dwz
+ subdirs.
+ * linux-kernel-modules.c (try_kernel_name): Use fakemod.debug.name
+ to store name to find by dwfl_standard_find_debuginfo instead of
+ allocating an extra variable on stack.
+
+2014-04-30 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_module_build_id.c (__libdwfl_find_elf_build_id): Moved to
+ dwelf_elf_gnu_build_id.c.
+ (__libdwfl_find_build_id): Add assert to make sure mod is never NULL.
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): Call
+ dwelf_elf_gnu_build_id directly instead of __libdwfl_find_build_id.
+ * dwfl_module_getdwarf.c (__check_build_id): Implement using
+ dwelf_elf_gnu_build_id.
+
+2014-04-15 Florian Weimer <fweimer@redhat.com>
+
+ * dwfl_module_getdwarf.c (__check_build_id): Moved from libdw.
+ (try_debugaltlink): Likewise.
+ (open_debugaltlink): Likewise.
+ (load_dw): Locate alternate debug information using
+ dwelf_dwarf_gnu_debugaltlink and call open_debugaltlink.
+
+2014-04-11 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (AM_CPPFLAGS): Add libdwelf.
+ * libdwflP.h: Include libdwelfP.h.
+ * dwfl_module_getdwarf.c (find_debuglink): Moved to libdwelf.
+ (find_debuginfo): Use dwelf_elf_gnu_debuglink.
+
+2014-04-22 Mark Wielaard <mjw@redhat.com>
+
+ * frame_unwind.c (__libdwfl_frame_reg_get): Use uint64_t when
+ checking bits.
+ (__libdwfl_frame_reg_set): Likewise.
+
+2014-04-22 Kurt Roeckx <kurt@roeckx.be>
+
+ * linux-pid-attach.c: Make linux only.
+
+2014-03-14 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Remove !MUDFLAP and MUDFLAP conditions.
+ Remove libelf and libdw definitions when MUDFLAP is defined.
+ * argp-std.c (__libdwfl_argp_mudflap_options): Removed.
+
+2014-03-03 Mark Wielaard <mjw@redhat.com>
+
+ * elf-from-memory.c (elf_from_remote_memory): Keep track of
+ segments_end_mem. Pass memsz to first handle_segment pass. Only
+ extend contents_size and use shdrs if only file bits are in
+ segment.
+
+2014-03-11 Josh Stone <jistone@redhat.com>
+
+ * dwfl_module_getdwarf.c (open_elf): Only explicitly set
+ mod->e_type when processing the main ELF file.
+
+2014-03-04 Mark Wielaard <mjw@redhat.com>
+
+ * libdwflP.h (struct __libdwfl_pid_arg): Moved here and renamed from
+ linux-pid-attach.c (struct pid_arg).
+ (__libdwfl_get_pid_arg): New internal function declaration.
+ (__libdwfl_ptrace_attach): Likewise.
+ (__libdwfl_ptrace_detach): Likewise.
+ * dwfl_frame.c (dwfl_attach_state): Add "(deleted)" files to the
+ special exception modules that cannot be checked at this point.
+ * linux-pid-attach.c (struct pid_arg): Moved to libdwflP.h
+ (ptrace_attach): Renamed to...
+ (__libdwfl_ptrace_attach): New internal function.
+ (__libdwfl_ptrace_detach): Likewise. Extracted from ...
+ (pid_thread_detach): Call __libdwfl_ptrace_detach now.
+ (__libdwfl_get_pid_arg): New internal function.
+ * linux-proc-maps.c (dwfl_linux_proc_find_elf): Check if special
+ module name contains "(deleted)" and dwfl_pid gives an attached
+ pid. If pid is set and try to (re)use ptrace attach state of
+ process before reading memory.
+
+2014-03-03 Mark Wielaard <mjw@redhat.com>
+
+ * elf-from-memory.c (elf_from_remote_memory): Take pagesize as
+ argument. Free buffer when detecting bad elf. Check PT_LOAD
+ alignment requirements on first handle_segment pass. Calculate
+ loadbase, start and end of segment using pagesize, not p_align.
+ * linux-proc-maps.c (dwfl_linux_proc_find_elf): Provide pagesize
+ to elf_from_remote_memory.
+
+2014-02-26 Mark Wielaard <mjw@redhat.com>
+
+ * linux-proc-maps.c (proc_maps_report): Don't assert on bad input.
+
+2014-02-26 Mark Wielaard <mjw@redhat.com>
+
+ * elf-from-memory.c (elf_from_remote_memory): Check against p64
+ p_type in case ELFCLASS64, not against p32 p_type.
+
+2014-01-17 Petr Machata <pmachata@redhat.com>
+
+ * relocate.c (relocate_section): Use gelf_fsize instead of relying
+ on shdr->sh_entsize.
+
+2014-01-05 Mark Wielaard <mjw@redhat.com>
+
+ * frame_unwind.c (handle_cfi): Only skip resetting return register
+ if the regno is not the actual CIE return address register.
+
+2014-01-02 Mark Wielaard <mjw@redhat.com>
+
+ * linux-pid-attach.c (dwfl_linux_proc_attach): Use strtol, not atoi.
+
+2013-12-30 Mark Wielaard <mjw@redhat.com>
+
+ * argp-std.c (parse_opt): Call dwfl_linux_proc_attach and
+ dwfl_core_file_attach explicitly.
+ * core-file.c (dwfl_core_file_report): Don't call
+ __libdwfl_attach_state_for_core implicitly.
+ * dwfl_begin.c (dwfl_begin): Remove setting of process_attach_error.
+ * dwfl_frame.c (dwfl_pid): Set errno to DWFL_E_NO_ATTACH_STATE, not
+ process_attach_error.
+ (dwfl_getthreads): Likewise.
+ (getthread): Likewise.
+ * libdwfl.h (dwfl_core_file_report): Update documentation.
+ (dwfl_linux_proc_report): Likewise.
+ (dwfl_core_file_attach): New function declaration.
+ (dwfl_linux_proc_attach): Likewise.
+ * libdwflP.h (struct Dwfl): Remove process_attach_error.
+ (__libdwfl_attach_state_for_pid): Removed declaration.
+ (__libdwfl_attach_state_for_core): Likewise.
+ (dwfl_core_file_attach): New internal declaration.
+ (dwfl_linux_proc_attach): Likewise.
+ (attach_state_for_core): Renamed to...
+ (dwfl_core_file_attach): ...this. Change return type.
+ (__libdwfl_attach_state_for_core): Removed.
+ * linux-pid-attach.c (struct pid_arg): Add assume_ptrace_stopped.
+ (pid_set_initial_registers): Check assume_ptrace_stopped before
+ calling ptrace.
+ (pid_thread_detach): Likewise.
+ (__libdwfl_attach_state_for_pid): Renamed to...
+ (dwfl_linux_proc_attach): ...this. Adjust return type.
+ * linux-proc-maps.c (dwfl_linux_proc_report): Don't call
+ __libdwfl_attach_state_for_pid implicitly.
+
+2013-12-28 Mark Wielaard <mjw@redhat.com>
+
+ * linux-proc-maps.c (dwfl_linux_proc_find_elf): Don't return special
+ character device files, only regular files.
+
+2013-12-24 Mark Wielaard <mjw@redhat.com>
+
+ * linux-core-attach.c (core_next_thread): Check whether thread_argp
+ is NULL. Reset core_arg->thread_note_offset and malloc a thread_arg
+ in that case. Free thread_arg if there are no more threads.
+
+2013-12-23 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): Free
+ build_id before returning early.
+
+2013-12-23 Mark Wielaard <mjw@redhat.com>
+
+ * linux-pid-attach.c (__libdwfl_attach_state_for_pid): Report actual
+ pid (thread group leader) to dwfl_attach_state.
+
+2013-12-21 Mark Wielaard <mjw@redhat.com>
+
+ * frame_unwind.c (handle_cfi): Track whether the return register
+ has been set and only allow it to be set once.
+
+2013-12-20 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_frame.c (one_arg): New struct.
+ (get_one_thread_cb): New function.
+ (dwfl_getthread): Likewise.
+ (one_thread): New struct.
+ (get_one_thread_frames_cb): New function.
+ (dwfl_getthread_frames): Likewise.
+ * libdwfl.h (Dwfl_Thread_Callbacks): Add get_thread function.
+ (dwfl_getthread_frames): Likewise.
+ * libdwflP.h (dwfl_getthread_frames): New internal function declaration.
+ * linux-core-attach.c (core_thread_callbacks): Initialize get_thread
+ to NULL.
+ * linux-pid-attach.c (pid_getthread): New function.
+ (pid_thread_callbacks): Initialize get_thread to pid_getthread.
+
+2013-12-20 Mark Wielaard <mjw@redhat.com>
+
+ * linux-kernel-modules.c (report_kernel_archive): Correct nested
+ asprintf result check for debug.a.
+
+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-18 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * argp-std.c (offline_find_elf): Remove.
+ (offline_callbacks): Use dwfl_build_id_find_elf instead.
+ * dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Move here the code
+ removed above.
+
+2013-12-18 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: s390 and s390x
+ * dwfl_frame_pc.c (dwfl_frame_pc): Call ebl_normalize_pc.
+ * frame_unwind.c (new_unwound): New function from ...
+ (handle_cfi): ... here. Call it.
+ (setfunc, getfunc, readfunc): New functions.
+ (__libdwfl_frame_unwind): Call ebl_unwind with those functions.
+ * linux-core-attach.c (core_set_initial_registers): Always iterate
+ through the Ebl_Register_Location loop. Call
+ dwfl_thread_state_register_pc there.
+
+2013-12-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * frame_unwind.c (handle_cfi): Call ebl_dwarf_to_regno for RA.
+
+2013-12-17 Mark Wielaard <mjw@redhat.com>
+
+ * linux-pid-attach.c (pid_next_thread): Call rewinddir on first
+ traversal.
+
+2013-12-16 Mark Wielaard <mjw@redhat.com>
+
+ * libdwfl.h (dwfl_module_getsymtab_first_global): New function
+ definition.
+ * dwfl_module_getdwarf.c (dwfl_module_getsymtab_first_global): New
+ function.
+ * libdwflP.h (dwfl_module_getsymtab_first_global): New internal
+ function definition.
+ * dwfl_module_addrsym.c (dwfl_module_addrsym_elf): Use new function.
+
+2013-12-14 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_module.c (__libdwfl_module_free): Free mod->reloc_info if
+ allocated. Call dwarf_cfi_end on mod->eh_cfi if necessary.
+ * frame_unwind.c (handle_cfi): Free frame result from
+ dwarf_cfi_addrframe when done.
+
+2013-12-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: ppc and ppc64
+ * frame_unwind.c (__libdwfl_frame_reg_get, __libdwfl_frame_reg_set):
+ Call ebl_dwarf_to_regno.
+ * linux-core-attach.c (core_set_initial_registers): Implement
+ pc_register support.
+ * linux-pid-attach.c (pid_thread_state_registers_cb): Implement
+ FIRSTREG -1.
+
+2013-11-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Introduce process_attach_error.
+ * dwfl_begin.c (dwfl_begin): Initialize process_attach_error.
+ * dwfl_frame.c (dwfl_pid, dwfl_getthreads): Use PROCESS_ATTACH_ERROR if
+ PROCESS is NULL.
+ * libdwflP.h (struct Dwfl): New field process_attach_error.
+ * linux-core-attach.c (__libdwfl_attach_state_for_core): Rename to ...
+ (attach_state_for_core): ... here, make it static, change return type,
+ no longer use __libdwfl_seterrno.
+ (__libdwfl_attach_state_for_core): New wrapper for it.
+
+2013-11-27 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_module_addrsym.c (dwfl_module_addrsym): Rename to and call...
+ (dwfl_module_addrsym_elf): this. Add elfp and biasp arguments,
+ keep track of symelf, addr_symelf, closest_elf and sizeless_elf
+ instead of tracking dwfl_files.
+ * dwfl_module_getsym.c (__libdwfl_module_getsym): Renamed to...
+ (dwfl_module_getsym_elf): ...this. Remove dwfl_file argument, add
+ new elfp and biasp arguments. Track elf instead of file.
+ (dwfl_module_getsym): Call dwfl_module_getsym_elf.
+ dwfl_module_info.c (dwfl_module_info): Pass elf to
+ dwfl_adjusted_st_value.
+ * libdwfl.h (dwfl_module_getsym): Document limitations of shndx.
+ (dwfl_module_getsym_elf): New function declaration.
+ (dwfl_module_addrsym_elf): Likewise.
+ * libdwflP.h (dwfl_module_addrsym_elf): INTDECL.
+ (dwfl_module_getsym_elf): Likewise.
+ (dwfl_adjusted_st_value): Take and check elf not dwfl_file.
+ (dwfl_deadjust_st_value): Likewise.
+ (__libdwfl_module_getsym): Removed.
+ * relocate.c (resolve_symbol): Pass elf to dwfl_adjusted_st_value.
+
+2013-11-21 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix non-build-id core files on build-id system.
+ * link_map.c (report_r_debug): Remove valid clearing if build-id cannot
+ be read from memory.
+
+2013-11-21 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): New
+ variable close_elf. Call __libdwfl_find_elf_build_id and compare the
+ content, if possible.
+
+2013-11-21 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ link_map: Use proper bias, not l_addr.
+ * core-file.c (dynamic_vaddr_get): Rename to ...
+ (__libdwfl_dynamic_vaddr_get): ... here, make it global,
+ internal_function.
+ (dwfl_core_file_report): Update name in the caller.
+ * libdwflP.h (__libdwfl_dynamic_vaddr_get): New declaration.
+ * link_map.c (report_r_debug): New variable elf_dynamic_vaddr. Call
+ __libdwfl_dynamic_vaddr_get for it. Remove L_ADDR FIXME comment.
+ Use ELF_DYNAMIC_VADDR instead of L_ADDR.
+
+2013-11-19 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Compatibility with older kernels such as RHEL-6.
+ * linux-pid-attach.c (struct pid_arg): New field tid_was_stopped.
+ (ptrace_attach): New parameter tid_was_stoppedp. Set it.
+ (pid_set_initial_registers): Pass tid_was_stopped.
+ (pid_thread_detach): Use tid_was_stopped.
+
+2013-11-18 Josh Stone <jistone@redhat.com>
+
+ * dwfl_module_getdwarf.c (find_aux_address_sync): New function.
+ (find_aux_sym): Use it.
+
+2013-11-14 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Code cleanup: Remove const in prototype
+ * dwfl_frame_regs.c (dwfl_thread_state_registers): Remove const from
+ firstreg.
+ * libdwfl.h (dwfl_thread_state_registers): Likewise.
+ * linux-pid-attach.c (pid_thread_state_registers_cb): Likewise.
+
+2013-11-14 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix dwfl_attach_state machine->elf.
+ * dwfl_frame.c (dwfl_attach_state): Change parameter machine to elf.
+ Call ebl_openbackend instead of ebl_openbackend_machine.
+ * libdwfl.h (dwfl_attach_state): Change parameter machine to elf.
+ Update the function description.
+ * linux-core-attach.c (__libdwfl_attach_state_for_core): Pass CORE to
+ dwfl_attach_state.
+ * linux-pid-attach.c (__libdwfl_attach_state_for_pid): Pass NULL to
+ dwfl_attach_state.
+
+2013-11-06 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Provide __libdwfl_module_getsym to get dwfl_file *.
+ * dwfl_module_addrsym.c (dwfl_module_addrsym) (i_to_symfile): Remove.
+ (dwfl_module_addrsym) (search_table): New variable file. Use
+ __libdwfl_module_getsym. Use file.
+ * dwfl_module_getsym.c (dwfl_module_getsym): Rename to ...
+ (__libdwfl_module_getsym): ... here. Add parameter filep. Set it.
+ (dwfl_module_getsym): New wrapper.
+ * libdwflP.h (__libdwfl_module_getsym): New declaration.
+
+2013-11-13 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix dwfl_module_addrsym for minidebuginfo.
+ * dwfl_module_addrsym.c (dwfl_module_addrsym): New variable
+ addr_symfile.
+ (dwfl_module_addrsym) (same_section): Use it.
+ (dwfl_module_addrsym) (i_to_symfile): New function.
+ (dwfl_module_addrsym) (search_table): Use it.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (libdwfl_a_SOURCES): Add dwfl_frame.c, frame_unwind.c,
+ dwfl_frame_pc.c, linux-pid-attach.c, linux-core-attach.c and
+ dwfl_frame_regs.c.
+ * core-file.c (dwfl_core_file_report): Call
+ __libdwfl_attach_state_for_core.
+ * dwfl_end.c (dwfl_end): Call __libdwfl_process_free.
+ * dwfl_frame.c: New file.
+ * frame_unwind.c: New file.
+ * dwfl_frame_pc.c: New file.
+ * linux-pid-attach.c: New file.
+ * linux-core-attach.c: New file.
+ * dwfl_frame_regs.c: New file.
+ * libdwfl.h (Dwfl_Thread, Dwfl_Frame): New typedefs.
+ (dwfl_core_file_report, dwfl_linux_proc_report): Extend comments.
+ (Dwfl_Thread_Callbacks): New definition.
+ (struct ebl, dwfl_attach_state, dwfl_pid, dwfl_thread_dwfl)
+ (dwfl_thread_tid, dwfl_frame_thread, dwfl_thread_state_registers)
+ (dwfl_thread_state_register_pc, dwfl_getthreads, dwfl_thread_getframes)
+ (dwfl_frame_pc): New declarations.
+ * libdwflP.h (Dwfl_Process): New typedef.
+ (LIBEBL_BAD, CORE_MISSING, INVALID_REGISTER, PROCESS_MEMORY_READ)
+ (PROCESS_NO_ARCH, PARSE_PROC, INVALID_DWARF, UNSUPPORTED_DWARF)
+ (NEXT_THREAD_FAIL, ATTACH_STATE_CONFLICT, NO_ATTACH_STATE, NO_UNWIND)
+ (INVALID_ARGUMENT): New DWFL_ERROR entries.
+ (struct Dwfl): New entry process.
+ (struct Dwfl_Process, struct Dwfl_Thread, struct Dwfl_Frame)
+ (__libdwfl_frame_reg_get, __libdwfl_frame_reg_set)
+ (__libdwfl_process_free, __libdwfl_frame_unwind)
+ (__libdwfl_attach_state_for_pid, __libdwfl_attach_state_for_core)
+ (__libdwfl_segment_start, __libdwfl_segment_end): New declarations.
+ (dwfl_attach_state, dwfl_pid, dwfl_thread_dwfl, dwfl_thread_tid)
+ (dwfl_frame_thread, dwfl_thread_state_registers)
+ (dwfl_thread_state_register_pc, dwfl_getthreads, dwfl_thread_getframes)
+ (dwfl_frame_pc): New INTDECL entries.
+ * linux-proc-maps.c (dwfl_linux_proc_report): Call
+ __libdwfl_attach_state_for_pid.
+ * segment.c (segment_start): Rename to ...
+ (__libdwfl_segment_start): ... here and make it internal_function.
+ (segment_end): Rename to ...
+ (__libdwfl_segment_end): ... here and make it internal_function.
+ (reify_segments, dwfl_report_segment): Rename them at the callers.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * core-file.c (dwfl_core_file_report): Remove the use of MAX.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * core-file.c (dwfl_core_file_report): Replaced variable sniffed by
+ retval. Fix one forgotten LISTED increase.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix core files for re-prelink-ed files.
+ * core-file.c (dynamic_vaddr_get): New function.
+ (dwfl_core_file_report): New variable file_dynamic_vaddr. Call
+ dynamic_vaddr_get instead of using L_ADDR.
+ * libdwflP.h (struct r_debug_info_module): Remove field l_addr.
+ * link_map.c (report_r_debug): Do not initialize l_addr.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Code cleanup.
+ * core-file.c (dwfl_core_file_report): Reindent block of code by
+ continue keyword.
+
+2013-10-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * argp-std.c (parse_opt): Use executable parameter of
+ dwfl_core_file_report.
+ * core-file.c (dwfl_core_file_report): Add parameter executable. Set
+ it to DWFL. Add NEW_VERSION for it.
+ (_compat_without_executable_dwfl_core_file_report): New. Twice.
+ * libdwfl.h (dwfl_core_file_report): Add parameter executable, update
+ the function comment.
+
+2013-10-15 Mark Wielaard <mjw@redhat.com>
+
+ * linux-proc-maps.c (proc_maps_report): Ignore non-absolute file
+ mappings.
+ (dwfl_linux_proc_find_elf): Don't abort, just return failure.
+
+2013-09-12 Mark Wielaard <mjw@redhat.com>
+
+ * cu.c (intern_cu): If dwarf_offdie fails free cu.
+
+2013-09-12 Mark Wielaard <mjw@redhat.com>
+
+ * linux-proc-maps.c (proc_maps_report): Don't fclose FILE in
+ bad_report.
+
+2013-09-12 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_module_getdwarf.c (find_symtab): Call elf_getdata with
+ aux_xndxscn, not xndxscn, for aux_symxndxdata.
+
+2013-08-25 Mark Wielaard <mjw@redhat.com>
+
+ * linux-kernel-modules.c (report_kernel): Pass add_p_vaddr as true
+ to dwfl_report_elf.
+
+2013-07-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): Check for
+ conflicts all the modules, not just the first one. Compare L_LD if it
+ is equal, not if it is in a module address range.
+
+2013-07-23 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * libdwflP.h (__libdwfl_elf_address_range): Add internal_function.
+
+2013-07-23 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * core-file.c (clear_r_debug_info): Close also ELF and FD.
+ (dwfl_core_file_report): Call __libdwfl_report_elf for
+ R_DEBUG_INFO.MODULE.
+ * dwfl_report_elf.c (__libdwfl_elf_address_range): New function from
+ code of ...
+ (__libdwfl_report_elf): ... this function. Call it.
+ * dwfl_segment_report_module.c: Include unistd.h.
+ (dwfl_segment_report_module): Use basename for MODULE->NAME.
+ Clear MODULE if it has no build-id and we have segment with build-id.
+ Ignore this segment only if MODULE still contains valid ELF.
+ * libdwflP.h (__libdwfl_elf_address_range): New declaration.
+ (struct r_debug_info_module): New fields fd, elf, l_addr, start, end
+ and disk_file_has_build_id.
+ (dwfl_link_map_report): Extend the comment.
+ * link_map.c (report_r_debug): Extend the comment. Always fill in new
+ r_debug_info_module. Initialize also the new r_debug_info_module
+ fields. Remove one FIXME comment. Call __libdwfl_elf_address_range
+ instead of __libdwfl_report_elf when R_DEBUG_INFO is not NULL.
+
+2013-07-19 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * libdwflP.h (__libdwfl_find_elf_build_id): Add internal_function.
+
+2013-07-02 Mark Wielaard <mjw@redhat.com>
+
+ * relocate.c (__libdwfl_relocate_value): Remove mod->e_type assert.
+
+2013-06-05 Mark Wielaard <mjw@redhat.com>
+
+ * link_map.c (report_r_debug): Always call release_buffer after
+ memory_callback succeeded reading build_id.
+
+2013-05-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * argp-std.c (parse_opt) <ARGP_KEY_SUCCESS> <opt->core> <opt->e>: Set
+ executable_for_core before calling dwfl_core_file_report.
+ * core-file.c (clear_r_debug_info): New function.
+ (dwfl_core_file_report): Move raw segments reporting lower. New
+ variable r_debug_info, pass it to dwfl_segment_report_module. Call
+ clear_r_debug_info in the end. Return sum of LISTED and SNIFFED.
+ * dwfl_module_build_id.c (check_notes): Move into
+ __libdwfl_find_elf_build_id.
+ (__libdwfl_find_build_id): Rename to ...
+ (__libdwfl_find_elf_build_id): ... here. Add parameters build_id_bits,
+ build_id_elfaddr and build_id_len. Verify MOD vs. ELF.
+ (__libdwfl_find_elf_build_id) (check_notes): Remove parameters mod and
+ set, rename data_vaddr to data_elfaddr. Do not call found_build_id.
+ (__libdwfl_find_elf_build_id): Update the check_notes caller, do not
+ adjust its data_elfaddr parameter.
+ (__libdwfl_find_build_id): New wrapper of __libdwfl_find_elf_build_id.
+ * dwfl_segment_report_module.c (dwfl_segment_report_module): New
+ parameter r_debug_info. New variable name_is_final. Adjust addresses
+ according to R_DEBUG_INFO->MODULE. Check conflicts against DWFL.
+ Do not overwrite NAME by SONAME if NAME_IS_FINAL.
+ * libdwflP.h (__libdwfl_find_elf_build_id): New declaration.
+ (struct r_debug_info_module, struct r_debug_info): New definitions.
+ (dwfl_segment_report_module, dwfl_link_map_report): Add parameter
+ r_debug_info.
+ * link_map.c: Include fcntl.h.
+ (report_r_debug): Add parameter r_debug_info, describe it in the
+ function comment. Delete dwfl_addrmodule call and its dependent code.
+ Verify build-id before calling dwfl_report_elf, also supply
+ executable_for_core to it. Store r_debug_info->module info when
+ appropriate.
+ (dwfl_link_map_report): Add parameter r_debug_info. New variable
+ in_ok. Try to read IN from EXECUTABLE_FOR_CORE. Update report_r_debug
+ caller parameters.
+
+2013-04-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_report_elf.c (__libdwfl_report_elf): Add parameter add_p_vaddr.
+ Set it to true for ET_EXEC and ET_CORE. Provide alternative
+ setup of START and BIAS if !ADD_P_VADDR. Set END from BIAS, not BASE.
+ (dwfl_report_elf): Add parameter add_p_vaddr. Pass it down. Add
+ NEW_VERSION.
+ (_compat_without_add_p_vaddr_dwfl_report_elf) <SHARED>: New, with
+ COMPAT_VERSION.
+ * libdwfl.h (dwfl_report_elf): Add parameter add_p_vaddr. Describe it.
+ * libdwflP.h (__libdwfl_report_elf): Add parameter add_p_vaddr.
+ * link_map.c (report_r_debug): Use true add_p_vaddr for dwfl_report_elf.
+ * linux-kernel-modules.c (report_kernel): Use false add_p_vaddr for
+ dwfl_report_elf.
+ * offline.c (process_elf): Use true add_p_vaddr for dwfl_report_elf.
+
+2013-04-27 Mark Wielaard <mjw@redhat.com>
+
+ * link_map.c: #include system.h.
+
+2013-04-26 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * link_map.c (BE32, BE64, LE32, LE64): Delete the definitions, move
+ them to lib/system.h.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2013-03-20 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_report_elf.c (__libdwfl_report_elf): Remove BASE aligning.
+
+2013-03-12 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_getsrclines.c (dwfl_getsrclines): Return 0 on success.
+
+2013-02-22 Mark Wielaard <mjw@redhat.com>
+
+ * open.c (__libdw_gunzip,__libdw_bunzip2,__libdw_unlzma): Define
+ as DWFL_E_BADELF when not used.
+
+2013-02-10 Mark Wielaard <mjw@redhat.com>
+
+ * argp-std.c (parse_opt): Use opt->core and opt->e explicitly in
+ failure messages When handling ARGP_KEY_SUCCESS because arg will
+ not have been set.
+
+2013-01-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * linux-proc-maps.c: Include system.h.
+ (PROCEXEFMT, get_pid_class): New.
+ (grovel_auxv): Detect 32-bit vs. 64-bit auxv, possibly call
+ get_pid_class.
+
+2013-01-23 Mark Wielaard <mjw@redhat.com>
+
+ * dwfl_module_getdwarf.c (find_aux_sym): Don't substract one
+ from aux_syments by default.
+ (find_symtab): Also succeed when only aux_symdata is found.
+ When no symtab is found always try to load auxiliary table.
+ (dwfl_module_getsymtab): Substract one from result when both
+ tables have symbols.
+ * dwfl_module_getsym.c (dwfl_module_getsym): Only skip auxiliary
+ zero entry when both tables have symbols.
+ * dwfl_module_addrsym.c (dwfl_module_addrsym): Only substract
+ one from first_global when both tables have symbols.
+
+2013-01-16 Mark Wielaard <mjw@redhat.com>
+
+ * libdwflP.h (struct Dwfl_Module): Add aux_sym, aux_symdata,
+ aux_syments, aux_symstrdata, aux_symxndxdata and aux_first_global.
+ (dwfl_adjusted_aux_sym_addr): New function.
+ (dwfl_deadjust_aux_sym_addr): Likewise.
+ (dwfl_adjusted_st_value): Take and check symfile argument.
+ (dwfl_deadjust_st_value): Likewise.
+ * dwfl_module_getdwarf.c (find_prelink_address_sync): Take and
+ use dwfl_file as argument to set address_sync.
+ (find_debuginfo): Call find_prelink_address_sync with debug file.
+ (find_aux_sym): New function.
+ (find_symtab): Use find_aux_sym if all we have is the dynsym table
+ and fill in aux DwflModule fields.
+ (dwfl_module_getsymtab): Return syments plus aux_syments.
+ (load_symtab): Always set first_global.
+ * dwfl_module_addrsym.c (dwfl_module_addrsym): Check symfile
+ when using same_section. Calculate first_global based on both
+ mod->first_global and mod->aux_first_global.
+ * dwfl_module.c (__libdwfl_module_free): Free aux_sym.
+ * dwfl_module_getsym.c (dwfl_module_getsym): Use auxsym table
+ to retrieve symbol and name if necessary, making sure all locals
+ from any table come before any globals.
+ * dwfl_module_info.c (dwfl_module_info): Call dwfl_adjusted_st_value
+ with symfile.
+ * relocate.c (resolve_symbol): Likewise.
+
+2013-01-07 Roland McGrath <roland@hack.frob.com>
+
+ * link_map.c (auxv_format_probe): Handle unaligned 64-bit data, but
+ still assume the data is at least 32-bit aligned anyway.
+ (dwfl_link_map_report): Handle unaligned auxv data.
+
+2012-12-11 Mark Wielaard <mjw@redhat.com>
+
+ * linux-kernel-modules.c (report_kernel): Only free fname if
+ find_kernel_elf succeeds and allocates it.
+ (report_kernel_archive): Fix brackets around unlikely expression.
+
+2012-11-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * argp-std.c: Update Copyright year.
+ (offline_find_elf): New function.
+ (offline_callbacks): Use it for find_elf.
+ (struct parse_opt): New.
+ (parse_opt): New key ARGP_KEY_INIT. In other make hook struct
+ parse_opt pointer from former Dwfl pointer. Delay 'e and OPT_COREFILE
+ processing till ARGP_KEY_SUCCESS. Initialize state->input already from
+ ARGP_KEY_SUCCESS. Modify the cleanup in ARGP_KEY_ERROR. Make the
+ final state->input initialization optional.
+ * dwfl_end.c: Update Copyright year.
+ (dwfl_end): Free executable_for_core.
+ * libdwflP.h: Update Copyright year.
+ (struct Dwfl): New field executable_for_core.
+
+2012-11-20 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_report_elf.c (__libdwfl_report_elf): Simplify START and BIAS
+ calculation.
+
+2012-10-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_module_getdwarf.c (mod_verify_build_id): New function with code
+ from ...
+ (__libdwfl_getelf): ... here. Call it.
+
+2012-10-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * libdwfl.h (dwfl_module_getelf): Add __nonnull_attribute__.
+
+2012-10-10 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_segment_report_module.c (dwfl_segment_report_module):
+ Initialize mod->MAIN_BIAS.
+
+2012-10-10 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl_module_addrsym.c (dwfl_module_addrsym): New function
+ binding_value. Use it for both zero and non-zero size symbols
+ comparisons.
+
+2012-10-01 Mark Wielaard <mjw@redhat.com>
+
+ * cu.c (cudie_offset): Don't use type_sig8, it might not be
+ initialized and these are always real CUs, never TUs.
+
+2012-10-01 Mark Wielaard <mjw@redhat.com>
+
+ * derelocate.c (find_section): Check next section exists before
+ accessing it.
+
2012-08-01 Petr Machata <pmachata@redhat.com>
* offline.c (process_archive_member): Ignore entry "/SYM64/".
##
## Process this file with automake to create Makefile.in
##
-## 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
## not, see <http://www.gnu.org/licenses/>.
##
include $(top_srcdir)/config/eu.am
-INCLUDES += -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
- -I$(srcdir)/../libdw
+AM_CPPFLAGS += -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
+ -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf
VERSION = 1
noinst_LIBRARIES = libdwfl.a
-if !MUDFLAP
noinst_LIBRARIES += libdwfl_pic.a
-endif
pkginclude_HEADERS = libdwfl.h
dwfl_module_return_value_location.c \
dwfl_module_register_names.c \
dwfl_segment_report_module.c \
- link_map.c core-file.c open.c image-header.c
+ link_map.c core-file.c open.c image-header.c \
+ dwfl_frame.c frame_unwind.c dwfl_frame_pc.c \
+ linux-pid-attach.c linux-core-attach.c dwfl_frame_regs.c
if ZLIB
libdwfl_a_SOURCES += gzip.c
libdwfl_a_SOURCES += lzma.c
endif
-if MUDFLAP
-libdwfl = libdwfl.a $(libdw) $(libebl) $(libelf) $(libeu)
-libdw = ../libdw/libdw.a
-libelf = ../libelf/libelf.a
-else
libdwfl = $(libdw)
libdw = ../libdw/libdw.so
libelf = ../libelf/libelf.so
-endif
libebl = ../libebl/libebl.a
libeu = ../lib/libeu.a
-if !MUDFLAP
libdwfl_pic_a_SOURCES =
am_libdwfl_pic_a_OBJECTS = $(libdwfl_a_SOURCES:.c=.os)
-endif
noinst_HEADERS = libdwflP.h
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
-@MUDFLAP_FALSE@am__append_2 = libdwfl_pic.a
-@ZLIB_TRUE@am__append_3 = gzip.c
-@BZLIB_TRUE@am__append_4 = bzip2.c
-@LZMA_TRUE@am__append_5 = lzma.c
-@MUDFLAP_TRUE@am_libdwfl_pic_a_OBJECTS =
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
+@ZLIB_TRUE@am__append_1 = gzip.c
+@BZLIB_TRUE@am__append_2 = bzip2.c
+@LZMA_TRUE@am__append_3 = lzma.c
subdir = libdwfl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libdwfl_a_AR = $(AR) $(ARFLAGS)
libdwfl_a_LIBADD =
am__libdwfl_a_SOURCES_DIST = dwfl_begin.c dwfl_end.c dwfl_error.c \
dwfl_module_getsym.c dwfl_module_addrname.c \
dwfl_module_addrsym.c dwfl_module_return_value_location.c \
dwfl_module_register_names.c dwfl_segment_report_module.c \
- link_map.c core-file.c open.c image-header.c gzip.c bzip2.c \
- lzma.c
+ link_map.c core-file.c open.c image-header.c dwfl_frame.c \
+ frame_unwind.c dwfl_frame_pc.c linux-pid-attach.c \
+ linux-core-attach.c dwfl_frame_regs.c gzip.c bzip2.c lzma.c
@ZLIB_TRUE@am__objects_1 = gzip.$(OBJEXT)
@BZLIB_TRUE@am__objects_2 = bzip2.$(OBJEXT)
@LZMA_TRUE@am__objects_3 = lzma.$(OBJEXT)
dwfl_module_register_names.$(OBJEXT) \
dwfl_segment_report_module.$(OBJEXT) link_map.$(OBJEXT) \
core-file.$(OBJEXT) open.$(OBJEXT) image-header.$(OBJEXT) \
+ dwfl_frame.$(OBJEXT) frame_unwind.$(OBJEXT) \
+ dwfl_frame_pc.$(OBJEXT) linux-pid-attach.$(OBJEXT) \
+ linux-core-attach.$(OBJEXT) dwfl_frame_regs.$(OBJEXT) \
$(am__objects_1) $(am__objects_2) $(am__objects_3)
libdwfl_a_OBJECTS = $(am_libdwfl_a_OBJECTS)
libdwfl_pic_a_AR = $(AR) $(ARFLAGS)
libdwfl_pic_a_LIBADD =
libdwfl_pic_a_OBJECTS = $(am_libdwfl_pic_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libdwfl_a_SOURCES) $(libdwfl_pic_a_SOURCES)
DIST_SOURCES = $(am__libdwfl_a_SOURCES_DIST) $(libdwfl_pic_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
}
am__installdirs = "$(DESTDIR)$(pkgincludedir)"
HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. -I$(srcdir) \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. -I$(srcdir) \
-I$(srcdir)/../libelf -I$(srcdir)/../libebl \
- -I$(srcdir)/../libdw
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
- $($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1)
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
+ -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ $(if $($(*F)_no_Werror),,-Werror) \
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+ $($(*F)_CFLAGS)
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda $(am_libdwfl_pic_a_OBJECTS)
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
-noinst_LIBRARIES = libdwfl.a $(am__append_2)
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+noinst_LIBRARIES = libdwfl.a libdwfl_pic.a
pkginclude_HEADERS = libdwfl.h
libdwfl_a_SOURCES = dwfl_begin.c dwfl_end.c dwfl_error.c \
dwfl_version.c dwfl_module.c dwfl_report_elf.c relocate.c \
dwfl_module_getsym.c dwfl_module_addrname.c \
dwfl_module_addrsym.c dwfl_module_return_value_location.c \
dwfl_module_register_names.c dwfl_segment_report_module.c \
- link_map.c core-file.c open.c image-header.c $(am__append_3) \
- $(am__append_4) $(am__append_5)
-@MUDFLAP_FALSE@libdwfl = $(libdw)
-@MUDFLAP_TRUE@libdwfl = libdwfl.a $(libdw) $(libebl) $(libelf) $(libeu)
-@MUDFLAP_FALSE@libdw = ../libdw/libdw.so
-@MUDFLAP_TRUE@libdw = ../libdw/libdw.a
-@MUDFLAP_FALSE@libelf = ../libelf/libelf.so
-@MUDFLAP_TRUE@libelf = ../libelf/libelf.a
+ link_map.c core-file.c open.c image-header.c dwfl_frame.c \
+ frame_unwind.c dwfl_frame_pc.c linux-pid-attach.c \
+ linux-core-attach.c dwfl_frame_regs.c $(am__append_1) \
+ $(am__append_2) $(am__append_3)
+libdwfl = $(libdw)
+libdw = ../libdw/libdw.so
+libelf = ../libelf/libelf.so
libebl = ../libebl/libebl.a
libeu = ../lib/libeu.a
-@MUDFLAP_FALSE@libdwfl_pic_a_SOURCES =
-@MUDFLAP_FALSE@am_libdwfl_pic_a_OBJECTS = $(libdwfl_a_SOURCES:.c=.os)
+libdwfl_pic_a_SOURCES =
+am_libdwfl_pic_a_OBJECTS = $(libdwfl_a_SOURCES:.c=.os)
noinst_HEADERS = libdwflP.h
all: all-am
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
libdwfl.a: $(libdwfl_a_OBJECTS) $(libdwfl_a_DEPENDENCIES) $(EXTRA_libdwfl_a_DEPENDENCIES)
- -rm -f libdwfl.a
- $(libdwfl_a_AR) libdwfl.a $(libdwfl_a_OBJECTS) $(libdwfl_a_LIBADD)
- $(RANLIB) libdwfl.a
+ $(AM_V_at)-rm -f libdwfl.a
+ $(AM_V_AR)$(libdwfl_a_AR) libdwfl.a $(libdwfl_a_OBJECTS) $(libdwfl_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdwfl.a
+
libdwfl_pic.a: $(libdwfl_pic_a_OBJECTS) $(libdwfl_pic_a_DEPENDENCIES) $(EXTRA_libdwfl_pic_a_DEPENDENCIES)
- -rm -f libdwfl_pic.a
- $(libdwfl_pic_a_AR) libdwfl_pic.a $(libdwfl_pic_a_OBJECTS) $(libdwfl_pic_a_LIBADD)
- $(RANLIB) libdwfl_pic.a
+ $(AM_V_at)-rm -f libdwfl_pic.a
+ $(AM_V_AR)$(libdwfl_pic_a_AR) libdwfl_pic.a $(libdwfl_pic_a_OBJECTS) $(libdwfl_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdwfl_pic.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_dwarf_line.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_end.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_error.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_frame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_frame_pc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_frame_regs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_getdwarf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_getmodules.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_getsrc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl_version.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-from-memory.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find-debuginfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frame_unwind.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gzip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image-header.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdwfl_crc32.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdwfl_crc32_file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lines.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link_map.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux-core-attach.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux-kernel-modules.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux-pid-attach.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux-proc-maps.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzma.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offline.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/segment.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-pkgincludeHEADERS install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pkgincludeHEADERS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkgincludeHEADERS install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-pkgincludeHEADERS
%.os: %.c %.o
/* Standard argp argument parsers for tools using libdwfl.
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2012 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
.section_address = INTUSE(dwfl_linux_kernel_module_section_address),
};
+/* Structure held at state->HOOK. */
+struct parse_opt
+{
+ Dwfl *dwfl;
+ /* The -e|--executable parameter. */
+ const char *e;
+ /* The --core parameter. */
+ const char *core;
+};
+
static error_t
parse_opt (int key, char *arg, struct argp_state *state)
{
switch (key)
{
+ case ARGP_KEY_INIT:
+ {
+ assert (state->hook == NULL);
+ struct parse_opt *opt = calloc (1, sizeof (*opt));
+ if (opt == NULL)
+ failure (NULL, DWFL_E_ERRNO, "calloc");
+ state->hook = opt;
+ }
+ break;
+
case OPT_DEBUGINFO:
debuginfo_path = arg;
break;
case 'e':
{
- Dwfl *dwfl = state->hook;
+ struct parse_opt *opt = state->hook;
+ Dwfl *dwfl = opt->dwfl;
if (dwfl == NULL)
{
dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
if (dwfl == NULL)
return fail (dwfl, -1, arg);
- state->hook = dwfl;
+ opt->dwfl = dwfl;
/* Start at zero so if there is just one -e foo.so,
the DSO is shown without address bias. */
dwfl->offline_next_address = 0;
}
- if (dwfl->callbacks == &offline_callbacks)
- {
- if (INTUSE(dwfl_report_offline) (dwfl, "", arg, -1) == NULL)
- return fail (dwfl, -1, arg);
- state->hook = dwfl;
- }
- else
+ if (dwfl->callbacks != &offline_callbacks)
{
toomany:
argp_error (state, "%s",
_("only one of -e, -p, -k, -K, or --core allowed"));
return EINVAL;
}
+ opt->e = arg;
}
break;
case 'p':
- if (state->hook == NULL)
- {
- Dwfl *dwfl = INTUSE(dwfl_begin) (&proc_callbacks);
- int result = INTUSE(dwfl_linux_proc_report) (dwfl, atoi (arg));
- if (result != 0)
- return fail (dwfl, result, arg);
- state->hook = dwfl;
- }
- else
- goto toomany;
+ {
+ struct parse_opt *opt = state->hook;
+ if (opt->dwfl == NULL)
+ {
+ Dwfl *dwfl = INTUSE(dwfl_begin) (&proc_callbacks);
+ int result = INTUSE(dwfl_linux_proc_report) (dwfl, atoi (arg));
+ if (result != 0)
+ return fail (dwfl, result, arg);
+
+ /* Non-fatal to not be able to attach to process, ignore error. */
+ INTUSE(dwfl_linux_proc_attach) (dwfl, atoi (arg), false);
+
+ opt->dwfl = dwfl;
+ }
+ else
+ goto toomany;
+ }
break;
case 'M':
- if (state->hook == NULL)
- {
- FILE *f = fopen (arg, "r");
- if (f == NULL)
- nofile:
- {
- int code = errno;
- argp_failure (state, EXIT_FAILURE, code,
- "cannot open '%s'", arg);
- return code;
- }
- Dwfl *dwfl = INTUSE(dwfl_begin) (&proc_callbacks);
- int result = INTUSE(dwfl_linux_proc_maps_report) (dwfl, f);
- fclose (f);
- if (result != 0)
- return fail (dwfl, result, arg);
- state->hook = dwfl;
- }
- else
- goto toomany;
+ {
+ struct parse_opt *opt = state->hook;
+ if (opt->dwfl == NULL)
+ {
+ FILE *f = fopen (arg, "r");
+ if (f == NULL)
+ {
+ int code = errno;
+ argp_failure (state, EXIT_FAILURE, code,
+ "cannot open '%s'", arg);
+ return code;
+ }
+ Dwfl *dwfl = INTUSE(dwfl_begin) (&proc_callbacks);
+ int result = INTUSE(dwfl_linux_proc_maps_report) (dwfl, f);
+ fclose (f);
+ if (result != 0)
+ return fail (dwfl, result, arg);
+ opt->dwfl = dwfl;
+ }
+ else
+ goto toomany;
+ }
break;
case OPT_COREFILE:
{
- Dwfl *dwfl = state->hook;
+ struct parse_opt *opt = state->hook;
+ Dwfl *dwfl = opt->dwfl;
if (dwfl == NULL)
- state->hook = dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
+ opt->dwfl = dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
/* Permit -e and --core together. */
else if (dwfl->callbacks != &offline_callbacks)
goto toomany;
-
- int fd = open64 (arg, O_RDONLY);
- if (fd < 0)
- goto nofile;
-
- Elf *core;
- Dwfl_Error error = __libdw_open_file (&fd, &core, true, false);
- if (error != DWFL_E_NOERROR)
- {
- argp_failure (state, EXIT_FAILURE, 0,
- _("cannot read ELF core file: %s"),
- INTUSE(dwfl_errmsg) (error));
- return error == DWFL_E_ERRNO ? errno : EIO;
- }
-
- int result = INTUSE(dwfl_core_file_report) (dwfl, core);
- if (result < 0)
- {
- elf_end (core);
- close (fd);
- return fail (dwfl, result, arg);
- }
-
- /* From now we leak FD and CORE. */
-
- if (result == 0)
- {
- argp_failure (state, EXIT_FAILURE, 0,
- _("No modules recognized in core file"));
- return ENOENT;
- }
+ opt->core = arg;
}
break;
case 'k':
- if (state->hook == NULL)
- {
- Dwfl *dwfl = INTUSE(dwfl_begin) (&kernel_callbacks);
- int result = INTUSE(dwfl_linux_kernel_report_kernel) (dwfl);
- if (result != 0)
- return fail (dwfl, result, _("cannot load kernel symbols"));
- result = INTUSE(dwfl_linux_kernel_report_modules) (dwfl);
- if (result != 0)
- /* Non-fatal to have no modules since we do have the kernel. */
- failure (dwfl, result, _("cannot find kernel modules"));
- state->hook = dwfl;
- }
- else
- goto toomany;
+ {
+ struct parse_opt *opt = state->hook;
+ if (opt->dwfl == NULL)
+ {
+ Dwfl *dwfl = INTUSE(dwfl_begin) (&kernel_callbacks);
+ int result = INTUSE(dwfl_linux_kernel_report_kernel) (dwfl);
+ if (result != 0)
+ return fail (dwfl, result, _("cannot load kernel symbols"));
+ result = INTUSE(dwfl_linux_kernel_report_modules) (dwfl);
+ if (result != 0)
+ /* Non-fatal to have no modules since we do have the kernel. */
+ failure (dwfl, result, _("cannot find kernel modules"));
+ opt->dwfl = dwfl;
+ }
+ else
+ goto toomany;
+ }
break;
case 'K':
- if (state->hook == NULL)
- {
- Dwfl *dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
- int result = INTUSE(dwfl_linux_kernel_report_offline) (dwfl, arg,
- NULL);
- if (result != 0)
- return fail (dwfl, result, _("cannot find kernel or modules"));
- state->hook = dwfl;
- }
- else
- goto toomany;
+ {
+ struct parse_opt *opt = state->hook;
+ if (opt->dwfl == NULL)
+ {
+ Dwfl *dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
+ int result = INTUSE(dwfl_linux_kernel_report_offline) (dwfl, arg,
+ NULL);
+ if (result != 0)
+ return fail (dwfl, result, _("cannot find kernel or modules"));
+ opt->dwfl = dwfl;
+ }
+ else
+ goto toomany;
+ }
break;
case ARGP_KEY_SUCCESS:
{
- Dwfl *dwfl = state->hook;
+ struct parse_opt *opt = state->hook;
+ Dwfl *dwfl = opt->dwfl;
if (dwfl == NULL)
{
dwfl = INTUSE(dwfl_begin) (&offline_callbacks);
if (INTUSE(dwfl_report_offline) (dwfl, "", arg, -1) == NULL)
return fail (dwfl, -1, arg);
- state->hook = dwfl;
+ opt->dwfl = dwfl;
+ }
+
+ if (opt->core)
+ {
+ int fd = open64 (opt->core, O_RDONLY);
+ if (fd < 0)
+ {
+ int code = errno;
+ argp_failure (state, EXIT_FAILURE, code,
+ "cannot open '%s'", opt->core);
+ return code;
+ }
+
+ Elf *core;
+ Dwfl_Error error = __libdw_open_file (&fd, &core, true, false);
+ if (error != DWFL_E_NOERROR)
+ {
+ argp_failure (state, EXIT_FAILURE, 0,
+ _("cannot read ELF core file: %s"),
+ INTUSE(dwfl_errmsg) (error));
+ return error == DWFL_E_ERRNO ? errno : EIO;
+ }
+
+ int result = INTUSE(dwfl_core_file_report) (dwfl, core, opt->e);
+ if (result < 0)
+ {
+ elf_end (core);
+ close (fd);
+ return fail (dwfl, result, opt->core);
+ }
+
+ /* Non-fatal to not be able to attach to core, ignore error. */
+ INTUSE(dwfl_core_file_attach) (dwfl, core);
+
+ /* From now we leak FD and CORE. */
+
+ if (result == 0)
+ {
+ argp_failure (state, EXIT_FAILURE, 0,
+ _("No modules recognized in core file"));
+ return ENOENT;
+ }
+ }
+ else if (opt->e)
+ {
+ if (INTUSE(dwfl_report_offline) (dwfl, "", opt->e, -1) == NULL)
+ return fail (dwfl, -1, opt->e);
}
/* One of the three flavors has done dwfl_begin and some reporting
int result = INTUSE(dwfl_report_end) (dwfl, NULL, NULL);
assert (result == 0);
+
+ /* Update the input all along, so a parent parser can see it.
+ As we free OPT the update below will be no longer active. */
+ *(Dwfl **) state->input = dwfl;
+ free (opt);
+ state->hook = NULL;
}
break;
case ARGP_KEY_ERROR:
- dwfl_end (state->hook);
- state->hook = NULL;
+ {
+ struct parse_opt *opt = state->hook;
+ dwfl_end (opt->dwfl);
+ free (opt);
+ state->hook = NULL;
+ }
break;
default:
}
/* Update the input all along, so a parent parser can see it. */
- *(Dwfl **) state->input = state->hook;
+ struct parse_opt *opt = state->hook;
+ if (opt)
+ *(Dwfl **) state->input = opt->dwfl;
+
return 0;
}
{
return &libdwfl_argp;
}
-
-#ifdef _MUDFLAP
-/* In the absence of a mudflap wrapper for argp_parse, or a libc compiled
- with -fmudflap, we'll see spurious errors for using the struct argp_state
- on argp_parse's stack. */
-
-void __attribute__ ((constructor))
-__libdwfl_argp_mudflap_options (void)
-{
- __mf_set_options ("-heur-stack-bound");
-}
-#endif
/* Core file handling.
- Copyright (C) 2008-2010 Red Hat, Inc.
+ Copyright (C) 2008-2010, 2013 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
return true;
}
+/* Free the contents of R_DEBUG_INFO without the R_DEBUG_INFO memory itself. */
+
+static void
+clear_r_debug_info (struct r_debug_info *r_debug_info)
+{
+ while (r_debug_info->module != NULL)
+ {
+ struct r_debug_info_module *module = r_debug_info->module;
+ r_debug_info->module = module->next;
+ elf_end (module->elf);
+ if (module->fd != -1)
+ close (module->fd);
+ free (module);
+ }
+}
+
+bool
+internal_function
+__libdwfl_dynamic_vaddr_get (Elf *elf, GElf_Addr *vaddrp)
+{
+ size_t phnum;
+ if (unlikely (elf_getphdrnum (elf, &phnum) != 0))
+ return false;
+ for (size_t i = 0; i < phnum; ++i)
+ {
+ GElf_Phdr phdr_mem;
+ GElf_Phdr *phdr = gelf_getphdr (elf, i, &phdr_mem);
+ if (unlikely (phdr == NULL))
+ return false;
+ if (phdr->p_type == PT_DYNAMIC)
+ {
+ *vaddrp = phdr->p_vaddr;
+ return true;
+ }
+ }
+ return false;
+}
+
int
-dwfl_core_file_report (Dwfl *dwfl, Elf *elf)
+dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable)
{
size_t phnum;
if (unlikely (elf_getphdrnum (elf, &phnum) != 0))
return -1;
}
+ free (dwfl->executable_for_core);
+ if (executable == NULL)
+ dwfl->executable_for_core = NULL;
+ else
+ {
+ dwfl->executable_for_core = strdup (executable);
+ if (dwfl->executable_for_core == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_NOMEM);
+ return -1;
+ }
+ }
+
/* First report each PT_LOAD segment. */
GElf_Phdr notes_phdr;
int ndx = dwfl_report_core_segments (dwfl, elf, phnum, ¬es_phdr);
if (unlikely (ndx <= 0))
return ndx;
- /* Now sniff segment contents for modules. */
- int sniffed = 0;
- ndx = 0;
- do
- {
- int seg = dwfl_segment_report_module (dwfl, ndx, NULL,
- &dwfl_elf_phdr_memory_callback, elf,
- core_file_read_eagerly, elf);
- if (unlikely (seg < 0))
- return seg;
- if (seg > ndx)
- {
- ndx = seg;
- ++sniffed;
- }
- else
- ++ndx;
- }
- while (ndx < (int) phnum);
-
/* Next, we should follow the chain from DT_DEBUG. */
const void *auxv = NULL;
/* Now we have NT_AUXV contents. From here on this processing could be
used for a live process with auxv read from /proc. */
- int listed = dwfl_link_map_report (dwfl, auxv, auxv_size,
- dwfl_elf_phdr_memory_callback, elf);
+ struct r_debug_info r_debug_info;
+ memset (&r_debug_info, 0, sizeof r_debug_info);
+ int retval = dwfl_link_map_report (dwfl, auxv, auxv_size,
+ dwfl_elf_phdr_memory_callback, elf,
+ &r_debug_info);
+ int listed = retval > 0 ? retval : 0;
+
+ /* Now sniff segment contents for modules hinted by information gathered
+ from DT_DEBUG. */
+
+ ndx = 0;
+ do
+ {
+ int seg = dwfl_segment_report_module (dwfl, ndx, NULL,
+ &dwfl_elf_phdr_memory_callback, elf,
+ core_file_read_eagerly, elf,
+ &r_debug_info);
+ if (unlikely (seg < 0))
+ {
+ clear_r_debug_info (&r_debug_info);
+ return seg;
+ }
+ if (seg > ndx)
+ {
+ ndx = seg;
+ ++listed;
+ }
+ else
+ ++ndx;
+ }
+ while (ndx < (int) phnum);
+
+ /* Now report the modules from dwfl_link_map_report which were not filtered
+ out by dwfl_segment_report_module. */
+
+ Dwfl_Module **lastmodp = &dwfl->modulelist;
+ while (*lastmodp != NULL)
+ lastmodp = &(*lastmodp)->next;
+ for (struct r_debug_info_module *module = r_debug_info.module;
+ module != NULL; module = module->next)
+ {
+ if (module->elf == NULL)
+ continue;
+ GElf_Addr file_dynamic_vaddr;
+ if (! __libdwfl_dynamic_vaddr_get (module->elf, &file_dynamic_vaddr))
+ continue;
+ Dwfl_Module *mod;
+ mod = __libdwfl_report_elf (dwfl, basename (module->name), module->name,
+ module->fd, module->elf,
+ module->l_ld - file_dynamic_vaddr,
+ true, true);
+ if (mod == NULL)
+ continue;
+ ++listed;
+ module->elf = NULL;
+ module->fd = -1;
+ /* Move this module to the end of the list, so that we end
+ up with a list in the same order as the link_map chain. */
+ if (mod->next != NULL)
+ {
+ if (*lastmodp != mod)
+ {
+ lastmodp = &dwfl->modulelist;
+ while (*lastmodp != mod)
+ lastmodp = &(*lastmodp)->next;
+ }
+ *lastmodp = mod->next;
+ mod->next = NULL;
+ while (*lastmodp != NULL)
+ lastmodp = &(*lastmodp)->next;
+ *lastmodp = mod;
+ }
+ lastmodp = &mod->next;
+ }
+
+ clear_r_debug_info (&r_debug_info);
/* We return the number of modules we found if we found any.
If we found none, we return -1 instead of 0 if there was an
- error rather than just nothing found. If link_map handling
- failed, we still have the sniffed modules. */
- return sniffed == 0 || listed > sniffed ? listed : sniffed;
+ error rather than just nothing found. */
+ return listed > 0 ? listed : retval;
}
INTDEF (dwfl_core_file_report)
+NEW_VERSION (dwfl_core_file_report, ELFUTILS_0.158)
+
+#ifdef SHARED
+int _compat_without_executable_dwfl_core_file_report (Dwfl *dwfl, Elf *elf);
+COMPAT_VERSION_NEWPROTO (dwfl_core_file_report, ELFUTILS_0.146,
+ without_executable)
+
+int
+_compat_without_executable_dwfl_core_file_report (Dwfl *dwfl, Elf *elf)
+{
+ return dwfl_core_file_report (dwfl, elf, NULL);
+}
+#endif
static inline Dwarf_Off
cudie_offset (const struct dwfl_cu *cu)
{
+ /* These are real CUs, so there never is a type_sig8. Note
+ initialization of dwkey.start and offset_size in intern_cu ()
+ to see why this calculates the same value for both key and
+ die.cu search items. */
return DIE_OFFSET_FROM_CU_OFFSET (cu->die.cu->start, cu->die.cu->offset_size,
- cu->die.cu->type_sig8 != 0);
+ 0);
}
static int
/* XXX use non-searching lookup */
Dwarf_Die *die = INTUSE(dwarf_offdie) (mod->dw, cuoff, &cu->die);
if (die == NULL)
- return DWFL_E_LIBDW;
+ {
+ free (cu);
+ return DWFL_E_LIBDW;
+ }
assert (die == &cu->die);
struct dwfl_cu **newvec = realloc (mod->cu, ((mod->ncu + 1)
/* 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
inside the next one. A section limit address can appear in
line records. */
if (*addr == sections->refs[idx].end
- && idx < sections->count
+ && idx + 1 < sections->count
&& *addr == sections->refs[idx + 1].start)
++idx;
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)
{
/* Find the debuginfo file for a module from its build ID.
- Copyright (C) 2007, 2009 Red Hat, Inc.
+ Copyright (C) 2007, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
char **debuginfo_file_name)
{
int fd = -1;
+
+ /* Are we looking for a separate debug file for the main file or for
+ an alternate (dwz multi) debug file? Alternatively we could check
+ whether the dwbias == -1. */
+ if (mod->dw != NULL)
+ {
+ const void *build_id;
+ const char *altname;
+ ssize_t build_id_len = INTUSE(dwelf_dwarf_gnu_debugaltlink) (mod->dw,
+ &altname,
+ &build_id);
+ if (build_id_len > 0)
+ fd = __libdwfl_open_by_build_id (mod, true, debuginfo_file_name,
+ build_id_len, build_id);
+
+ if (fd >= 0)
+ {
+ /* We need to open an Elf handle on the file so we can check its
+ build ID note for validation. Backdoor the handle into the
+ module data structure since we had to open it early anyway. */
+ Dwfl_Error error = __libdw_open_file (&fd, &mod->alt_elf,
+ true, false);
+ if (error != DWFL_E_NOERROR)
+ __libdwfl_seterrno (error);
+ else
+ {
+ const void *alt_build_id;
+ ssize_t alt_len = INTUSE(dwelf_elf_gnu_build_id) (mod->alt_elf,
+ &alt_build_id);
+ if (alt_len > 0 && alt_len == build_id_len
+ && memcmp (build_id, alt_build_id, alt_len) == 0)
+ return fd;
+ else
+ {
+ /* A mismatch! */
+ elf_end (mod->alt_elf);
+ mod->alt_elf = NULL;
+ close (fd);
+ fd = -1;
+ }
+ free (*debuginfo_file_name);
+ *debuginfo_file_name = NULL;
+ errno = 0;
+ }
+ }
+ return fd;
+ }
+
+ /* We don't even have the Dwarf yet and it isn't in the main file.
+ Try to find separate debug file now using the module build id. */
const unsigned char *bits;
GElf_Addr vaddr;
+
if (INTUSE(dwfl_module_build_id) (mod, &bits, &vaddr) > 0)
- fd = __libdwfl_open_by_build_id (mod, true, debuginfo_file_name);
+ fd = __libdwfl_open_mod_by_build_id (mod, true, debuginfo_file_name);
if (fd >= 0)
{
/* We need to open an Elf handle on the file so we can check its
/* Find an ELF file for a module from its build ID.
- Copyright (C) 2007-2010 Red Hat, Inc.
+ Copyright (C) 2007-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
int
internal_function
-__libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name)
+__libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name,
+ const size_t id_len, const uint8_t *id)
{
- /* If *FILE_NAME was primed into the module, leave it there
- as the fallback when we have nothing to offer. */
- errno = 0;
- if (mod->build_id_len <= 0)
- return -1;
-
- const size_t id_len = mod->build_id_len;
- const uint8_t *id = mod->build_id_bits;
-
/* Search debuginfo_path directories' .build-id/ subdirectories. */
char id_name[sizeof "/.build-id/" + 1 + id_len * 2 + sizeof ".debug" - 1];
}
int
+internal_function
+__libdwfl_open_mod_by_build_id (Dwfl_Module *mod, bool debug, char **file_name)
+{
+ /* If *FILE_NAME was primed into the module, leave it there
+ as the fallback when we have nothing to offer. */
+ errno = 0;
+ if (mod->build_id_len <= 0)
+ return -1;
+
+ const size_t id_len = mod->build_id_len;
+ const uint8_t *id = mod->build_id_bits;
+
+ return __libdwfl_open_by_build_id (mod, debug, file_name, id_len, id);
+}
+
+int
dwfl_build_id_find_elf (Dwfl_Module *mod,
void **userdata __attribute__ ((unused)),
const char *modname __attribute__ ((unused)),
char **file_name, Elf **elfp)
{
*elfp = NULL;
- int fd = __libdwfl_open_by_build_id (mod, false, file_name);
+ if (modname != NULL && mod->dwfl->executable_for_core != NULL
+ && (strcmp (modname, "[exe]") == 0 || strcmp (modname, "[pie]") == 0))
+ {
+ /* When dwfl_core_file_report was called with a non-NULL executable file
+ name this callback will replace the Dwfl_Module main.name with the
+ recorded executable file when the modname is [exe] or [pie] (which
+ then triggers opening and reporting of the executable). */
+ int fd = open64 (mod->dwfl->executable_for_core, O_RDONLY);
+ if (fd >= 0)
+ {
+ *file_name = strdup (mod->dwfl->executable_for_core);
+ if (*file_name != NULL)
+ return fd;
+ else
+ close (fd);
+ }
+ }
+ int fd = __libdwfl_open_mod_by_build_id (mod, false, file_name);
if (fd >= 0)
{
Dwfl_Error error = __libdw_open_file (&fd, elfp, true, false);
/* Finish a session using libdwfl.
- Copyright (C) 2005, 2008 Red Hat, Inc.
+ Copyright (C) 2005, 2008, 2012-2013 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
if (dwfl == NULL)
return;
+ if (dwfl->process)
+ __libdwfl_process_free (dwfl->process);
+
free (dwfl->lookup_addr);
free (dwfl->lookup_module);
free (dwfl->lookup_segndx);
__libdwfl_module_free (dead);
}
+ free (dwfl->executable_for_core);
free (dwfl);
}
--- /dev/null
+/* Get Dwarf Frame state for target PID or core file.
+ Copyright (C) 2013, 2014 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/>. */
+
+#include "libdwflP.h"
+#include <sys/ptrace.h>
+#include <unistd.h>
+
+/* Set STATE->pc_set from STATE->regs according to the backend. Return true on
+ success, false on error. */
+static bool
+state_fetch_pc (Dwfl_Frame *state)
+{
+ switch (state->pc_state)
+ {
+ case DWFL_FRAME_STATE_PC_SET:
+ return true;
+ case DWFL_FRAME_STATE_PC_UNDEFINED:
+ abort ();
+ case DWFL_FRAME_STATE_ERROR:
+ {
+ Ebl *ebl = state->thread->process->ebl;
+ Dwarf_CIE abi_info;
+ if (ebl_abi_cfi (ebl, &abi_info) != 0)
+ {
+ __libdwfl_seterrno (DWFL_E_LIBEBL);
+ return false;
+ }
+ unsigned ra = abi_info.return_address_register;
+ /* dwarf_frame_state_reg_is_set is not applied here. */
+ if (ra >= ebl_frame_nregs (ebl))
+ {
+ __libdwfl_seterrno (DWFL_E_LIBEBL_BAD);
+ return false;
+ }
+ state->pc = state->regs[ra];
+ state->pc_state = DWFL_FRAME_STATE_PC_SET;
+ }
+ return true;
+ }
+ abort ();
+}
+
+/* Do not call it on your own, to be used by thread_* functions only. */
+
+static void
+state_free (Dwfl_Frame *state)
+{
+ Dwfl_Thread *thread = state->thread;
+ assert (thread->unwound == state);
+ thread->unwound = state->unwound;
+ free (state);
+}
+
+static void
+thread_free_all_states (Dwfl_Thread *thread)
+{
+ while (thread->unwound)
+ state_free (thread->unwound);
+}
+
+static Dwfl_Frame *
+state_alloc (Dwfl_Thread *thread)
+{
+ assert (thread->unwound == NULL);
+ Ebl *ebl = thread->process->ebl;
+ size_t nregs = ebl_frame_nregs (ebl);
+ if (nregs == 0)
+ return NULL;
+ assert (nregs < sizeof (((Dwfl_Frame *) NULL)->regs_set) * 8);
+ Dwfl_Frame *state = malloc (sizeof (*state) + sizeof (*state->regs) * nregs);
+ if (state == NULL)
+ return NULL;
+ state->thread = thread;
+ state->signal_frame = false;
+ state->initial_frame = true;
+ state->pc_state = DWFL_FRAME_STATE_ERROR;
+ memset (state->regs_set, 0, sizeof (state->regs_set));
+ thread->unwound = state;
+ state->unwound = NULL;
+ return state;
+}
+
+void
+internal_function
+__libdwfl_process_free (Dwfl_Process *process)
+{
+ Dwfl *dwfl = process->dwfl;
+ if (process->callbacks->detach != NULL)
+ process->callbacks->detach (dwfl, process->callbacks_arg);
+ assert (dwfl->process == process);
+ dwfl->process = NULL;
+ if (process->ebl_close)
+ ebl_closebackend (process->ebl);
+ free (process);
+ dwfl->attacherr = DWFL_E_NOERROR;
+}
+
+/* Allocate new Dwfl_Process for DWFL. */
+static void
+process_alloc (Dwfl *dwfl)
+{
+ Dwfl_Process *process = malloc (sizeof (*process));
+ if (process == NULL)
+ return;
+ process->dwfl = dwfl;
+ dwfl->process = process;
+}
+
+bool
+dwfl_attach_state (Dwfl *dwfl, Elf *elf, pid_t pid,
+ const Dwfl_Thread_Callbacks *thread_callbacks, void *arg)
+{
+ if (dwfl->process != NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_ATTACH_STATE_CONFLICT);
+ return false;
+ }
+
+ /* Reset any previous error, we are just going to try again. */
+ dwfl->attacherr = DWFL_E_NOERROR;
+ if (thread_callbacks == NULL || thread_callbacks->next_thread == NULL
+ || thread_callbacks->set_initial_registers == NULL)
+ {
+ dwfl->attacherr = DWFL_E_INVALID_ARGUMENT;
+ fail:
+ dwfl->attacherr = __libdwfl_canon_error (dwfl->attacherr);
+ __libdwfl_seterrno (dwfl->attacherr);
+ return false;
+ }
+
+ Ebl *ebl;
+ bool ebl_close;
+ if (elf != NULL)
+ {
+ ebl = ebl_openbackend (elf);
+ ebl_close = true;
+ }
+ else
+ {
+ ebl = NULL;
+ for (Dwfl_Module *mod = dwfl->modulelist; mod != NULL; mod = mod->next)
+ {
+ /* Reading of the vDSO or (deleted) modules may fail as
+ /proc/PID/mem is unreadable without PTRACE_ATTACH and
+ we may not be PTRACE_ATTACH-ed now. MOD would not be
+ re-read later to unwind it when we are already
+ PTRACE_ATTACH-ed to PID. This happens when this function
+ is called from dwfl_linux_proc_attach with elf == NULL.
+ __libdwfl_module_getebl will call __libdwfl_getelf which
+ will call the find_elf callback. */
+ if (strncmp (mod->name, "[vdso: ", 7) == 0
+ || strcmp (strrchr (mod->name, ' ') ?: "",
+ " (deleted)") == 0)
+ continue;
+ Dwfl_Error error = __libdwfl_module_getebl (mod);
+ if (error != DWFL_E_NOERROR)
+ continue;
+ ebl = mod->ebl;
+ break;
+ }
+ ebl_close = false;
+ }
+ if (ebl == NULL)
+ {
+ /* Not identified EBL from any of the modules. */
+ dwfl->attacherr = DWFL_E_PROCESS_NO_ARCH;
+ goto fail;
+ }
+ process_alloc (dwfl);
+ Dwfl_Process *process = dwfl->process;
+ if (process == NULL)
+ {
+ if (ebl_close)
+ ebl_closebackend (ebl);
+ dwfl->attacherr = DWFL_E_NOMEM;
+ goto fail;
+ }
+ process->ebl = ebl;
+ process->ebl_close = ebl_close;
+ process->pid = pid;
+ process->callbacks = thread_callbacks;
+ process->callbacks_arg = arg;
+ return true;
+}
+INTDEF(dwfl_attach_state)
+
+pid_t
+dwfl_pid (Dwfl *dwfl)
+{
+ if (dwfl->attacherr != DWFL_E_NOERROR)
+ {
+ __libdwfl_seterrno (dwfl->attacherr);
+ return -1;
+ }
+
+ if (dwfl->process == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_NO_ATTACH_STATE);
+ return -1;
+ }
+ return dwfl->process->pid;
+}
+INTDEF(dwfl_pid)
+
+Dwfl *
+dwfl_thread_dwfl (Dwfl_Thread *thread)
+{
+ return thread->process->dwfl;
+}
+INTDEF(dwfl_thread_dwfl)
+
+pid_t
+dwfl_thread_tid (Dwfl_Thread *thread)
+{
+ return thread->tid;
+}
+INTDEF(dwfl_thread_tid)
+
+Dwfl_Thread *
+dwfl_frame_thread (Dwfl_Frame *state)
+{
+ return state->thread;
+}
+INTDEF(dwfl_frame_thread)
+
+int
+dwfl_getthreads (Dwfl *dwfl, int (*callback) (Dwfl_Thread *thread, void *arg),
+ void *arg)
+{
+ if (dwfl->attacherr != DWFL_E_NOERROR)
+ {
+ __libdwfl_seterrno (dwfl->attacherr);
+ return -1;
+ }
+
+ Dwfl_Process *process = dwfl->process;
+ if (process == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_NO_ATTACH_STATE);
+ return -1;
+ }
+
+ Dwfl_Thread thread;
+ thread.process = process;
+ thread.unwound = NULL;
+ thread.callbacks_arg = NULL;
+ for (;;)
+ {
+ thread.tid = process->callbacks->next_thread (dwfl,
+ process->callbacks_arg,
+ &thread.callbacks_arg);
+ if (thread.tid < 0)
+ {
+ Dwfl_Error saved_errno = dwfl_errno ();
+ thread_free_all_states (&thread);
+ __libdwfl_seterrno (saved_errno);
+ return -1;
+ }
+ if (thread.tid == 0)
+ {
+ thread_free_all_states (&thread);
+ __libdwfl_seterrno (DWFL_E_NOERROR);
+ return 0;
+ }
+ int err = callback (&thread, arg);
+ if (err != DWARF_CB_OK)
+ {
+ thread_free_all_states (&thread);
+ return err;
+ }
+ assert (thread.unwound == NULL);
+ }
+ /* NOTREACHED */
+}
+INTDEF(dwfl_getthreads)
+
+struct one_arg
+{
+ pid_t tid;
+ bool seen;
+ int (*callback) (Dwfl_Thread *thread, void *arg);
+ void *arg;
+ int ret;
+};
+
+static int
+get_one_thread_cb (Dwfl_Thread *thread, void *arg)
+{
+ struct one_arg *oa = (struct one_arg *) arg;
+ if (! oa->seen && INTUSE(dwfl_thread_tid) (thread) == oa->tid)
+ {
+ oa->seen = true;
+ oa->ret = oa->callback (thread, oa->arg);
+ return DWARF_CB_ABORT;
+ }
+
+ return DWARF_CB_OK;
+}
+
+/* Note not currently exported, will be when there are more Dwfl_Thread
+ properties to query. Use dwfl_getthread_frames for now directly. */
+static int
+getthread (Dwfl *dwfl, pid_t tid,
+ int (*callback) (Dwfl_Thread *thread, void *arg),
+ void *arg)
+{
+ if (dwfl->attacherr != DWFL_E_NOERROR)
+ {
+ __libdwfl_seterrno (dwfl->attacherr);
+ return -1;
+ }
+
+ Dwfl_Process *process = dwfl->process;
+ if (process == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_NO_ATTACH_STATE);
+ return -1;
+ }
+
+ if (process->callbacks->get_thread != NULL)
+ {
+ Dwfl_Thread thread;
+ thread.process = process;
+ thread.unwound = NULL;
+ thread.callbacks_arg = NULL;
+
+ if (process->callbacks->get_thread (dwfl, tid, process->callbacks_arg,
+ &thread.callbacks_arg))
+ {
+ int err;
+ thread.tid = tid;
+ err = callback (&thread, arg);
+ thread_free_all_states (&thread);
+ return err;
+ }
+
+ return -1;
+ }
+
+ struct one_arg oa = { .tid = tid, .callback = callback,
+ .arg = arg, .seen = false };
+ int err = INTUSE(dwfl_getthreads) (dwfl, get_one_thread_cb, &oa);
+
+ if (err == DWARF_CB_ABORT && oa.seen)
+ return oa.ret;
+
+ if (err == DWARF_CB_OK && ! oa.seen)
+ {
+ errno = ESRCH;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return -1;
+ }
+
+ return err;
+}
+
+struct one_thread
+{
+ int (*callback) (Dwfl_Frame *frame, void *arg);
+ void *arg;
+};
+
+static int
+get_one_thread_frames_cb (Dwfl_Thread *thread, void *arg)
+{
+ struct one_thread *ot = (struct one_thread *) arg;
+ return INTUSE(dwfl_thread_getframes) (thread, ot->callback, ot->arg);
+}
+
+int
+dwfl_getthread_frames (Dwfl *dwfl, pid_t tid,
+ int (*callback) (Dwfl_Frame *frame, void *arg),
+ void *arg)
+{
+ struct one_thread ot = { .callback = callback, .arg = arg };
+ return getthread (dwfl, tid, get_one_thread_frames_cb, &ot);
+}
+INTDEF(dwfl_getthread_frames)
+
+int
+dwfl_thread_getframes (Dwfl_Thread *thread,
+ int (*callback) (Dwfl_Frame *state, void *arg),
+ void *arg)
+{
+ if (thread->unwound != NULL)
+ {
+ /* We had to be called from inside CALLBACK. */
+ __libdwfl_seterrno (DWFL_E_ATTACH_STATE_CONFLICT);
+ return -1;
+ }
+ Ebl *ebl = thread->process->ebl;
+ if (ebl_frame_nregs (ebl) == 0)
+ {
+ __libdwfl_seterrno (DWFL_E_NO_UNWIND);
+ return -1;
+ }
+ if (state_alloc (thread) == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_NOMEM);
+ return -1;
+ }
+ Dwfl_Process *process = thread->process;
+ if (! process->callbacks->set_initial_registers (thread,
+ thread->callbacks_arg))
+ {
+ thread_free_all_states (thread);
+ return -1;
+ }
+ if (! state_fetch_pc (thread->unwound))
+ {
+ if (process->callbacks->thread_detach)
+ process->callbacks->thread_detach (thread, thread->callbacks_arg);
+ thread_free_all_states (thread);
+ return -1;
+ }
+
+ Dwfl_Frame *state;
+ do
+ {
+ state = thread->unwound;
+ int err = callback (state, arg);
+ if (err != DWARF_CB_OK)
+ {
+ if (process->callbacks->thread_detach)
+ process->callbacks->thread_detach (thread, thread->callbacks_arg);
+ thread_free_all_states (thread);
+ return err;
+ }
+ __libdwfl_frame_unwind (state);
+ /* The old frame is no longer needed. */
+ state_free (thread->unwound);
+ state = thread->unwound;
+ }
+ while (state && state->pc_state == DWFL_FRAME_STATE_PC_SET);
+
+ Dwfl_Error err = dwfl_errno ();
+ if (process->callbacks->thread_detach)
+ process->callbacks->thread_detach (thread, thread->callbacks_arg);
+ if (state == NULL || state->pc_state == DWFL_FRAME_STATE_ERROR)
+ {
+ thread_free_all_states (thread);
+ __libdwfl_seterrno (err);
+ return -1;
+ }
+ assert (state->pc_state == DWFL_FRAME_STATE_PC_UNDEFINED);
+ thread_free_all_states (thread);
+ return 0;
+}
+INTDEF(dwfl_thread_getframes)
--- /dev/null
+/* Get return address register value for frame.
+ 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
+
+#include "libdwflP.h"
+
+bool
+dwfl_frame_pc (Dwfl_Frame *state, Dwarf_Addr *pc, bool *isactivation)
+{
+ assert (state->pc_state == DWFL_FRAME_STATE_PC_SET);
+ *pc = state->pc;
+ ebl_normalize_pc (state->thread->process->ebl, pc);
+ if (isactivation)
+ {
+ /* Bottom frame? */
+ if (state->initial_frame)
+ *isactivation = true;
+ /* *ISACTIVATION is logical union of whether current or previous frame
+ state is SIGNAL_FRAME. */
+ else if (state->signal_frame)
+ *isactivation = true;
+ else
+ {
+ /* If the previous frame has unwound unsuccessfully just silently do
+ not consider it could be a SIGNAL_FRAME. */
+ __libdwfl_frame_unwind (state);
+ if (state->unwound == NULL
+ || state->unwound->pc_state != DWFL_FRAME_STATE_PC_SET)
+ *isactivation = false;
+ else
+ *isactivation = state->unwound->signal_frame;
+ }
+ }
+ return true;
+}
+INTDEF (dwfl_frame_pc)
--- /dev/null
+/* Get Dwarf Frame state from modules present in DWFL.
+ 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/>. */
+
+#include "libdwflP.h"
+
+bool
+dwfl_thread_state_registers (Dwfl_Thread *thread, int firstreg,
+ unsigned nregs, const Dwarf_Word *regs)
+{
+ Dwfl_Frame *state = thread->unwound;
+ assert (state && state->unwound == NULL);
+ assert (state->initial_frame);
+ for (unsigned regno = firstreg; regno < firstreg + nregs; regno++)
+ if (! __libdwfl_frame_reg_set (state, regno, regs[regno - firstreg]))
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_REGISTER);
+ return false;
+ }
+ return true;
+}
+INTDEF(dwfl_thread_state_registers)
+
+void
+dwfl_thread_state_register_pc (Dwfl_Thread *thread, Dwarf_Word pc)
+{
+ Dwfl_Frame *state = thread->unwound;
+ assert (state && state->unwound == NULL);
+ assert (state->initial_frame);
+ state->pc = pc;
+ state->pc_state = DWFL_FRAME_STATE_PC_SET;
+}
+INTDEF(dwfl_thread_state_register_pc)
/* Fetch source line information for CU.
- Copyright (C) 2005 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
}
*nlines = cu->die.cu->lines->nlines;
- return -1;
+ return 0;
}
/* Maintenance of module list in libdwfl.
- Copyright (C) 2005, 2006, 2007, 2008 Red Hat, Inc.
+ Copyright (C) 2005, 2006, 2007, 2008, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
}
if (mod->dw != NULL)
- INTUSE(dwarf_end) (mod->dw);
+ {
+ INTUSE(dwarf_end) (mod->dw);
+ if (mod->alt != NULL)
+ {
+ INTUSE(dwarf_end) (mod->alt);
+ if (mod->alt_elf != NULL)
+ elf_end (mod->alt_elf);
+ if (mod->alt_fd != -1)
+ close (mod->alt_fd);
+ }
+ }
if (mod->ebl != NULL)
ebl_closebackend (mod->ebl);
if (mod->debug.elf != mod->main.elf)
free_file (&mod->debug);
free_file (&mod->main);
+ free_file (&mod->aux_sym);
if (mod->build_id_bits != NULL)
free (mod->build_id_bits);
+ if (mod->reloc_info != NULL)
+ free (mod->reloc_info);
+
+ if (mod->eh_cfi != NULL)
+ dwarf_cfi_end (mod->eh_cfi);
+
free (mod->name);
free (mod);
}
/* 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
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);
}
/* Find debugging and symbol information for a module in libdwfl.
- Copyright (C) 2005-2011 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
Never returns symbols at addresses above ADDR. */
const char *
-dwfl_module_addrsym (Dwfl_Module *mod, GElf_Addr addr,
- GElf_Sym *closest_sym, GElf_Word *shndxp)
+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)
/* Return true iff we consider ADDR to lie in the same section as SYM. */
GElf_Word addr_shndx = SHN_UNDEF;
- inline bool same_section (const GElf_Sym *sym, GElf_Word shndx)
+ Elf *addr_symelf = NULL;
+ 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)
+ if (addr_shndx == SHN_UNDEF || addr_symelf != symelf)
{
- GElf_Addr mod_addr = dwfl_deadjust_st_value (mod, addr);
+ GElf_Addr mod_addr = dwfl_deadjust_st_value (mod, symelf, addr);
Elf_Scn *scn = NULL;
addr_shndx = SHN_ABS;
- while ((scn = elf_nextscn (mod->symfile->elf, scn)) != NULL)
+ addr_symelf = symelf;
+ while ((scn = elf_nextscn (symelf, scn)) != NULL)
{
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
}
}
- return shndx == addr_shndx;
+ return shndx == addr_shndx && addr_symelf == symelf;
}
/* 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;
- const char *name = INTUSE(dwfl_module_getsym) (mod, i, &sym, &shndx);
+ Elf *elf;
+ 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)
{
- /* 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
- || (GELF_ST_BIND (closest_sym->st_info)
- < GELF_ST_BIND (sym.st_info)))
- {
- if (sym.st_size != 0)
- {
- *closest_sym = sym;
- closest_shndx = shndx;
- closest_name = name;
- }
- else if (closest_name == NULL
- && sym.st_value >= min_label
- && same_section (&sym, 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_name = name;
- }
- }
- /* When the beginning of its range is no closer,
- the end of its range might be. But do not
- replace a global symbol with a local! */
- else if (sym.st_size != 0
- && closest_sym->st_value == sym.st_value
- && closest_sym->st_size > sym.st_size
- && (GELF_ST_BIND (closest_sym->st_info)
- <= GELF_ST_BIND (sym.st_info)))
- {
- *closest_sym = sym;
- closest_shndx = shndx;
- 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);
}
}
}
}
- /* First go through global symbols. mod->first_global is setup by
- dwfl_module_getsymtab to the index of the first global symbol in
- the module's symbol table, or -1 when unknown. All symbols with
- local binding come first in the symbol table, then all globals. */
- search_table (mod->first_global < 0 ? 1 : mod->first_global, syments);
+ /* First go through global symbols. mod->first_global and
+ mod->aux_first_global are setup by dwfl_module_getsymtab to the
+ index of the first global symbol in those symbol tables. Both
+ are non-zero when the table exist, except when there is only a
+ dynsym table loaded through phdrs, then first_global is zero and
+ there will be no auxiliary table. All symbols with local binding
+ come first in the symbol table, then all globals. The zeroth,
+ null entry, in the auxiliary table is skipped if there is a main
+ table. */
+ int first_global = INTUSE (dwfl_module_getsymtab_first_global) (mod);
+ if (first_global < 0)
+ return NULL;
+ search_table (first_global == 0 ? 1 : first_global, syments);
/* 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 && mod->first_global > 1
- && (sizeless_name == NULL || sizeless_sym.st_value != addr))
- search_table (1, mod->first_global);
+ if (closest_name == NULL && first_global > 1
+ && (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)
+ *elfp = closest_elf;
+ if (biasp != NULL)
+ *biasp = dwfl_adjusted_st_value (mod, closest_elf, 0);
return closest_name;
}
+
+
+const char *
+dwfl_module_addrsym (Dwfl_Module *mod, GElf_Addr addr,
+ GElf_Sym *closest_sym, GElf_Word *shndxp)
+{
+ 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)
/* Return build ID information for a module.
- Copyright (C) 2007-2010 Red Hat, Inc.
+ Copyright (C) 2007-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
return len;
}
-#define NO_VADDR ((GElf_Addr) -1l)
-
-static int
-check_notes (Dwfl_Module *mod, bool set, Elf_Data *data, GElf_Addr data_vaddr)
-{
- size_t pos = 0;
- GElf_Nhdr nhdr;
- size_t name_pos;
- size_t desc_pos;
- while ((pos = gelf_getnote (data, pos, &nhdr, &name_pos, &desc_pos)) > 0)
- if (nhdr.n_type == NT_GNU_BUILD_ID
- && nhdr.n_namesz == sizeof "GNU" && !memcmp (data->d_buf + name_pos,
- "GNU", sizeof "GNU"))
- return found_build_id (mod, set,
- data->d_buf + desc_pos, nhdr.n_descsz,
- data_vaddr == NO_VADDR ? 0
- : data_vaddr + desc_pos);
- return 0;
-}
-
int
internal_function
__libdwfl_find_build_id (Dwfl_Module *mod, bool set, Elf *elf)
{
- size_t shstrndx = SHN_UNDEF;
- int result = 0;
+ const void *build_id_bits;
+ GElf_Addr build_id_elfaddr;
+ int build_id_len;
- Elf_Scn *scn = elf_nextscn (elf, NULL);
+ /* For mod == NULL use dwelf_elf_gnu_build_id directly. */
+ assert (mod != NULL);
- if (scn == NULL)
- {
- /* No sections, have to look for phdrs. */
- GElf_Ehdr ehdr_mem;
- GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
- size_t phnum;
- if (unlikely (ehdr == NULL)
- || unlikely (elf_getphdrnum (elf, &phnum) != 0))
- {
- __libdwfl_seterrno (DWFL_E_LIBELF);
- return -1;
- }
- for (size_t i = 0; result == 0 && i < phnum; ++i)
- {
- GElf_Phdr phdr_mem;
- GElf_Phdr *phdr = gelf_getphdr (elf, i, &phdr_mem);
- if (likely (phdr != NULL) && phdr->p_type == PT_NOTE)
- result = check_notes (mod, set,
- elf_getdata_rawchunk (elf,
- phdr->p_offset,
- phdr->p_filesz,
- ELF_T_NHDR),
- dwfl_adjusted_address (mod, phdr->p_vaddr));
- }
- }
- else
- do
- {
- GElf_Shdr shdr_mem;
- GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
- if (likely (shdr != NULL) && shdr->sh_type == SHT_NOTE)
- {
- /* Determine the right sh_addr in this module. */
- GElf_Addr vaddr = 0;
- if (!(shdr->sh_flags & SHF_ALLOC))
- vaddr = NO_VADDR;
- else if (mod->e_type != ET_REL)
- vaddr = dwfl_adjusted_address (mod, shdr->sh_addr);
- else if (__libdwfl_relocate_value (mod, elf, &shstrndx,
- elf_ndxscn (scn), &vaddr))
- vaddr = NO_VADDR;
- result = check_notes (mod, set, elf_getdata (scn, NULL), vaddr);
- }
- }
- while (result == 0 && (scn = elf_nextscn (elf, scn)) != NULL);
+ int result = __libdwfl_find_elf_build_id (mod, elf, &build_id_bits,
+ &build_id_elfaddr, &build_id_len);
+ if (result <= 0)
+ return result;
- return result;
+ GElf_Addr build_id_vaddr = build_id_elfaddr + (build_id_elfaddr != 0
+ ? mod->main_bias : 0);
+ return found_build_id (mod, set, build_id_bits, build_id_len, build_id_vaddr);
}
int
/* Find debugging and symbol information for a module in libdwfl.
- Copyright (C) 2005-2011 Red Hat, Inc.
+ Copyright (C) 2005-2012, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
not, see <http://www.gnu.org/licenses/>. */
#include "libdwflP.h"
+#include <inttypes.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include "../libdw/libdwP.h" /* DWARF_E_* values are here. */
+#include "../libelf/libelfP.h"
-
-/* Open libelf FILE->fd and compute the load base of ELF as loaded in MOD.
- When we return success, FILE->elf and FILE->vaddr are set up. */
static inline Dwfl_Error
-open_elf (Dwfl_Module *mod, struct dwfl_file *file)
+open_elf_file (Elf **elf, int *fd, char **name)
{
- if (file->elf == NULL)
+ if (*elf == NULL)
{
/* CBFAIL uses errno if it's set, so clear it first in case we don't
set it with an open failure below. */
/* If there was a pre-primed file name left that the callback left
behind, try to open that file name. */
- if (file->fd < 0 && file->name != NULL)
- file->fd = TEMP_FAILURE_RETRY (open64 (file->name, O_RDONLY));
+ if (*fd < 0 && *name != NULL)
+ *fd = TEMP_FAILURE_RETRY (open64 (*name, O_RDONLY));
- if (file->fd < 0)
+ if (*fd < 0)
return CBFAIL;
- Dwfl_Error error = __libdw_open_file (&file->fd, &file->elf, true, false);
- if (error != DWFL_E_NOERROR)
- return error;
+ return __libdw_open_file (fd, elf, true, false);
}
- else if (unlikely (elf_kind (file->elf) != ELF_K_ELF))
+ else if (unlikely (elf_kind (*elf) != ELF_K_ELF))
{
- elf_end (file->elf);
- file->elf = NULL;
- close (file->fd);
- file->fd = -1;
+ elf_end (*elf);
+ *elf = NULL;
+ close (*fd);
+ *fd = -1;
return DWFL_E_BADELF;
}
+ /* Elf file already open and looks fine. */
+ return DWFL_E_NOERROR;
+}
+
+/* Open libelf FILE->fd and compute the load base of ELF as loaded in MOD.
+ When we return success, FILE->elf and FILE->vaddr are set up. */
+static inline Dwfl_Error
+open_elf (Dwfl_Module *mod, struct dwfl_file *file)
+{
+ Dwfl_Error error = open_elf_file (&file->elf, &file->fd, &file->name);
+ if (error != DWFL_E_NOERROR)
+ return error;
+
GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (file->elf, &ehdr_mem);
if (ehdr == NULL)
{
return DWFL_E (LIBELF, elf_errno ());
}
- if (mod->e_type != ET_REL)
+ if (ehdr->e_type != ET_REL)
{
/* In any non-ET_REL file, we compute the "synchronization address".
}
}
- mod->e_type = ehdr->e_type;
+ /* We only want to set the module e_type explictly once, derived from
+ the main ELF file. (It might be changed for the kernel, because
+ that is special - see below.) open_elf is always called first for
+ the main ELF file, because both find_dw and find_symtab call
+ __libdwfl_getelf first to open the main file. So don't let debug
+ or aux files override the module e_type. The kernel heuristic
+ below could otherwise trigger for non-kernel/non-main files, since
+ their phdrs might not match the actual load addresses. */
+ if (file == &mod->main)
+ {
+ mod->e_type = ehdr->e_type;
- /* Relocatable Linux kernels are ET_EXEC but act like ET_DYN. */
- if (mod->e_type == ET_EXEC && file->vaddr != mod->low_addr)
- mod->e_type = ET_DYN;
+ /* Relocatable Linux kernels are ET_EXEC but act like ET_DYN. */
+ if (mod->e_type == ET_EXEC && file->vaddr != mod->low_addr)
+ mod->e_type = ET_DYN;
+ }
+ else
+ assert (mod->main.elf != NULL);
return DWFL_E_NOERROR;
}
+/* We have an authoritative build ID for this module MOD, so don't use
+ a file by name that doesn't match that ID. */
+static void
+mod_verify_build_id (Dwfl_Module *mod)
+{
+ assert (mod->build_id_len > 0);
+
+ switch (__builtin_expect (__libdwfl_find_build_id (mod, false,
+ mod->main.elf), 2))
+ {
+ case 2:
+ /* Build ID matches as it should. */
+ return;
+
+ case -1: /* ELF error. */
+ mod->elferr = INTUSE(dwfl_errno) ();
+ break;
+
+ case 0: /* File has no build ID note. */
+ case 1: /* FIle has a build ID that does not match. */
+ mod->elferr = DWFL_E_WRONG_ID_ELF;
+ break;
+
+ default:
+ abort ();
+ }
+
+ /* We get here when it was the right ELF file. Clear it out. */
+ elf_end (mod->main.elf);
+ mod->main.elf = NULL;
+ if (mod->main.fd >= 0)
+ {
+ close (mod->main.fd);
+ mod->main.fd = -1;
+ }
+}
+
/* Find the main ELF file for this module and open libelf on it.
When we return success, MOD->main.elf and MOD->main.bias are set up. */
void
mod->build_id_len = 0;
}
else if (fallback)
- {
- /* We have an authoritative build ID for this module, so
- don't use a file by name that doesn't match that ID. */
-
- assert (mod->build_id_len > 0);
-
- switch (__builtin_expect (__libdwfl_find_build_id (mod, false,
- mod->main.elf), 2))
- {
- case 2:
- /* Build ID matches as it should. */
- return;
-
- case -1: /* ELF error. */
- mod->elferr = INTUSE(dwfl_errno) ();
- break;
-
- case 0: /* File has no build ID note. */
- case 1: /* FIle has a build ID that does not match. */
- mod->elferr = DWFL_E_WRONG_ID_ELF;
- break;
-
- default:
- abort ();
- }
-
- /* We get here when it was the right ELF file. Clear it out. */
- elf_end (mod->main.elf);
- mod->main.elf = NULL;
- if (mod->main.fd >= 0)
- {
- close (mod->main.fd);
- mod->main.fd = -1;
- }
- }
+ mod_verify_build_id (mod);
mod->main_bias = mod->e_type == ET_REL ? 0 : mod->low_addr - mod->main.vaddr;
}
-/* Search an ELF file for a ".gnu_debuglink" section. */
-static const char *
-find_debuglink (Elf *elf, GElf_Word *crc)
-{
- size_t shstrndx;
- if (elf_getshdrstrndx (elf, &shstrndx) < 0)
- return NULL;
-
- Elf_Scn *scn = NULL;
- while ((scn = elf_nextscn (elf, scn)) != NULL)
- {
- GElf_Shdr shdr_mem;
- GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
- if (shdr == NULL)
- return NULL;
-
- const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
- if (name == NULL)
- return NULL;
-
- if (!strcmp (name, ".gnu_debuglink"))
- break;
- }
-
- if (scn == NULL)
- return NULL;
-
- /* Found the .gnu_debuglink section. Extract its contents. */
- Elf_Data *rawdata = elf_rawdata (scn, NULL);
- if (rawdata == NULL)
- return NULL;
-
- Elf_Data crcdata =
- {
- .d_type = ELF_T_WORD,
- .d_buf = crc,
- .d_size = sizeof *crc,
- .d_version = EV_CURRENT,
- };
- Elf_Data conv =
- {
- .d_type = ELF_T_WORD,
- .d_buf = rawdata->d_buf + rawdata->d_size - sizeof *crc,
- .d_size = sizeof *crc,
- .d_version = EV_CURRENT,
- };
-
- GElf_Ehdr ehdr_mem;
- GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
- if (ehdr == NULL)
- return NULL;
-
- Elf_Data *d = gelf_xlatetom (elf, &crcdata, &conv, ehdr->e_ident[EI_DATA]);
- if (d == NULL)
- return NULL;
- assert (d == &crcdata);
-
- return rawdata->d_buf;
-}
-
/* If the main file might have been prelinked, then we need to
discover the correct synchronization address between the main and
debug files. Because of prelink's section juggling, we cannot rely
looked like before prelink juggled them--when they still had a
direct correspondence to the debug file. */
static Dwfl_Error
-find_prelink_address_sync (Dwfl_Module *mod)
+find_prelink_address_sync (Dwfl_Module *mod, struct dwfl_file *file)
{
/* The magic section is only identified by name. */
size_t shstrndx;
consider_shdr (undo_interp, shdr.s64[i].sh_type, shdr.s64[i].sh_flags,
shdr.s64[i].sh_addr, shdr.s64[i].sh_size);
- if (highest > mod->debug.vaddr)
- mod->debug.address_sync = highest;
+ if (highest > file->vaddr)
+ file->address_sync = highest;
else
return DWFL_E_BAD_PRELINK;
}
return DWFL_E_NOERROR;
GElf_Word debuglink_crc = 0;
- const char *debuglink_file = find_debuglink (mod->main.elf, &debuglink_crc);
+ const char *debuglink_file;
+ debuglink_file = INTUSE(dwelf_elf_gnu_debuglink) (mod->main.elf,
+ &debuglink_crc);
mod->debug.fd = (*mod->dwfl->callbacks->find_debuginfo) (MODCB_ARGS (mod),
mod->main.name,
&mod->debug.name);
Dwfl_Error result = open_elf (mod, &mod->debug);
if (result == DWFL_E_NOERROR && mod->debug.address_sync != 0)
- result = find_prelink_address_sync (mod);
+ result = find_prelink_address_sync (mod, &mod->debug);
return result;
}
+/* Try to find the alternative debug link for the given DWARF and set
+ it if found. Only called when mod->dw is already setup but still
+ might need an alternative (dwz multi) debug file. filename is either
+ the main or debug name from which the Dwarf was created. */
+static void
+find_debug_altlink (Dwfl_Module *mod, const char *filename)
+{
+ assert (mod->dw != NULL);
+
+ const char *altname;
+ const void *build_id;
+ ssize_t build_id_len = INTUSE(dwelf_dwarf_gnu_debugaltlink) (mod->dw,
+ &altname,
+ &build_id);
+
+ if (build_id_len > 0)
+ {
+ /* We could store altfile in the module, but don't really need it. */
+ char *altfile = NULL;
+ mod->alt_fd = (*mod->dwfl->callbacks->find_debuginfo) (MODCB_ARGS (mod),
+ filename,
+ altname,
+ 0,
+ &altfile);
+
+ /* The (internal) callbacks might just set mod->alt_elf directly
+ because they open the Elf anyway for sanity checking.
+ Otherwise open either the given file name or use the fd
+ returned. */
+ Dwfl_Error error = open_elf_file (&mod->alt_elf, &mod->alt_fd,
+ &altfile);
+ if (error == DWFL_E_NOERROR)
+ {
+ mod->alt = INTUSE(dwarf_begin_elf) (mod->alt_elf,
+ DWARF_C_READ, NULL);
+ if (mod->alt == NULL)
+ {
+ elf_end (mod->alt_elf);
+ mod->alt_elf = NULL;
+ close (mod->alt_fd);
+ mod->alt_fd = -1;
+ }
+ else
+ dwarf_setalt (mod->dw, mod->alt);
+ }
+
+ free (altfile); /* See above, we don't really need it. */
+ }
+}
/* Try to find a symbol table in FILE.
Returns DWFL_E_NOERROR if a proper one is found.
*symfile = file;
*strshndx = shdr->sh_link;
*syments = shdr->sh_size / shdr->sh_entsize;
+ *first_global = shdr->sh_info;
break;
case SHT_SYMTAB_SHNDX:
}
}
+
+#if USE_LZMA
+/* Try to find the offset between the main file and .gnu_debugdata. */
+static bool
+find_aux_address_sync (Dwfl_Module *mod)
+{
+ /* Don't trust the phdrs in the minisymtab elf file to be setup correctly.
+ The address_sync is equal to the main file it is embedded in at first. */
+ mod->aux_sym.address_sync = mod->main.address_sync;
+
+ /* Adjust address_sync for the difference in entry addresses, attempting to
+ account for ELF relocation changes after aux was split. */
+ GElf_Ehdr ehdr_main, ehdr_aux;
+ if (unlikely (gelf_getehdr (mod->main.elf, &ehdr_main) == NULL)
+ || unlikely (gelf_getehdr (mod->aux_sym.elf, &ehdr_aux) == NULL))
+ return false;
+ mod->aux_sym.address_sync += ehdr_aux.e_entry - ehdr_main.e_entry;
+
+ /* The shdrs are setup OK to make find_prelink_address_sync () do the right
+ thing, which is possibly more reliable, but it needs .gnu.prelink_undo. */
+ if (mod->aux_sym.address_sync != 0)
+ return find_prelink_address_sync (mod, &mod->aux_sym) == DWFL_E_NOERROR;
+
+ return true;
+}
+#endif
+
+/* Try to find the auxiliary symbol table embedded in the main elf file
+ section .gnu_debugdata. Only matters if the symbol information comes
+ from the main file dynsym. No harm done if not found. */
+static void
+find_aux_sym (Dwfl_Module *mod __attribute__ ((unused)),
+ Elf_Scn **aux_symscn __attribute__ ((unused)),
+ Elf_Scn **aux_xndxscn __attribute__ ((unused)),
+ GElf_Word *aux_strshndx __attribute__ ((unused)))
+{
+ /* Since a .gnu_debugdata section is compressed using lzma don't do
+ anything unless we have support for that. */
+#if USE_LZMA
+ Elf *elf = mod->main.elf;
+
+ size_t shstrndx;
+ if (elf_getshdrstrndx (elf, &shstrndx) < 0)
+ return;
+
+ Elf_Scn *scn = NULL;
+ while ((scn = elf_nextscn (elf, scn)) != NULL)
+ {
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+ if (shdr == NULL)
+ return;
+
+ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
+ if (name == NULL)
+ return;
+
+ if (!strcmp (name, ".gnu_debugdata"))
+ break;
+ }
+
+ if (scn == NULL)
+ return;
+
+ /* Found the .gnu_debugdata section. Uncompress the lzma image and
+ turn it into an ELF image. */
+ Elf_Data *rawdata = elf_rawdata (scn, NULL);
+ if (rawdata == NULL)
+ return;
+
+ Dwfl_Error error;
+ void *buffer = NULL;
+ size_t size = 0;
+ error = __libdw_unlzma (-1, 0, rawdata->d_buf, rawdata->d_size,
+ &buffer, &size);
+ if (error == DWFL_E_NOERROR)
+ {
+ if (unlikely (size == 0))
+ free (buffer);
+ else
+ {
+ mod->aux_sym.elf = elf_memory (buffer, size);
+ if (mod->aux_sym.elf == NULL)
+ free (buffer);
+ else
+ {
+ mod->aux_sym.fd = -1;
+ mod->aux_sym.elf->flags |= ELF_F_MALLOCED;
+ if (open_elf (mod, &mod->aux_sym) != DWFL_E_NOERROR)
+ return;
+ if (! find_aux_address_sync (mod))
+ {
+ elf_end (mod->aux_sym.elf);
+ mod->aux_sym.elf = NULL;
+ return;
+ }
+
+ /* So far, so good. Get minisymtab table data and cache it. */
+ bool minisymtab = false;
+ scn = NULL;
+ while ((scn = elf_nextscn (mod->aux_sym.elf, scn)) != NULL)
+ {
+ GElf_Shdr shdr_mem, *shdr = gelf_getshdr (scn, &shdr_mem);
+ if (shdr != NULL)
+ switch (shdr->sh_type)
+ {
+ case SHT_SYMTAB:
+ minisymtab = true;
+ *aux_symscn = scn;
+ *aux_strshndx = shdr->sh_link;
+ mod->aux_syments = shdr->sh_size / shdr->sh_entsize;
+ mod->aux_first_global = shdr->sh_info;
+ if (*aux_xndxscn != NULL)
+ return;
+ break;
+
+ case SHT_SYMTAB_SHNDX:
+ *aux_xndxscn = scn;
+ if (minisymtab)
+ return;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (minisymtab)
+ /* We found one, though no SHT_SYMTAB_SHNDX to go with it. */
+ return;
+
+ /* We found no SHT_SYMTAB, so everything else is bogus. */
+ *aux_xndxscn = NULL;
+ *aux_strshndx = 0;
+ mod->aux_syments = 0;
+ elf_end (mod->aux_sym.elf);
+ mod->aux_sym.elf = NULL;
+ return;
+ }
+ }
+ }
+ else
+ free (buffer);
+#endif
+}
+
/* Try to find a symbol table in either MOD->main.elf or MOD->debug.elf. */
static void
find_symtab (Dwfl_Module *mod)
{
- if (mod->symdata != NULL /* Already done. */
+ if (mod->symdata != NULL || mod->aux_symdata != NULL /* Already done. */
|| mod->symerr != DWFL_E_NOERROR) /* Cached previous failure. */
return;
if (mod->symerr != DWFL_E_NOERROR)
return;
- mod->first_global = -1; /* Unknown, unless explicitly set by load_symtab. */
-
/* First see if the main ELF file has the debugging information. */
Elf_Scn *symscn = NULL, *xndxscn = NULL;
- GElf_Word strshndx;
+ Elf_Scn *aux_symscn = NULL, *aux_xndxscn = NULL;
+ GElf_Word strshndx, aux_strshndx = 0;
mod->symerr = load_symtab (&mod->main, &mod->symfile, &symscn,
&xndxscn, &mod->syments, &mod->first_global,
&strshndx);
break;
case DWFL_E_NO_SYMTAB:
+ /* There might be an auxiliary table. */
+ find_aux_sym (mod, &aux_symscn, &aux_xndxscn, &aux_strshndx);
+
if (symscn != NULL)
{
/* We still have the dynamic symbol table. */
break;
}
+ if (aux_symscn != NULL)
+ {
+ /* We still have the auxiliary symbol table. */
+ mod->symerr = DWFL_E_NOERROR;
+ goto aux_cache;
+ }
+
/* Last ditch, look for dynamic symbols without section headers. */
find_dynsym (mod);
return;
{
elferr:
mod->symerr = DWFL_E (LIBELF, elf_errno ());
- return;
+ goto aux_cleanup;
}
/* Cache the data; MOD->syments and MOD->first_global were set above. */
mod->symdata = elf_getdata (symscn, NULL);
if (mod->symdata == NULL)
goto elferr;
+
+ /* Cache any auxiliary symbol info, when it fails, just ignore aux_sym. */
+ if (aux_symscn != NULL)
+ {
+ aux_cache:
+ /* This does some sanity checks on the string table section. */
+ if (elf_strptr (mod->aux_sym.elf, aux_strshndx, 0) == NULL)
+ {
+ aux_cleanup:
+ mod->aux_syments = 0;
+ elf_end (mod->aux_sym.elf);
+ mod->aux_sym.elf = NULL;
+ return;
+ }
+
+ mod->aux_symstrdata = elf_getdata (elf_getscn (mod->aux_sym.elf,
+ aux_strshndx),
+ NULL);
+ if (mod->aux_symstrdata == NULL)
+ goto aux_cleanup;
+
+ if (aux_xndxscn == NULL)
+ mod->aux_symxndxdata = NULL;
+ else
+ {
+ mod->aux_symxndxdata = elf_getdata (aux_xndxscn, NULL);
+ if (mod->aux_symxndxdata == NULL)
+ goto aux_cleanup;
+ }
+
+ mod->aux_symdata = elf_getdata (aux_symscn, NULL);
+ if (mod->aux_symdata == NULL)
+ goto aux_cleanup;
+ }
}
case DWFL_E_NOERROR:
mod->debug.elf = mod->main.elf;
mod->debug.address_sync = mod->main.address_sync;
+
+ /* The Dwarf might need an alt debug file, find that now after
+ everything about the debug file has been setup (the
+ find_debuginfo callback might need it). */
+ find_debug_altlink (mod, mod->main.name);
return;
case DWFL_E_NO_DWARF:
{
case DWFL_E_NOERROR:
mod->dwerr = load_dw (mod, &mod->debug);
+ if (mod->dwerr == DWFL_E_NOERROR)
+ {
+ /* The Dwarf might need an alt debug file, find that now after
+ everything about the debug file has been setup (the
+ find_debuginfo callback might need it). */
+ find_debug_altlink (mod, mod->debug.name);
+ return;
+ }
+
break;
case DWFL_E_CB: /* The find_debuginfo hook failed. */
find_symtab (mod);
if (mod->symerr == DWFL_E_NOERROR)
- return mod->syments;
+ /* We will skip the auxiliary zero entry if there is another one. */
+ return (mod->syments + mod->aux_syments
+ - (mod->syments > 0 && mod->aux_syments > 0 ? 1 : 0));
__libdwfl_seterrno (mod->symerr);
return -1;
}
INTDEF (dwfl_module_getsymtab)
+
+int
+dwfl_module_getsymtab_first_global (Dwfl_Module *mod)
+{
+ if (mod == NULL)
+ return -1;
+
+ find_symtab (mod);
+ if (mod->symerr == DWFL_E_NOERROR)
+ {
+ /* All local symbols should come before all global symbols. If
+ we have an auxiliary table make sure all the main locals come
+ first, then all aux locals, then all main globals and finally all
+ aux globals. And skip the auxiliary table zero undefined
+ entry. */
+ int skip_aux_zero = (mod->syments > 0 && mod->aux_syments > 0) ? 1 : 0;
+ return mod->first_global + mod->aux_first_global - skip_aux_zero;
+ }
+
+ __libdwfl_seterrno (mod->symerr);
+ return -1;
+}
+INTDEF (dwfl_module_getsymtab_first_global)
/* Find debugging and symbol information for a module in libdwfl.
- Copyright (C) 2006-2010 Red Hat, Inc.
+ Copyright (C) 2006-2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#include "libdwflP.h"
const char *
-dwfl_module_getsym (Dwfl_Module *mod, int ndx,
- GElf_Sym *sym, GElf_Word *shndxp)
+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;
return NULL;
}
+ /* All local symbols should come before all global symbols. If we
+ have an auxiliary table make sure all the main locals come first,
+ then all aux locals, then all main globals and finally all aux globals.
+ And skip the auxiliary table zero undefined entry. */
GElf_Word shndx;
- sym = gelf_getsymshndx (mod->symdata, mod->symxndxdata, ndx, sym, &shndx);
+ int tndx = ndx;
+ int skip_aux_zero = (mod->syments > 0 && mod->aux_syments > 0) ? 1 : 0;
+ Elf *elf;
+ Elf_Data *symdata;
+ Elf_Data *symxndxdata;
+ Elf_Data *symstrdata;
+ if (mod->aux_symdata == NULL
+ || ndx < mod->first_global)
+ {
+ /* main symbol table (locals). */
+ tndx = ndx;
+ elf = mod->symfile->elf;
+ symdata = mod->symdata;
+ symxndxdata = mod->symxndxdata;
+ symstrdata = mod->symstrdata;
+ }
+ else if (ndx < mod->first_global + mod->aux_first_global - skip_aux_zero)
+ {
+ /* aux symbol table (locals). */
+ tndx = ndx - mod->first_global + skip_aux_zero;
+ elf = mod->aux_sym.elf;
+ symdata = mod->aux_symdata;
+ symxndxdata = mod->aux_symxndxdata;
+ symstrdata = mod->aux_symstrdata;
+ }
+ else if ((size_t) ndx < mod->syments + mod->aux_first_global - skip_aux_zero)
+ {
+ /* main symbol table (globals). */
+ tndx = ndx - mod->aux_first_global + skip_aux_zero;
+ elf = mod->symfile->elf;
+ symdata = mod->symdata;
+ symxndxdata = mod->symxndxdata;
+ symstrdata = mod->symstrdata;
+ }
+ else
+ {
+ /* aux symbol table (globals). */
+ tndx = ndx - mod->syments + skip_aux_zero;
+ elf = mod->aux_sym.elf;
+ symdata = mod->aux_symdata;
+ symxndxdata = mod->aux_symxndxdata;
+ symstrdata = mod->aux_symstrdata;
+ }
+ sym = gelf_getsymshndx (symdata, symxndxdata, tndx, sym, &shndx);
+
if (unlikely (sym == NULL))
{
__libdwfl_seterrno (DWFL_E_LIBELF);
|| (sym->st_shndx < SHN_LORESERVE && sym->st_shndx != SHN_UNDEF)))
{
GElf_Shdr shdr_mem;
- GElf_Shdr *shdr = gelf_getshdr (elf_getscn (mod->symfile->elf, shndx),
- &shdr_mem);
+ GElf_Shdr *shdr = gelf_getshdr (elf_getscn (elf, shndx), &shdr_mem);
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 & ebl_func_addr_mask (mod->ebl);
+ *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;
/* In an ET_REL file, the symbol table values are relative
to the section, not to the module's load base. */
size_t symshstrndx = SHN_UNDEF;
- Dwfl_Error result = __libdwfl_relocate_value (mod, mod->symfile->elf,
+ 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);
}
else if (alloc)
/* Apply the bias to the symbol value. */
- sym->st_value = dwfl_adjusted_st_value (mod, sym->st_value);
+ st_value = dwfl_adjusted_st_value (mod,
+ *resolved ? mod->main.elf : elf,
+ st_value);
break;
}
- if (unlikely (sym->st_name >= mod->symstrdata->d_size))
+ 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);
return NULL;
}
- return (const char *) mod->symstrdata->d_buf + sym->st_name;
+ if (elfp)
+ *elfp = elf;
+ if (biasp)
+ *biasp = dwfl_adjusted_st_value (mod, elf, 0);
+ return (const char *) symstrdata->d_buf + sym->st_name;
+}
+
+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)
+{
+ bool resolved;
+ return __libdwfl_getsym (mod, ndx, sym, NULL, shndxp, NULL, NULL,
+ &resolved, true);
}
INTDEF (dwfl_module_getsym)
: dwfl_adjusted_dwarf_addr (mod, 0));
if (symbias)
*symbias = (mod->symfile == NULL ? (Dwarf_Addr) -1
- : dwfl_adjusted_st_value (mod, 0));
+ : dwfl_adjusted_st_value (mod, mod->symfile->elf, 0));
if (mainfile)
*mainfile = mod->main.name;
rejiggering (see below). */
#define REL_MIN_ALIGN ((GElf_Xword) 0x100)
-Dwfl_Module *
+bool
internal_function
-__libdwfl_report_elf (Dwfl *dwfl, const char *name, const char *file_name,
- int fd, Elf *elf, GElf_Addr base, bool sanity)
+__libdwfl_elf_address_range (Elf *elf, GElf_Addr base, bool add_p_vaddr,
+ bool sanity, GElf_Addr *vaddrp,
+ GElf_Addr *address_syncp, GElf_Addr *startp,
+ GElf_Addr *endp, GElf_Addr *biasp,
+ GElf_Half *e_typep)
{
GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem);
if (ehdr == NULL)
{
elf_error:
__libdwfl_seterrno (DWFL_E_LIBELF);
- return NULL;
+ return false;
}
GElf_Addr vaddr = 0;
case ET_CORE:
/* An assigned base address is meaningless for these. */
base = 0;
+ add_p_vaddr = true;
case ET_DYN:
default:;
{
vaddr = ph->p_vaddr & -ph->p_align;
address_sync = ph->p_vaddr + ph->p_memsz;
- if ((base & (ph->p_align - 1)) != 0)
- base = (base + ph->p_align - 1) & -ph->p_align;
- start = base + (ph->p_vaddr & -ph->p_align);
break;
}
}
- bias = start - vaddr;
+ if (add_p_vaddr)
+ {
+ start = base + vaddr;
+ bias = base;
+ }
+ else
+ {
+ start = base;
+ bias = base - vaddr;
+ }
for (size_t i = phnum; i-- > 0;)
{
if (ph->p_type == PT_LOAD
&& ph->p_vaddr + ph->p_memsz > 0)
{
- end = base + (ph->p_vaddr + ph->p_memsz);
+ end = bias + (ph->p_vaddr + ph->p_memsz);
break;
}
}
if (end == 0 && sanity)
{
__libdwfl_seterrno (DWFL_E_NO_PHDR);
- return NULL;
+ return false;
}
break;
}
+ if (vaddrp)
+ *vaddrp = vaddr;
+ if (address_syncp)
+ *address_syncp = address_sync;
+ if (startp)
+ *startp = start;
+ if (endp)
+ *endp = end;
+ if (biasp)
+ *biasp = bias;
+ if (e_typep)
+ *e_typep = ehdr->e_type;
+ return true;
+}
+Dwfl_Module *
+internal_function
+__libdwfl_report_elf (Dwfl *dwfl, const char *name, const char *file_name,
+ int fd, Elf *elf, GElf_Addr base, bool add_p_vaddr,
+ bool sanity)
+{
+ GElf_Addr vaddr, address_sync, start, end, bias;
+ GElf_Half e_type;
+ if (! __libdwfl_elf_address_range (elf, base, add_p_vaddr, sanity, &vaddr,
+ &address_sync, &start, &end, &bias,
+ &e_type))
+ return NULL;
Dwfl_Module *m = INTUSE(dwfl_report_module) (dwfl, name, start, end);
if (m != NULL)
{
m->main.vaddr = vaddr;
m->main.address_sync = address_sync;
m->main_bias = bias;
- m->e_type = ehdr->e_type;
+ m->e_type = e_type;
}
else
{
}
Dwfl_Module *
-dwfl_report_elf (Dwfl *dwfl, const char *name,
- const char *file_name, int fd, GElf_Addr base)
+dwfl_report_elf (Dwfl *dwfl, const char *name, const char *file_name, int fd,
+ GElf_Addr base, bool add_p_vaddr)
{
bool closefd = false;
if (fd < 0)
}
Dwfl_Module *mod = __libdwfl_report_elf (dwfl, name, file_name,
- fd, elf, base, true);
+ fd, elf, base, add_p_vaddr, true);
if (mod == NULL)
{
elf_end (elf);
return mod;
}
INTDEF (dwfl_report_elf)
+NEW_VERSION (dwfl_report_elf, ELFUTILS_0.156)
+
+#ifdef SHARED
+Dwfl_Module *
+ _compat_without_add_p_vaddr_dwfl_report_elf (Dwfl *dwfl, const char *name,
+ const char *file_name, int fd,
+ GElf_Addr base);
+COMPAT_VERSION_NEWPROTO (dwfl_report_elf, ELFUTILS_0.122, without_add_p_vaddr)
+
+Dwfl_Module *
+_compat_without_add_p_vaddr_dwfl_report_elf (Dwfl *dwfl, const char *name,
+ const char *file_name, int fd,
+ GElf_Addr base)
+{
+ return dwfl_report_elf (dwfl, name, file_name, fd, base, true);
+}
+#endif
#include <sys/param.h>
#include <alloca.h>
#include <endian.h>
+#include <unistd.h>
/* A good size for the initial read from memory, if it's not too costly.
Dwfl_Memory_Callback *memory_callback,
void *memory_callback_arg,
Dwfl_Module_Callback *read_eagerly,
- void *read_eagerly_arg)
+ void *read_eagerly_arg,
+ const struct r_debug_info *r_debug_info)
{
size_t segment = ndx;
/* We must have seen the segment covering offset 0, or else the ELF
header we read at START was not produced by these program headers. */
if (unlikely (!found_bias))
- return finish ();
+ {
+ free (build_id);
+ return finish ();
+ }
/* Now we know enough to report a module for sure: its bounds. */
module_start += bias;
dyn_vaddr += bias;
+ /* NAME found from link map has precedence over DT_SONAME possibly read
+ below. */
+ bool name_is_final = false;
+
+ /* Try to match up DYN_VADDR against L_LD as found in link map.
+ Segments sniffing may guess invalid address as the first read-only memory
+ mapping may not be dumped to the core file (if ELF headers are not dumped)
+ and the ELF header is dumped first with the read/write mapping of the same
+ file at higher addresses. */
+ if (r_debug_info != NULL)
+ for (const struct r_debug_info_module *module = r_debug_info->module;
+ module != NULL; module = module->next)
+ if (module_start <= module->l_ld && module->l_ld < module_end)
+ {
+ /* L_LD read from link map must be right while DYN_VADDR is unsafe.
+ Therefore subtract DYN_VADDR and add L_LD to get a possibly
+ corrective displacement for all addresses computed so far. */
+ GElf_Addr fixup = module->l_ld - dyn_vaddr;
+ if ((fixup & (dwfl->segment_align - 1)) == 0
+ && module_start + fixup <= module->l_ld
+ && module->l_ld < module_end + fixup)
+ {
+ module_start += fixup;
+ module_end += fixup;
+ dyn_vaddr += fixup;
+ bias += fixup;
+ if (module->name[0] != '\0')
+ {
+ name = basename (module->name);
+ name_is_final = true;
+ }
+ break;
+ }
+ }
+
+ if (r_debug_info != NULL)
+ {
+ bool skip_this_module = false;
+ for (struct r_debug_info_module *module = r_debug_info->module;
+ module != NULL; module = module->next)
+ if ((module_end > module->start && module_start < module->end)
+ || dyn_vaddr == module->l_ld)
+ {
+ bool close_elf = false;
+ if (! module->disk_file_has_build_id && build_id_len > 0)
+ {
+ /* Module found in segments with build-id is more reliable
+ than a module found via DT_DEBUG on disk without any
+ build-id. */
+ if (module->elf != NULL)
+ close_elf = true;
+ }
+ if (module->elf != NULL
+ && module->disk_file_has_build_id && build_id_len > 0)
+ {
+ const void *elf_build_id;
+ ssize_t elf_build_id_len;
+
+ /* If there is a build id in the elf file, check it. */
+ elf_build_id_len = INTUSE(dwelf_elf_gnu_build_id) (module->elf,
+ &elf_build_id);
+ if (elf_build_id_len > 0)
+ {
+ if (build_id_len != (size_t) elf_build_id_len
+ || memcmp (build_id, elf_build_id, build_id_len) != 0)
+ close_elf = true;
+ }
+ }
+ if (close_elf)
+ {
+ elf_end (module->elf);
+ close (module->fd);
+ module->elf = NULL;
+ module->fd = -1;
+ }
+ if (module->elf != NULL)
+ {
+ /* Ignore this found module if it would conflict in address
+ space with any already existing module of DWFL. */
+ skip_this_module = true;
+ }
+ }
+ if (skip_this_module)
+ {
+ free (build_id);
+ return finish ();
+ }
+ }
+
/* Our return value now says to skip the segments contained
within the module. */
ndx = addr_segndx (dwfl, segment, module_end, true);
void *soname = NULL;
size_t soname_size = 0;
- if (dynstrsz != 0 && dynstr_vaddr != 0)
+ if (! name_is_final && dynstrsz != 0 && dynstr_vaddr != 0)
{
/* We know the bounds of the .dynstr section.
mod->main.elf = elf;
mod->main.vaddr = module_start - bias;
mod->main.address_sync = module_address_sync;
+ mod->main_bias = bias;
}
return finish ();
/* Reconstruct an ELF file by reading the segments out of remote memory.
- Copyright (C) 2005-2011 Red Hat, Inc.
+ Copyright (C) 2005-2011, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
MAXREAD bytes from the remote memory at target address ADDRESS into the
local buffer at DATA; it should return -1 for errors (with code in
`errno'), 0 if it failed to read at least MINREAD bytes due to EOF, or
- the number of bytes read if >= MINREAD. ARG is passed through. */
+ the number of bytes read if >= MINREAD. ARG is passed through.
+
+ PAGESIZE is the minimum page size and alignment used for the PT_LOAD
+ segments. */
Elf *
elf_from_remote_memory (GElf_Addr ehdr_vma,
+ GElf_Xword pagesize,
GElf_Addr *loadbasep,
ssize_t (*read_memory) (void *arg, void *data,
GElf_Addr address,
if (memcmp (buffer, ELFMAG, SELFMAG) != 0)
{
bad_elf:
+ free (buffer);
__libdwfl_seterrno (DWFL_E_BADELF);
return NULL;
}
/* Scan for PT_LOAD segments to find the total size of the file image. */
size_t contents_size = 0;
GElf_Off segments_end = 0;
+ GElf_Off segments_end_mem = 0;
GElf_Addr loadbase = ehdr_vma;
bool found_base = false;
switch (ehdr.e32.e_ident[EI_CLASS])
{
- inline void handle_segment (GElf_Addr vaddr, GElf_Off offset,
- GElf_Xword filesz, GElf_Xword align)
+ /* Sanity checks segments and calculates segment_end,
+ segments_end, segments_end_mem and loadbase (if not
+ found_base yet). Returns true if sanity checking failed,
+ false otherwise. */
+ inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
+ GElf_Xword filesz, GElf_Xword memsz,
+ GElf_Xword palign)
{
- GElf_Off segment_end = ((offset + filesz + align - 1) & -align);
+ /* Sanity check the alignment requirements. */
+ if ((palign & (pagesize - 1)) != 0
+ || ((vaddr - offset) & (palign - 1)) != 0)
+ return true;
+
+ GElf_Off segment_end = ((offset + filesz + pagesize - 1)
+ & -pagesize);
if (segment_end > (GElf_Off) contents_size)
contents_size = segment_end;
- if (!found_base && (offset & -align) == 0)
+ if (!found_base && (offset & -pagesize) == 0)
{
- loadbase = ehdr_vma - (vaddr & -align);
+ loadbase = ehdr_vma - (vaddr & -pagesize);
found_base = true;
}
segments_end = offset + filesz;
+ segments_end_mem = offset + memsz;
+ return false;
}
case ELFCLASS32:
goto libelf_error;
for (uint_fast16_t i = 0; i < phnum; ++i)
if (phdrs.p32[i].p_type == PT_LOAD)
- handle_segment (phdrs.p32[i].p_vaddr, phdrs.p32[i].p_offset,
- phdrs.p32[i].p_filesz, phdrs.p32[i].p_align);
+ if (handle_segment (phdrs.p32[i].p_vaddr, phdrs.p32[i].p_offset,
+ phdrs.p32[i].p_filesz, phdrs.p32[i].p_memsz,
+ phdrs.p32[i].p_align))
+ goto bad_elf;
break;
case ELFCLASS64:
goto libelf_error;
for (uint_fast16_t i = 0; i < phnum; ++i)
if (phdrs.p64[i].p_type == PT_LOAD)
- handle_segment (phdrs.p64[i].p_vaddr, phdrs.p64[i].p_offset,
- phdrs.p64[i].p_filesz, phdrs.p64[i].p_align);
+ if (handle_segment (phdrs.p64[i].p_vaddr, phdrs.p64[i].p_offset,
+ phdrs.p64[i].p_filesz, phdrs.p64[i].p_memsz,
+ phdrs.p64[i].p_align))
+ goto bad_elf;
break;
default:
/* Trim the last segment so we don't bother with zeros in the last page
that are off the end of the file. However, if the extra bit in that
- page includes the section headers, keep them. */
+ page includes the section headers and the memory isn't extended (which
+ might indicate it will have been reused otherwise), keep them. */
if ((GElf_Off) contents_size > segments_end
- && (GElf_Off) contents_size >= shdrs_end)
+ && (GElf_Off) contents_size >= shdrs_end
+ && segments_end == segments_end_mem)
{
contents_size = segments_end;
if ((GElf_Off) contents_size < shdrs_end)
switch (ehdr.e32.e_ident[EI_CLASS])
{
+ /* Reads the given segment. Returns true if reading fails,
+ false otherwise. */
inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
- GElf_Xword filesz, GElf_Xword align)
+ GElf_Xword filesz)
{
- GElf_Off start = offset & -align;
- GElf_Off end = (offset + filesz + align - 1) & -align;
+ GElf_Off start = offset & -pagesize;
+ GElf_Off end = (offset + filesz + pagesize - 1) & -pagesize;
if (end > (GElf_Off) contents_size)
end = contents_size;
nread = (*read_memory) (arg, buffer + start,
- (loadbase + vaddr) & -align,
+ (loadbase + vaddr) & -pagesize,
end - start, end - start);
return nread <= 0;
}
for (uint_fast16_t i = 0; i < phnum; ++i)
if (phdrs.p32[i].p_type == PT_LOAD)
if (handle_segment (phdrs.p32[i].p_vaddr, phdrs.p32[i].p_offset,
- phdrs.p32[i].p_filesz, phdrs.p32[i].p_align))
+ phdrs.p32[i].p_filesz))
goto read_error;
/* If the segments visible in memory didn't include the section
case ELFCLASS64:
for (uint_fast16_t i = 0; i < phnum; ++i)
- if (phdrs.p32[i].p_type == PT_LOAD)
+ if (phdrs.p64[i].p_type == PT_LOAD)
if (handle_segment (phdrs.p64[i].p_vaddr, phdrs.p64[i].p_offset,
- phdrs.p64[i].p_filesz, phdrs.p64[i].p_align))
+ phdrs.p64[i].p_filesz))
goto read_error;
/* If the segments visible in memory didn't include the section
/* Standard find_debuginfo callback for libdwfl.
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
static bool
validate (Dwfl_Module *mod, int fd, bool check, GElf_Word debuglink_crc)
{
+ /* For alt debug files always check the build-id from the Dwarf and alt. */
+ if (mod->dw != NULL)
+ {
+ bool valid = false;
+ const void *build_id;
+ const char *altname;
+ ssize_t build_id_len = INTUSE(dwelf_dwarf_gnu_debugaltlink) (mod->dw,
+ &altname,
+ &build_id);
+ if (build_id_len > 0)
+ {
+ /* We need to open an Elf handle on the file so we can check its
+ build ID note for validation. Backdoor the handle into the
+ module data structure since we had to open it early anyway. */
+ Dwfl_Error error = __libdw_open_file (&fd, &mod->alt_elf,
+ false, false);
+ if (error != DWFL_E_NOERROR)
+ __libdwfl_seterrno (error);
+ else
+ {
+ const void *alt_build_id;
+ ssize_t alt_len = INTUSE(dwelf_elf_gnu_build_id) (mod->alt_elf,
+ &alt_build_id);
+ if (alt_len > 0 && alt_len == build_id_len
+ && memcmp (build_id, alt_build_id, alt_len) == 0)
+ valid = true;
+ else
+ {
+ /* A mismatch! */
+ elf_end (mod->alt_elf);
+ mod->alt_elf = NULL;
+ close (fd);
+ fd = -1;
+ }
+ }
+ }
+ return valid;
+ }
+
/* If we have a build ID, check only that. */
if (mod->build_id_len > 0)
{
const char *file_basename = file_name == NULL ? NULL : basename (file_name);
if (debuglink_file == NULL)
{
- if (file_basename == NULL)
+ /* For a alt debug multi file we need a name, for a separate debug
+ name we may be able to fall back on file_basename.debug. */
+ if (file_basename == NULL || mod->dw != NULL)
{
errno = 0;
return -1;
check = *p++ == '+';
check = check && cancheck;
- const char *dir, *subdir;
+ const char *dir, *subdir, *file;
switch (p[0])
{
case '\0':
/* An empty entry says to try the main file's directory. */
dir = file_dirname;
subdir = NULL;
+ file = debuglink_file;
break;
case '/':
/* An absolute path says to look there for a subdirectory
- named by the main file's absolute directory.
- This cannot be applied to a relative file name. */
- if (file_dirname == NULL || file_dirname[0] != '/')
+ named by the main file's absolute directory. This cannot
+ be applied to a relative file name. For alt debug files
+ it means to look for the basename file in that dir or the
+ .dwz subdir (see below). */
+ if (mod->dw == NULL
+ && (file_dirname == NULL || file_dirname[0] != '/'))
continue;
dir = p;
- subdir = file_dirname + 1;
+ if (mod->dw == NULL)
+ {
+ subdir = file_dirname + 1;
+ file = debuglink_file;
+ }
+ else
+ {
+ subdir = NULL;
+ file = basename (debuglink_file);
+ }
break;
default:
/* A relative path says to try a subdirectory of that name
in the main file's directory. */
dir = file_dirname;
subdir = p;
+ file = debuglink_file;
break;
}
char *fname = NULL;
- int fd = try_open (&main_stat, dir, subdir, debuglink_file, &fname);
+ int fd = try_open (&main_stat, dir, subdir, file, &fname);
if (fd < 0)
switch (errno)
{
case ENOENT:
case ENOTDIR:
+ /* If we are looking for the alt file also try the .dwz subdir.
+ But only if this is the empty or absolute path. */
+ if (mod->dw != NULL && (p[0] == '\0' || p[0] == '/'))
+ {
+ fd = try_open (&main_stat, dir, ".dwz",
+ basename (file), &fname);
+ if (fd < 0)
+ {
+ if (errno != ENOENT && errno != ENOTDIR)
+ return -1;
+ else
+ continue;
+ }
+ break;
+ }
continue;
default:
return -1;
GElf_Addr vaddr;
if (INTUSE(dwfl_module_build_id) (mod, &bits, &vaddr) > 0)
{
+ /* Dropping most arguments means we cannot rely on them in
+ dwfl_build_id_find_debuginfo. But leave it that way since
+ some user code out there also does this, so we'll have to
+ handle it anyway. */
int fd = INTUSE(dwfl_build_id_find_debuginfo) (mod,
NULL, NULL, 0,
NULL, NULL, 0,
debuginfo_file_name);
- if (fd >= 0 || mod->debug.elf != NULL || errno != 0)
+
+ /* Did the build_id callback find something or report an error?
+ Then we are done. Otherwise fallback on path based search. */
+ if (fd >= 0
+ || (mod->dw == NULL && mod->debug.elf != NULL)
+ || (mod->dw != NULL && mod->alt_elf != NULL)
+ || errno != 0)
return fd;
}
--- /dev/null
+/* Get previous frame state for an existing frame state.
+ Copyright (C) 2013, 2014 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
+
+#include "cfi.h"
+#include <stdlib.h>
+#include "libdwflP.h"
+#include "../libdw/dwarf.h"
+#include <sys/ptrace.h>
+
+/* Maximum number of DWARF expression stack slots before returning an error. */
+#define DWARF_EXPR_STACK_MAX 0x100
+
+/* Maximum number of DWARF expression executed operations before returning an
+ error. */
+#define DWARF_EXPR_STEPS_MAX 0x1000
+
+#ifndef MAX
+# define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
+
+bool
+internal_function
+__libdwfl_frame_reg_get (Dwfl_Frame *state, unsigned regno, Dwarf_Addr *val)
+{
+ Ebl *ebl = state->thread->process->ebl;
+ if (! ebl_dwarf_to_regno (ebl, ®no))
+ return false;
+ if (regno >= ebl_frame_nregs (ebl))
+ return false;
+ if ((state->regs_set[regno / sizeof (*state->regs_set) / 8]
+ & ((uint64_t) 1U << (regno % (sizeof (*state->regs_set) * 8)))) == 0)
+ return false;
+ if (val)
+ *val = state->regs[regno];
+ return true;
+}
+
+bool
+internal_function
+__libdwfl_frame_reg_set (Dwfl_Frame *state, unsigned regno, Dwarf_Addr val)
+{
+ Ebl *ebl = state->thread->process->ebl;
+ if (! ebl_dwarf_to_regno (ebl, ®no))
+ return false;
+ if (regno >= ebl_frame_nregs (ebl))
+ return false;
+ /* For example i386 user_regs_struct has signed fields. */
+ if (ebl_get_elfclass (ebl) == ELFCLASS32)
+ val &= 0xffffffff;
+ state->regs_set[regno / sizeof (*state->regs_set) / 8] |=
+ ((uint64_t) 1U << (regno % (sizeof (*state->regs_set) * 8)));
+ state->regs[regno] = val;
+ return true;
+}
+
+static bool
+state_get_reg (Dwfl_Frame *state, unsigned regno, Dwarf_Addr *val)
+{
+ if (! __libdwfl_frame_reg_get (state, regno, val))
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_REGISTER);
+ return false;
+ }
+ return true;
+}
+
+static int
+bra_compar (const void *key_voidp, const void *elem_voidp)
+{
+ Dwarf_Word offset = (uintptr_t) key_voidp;
+ const Dwarf_Op *op = elem_voidp;
+ return (offset > op->offset) - (offset < op->offset);
+}
+
+/* If FRAME is NULL is are computing CFI frame base. In such case another
+ DW_OP_call_frame_cfa is no longer permitted. */
+
+static bool
+expr_eval (Dwfl_Frame *state, Dwarf_Frame *frame, const Dwarf_Op *ops,
+ size_t nops, Dwarf_Addr *result, Dwarf_Addr bias)
+{
+ Dwfl_Process *process = state->thread->process;
+ if (nops == 0)
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ Dwarf_Addr *stack = NULL;
+ size_t stack_used = 0, stack_allocated = 0;
+
+ bool
+ push (Dwarf_Addr val)
+ {
+ if (stack_used >= DWARF_EXPR_STACK_MAX)
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ if (stack_used == stack_allocated)
+ {
+ stack_allocated = MAX (stack_allocated * 2, 32);
+ Dwarf_Addr *stack_new = realloc (stack, stack_allocated * sizeof (*stack));
+ if (stack_new == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_NOMEM);
+ return false;
+ }
+ stack = stack_new;
+ }
+ stack[stack_used++] = val;
+ return true;
+ }
+
+ bool
+ pop (Dwarf_Addr *val)
+ {
+ if (stack_used == 0)
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ *val = stack[--stack_used];
+ return true;
+ }
+
+ Dwarf_Addr val1, val2;
+ bool is_location = false;
+ size_t steps_count = 0;
+ for (const Dwarf_Op *op = ops; op < ops + nops; op++)
+ {
+ if (++steps_count > DWARF_EXPR_STEPS_MAX)
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ switch (op->atom)
+ {
+ /* DW_OP_* order matches libgcc/unwind-dw2.c execute_stack_op: */
+ case DW_OP_lit0 ... DW_OP_lit31:
+ if (! push (op->atom - DW_OP_lit0))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_addr:
+ if (! push (op->number + bias))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_GNU_encoded_addr:
+ /* Missing support in the rest of elfutils. */
+ __libdwfl_seterrno (DWFL_E_UNSUPPORTED_DWARF);
+ return false;
+ case DW_OP_const1u:
+ case DW_OP_const1s:
+ case DW_OP_const2u:
+ case DW_OP_const2s:
+ case DW_OP_const4u:
+ case DW_OP_const4s:
+ case DW_OP_const8u:
+ case DW_OP_const8s:
+ case DW_OP_constu:
+ case DW_OP_consts:
+ if (! push (op->number))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_reg0 ... DW_OP_reg31:
+ if (! state_get_reg (state, op->atom - DW_OP_reg0, &val1)
+ || ! push (val1))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_regx:
+ if (! state_get_reg (state, op->number, &val1) || ! push (val1))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_breg0 ... DW_OP_breg31:
+ if (! state_get_reg (state, op->atom - DW_OP_breg0, &val1))
+ {
+ free (stack);
+ return false;
+ }
+ val1 += op->number;
+ if (! push (val1))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_bregx:
+ if (! state_get_reg (state, op->number, &val1))
+ {
+ free (stack);
+ return false;
+ }
+ val1 += op->number2;
+ if (! push (val1))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_dup:
+ if (! pop (&val1) || ! push (val1) || ! push (val1))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_drop:
+ if (! pop (&val1))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_pick:
+ if (stack_used <= op->number)
+ {
+ free (stack);
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ if (! push (stack[stack_used - 1 - op->number]))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_over:
+ if (! pop (&val1) || ! pop (&val2)
+ || ! push (val2) || ! push (val1) || ! push (val2))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_swap:
+ if (! pop (&val1) || ! pop (&val2) || ! push (val1) || ! push (val2))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ case DW_OP_rot:
+ {
+ Dwarf_Addr val3;
+ if (! pop (&val1) || ! pop (&val2) || ! pop (&val3)
+ || ! push (val1) || ! push (val3) || ! push (val2))
+ {
+ free (stack);
+ return false;
+ }
+ }
+ break;
+ case DW_OP_deref:
+ case DW_OP_deref_size:
+ if (process->callbacks->memory_read == NULL)
+ {
+ free (stack);
+ __libdwfl_seterrno (DWFL_E_INVALID_ARGUMENT);
+ return false;
+ }
+ if (! pop (&val1)
+ || ! process->callbacks->memory_read (process->dwfl, val1, &val1,
+ process->callbacks_arg))
+ {
+ free (stack);
+ return false;
+ }
+ if (op->atom == DW_OP_deref_size)
+ {
+ const int elfclass = frame->cache->e_ident[EI_CLASS];
+ const unsigned addr_bytes = elfclass == ELFCLASS32 ? 4 : 8;
+ if (op->number > addr_bytes)
+ {
+ free (stack);
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+#if BYTE_ORDER == BIG_ENDIAN
+ if (op->number == 0)
+ val1 = 0;
+ else
+ val1 >>= (addr_bytes - op->number) * 8;
+#else
+ if (op->number < 8)
+ val1 &= (1 << (op->number * 8)) - 1;
+#endif
+ }
+ if (! push (val1))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+#define UNOP(atom, expr) \
+ case atom: \
+ if (! pop (&val1) || ! push (expr)) \
+ { \
+ free (stack); \
+ return false; \
+ } \
+ break;
+ UNOP (DW_OP_abs, abs ((int64_t) val1))
+ UNOP (DW_OP_neg, -(int64_t) val1)
+ UNOP (DW_OP_not, ~val1)
+#undef UNOP
+ case DW_OP_plus_uconst:
+ if (! pop (&val1) || ! push (val1 + op->number))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+#define BINOP(atom, op) \
+ case atom: \
+ if (! pop (&val2) || ! pop (&val1) || ! push (val1 op val2)) \
+ { \
+ free (stack); \
+ return false; \
+ } \
+ break;
+#define BINOP_SIGNED(atom, op) \
+ case atom: \
+ if (! pop (&val2) || ! pop (&val1) \
+ || ! push ((int64_t) val1 op (int64_t) val2)) \
+ { \
+ free (stack); \
+ return false; \
+ } \
+ break;
+ BINOP (DW_OP_and, &)
+ case DW_OP_div:
+ if (! pop (&val2) || ! pop (&val1))
+ {
+ free (stack);
+ return false;
+ }
+ if (val2 == 0)
+ {
+ free (stack);
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ if (! push ((int64_t) val1 / (int64_t) val2))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ BINOP (DW_OP_minus, -)
+ case DW_OP_mod:
+ if (! pop (&val2) || ! pop (&val1))
+ {
+ free (stack);
+ return false;
+ }
+ if (val2 == 0)
+ {
+ free (stack);
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ if (! push (val1 % val2))
+ {
+ free (stack);
+ return false;
+ }
+ break;
+ BINOP (DW_OP_mul, *)
+ BINOP (DW_OP_or, |)
+ BINOP (DW_OP_plus, +)
+ BINOP (DW_OP_shl, <<)
+ BINOP (DW_OP_shr, >>)
+ BINOP_SIGNED (DW_OP_shra, >>)
+ BINOP (DW_OP_xor, ^)
+ BINOP_SIGNED (DW_OP_le, <=)
+ BINOP_SIGNED (DW_OP_ge, >=)
+ BINOP_SIGNED (DW_OP_eq, ==)
+ BINOP_SIGNED (DW_OP_lt, <)
+ BINOP_SIGNED (DW_OP_gt, >)
+ BINOP_SIGNED (DW_OP_ne, !=)
+#undef BINOP
+#undef BINOP_SIGNED
+ case DW_OP_bra:
+ if (! pop (&val1))
+ {
+ free (stack);
+ return false;
+ }
+ if (val1 == 0)
+ break;
+ /* FALLTHRU */
+ case DW_OP_skip:;
+ Dwarf_Word offset = op->offset + 1 + 2 + (int16_t) op->number;
+ const Dwarf_Op *found = bsearch ((void *) (uintptr_t) offset, ops, nops,
+ sizeof (*ops), bra_compar);
+ if (found == NULL)
+ {
+ free (stack);
+ /* PPC32 vDSO has such invalid operations. */
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ /* Undo the 'for' statement increment. */
+ op = found - 1;
+ break;
+ case DW_OP_nop:
+ break;
+ /* DW_OP_* not listed in libgcc/unwind-dw2.c execute_stack_op: */
+ case DW_OP_call_frame_cfa:;
+ // Not used by CFI itself but it is synthetized by elfutils internation.
+ Dwarf_Op *cfa_ops;
+ size_t cfa_nops;
+ Dwarf_Addr cfa;
+ if (frame == NULL
+ || dwarf_frame_cfa (frame, &cfa_ops, &cfa_nops) != 0
+ || ! expr_eval (state, NULL, cfa_ops, cfa_nops, &cfa, bias)
+ || ! push (cfa))
+ {
+ __libdwfl_seterrno (DWFL_E_LIBDW);
+ free (stack);
+ return false;
+ }
+ is_location = true;
+ break;
+ case DW_OP_stack_value:
+ // Not used by CFI itself but it is synthetized by elfutils internation.
+ is_location = false;
+ break;
+ default:
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ return false;
+ }
+ }
+ if (! pop (result))
+ {
+ free (stack);
+ return false;
+ }
+ free (stack);
+ if (is_location)
+ {
+ if (process->callbacks->memory_read == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_ARGUMENT);
+ return false;
+ }
+ if (! process->callbacks->memory_read (process->dwfl, *result, result,
+ process->callbacks_arg))
+ return false;
+ }
+ return true;
+}
+
+static void
+new_unwound (Dwfl_Frame *state)
+{
+ assert (state->unwound == NULL);
+ Dwfl_Thread *thread = state->thread;
+ Dwfl_Process *process = thread->process;
+ Ebl *ebl = process->ebl;
+ size_t nregs = ebl_frame_nregs (ebl);
+ assert (nregs > 0);
+ Dwfl_Frame *unwound;
+ unwound = malloc (sizeof (*unwound) + sizeof (*unwound->regs) * nregs);
+ state->unwound = unwound;
+ unwound->thread = thread;
+ unwound->unwound = NULL;
+ unwound->signal_frame = false;
+ unwound->initial_frame = false;
+ unwound->pc_state = DWFL_FRAME_STATE_ERROR;
+ memset (unwound->regs_set, 0, sizeof (unwound->regs_set));
+}
+
+/* The logic is to call __libdwfl_seterrno for any CFI bytecode interpretation
+ error so one can easily catch the problem with a debugger. Still there are
+ archs with invalid CFI for some registers where the registers are never used
+ later. Therefore we continue unwinding leaving the registers undefined. */
+
+static void
+handle_cfi (Dwfl_Frame *state, Dwarf_Addr pc, Dwarf_CFI *cfi, Dwarf_Addr bias)
+{
+ Dwarf_Frame *frame;
+ if (INTUSE(dwarf_cfi_addrframe) (cfi, pc, &frame) != 0)
+ {
+ __libdwfl_seterrno (DWFL_E_LIBDW);
+ return;
+ }
+ new_unwound (state);
+ Dwfl_Frame *unwound = state->unwound;
+ unwound->signal_frame = frame->fde->cie->signal_frame;
+ Dwfl_Thread *thread = state->thread;
+ Dwfl_Process *process = thread->process;
+ Ebl *ebl = process->ebl;
+ size_t nregs = ebl_frame_nregs (ebl);
+ assert (nregs > 0);
+
+ /* The return register is special for setting the unwound->pc_state. */
+ unsigned ra = frame->fde->cie->return_address_register;
+ bool ra_set = false;
+ ebl_dwarf_to_regno (ebl, &ra);
+
+ for (unsigned regno = 0; regno < nregs; regno++)
+ {
+ Dwarf_Op reg_ops_mem[3], *reg_ops;
+ size_t reg_nops;
+ if (dwarf_frame_register (frame, regno, reg_ops_mem, ®_ops,
+ ®_nops) != 0)
+ {
+ __libdwfl_seterrno (DWFL_E_LIBDW);
+ continue;
+ }
+ Dwarf_Addr regval;
+ if (reg_nops == 0)
+ {
+ if (reg_ops == reg_ops_mem)
+ {
+ /* REGNO is undefined. */
+ if (regno == ra)
+ unwound->pc_state = DWFL_FRAME_STATE_PC_UNDEFINED;
+ continue;
+ }
+ else if (reg_ops == NULL)
+ {
+ /* REGNO is same-value. */
+ if (! state_get_reg (state, regno, ®val))
+ continue;
+ }
+ else
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_DWARF);
+ continue;
+ }
+ }
+ else if (! expr_eval (state, frame, reg_ops, reg_nops, ®val, bias))
+ {
+ /* PPC32 vDSO has various invalid operations, ignore them. The
+ register will look as unset causing an error later, if used.
+ But PPC32 does not use such registers. */
+ continue;
+ }
+
+ /* Some architectures encode some extra info in the return address. */
+ if (regno == frame->fde->cie->return_address_register)
+ regval &= ebl_func_addr_mask (ebl);
+
+ /* This is another strange PPC[64] case. There are two
+ registers numbers that can represent the same DWARF return
+ register number. We only want one to actually set the return
+ register value. But we always want to override the value if
+ the register is the actual CIE return address register. */
+ if (ra_set && regno != frame->fde->cie->return_address_register)
+ {
+ unsigned r = regno;
+ if (ebl_dwarf_to_regno (ebl, &r) && r == ra)
+ continue;
+ }
+
+ if (! __libdwfl_frame_reg_set (unwound, regno, regval))
+ {
+ __libdwfl_seterrno (DWFL_E_INVALID_REGISTER);
+ continue;
+ }
+ else if (! ra_set)
+ {
+ unsigned r = regno;
+ if (ebl_dwarf_to_regno (ebl, &r) && r == ra)
+ ra_set = true;
+ }
+ }
+ if (unwound->pc_state == DWFL_FRAME_STATE_ERROR
+ && __libdwfl_frame_reg_get (unwound,
+ frame->fde->cie->return_address_register,
+ &unwound->pc))
+ {
+ /* PPC32 __libc_start_main properly CFI-unwinds PC as zero. Currently
+ none of the archs supported for unwinding have zero as a valid PC. */
+ if (unwound->pc == 0)
+ unwound->pc_state = DWFL_FRAME_STATE_PC_UNDEFINED;
+ else
+ unwound->pc_state = DWFL_FRAME_STATE_PC_SET;
+ }
+ free (frame);
+}
+
+static bool
+setfunc (int firstreg, unsigned nregs, const Dwarf_Word *regs, void *arg)
+{
+ Dwfl_Frame *state = arg;
+ Dwfl_Frame *unwound = state->unwound;
+ if (firstreg < 0)
+ {
+ assert (firstreg == -1);
+ assert (nregs == 1);
+ assert (unwound->pc_state == DWFL_FRAME_STATE_PC_UNDEFINED);
+ unwound->pc = *regs;
+ unwound->pc_state = DWFL_FRAME_STATE_PC_SET;
+ return true;
+ }
+ while (nregs--)
+ if (! __libdwfl_frame_reg_set (unwound, firstreg++, *regs++))
+ return false;
+ return true;
+}
+
+static bool
+getfunc (int firstreg, unsigned nregs, Dwarf_Word *regs, void *arg)
+{
+ Dwfl_Frame *state = arg;
+ assert (firstreg >= 0);
+ while (nregs--)
+ if (! __libdwfl_frame_reg_get (state, firstreg++, regs++))
+ return false;
+ return true;
+}
+
+static bool
+readfunc (Dwarf_Addr addr, Dwarf_Word *datap, void *arg)
+{
+ Dwfl_Frame *state = arg;
+ Dwfl_Thread *thread = state->thread;
+ Dwfl_Process *process = thread->process;
+ return process->callbacks->memory_read (process->dwfl, addr, datap,
+ process->callbacks_arg);
+}
+
+void
+internal_function
+__libdwfl_frame_unwind (Dwfl_Frame *state)
+{
+ if (state->unwound)
+ return;
+ /* Do not ask dwfl_frame_pc for ISACTIVATION, it would try to unwind STATE
+ which would deadlock us. */
+ Dwarf_Addr pc;
+ bool ok = INTUSE(dwfl_frame_pc) (state, &pc, NULL);
+ assert (ok);
+ /* Check whether this is the initial frame or a signal frame.
+ Then we need to unwind from the original, unadjusted PC. */
+ if (! state->initial_frame && ! state->signal_frame)
+ pc--;
+ Dwfl_Module *mod = INTUSE(dwfl_addrmodule) (state->thread->process->dwfl, pc);
+ if (mod == NULL)
+ __libdwfl_seterrno (DWFL_E_NO_DWARF);
+ else
+ {
+ Dwarf_Addr bias;
+ Dwarf_CFI *cfi_eh = INTUSE(dwfl_module_eh_cfi) (mod, &bias);
+ if (cfi_eh)
+ {
+ handle_cfi (state, pc - bias, cfi_eh, bias);
+ if (state->unwound)
+ return;
+ }
+ Dwarf_CFI *cfi_dwarf = INTUSE(dwfl_module_dwarf_cfi) (mod, &bias);
+ if (cfi_dwarf)
+ {
+ handle_cfi (state, pc - bias, cfi_dwarf, bias);
+ if (state->unwound)
+ return;
+ }
+ }
+ assert (state->unwound == NULL);
+ Dwfl_Thread *thread = state->thread;
+ Dwfl_Process *process = thread->process;
+ Ebl *ebl = process->ebl;
+ new_unwound (state);
+ state->unwound->pc_state = DWFL_FRAME_STATE_PC_UNDEFINED;
+ // &Dwfl_Frame.signal_frame cannot be passed as it is a bitfield.
+ bool signal_frame = false;
+ if (! ebl_unwind (ebl, pc, setfunc, getfunc, readfunc, state, &signal_frame))
+ {
+ // Discard the unwind attempt. During next __libdwfl_frame_unwind call
+ // we may have for example the appropriate Dwfl_Module already mapped.
+ assert (state->unwound->unwound == NULL);
+ free (state->unwound);
+ state->unwound = NULL;
+ // __libdwfl_seterrno has been called above.
+ return;
+ }
+ assert (state->unwound->pc_state == DWFL_FRAME_STATE_PC_SET);
+ state->unwound->signal_frame = signal_frame;
+}
/* Interfaces for libdwfl.
- 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
/* Handle describing a line record. */
typedef struct Dwfl_Line Dwfl_Line;
+/* This holds information common for all the frames of one backtrace for
+ a partical thread/task/TID. Several threads belong to one Dwfl. */
+typedef struct Dwfl_Thread Dwfl_Thread;
+
+/* This holds everything we know about the state of the frame at a particular
+ PC location described by an FDE belonging to Dwfl_Thread. */
+typedef struct Dwfl_Frame Dwfl_Frame;
+
/* Callbacks. */
typedef struct
{
extern Dwfl_Module *dwfl_report_module (Dwfl *dwfl, const char *name,
Dwarf_Addr start, Dwarf_Addr end);
-/* Report a module with start and end addresses computed from the ELF
- program headers in the given file, plus BASE. For an ET_REL file,
- does a simple absolute section layout starting at BASE.
+/* Report a module to address BASE with start and end addresses computed
+ from the ELF program headers in the given file - see the table below.
FD may be -1 to open FILE_NAME. On success, FD is consumed by the
- library, and the `find_elf' callback will not be used for this module. */
+ library, and the `find_elf' callback will not be used for this module.
+ ADD_P_VADDR BASE
+ ET_EXEC ignored ignored
+ ET_DYN false absolute address where to place the file
+ true start address relative to ELF's phdr p_vaddr
+ ET_REL ignored absolute address where to place the file
+ ET_CORE ignored ignored
+ ET_DYN ELF phdr p_vaddr address can be non-zero if the shared library
+ has been prelinked by tool prelink(8). */
extern Dwfl_Module *dwfl_report_elf (Dwfl *dwfl, const char *name,
const char *file_name, int fd,
- GElf_Addr base);
+ GElf_Addr base, bool add_p_vaddr);
/* Similar, but report the module for offline use. All ET_EXEC files
being reported must be reported before any relocatable objects.
This can follow a dwfl_report_offline call to bootstrap the
DT_DEBUG method of following the dynamic linker link_map chain, in
case the core file does not contain enough of the executable's text
- segment to locate its PT_DYNAMIC in the dump. This might call
- dwfl_report_elf on file names found in the dump if reading some
- link_map files is the only way to ascertain those modules' addresses.
- Returns the number of modules reported, or -1 for errors. */
-extern int dwfl_core_file_report (Dwfl *dwfl, Elf *elf);
+ segment to locate its PT_DYNAMIC in the dump. In such case you need to
+ supply non-NULL EXECUTABLE, otherwise dynamic libraries will not be loaded
+ into the DWFL map. This might call dwfl_report_elf on file names found in
+ the dump if reading some link_map files is the only way to ascertain those
+ modules' addresses. Returns the number of modules reported, or -1 for
+ errors. */
+extern int dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable);
/* Call dwfl_report_module for each file mapped into the address space of PID.
Returns zero on success, -1 if dwfl_report_module failed,
- or an errno code if opening the kernel binary failed. */
+ or an errno code if opening the proc files failed. */
extern int dwfl_linux_proc_report (Dwfl *dwfl, pid_t pid);
/* Similar, but reads an input stream in the format of Linux /proc/PID/maps
are found) for use with libelf. If successful, fills in *BIAS
with the difference between addresses within the loaded module
and those in symbol tables or Dwarf information referring to it. */
-extern Elf *dwfl_module_getelf (Dwfl_Module *, GElf_Addr *bias);
+extern Elf *dwfl_module_getelf (Dwfl_Module *, GElf_Addr *bias)
+ __nonnull_attribute__ (1, 2);
/* Return the number of symbols in the module's symbol table,
or -1 for errors. */
extern int dwfl_module_getsymtab (Dwfl_Module *mod);
+/* Return the index of the first global symbol in the module's symbol
+ table, or -1 for errors. In each symbol table, all symbols with
+ STB_LOCAL binding precede the weak and global symbols. This
+ function returns the symbol table index one greater than the last
+ local symbol. */
+extern int dwfl_module_getsymtab_first_global (Dwfl_Module *mod);
+
/* Fetch one entry from the module's symbol table. On errors, returns
NULL. If successful, fills in *SYM and returns the string for st_name.
This works like gelf_getsym except that st_value is always adjusted to
an absolute value based on the module's location, when the symbol is in
an SHF_ALLOC section. 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. */
+ symbol in a non-allocated section, *SHNDXP is instead set to -1.
+ 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. 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);
+/* 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);
extern Dwarf_CFI *dwfl_module_eh_cfi (Dwfl_Module *mod, Dwarf_Addr *bias);
+typedef struct
+{
+ /* Called to iterate through threads. Returns next TID (thread ID) on
+ success, a negative number on failure and zero if there are no more
+ threads. dwfl_errno () should be set if negative number has been
+ returned. *THREAD_ARGP is NULL on first call, and may be optionally
+ set by the implementation. The value set by the implementation will
+ be passed in on the next call to NEXT_THREAD. THREAD_ARGP is never
+ NULL. *THREAD_ARGP will be passed to set_initial_registers or
+ thread_detach callbacks together with Dwfl_Thread *thread. This
+ method must not be NULL. */
+ pid_t (*next_thread) (Dwfl *dwfl, void *dwfl_arg, void **thread_argp)
+ __nonnull_attribute__ (1);
+
+ /* Called to get a specific thread. Returns true if there is a
+ thread with the given thread id number, returns false if no such
+ thread exists and will set dwfl_errno in that case. THREAD_ARGP
+ is never NULL. *THREAD_ARGP will be passed to
+ set_initial_registers or thread_detach callbacks together with
+ Dwfl_Thread *thread. This method may be NULL and will then be
+ emulated using the next_thread callback. */
+ bool (*get_thread) (Dwfl *dwfl, pid_t tid, void *dwfl_arg,
+ void **thread_argp)
+ __nonnull_attribute__ (1);
+
+ /* Called during unwinding to access memory (stack) state. Returns true for
+ successfully read *RESULT or false and sets dwfl_errno () on failure.
+ This method may be NULL - in such case dwfl_thread_getframes will return
+ only the initial frame. */
+ bool (*memory_read) (Dwfl *dwfl, Dwarf_Addr addr, Dwarf_Word *result,
+ void *dwfl_arg)
+ __nonnull_attribute__ (1, 3);
+
+ /* Called on initial unwind to get the initial register state of the first
+ frame. Should call dwfl_thread_state_registers, possibly multiple times
+ for different ranges and possibly also dwfl_thread_state_register_pc, to
+ fill in initial (DWARF) register values. After this call, till at least
+ thread_detach is called, the thread is assumed to be frozen, so that it is
+ safe to unwind. Returns true on success or false and sets dwfl_errno ()
+ on failure. In the case of a failure thread_detach will not be called.
+ This method must not be NULL. */
+ bool (*set_initial_registers) (Dwfl_Thread *thread, void *thread_arg)
+ __nonnull_attribute__ (1);
+
+ /* Called by dwfl_end. All thread_detach method calls have been already
+ done. This method may be NULL. */
+ void (*detach) (Dwfl *dwfl, void *dwfl_arg)
+ __nonnull_attribute__ (1);
+
+ /* Called when unwinding is done. No callback will be called after
+ this method has been called. Iff set_initial_registers was called for
+ a TID and it returned success thread_detach will be called before the
+ detach method above. This method may be NULL. */
+ void (*thread_detach) (Dwfl_Thread *thread, void *thread_arg)
+ __nonnull_attribute__ (1);
+} Dwfl_Thread_Callbacks;
+
+/* PID is the process id associated with the DWFL state. Architecture of DWFL
+ modules is specified by ELF, ELF must remain valid during DWFL lifetime.
+ Use NULL ELF to detect architecture from DWFL, the function will then detect
+ it from arbitrary Dwfl_Module of DWFL. DWFL_ARG is the callback backend
+ state. DWFL_ARG will be provided to the callbacks. *THREAD_CALLBACKS
+ function pointers must remain valid during lifetime of DWFL. Function
+ returns true on success, false otherwise. */
+bool dwfl_attach_state (Dwfl *dwfl, Elf *elf, pid_t pid,
+ const Dwfl_Thread_Callbacks *thread_callbacks,
+ void *dwfl_arg)
+ __nonnull_attribute__ (1, 4);
+
+/* Calls dwfl_attach_state with Dwfl_Thread_Callbacks setup for extracting
+ thread state from the ELF core file. Returns the pid number extracted
+ from the core file, or -1 for errors. */
+extern int dwfl_core_file_attach (Dwfl *dwfl, Elf *elf);
+
+/* Calls dwfl_attach_state with Dwfl_Thread_Callbacks setup for extracting
+ thread state from the proc file system. Uses ptrace to attach and stop
+ the thread under inspection and detaches when thread_detach is called
+ and unwinding for the thread is done, unless ASSUME_PTRACE_STOPPED is
+ true. If ASSUME_PTRACE_STOPPED is true the caller should make sure that
+ the thread is ptrace attached and stopped before unwinding by calling
+ either dwfl_thread_getframes or dwfl_getthread_frames. Returns zero on
+ success, -1 if dwfl_attach_state failed, or an errno code if opening the
+ proc files failed. */
+extern int dwfl_linux_proc_attach (Dwfl *dwfl, pid_t pid,
+ bool assume_ptrace_stopped);
+
+/* Return PID for the process associated with DWFL. Function returns -1 if
+ dwfl_attach_state was not called for DWFL. */
+pid_t dwfl_pid (Dwfl *dwfl)
+ __nonnull_attribute__ (1);
+
+/* Return DWFL from which THREAD was created using dwfl_getthreads. */
+Dwfl *dwfl_thread_dwfl (Dwfl_Thread *thread)
+ __nonnull_attribute__ (1);
+
+/* Return positive TID (thread ID) for THREAD. This function never fails. */
+pid_t dwfl_thread_tid (Dwfl_Thread *thread)
+ __nonnull_attribute__ (1);
+
+/* Return thread for frame STATE. This function never fails. */
+Dwfl_Thread *dwfl_frame_thread (Dwfl_Frame *state)
+ __nonnull_attribute__ (1);
+
+/* Called by Dwfl_Thread_Callbacks.set_initial_registers implementation.
+ For every known continuous block of registers <FIRSTREG..FIRSTREG+NREGS)
+ (inclusive..exclusive) set their content to REGS (array of NREGS items).
+ Function returns false if any of the registers has invalid number. */
+bool dwfl_thread_state_registers (Dwfl_Thread *thread, int firstreg,
+ unsigned nregs, const Dwarf_Word *regs)
+ __nonnull_attribute__ (1, 4);
+
+/* Called by Dwfl_Thread_Callbacks.set_initial_registers implementation.
+ If PC is not contained among DWARF registers passed by
+ dwfl_thread_state_registers on the target architecture pass the PC value
+ here. */
+void dwfl_thread_state_register_pc (Dwfl_Thread *thread, Dwarf_Word pc)
+ __nonnull_attribute__ (1);
+
+/* Iterate through the threads for a process. Returns zero if all threads have
+ been processed by the callback, returns -1 on error, or the value of the
+ callback when not DWARF_CB_OK. -1 returned on error will set dwfl_errno ().
+ Keeps calling the callback with the next thread while the callback returns
+ DWARF_CB_OK, till there are no more threads. */
+int dwfl_getthreads (Dwfl *dwfl,
+ int (*callback) (Dwfl_Thread *thread, void *arg),
+ void *arg)
+ __nonnull_attribute__ (1, 2);
+
+/* Iterate through the frames for a thread. Returns zero if all frames
+ have been processed by the callback, returns -1 on error, or the value of
+ the callback when not DWARF_CB_OK. -1 returned on error will
+ set dwfl_errno (). Some systems return error instead of zero on end of the
+ backtrace, for cross-platform compatibility callers should consider error as
+ a zero. Keeps calling the callback with the next frame while the callback
+ returns DWARF_CB_OK, till there are no more frames. On start will call the
+ set_initial_registers callback and on return will call the detach_thread
+ callback of the Dwfl_Thread. */
+int dwfl_thread_getframes (Dwfl_Thread *thread,
+ int (*callback) (Dwfl_Frame *state, void *arg),
+ void *arg)
+ __nonnull_attribute__ (1, 2);
+
+/* Like dwfl_thread_getframes, but specifying the thread by its unique
+ identifier number. Returns zero if all frames have been processed
+ by the callback, returns -1 on error (and when no thread with
+ the given thread id number exists), or the value of the callback
+ when not DWARF_CB_OK. -1 returned on error will set dwfl_errno (). */
+int dwfl_getthread_frames (Dwfl *dwfl, pid_t tid,
+ int (*callback) (Dwfl_Frame *thread, void *arg),
+ void *arg)
+ __nonnull_attribute__ (1, 3);
+
+/* Return *PC (program counter) for thread-specific frame STATE.
+ Set *ISACTIVATION according to DWARF frame "activation" definition.
+ Typically you need to substract 1 from *PC if *ACTIVATION is false to safely
+ find function of the caller. ACTIVATION may be NULL. PC must not be NULL.
+ Function returns false if it failed to find *PC. */
+bool dwfl_frame_pc (Dwfl_Frame *state, Dwarf_Addr *pc, bool *isactivation)
+ __nonnull_attribute__ (1, 2);
+
#ifdef __cplusplus
}
#endif
/* Internal definitions for libdwfl.
- Copyright (C) 2005-2011 Red Hat, Inc.
+ Copyright (C) 2005-2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#include <libdwfl.h>
#include <libebl.h>
#include <assert.h>
+#include <dirent.h>
#include <errno.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include "../libdw/libdwP.h" /* We need its INTDECLs. */
+#include "../libdwelf/libdwelfP.h"
+
+typedef struct Dwfl_Process Dwfl_Process;
/* gettext helper macros. */
#define _(Str) dgettext ("elfutils", Str)
DWFL_ERROR (BADELF, N_("not a valid ELF file")) \
DWFL_ERROR (WEIRD_TYPE, N_("cannot handle DWARF type description")) \
DWFL_ERROR (WRONG_ID_ELF, N_("ELF file does not match build ID")) \
- DWFL_ERROR (BAD_PRELINK, N_("corrupt .gnu.prelink_undo section data"))
+ DWFL_ERROR (BAD_PRELINK, N_("corrupt .gnu.prelink_undo section data")) \
+ DWFL_ERROR (LIBEBL_BAD, N_("Internal error due to ebl")) \
+ DWFL_ERROR (CORE_MISSING, N_("Missing data in core file")) \
+ DWFL_ERROR (INVALID_REGISTER, N_("Invalid register")) \
+ DWFL_ERROR (PROCESS_MEMORY_READ, N_("Error reading process memory")) \
+ DWFL_ERROR (PROCESS_NO_ARCH, N_("Couldn't find architecture of any ELF")) \
+ DWFL_ERROR (PARSE_PROC, N_("Error parsing /proc filesystem")) \
+ DWFL_ERROR (INVALID_DWARF, N_("Invalid DWARF")) \
+ DWFL_ERROR (UNSUPPORTED_DWARF, N_("Unsupported DWARF")) \
+ DWFL_ERROR (NEXT_THREAD_FAIL, N_("Unable to find more threads")) \
+ DWFL_ERROR (ATTACH_STATE_CONFLICT, N_("Dwfl already has attached state")) \
+ DWFL_ERROR (NO_ATTACH_STATE, N_("Dwfl has no attached state")) \
+ DWFL_ERROR (NO_UNWIND, N_("Unwinding not supported for this architecture")) \
+ DWFL_ERROR (INVALID_ARGUMENT, N_("Invalid argument")) \
+ DWFL_ERROR (NO_CORE_FILE, N_("Not an ET_CORE ELF file"))
#define DWFL_ERROR(name, text) DWFL_E_##name,
typedef enum { DWFL_ERRORS DWFL_E_NUM } Dwfl_Error;
Dwfl_Module *modulelist; /* List in order used by full traversals. */
+ Dwfl_Process *process;
+ Dwfl_Error attacherr; /* Previous error attaching process. */
+
GElf_Addr offline_next_address;
GElf_Addr segment_align; /* Smallest granularity of segments. */
GElf_Off lookup_tail_vaddr;
GElf_Off lookup_tail_offset;
int lookup_tail_ndx;
+
+ char *executable_for_core; /* --executable if --core was specified. */
};
#define OFFLINE_REDZONE 0x10000
char *name; /* Iterator name for this module. */
GElf_Addr low_addr, high_addr;
- struct dwfl_file main, debug;
+ struct dwfl_file main, debug, aux_sym;
GElf_Addr main_bias;
Ebl *ebl;
GElf_Half e_type; /* GElf_Ehdr.e_type cache. */
struct dwfl_file *symfile; /* Either main or debug. */
Elf_Data *symdata; /* Data in the ELF symbol table section. */
+ Elf_Data *aux_symdata; /* Data in the auxiliary ELF symbol table. */
size_t syments; /* sh_size / sh_entsize of that section. */
+ size_t aux_syments; /* sh_size / sh_entsize of aux_sym section. */
int first_global; /* Index of first global symbol of table. */
+ int aux_first_global; /* Index of first global of aux_sym table. */
Elf_Data *symstrdata; /* Data for its string table. */
+ Elf_Data *aux_symstrdata; /* Data for aux_sym string table. */
Elf_Data *symxndxdata; /* Data in the extended section index table. */
+ Elf_Data *aux_symxndxdata; /* Data in the extended auxiliary table. */
Dwarf *dw; /* libdw handle for its debugging info. */
+ Dwarf *alt; /* Dwarf used for dwarf_setalt, or NULL. */
+ int alt_fd; /* descriptor, only valid when alt != NULL. */
+ Elf *alt_elf; /* Elf for alt Dwarf. */
Dwfl_Error symerr; /* Previous failure to load symbols. */
Dwfl_Error dwerr; /* Previous failure to load DWARF. */
bool gc; /* Mark/sweep flag. */
};
+/* This holds information common for all the threads/tasks/TIDs of one process
+ for backtraces. */
+
+struct Dwfl_Process
+{
+ struct Dwfl *dwfl;
+ pid_t pid;
+ const Dwfl_Thread_Callbacks *callbacks;
+ void *callbacks_arg;
+ struct ebl *ebl;
+ bool ebl_close:1;
+};
+
+/* See its typedef in libdwfl.h. */
+
+struct Dwfl_Thread
+{
+ Dwfl_Process *process;
+ pid_t tid;
+ /* The current frame being unwound. Initially it is the bottom frame.
+ Later the processed frames get freed and this pointer is updated. */
+ Dwfl_Frame *unwound;
+ void *callbacks_arg;
+};
+
+/* See its typedef in libdwfl.h. */
+
+struct Dwfl_Frame
+{
+ Dwfl_Thread *thread;
+ /* Previous (outer) frame. */
+ Dwfl_Frame *unwound;
+ bool signal_frame : 1;
+ bool initial_frame : 1;
+ enum
+ {
+ /* This structure is still being initialized or there was an error
+ initializing it. */
+ DWFL_FRAME_STATE_ERROR,
+ /* PC field is valid. */
+ DWFL_FRAME_STATE_PC_SET,
+ /* PC field is undefined, this means the next (inner) frame was the
+ outermost frame. */
+ DWFL_FRAME_STATE_PC_UNDEFINED
+ } pc_state;
+ /* Either initialized from appropriate REGS element or on some archs
+ initialized separately as the return address has no DWARF register. */
+ Dwarf_Addr pc;
+ /* (1 << X) bitmask where 0 <= X < ebl_frame_nregs. */
+ uint64_t regs_set[3];
+ /* REGS array size is ebl_frame_nregs.
+ REGS_SET tells which of the REGS are valid. */
+ Dwarf_Addr regs[];
+};
+
+/* Fetch value from Dwfl_Frame->regs indexed by DWARF REGNO.
+ No error code is set if the function returns FALSE. */
+bool __libdwfl_frame_reg_get (Dwfl_Frame *state, unsigned regno,
+ Dwarf_Addr *val)
+ internal_function;
+/* Store value to Dwfl_Frame->regs indexed by DWARF REGNO.
+ No error code is set if the function returns FALSE. */
+bool __libdwfl_frame_reg_set (Dwfl_Frame *state, unsigned regno,
+ Dwarf_Addr val)
+ internal_function;
/* Information cached about each CU in Dwfl_Module.dw. */
struct dwfl_cu
+ mod->debug.address_sync);
}
+static inline Dwarf_Addr
+dwfl_adjusted_aux_sym_addr (Dwfl_Module *mod, Dwarf_Addr addr)
+{
+ return dwfl_adjusted_address (mod, (addr
+ - mod->aux_sym.address_sync
+ + mod->main.address_sync));
+}
+
+static inline Dwarf_Addr
+dwfl_deadjust_aux_sym_addr (Dwfl_Module *mod, Dwarf_Addr addr)
+{
+ return (dwfl_deadjust_address (mod, addr)
+ - mod->main.address_sync
+ + mod->aux_sym.address_sync);
+}
+
static inline GElf_Addr
-dwfl_adjusted_st_value (Dwfl_Module *mod, GElf_Addr addr)
+dwfl_adjusted_st_value (Dwfl_Module *mod, Elf *symelf, GElf_Addr addr)
{
- if (mod->symfile == &mod->main)
+ if (symelf == mod->main.elf)
return dwfl_adjusted_address (mod, addr);
- return dwfl_adjusted_dwarf_addr (mod, addr);
+ if (symelf == mod->debug.elf)
+ return dwfl_adjusted_dwarf_addr (mod, addr);
+ return dwfl_adjusted_aux_sym_addr (mod, addr);
}
static inline GElf_Addr
-dwfl_deadjust_st_value (Dwfl_Module *mod, GElf_Addr addr)
+dwfl_deadjust_st_value (Dwfl_Module *mod, Elf *symelf, GElf_Addr addr)
{
- if (mod->symfile == &mod->main)
+ if (symelf == mod->main.elf)
return dwfl_deadjust_address (mod, addr);
- return dwfl_deadjust_dwarf_addr (mod, addr);
+ if (symelf == mod->debug.elf)
+ return dwfl_deadjust_dwarf_addr (mod, addr);
+ return dwfl_deadjust_aux_sym_addr (mod, addr);
}
/* This describes a contiguous address range that lies in a single CU.
};
+/* Structure used for keeping track of ptrace attaching a thread.
+ Shared by linux-pid-attach and linux-proc-maps. If it has been setup
+ then get the instance through __libdwfl_get_pid_arg. */
+struct __libdwfl_pid_arg
+{
+ DIR *dir;
+ /* It is 0 if not used. */
+ pid_t tid_attached;
+ /* Valid only if TID_ATTACHED is not zero. */
+ bool tid_was_stopped;
+ /* True if threads are ptrace stopped by caller. */
+ bool assume_ptrace_stopped;
+};
+
+/* If DWfl is not NULL and a Dwfl_Process has been setup that has
+ Dwfl_Thread_Callbacks set to pid_thread_callbacks, then return the
+ callbacks_arg, which will be a struct __libdwfl_pid_arg. Otherwise
+ returns NULL. */
+extern struct __libdwfl_pid_arg *__libdwfl_get_pid_arg (Dwfl *dwfl)
+ internal_function;
+
+/* Makes sure the given tid is attached. On success returns true and
+ sets tid_was_stopped. */
+extern bool __libdwfl_ptrace_attach (pid_t tid, bool *tid_was_stoppedp)
+ internal_function;
+
+/* Detaches a tid that was attached through
+ __libdwfl_ptrace_attach. Must be given the tid_was_stopped as set
+ by __libdwfl_ptrace_attach. */
+extern void __libdwfl_ptrace_detach (pid_t tid, bool tid_was_stopped)
+ internal_function;
+
+
+/* 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;
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,
GElf_Addr *value)
internal_function;
-
/* Ensure that MOD->ebl is set up. */
extern Dwfl_Error __libdwfl_module_getebl (Dwfl_Module *mod) internal_function;
extern Dwfl_Error __libdwfl_cu_getsrclines (struct dwfl_cu *cu)
internal_function;
+/* Look in ELF for an NT_GNU_BUILD_ID note. Store it to BUILD_ID_BITS,
+ its vaddr in ELF to BUILD_ID_VADDR (it is unrelocated, even if MOD is not
+ NULL) and store length to BUILD_ID_LEN. Returns -1 for errors, 1 if it was
+ stored and 0 if no note is found. MOD may be NULL, MOD must be non-NULL
+ only if ELF is ET_REL. */
+extern int __libdwfl_find_elf_build_id (Dwfl_Module *mod, Elf *elf,
+ const void **build_id_bits,
+ GElf_Addr *build_id_elfaddr,
+ int *build_id_len)
+ internal_function;
+
/* Look in ELF for an NT_GNU_BUILD_ID note. If SET is true, store it
in MOD and return its length. If SET is false, instead compare it
to that stored in MOD and return 2 if they match, 1 if they do not.
internal_function;
/* Open a main or debuginfo file by its build ID, returns the fd. */
+extern int __libdwfl_open_mod_by_build_id (Dwfl_Module *mod, bool debug,
+ char **file_name) internal_function;
+
+/* Same, but takes an explicit build_id, can also be used for alt debug. */
extern int __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug,
- char **file_name) internal_function;
+ char **file_name, const size_t id_len,
+ const uint8_t *id) internal_function;
extern uint32_t __libdwfl_crc32 (uint32_t crc, unsigned char *buf, size_t len)
attribute_hidden;
extern int __libdwfl_crc32_file (int fd, uint32_t *resp) attribute_hidden;
+/* Given ELF and some parameters return TRUE if the *P return value parameters
+ have been successfully filled in. Any of the *P parameters can be NULL. */
+extern bool __libdwfl_elf_address_range (Elf *elf, GElf_Addr base,
+ bool add_p_vaddr, bool sanity,
+ GElf_Addr *vaddrp,
+ GElf_Addr *address_syncp,
+ GElf_Addr *startp, GElf_Addr *endp,
+ GElf_Addr *biasp, GElf_Half *e_typep)
+ internal_function;
+
/* Meat of dwfl_report_elf, given elf_begin just called.
Consumes ELF on success, not on failure. */
extern Dwfl_Module *__libdwfl_report_elf (Dwfl *dwfl, const char *name,
const char *file_name, int fd,
- Elf *elf, GElf_Addr base, bool sanity)
+ Elf *elf, GElf_Addr base,
+ bool add_p_vaddr, bool sanity)
internal_function;
/* Meat of dwfl_report_offline. */
const char *))
internal_function;
+/* Free PROCESS. Unlink and free also any structures it references. */
+extern void __libdwfl_process_free (Dwfl_Process *process)
+ internal_function;
+
+/* Update STATE->unwound for the unwound frame.
+ On error STATE->unwound == NULL
+ or STATE->unwound->pc_state == DWFL_FRAME_STATE_ERROR;
+ in such case dwfl_errno () is set.
+ If STATE->unwound->pc_state == DWFL_FRAME_STATE_PC_UNDEFINED
+ then STATE was the last valid frame. */
+extern void __libdwfl_frame_unwind (Dwfl_Frame *state)
+ internal_function;
+
+/* Align segment START downwards or END upwards addresses according to DWFL. */
+extern GElf_Addr __libdwfl_segment_start (Dwfl *dwfl, GElf_Addr start)
+ internal_function;
+extern GElf_Addr __libdwfl_segment_end (Dwfl *dwfl, GElf_Addr end)
+ internal_function;
+
/* Decompression wrappers: decompress whole file into memory. */
extern Dwfl_Error __libdw_gunzip (int fd, off64_t start_offset,
void *mapped, size_t mapped_size,
bool close_on_fail, bool archive_ok)
internal_function;
+/* Fetch PT_DYNAMIC P_VADDR from ELF and store it to *VADDRP. Return success.
+ *VADDRP is not modified if the function fails. */
+extern bool __libdwfl_dynamic_vaddr_get (Elf *elf, GElf_Addr *vaddrp)
+ internal_function;
+
/* These are working nicely for --core, but are not ready to be
exported interfaces quite yet. */
GElf_Off whole, GElf_Off contiguous,
void *arg, Elf **elfp);
+/* One shared library (or executable) info from DT_DEBUG link map. */
+struct r_debug_info_module
+{
+ struct r_debug_info_module *next;
+ /* FD is -1 iff ELF is NULL. */
+ int fd;
+ Elf *elf;
+ GElf_Addr l_ld;
+ /* START and END are both zero if not valid. */
+ GElf_Addr start, end;
+ bool disk_file_has_build_id;
+ char name[0];
+};
+
+/* Information gathered from DT_DEBUG by dwfl_link_map_report hinted to
+ dwfl_segment_report_module. */
+struct r_debug_info
+{
+ struct r_debug_info_module *module;
+};
+
/* ...
*/
extern int dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name,
Dwfl_Memory_Callback *memory_callback,
void *memory_callback_arg,
Dwfl_Module_Callback *read_eagerly,
- void *read_eagerly_arg);
+ void *read_eagerly_arg,
+ const struct r_debug_info *r_debug_info);
/* Report a module for entry in the dynamic linker's struct link_map list.
For each link_map entry, if an existing module resides at its address,
only find where to begin if the correct executable file was
previously reported and preloaded as with dwfl_report_elf.
+ Fill in R_DEBUG_INFO if it is not NULL. It should be cleared by the
+ caller, this function does not touch fields it does not need to modify.
+ If R_DEBUG_INFO is not NULL then no modules get added to DWFL, caller
+ has to add them from filled in R_DEBUG_INFO.
+
Returns the number of modules found, or -1 for errors. */
extern int dwfl_link_map_report (Dwfl *dwfl, const void *auxv, size_t auxv_size,
Dwfl_Memory_Callback *memory_callback,
- void *memory_callback_arg);
+ void *memory_callback_arg,
+ struct r_debug_info *r_debug_info);
/* Avoid PLT entries. */
INTDECL (dwfl_addrsegment)
INTDECL (dwfl_addrdwarf)
INTDECL (dwfl_addrdie)
+INTDECL (dwfl_core_file_attach)
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_build_id)
INTDECL (dwfl_module_getdwarf)
INTDECL (dwfl_module_getelf)
INTDECL (dwfl_module_getsym)
+INTDECL (dwfl_module_getsym_info)
INTDECL (dwfl_module_getsymtab)
+INTDECL (dwfl_module_getsymtab_first_global)
INTDECL (dwfl_module_getsrc)
INTDECL (dwfl_module_report_build_id)
INTDECL (dwfl_report_elf)
INTDECL (dwfl_link_map_report)
INTDECL (dwfl_linux_kernel_find_elf)
INTDECL (dwfl_linux_kernel_module_section_address)
+INTDECL (dwfl_linux_proc_attach)
INTDECL (dwfl_linux_proc_report)
INTDECL (dwfl_linux_proc_maps_report)
INTDECL (dwfl_linux_proc_find_elf)
INTDECL (dwfl_module_relocate_address)
INTDECL (dwfl_module_dwarf_cfi)
INTDECL (dwfl_module_eh_cfi)
+INTDECL (dwfl_attach_state)
+INTDECL (dwfl_pid)
+INTDECL (dwfl_thread_dwfl)
+INTDECL (dwfl_thread_tid)
+INTDECL (dwfl_frame_thread)
+INTDECL (dwfl_thread_state_registers)
+INTDECL (dwfl_thread_state_register_pc)
+INTDECL (dwfl_getthread_frames)
+INTDECL (dwfl_getthreads)
+INTDECL (dwfl_thread_getframes)
+INTDECL (dwfl_frame_pc)
/* Leading arguments standard to callbacks passed a Dwfl_Module. */
#define MODCB_ARGS(mod) (mod), &(mod)->userdata, (mod)->name, (mod)->low_addr
/* Report modules by examining dynamic linker data structures.
- Copyright (C) 2008-2010 Red Hat, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#include <config.h>
#include "libdwflP.h"
+#include "../libdw/memory-access.h"
+#include "system.h"
#include <byteswap.h>
#include <endian.h>
+#include <fcntl.h>
/* This element is always provided and always has a constant value.
This makes it an easy thing to scan for to discern the format. */
#define PROBE_VAL32 sizeof (Elf32_Phdr)
#define PROBE_VAL64 sizeof (Elf64_Phdr)
-#if BYTE_ORDER == BIG_ENDIAN
-# define BE32(x) (x)
-# define BE64(x) (x)
-# define LE32(x) bswap_32 (x)
-# define LE64(x) bswap_64 (x)
-#else
-# define LE32(x) (x)
-# define LE64(x) (x)
-# define BE32(x) bswap_32 (x)
-# define BE64(x) bswap_64 (x)
-#endif
-
/* Examine an auxv data block and determine its format.
Return true iff we figured it out. */
inline bool check64 (size_t i)
{
- if (u->a64[i].a_type == BE64 (PROBE_TYPE)
- && u->a64[i].a_un.a_val == BE64 (PROBE_VAL64))
+ /* The AUXV pointer might not even be naturally aligned for 64-bit
+ data, because note payloads in a core file are not aligned.
+ But we assume the data is 32-bit aligned. */
+
+ uint64_t type = read_8ubyte_unaligned_noncvt (&u->a64[i].a_type);
+ uint64_t val = read_8ubyte_unaligned_noncvt (&u->a64[i].a_un.a_val);
+
+ if (type == BE64 (PROBE_TYPE)
+ && val == BE64 (PROBE_VAL64))
{
*elfdata = ELFDATA2MSB;
return true;
}
- if (u->a64[i].a_type == LE64 (PROBE_TYPE)
- && u->a64[i].a_un.a_val == LE64 (PROBE_VAL64))
+ if (type == LE64 (PROBE_TYPE)
+ && val == LE64 (PROBE_VAL64))
{
*elfdata = ELFDATA2LSB;
return true;
}
/* Report a module for each struct link_map in the linked list at r_map
- in the struct r_debug at R_DEBUG_VADDR.
+ in the struct r_debug at R_DEBUG_VADDR. For r_debug_info description
+ see dwfl_link_map_report in libdwflP.h. If R_DEBUG_INFO is not NULL then no
+ modules get added to DWFL, caller has to add them from filled in
+ R_DEBUG_INFO.
For each link_map entry, if an existing module resides at its address,
this just modifies that module's name and suggested file name. If
report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
Dwfl *dwfl, GElf_Addr r_debug_vaddr,
Dwfl_Memory_Callback *memory_callback,
- void *memory_callback_arg)
+ void *memory_callback_arg,
+ struct r_debug_info *r_debug_info)
{
/* Skip r_version, to aligned r_map field. */
GElf_Addr read_vaddr = r_debug_vaddr + addrsize (elfclass);
if (read_addrs (next, 4))
return release_buffer (-1);
- GElf_Addr l_addr = addrs[0];
+ /* Unused: l_addr is the difference between the address in memory
+ and the ELF file when the core was created. We need to
+ recalculate the difference below because the ELF file we use
+ might be differently pre-linked. */
+ // GElf_Addr l_addr = addrs[0];
GElf_Addr l_name = addrs[1];
GElf_Addr l_ld = addrs[2];
next = addrs[3];
if (name != NULL && name[0] == '\0')
name = NULL;
- /* If content-sniffing already reported a module covering
- the same area, find that existing module to adjust.
- The l_ld address is the only one we know for sure
- to be within the module's own segments (its .dynamic). */
- Dwfl_Module *mod = INTUSE(dwfl_addrmodule) (dwfl, l_ld);
- if (mod != NULL)
+ if (iterations == 1 && dwfl->executable_for_core != NULL)
+ name = dwfl->executable_for_core;
+
+ struct r_debug_info_module *r_debug_info_module = NULL;
+ if (r_debug_info != NULL)
+ {
+ /* Save link map information about valid shared library (or
+ executable) which has not been found on disk. */
+ const char *name1 = name == NULL ? "" : name;
+ r_debug_info_module = malloc (sizeof (*r_debug_info_module)
+ + strlen (name1) + 1);
+ if (r_debug_info_module == NULL)
+ return release_buffer (result);
+ r_debug_info_module->fd = -1;
+ r_debug_info_module->elf = NULL;
+ r_debug_info_module->l_ld = l_ld;
+ r_debug_info_module->start = 0;
+ r_debug_info_module->end = 0;
+ r_debug_info_module->disk_file_has_build_id = false;
+ strcpy (r_debug_info_module->name, name1);
+ r_debug_info_module->next = r_debug_info->module;
+ r_debug_info->module = r_debug_info_module;
+ }
+
+ Dwfl_Module *mod = NULL;
+ if (name != NULL)
{
- /* We have a module. We can give it a better name from l_name. */
- if (name != NULL && mod->name[0] == '[')
+ /* This code is mostly inlined dwfl_report_elf. */
+ // XXX hook for sysroot
+ int fd = open64 (name, O_RDONLY);
+ if (fd >= 0)
{
- char *newname = strdup (basename (name));
- if (newname != NULL)
+ Elf *elf;
+ Dwfl_Error error = __libdw_open_file (&fd, &elf, true, false);
+ GElf_Addr elf_dynamic_vaddr;
+ if (error == DWFL_E_NOERROR
+ && __libdwfl_dynamic_vaddr_get (elf, &elf_dynamic_vaddr))
{
- free (mod->name);
- mod->name = newname;
+ const void *build_id_bits;
+ GElf_Addr build_id_elfaddr;
+ int build_id_len;
+ bool valid = true;
+
+ if (__libdwfl_find_elf_build_id (NULL, elf, &build_id_bits,
+ &build_id_elfaddr,
+ &build_id_len) > 0
+ && build_id_elfaddr != 0)
+ {
+ if (r_debug_info_module != NULL)
+ r_debug_info_module->disk_file_has_build_id = true;
+ GElf_Addr build_id_vaddr = (build_id_elfaddr
+ - elf_dynamic_vaddr + l_ld);
+
+ release_buffer (0);
+ int segndx = INTUSE(dwfl_addrsegment) (dwfl,
+ build_id_vaddr,
+ NULL);
+ if (! (*memory_callback) (dwfl, segndx,
+ &buffer, &buffer_available,
+ build_id_vaddr, build_id_len,
+ memory_callback_arg))
+ {
+ /* File has valid build-id which cannot be read from
+ memory. This happens for core files without bit 4
+ (0x10) set in Linux /proc/PID/coredump_filter. */
+ }
+ else
+ {
+ if (memcmp (build_id_bits, buffer, build_id_len) != 0)
+ /* File has valid build-id which does not match
+ the one in memory. */
+ valid = false;
+ release_buffer (0);
+ }
+ }
+
+ if (valid)
+ {
+ // It is like l_addr but it handles differently prelinked
+ // files at core dumping vs. core loading time.
+ GElf_Addr base = l_ld - elf_dynamic_vaddr;
+ if (r_debug_info_module == NULL)
+ {
+ // XXX hook for sysroot
+ mod = __libdwfl_report_elf (dwfl, basename (name),
+ name, fd, elf, base,
+ true, true);
+ if (mod != NULL)
+ {
+ elf = NULL;
+ fd = -1;
+ }
+ }
+ else if (__libdwfl_elf_address_range (elf, base, true,
+ true, NULL, NULL,
+ &r_debug_info_module->start,
+ &r_debug_info_module->end,
+ NULL, NULL))
+ {
+ r_debug_info_module->elf = elf;
+ r_debug_info_module->fd = fd;
+ elf = NULL;
+ fd = -1;
+ }
+ }
+ if (elf != NULL)
+ elf_end (elf);
+ if (fd != -1)
+ close (fd);
}
}
-
- if (name == NULL && mod->name[0] == '/')
- name = mod->name;
-
- /* If we don't have a file for it already, we can pre-install
- the full file name from l_name. Opening the file by this
- name will be the fallback when no build ID match is found.
- XXX hook for sysroot */
- if (name != NULL && mod->main.name == NULL)
- mod->main.name = strdup (name);
- }
- else if (name != NULL)
- {
- /* We have to find the file's phdrs to compute along with l_addr
- what its runtime address boundaries are. */
-
- // XXX hook for sysroot
- mod = INTUSE(dwfl_report_elf) (dwfl, basename (name),
- name, -1, l_addr);
}
if (mod != NULL)
int
dwfl_link_map_report (Dwfl *dwfl, const void *auxv, size_t auxv_size,
Dwfl_Memory_Callback *memory_callback,
- void *memory_callback_arg)
+ void *memory_callback_arg,
+ struct r_debug_info *r_debug_info)
{
GElf_Addr r_debug_vaddr = 0;
GElf_Xword phent = 0;
GElf_Xword phnum = 0;
-#define AUXV_SCAN(NN, BL) do \
- { \
- const Elf##NN##_auxv_t *av = auxv; \
- for (size_t i = 0; i < auxv_size / sizeof av[0]; ++i) \
- { \
- Elf##NN##_Addr val = BL##NN (av[i].a_un.a_val); \
- if (av[i].a_type == BL##NN (AT_ENTRY)) \
- entry = val; \
- else if (av[i].a_type == BL##NN (AT_PHDR)) \
- phdr = val; \
- else if (av[i].a_type == BL##NN (AT_PHNUM)) \
- phnum = val; \
- else if (av[i].a_type == BL##NN (AT_PHENT)) \
- phent = val; \
- else if (av[i].a_type == BL##NN (AT_PAGESZ)) \
- { \
- if (val > 1 \
- && (dwfl->segment_align == 0 \
- || val < dwfl->segment_align)) \
- dwfl->segment_align = val; \
- } \
- } \
- } \
+#define READ_AUXV32(ptr) read_4ubyte_unaligned_noncvt (ptr)
+#define READ_AUXV64(ptr) read_8ubyte_unaligned_noncvt (ptr)
+#define AUXV_SCAN(NN, BL) do \
+ { \
+ const Elf##NN##_auxv_t *av = auxv; \
+ for (size_t i = 0; i < auxv_size / sizeof av[0]; ++i) \
+ { \
+ uint##NN##_t type = READ_AUXV##NN (&av[i].a_type); \
+ uint##NN##_t val = BL##NN (READ_AUXV##NN (&av[i].a_un.a_val)); \
+ if (type == BL##NN (AT_ENTRY)) \
+ entry = val; \
+ else if (type == BL##NN (AT_PHDR)) \
+ phdr = val; \
+ else if (type == BL##NN (AT_PHNUM)) \
+ phnum = val; \
+ else if (type == BL##NN (AT_PHENT)) \
+ phent = val; \
+ else if (type == BL##NN (AT_PAGESZ)) \
+ { \
+ if (val > 1 \
+ && (dwfl->segment_align == 0 \
+ || val < dwfl->segment_align)) \
+ dwfl->segment_align = val; \
+ } \
+ } \
+ } \
while (0)
if (elfclass == ELFCLASS32)
.d_size = phnum * phent,
.d_buf = NULL
};
- if ((*memory_callback) (dwfl, phdr_segndx, &in.d_buf, &in.d_size,
- phdr, phnum * phent, memory_callback_arg))
+ bool in_ok = (*memory_callback) (dwfl, phdr_segndx, &in.d_buf,
+ &in.d_size, phdr, phnum * phent,
+ memory_callback_arg);
+ if (! in_ok && dwfl->executable_for_core != NULL)
+ {
+ /* AUXV -> PHDR -> DYNAMIC
+ Both AUXV and DYNAMIC should be always present in a core file.
+ PHDR may be missing in core file, try to read it from
+ EXECUTABLE_FOR_CORE to find where DYNAMIC is located in the
+ core file. */
+
+ int fd = open (dwfl->executable_for_core, O_RDONLY);
+ Elf *elf;
+ Dwfl_Error error = DWFL_E_ERRNO;
+ if (fd != -1)
+ error = __libdw_open_file (&fd, &elf, true, false);
+ if (error != DWFL_E_NOERROR)
+ {
+ __libdwfl_seterrno (error);
+ return false;
+ }
+ GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem);
+ if (ehdr == NULL)
+ {
+ elf_end (elf);
+ close (fd);
+ __libdwfl_seterrno (DWFL_E_LIBELF);
+ return false;
+ }
+ if (ehdr->e_phnum != phnum || ehdr->e_phentsize != phent)
+ {
+ elf_end (elf);
+ close (fd);
+ __libdwfl_seterrno (DWFL_E_BADELF);
+ return false;
+ }
+ off_t off = ehdr->e_phoff;
+ assert (in.d_buf == NULL);
+ assert (in.d_size == phnum * phent);
+ in.d_buf = malloc (in.d_size);
+ if (unlikely (in.d_buf == NULL))
+ {
+ elf_end (elf);
+ close (fd);
+ __libdwfl_seterrno (DWFL_E_NOMEM);
+ return false;
+ }
+ ssize_t nread = pread_retry (fd, in.d_buf, in.d_size, off);
+ elf_end (elf);
+ close (fd);
+ if (nread != (ssize_t) in.d_size)
+ {
+ free (in.d_buf);
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+ }
+ in_ok = true;
+ }
+ if (in_ok)
{
union
{
/* Now we can follow the dynamic linker's library list. */
return report_r_debug (elfclass, elfdata, dwfl, r_debug_vaddr,
- &integrated_memory_callback, &mcb);
+ &integrated_memory_callback, &mcb, r_debug_info);
}
INTDEF (dwfl_link_map_report)
--- /dev/null
+/* Get Dwarf Frame state for target core file.
+ Copyright (C) 2013, 2014 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/>. */
+
+#include "libdwflP.h"
+#include <fcntl.h>
+#include "system.h"
+
+#include "../libdw/memory-access.h"
+
+#ifndef MIN
+# define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+struct core_arg
+{
+ Elf *core;
+ Elf_Data *note_data;
+ size_t thread_note_offset;
+ Ebl *ebl;
+};
+
+struct thread_arg
+{
+ struct core_arg *core_arg;
+ size_t note_offset;
+};
+
+static bool
+core_memory_read (Dwfl *dwfl, Dwarf_Addr addr, Dwarf_Word *result,
+ void *dwfl_arg)
+{
+ Dwfl_Process *process = dwfl->process;
+ struct core_arg *core_arg = dwfl_arg;
+ Elf *core = core_arg->core;
+ assert (core != NULL);
+ static size_t phnum;
+ if (elf_getphdrnum (core, &phnum) < 0)
+ {
+ __libdwfl_seterrno (DWFL_E_LIBELF);
+ return false;
+ }
+ for (size_t cnt = 0; cnt < phnum; ++cnt)
+ {
+ GElf_Phdr phdr_mem, *phdr = gelf_getphdr (core, cnt, &phdr_mem);
+ if (phdr == NULL || phdr->p_type != PT_LOAD)
+ continue;
+ /* Bias is zero here, a core file itself has no bias. */
+ GElf_Addr start = __libdwfl_segment_start (dwfl, phdr->p_vaddr);
+ GElf_Addr end = __libdwfl_segment_end (dwfl,
+ phdr->p_vaddr + phdr->p_memsz);
+ unsigned bytes = ebl_get_elfclass (process->ebl) == ELFCLASS64 ? 8 : 4;
+ if (addr < start || addr + bytes > end)
+ continue;
+ Elf_Data *data;
+ data = elf_getdata_rawchunk (core, phdr->p_offset + addr - start,
+ bytes, ELF_T_ADDR);
+ if (data == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_LIBELF);
+ return false;
+ }
+ assert (data->d_size == bytes);
+ if (bytes == 8)
+ *result = read_8ubyte_unaligned_noncvt (data->d_buf);
+ else
+ *result = read_4ubyte_unaligned_noncvt (data->d_buf);
+ return true;
+ }
+ __libdwfl_seterrno (DWFL_E_ADDR_OUTOFRANGE);
+ return false;
+}
+
+static pid_t
+core_next_thread (Dwfl *dwfl __attribute__ ((unused)), void *dwfl_arg,
+ void **thread_argp)
+{
+ struct core_arg *core_arg = dwfl_arg;
+ Elf *core = core_arg->core;
+ GElf_Nhdr nhdr;
+ size_t name_offset;
+ size_t desc_offset;
+ Elf_Data *note_data = core_arg->note_data;
+ size_t offset;
+
+ struct thread_arg *thread_arg;
+ if (*thread_argp == NULL)
+ {
+ core_arg->thread_note_offset = 0;
+ thread_arg = malloc (sizeof (*thread_arg));
+ if (thread_arg == NULL)
+ {
+ __libdwfl_seterrno (DWFL_E_NOMEM);
+ return -1;
+ }
+ thread_arg->core_arg = core_arg;
+ *thread_argp = thread_arg;
+ }
+ else
+ thread_arg = (struct thread_arg *) *thread_argp;
+
+ while (offset = core_arg->thread_note_offset, offset < note_data->d_size
+ && (core_arg->thread_note_offset = gelf_getnote (note_data, offset,
+ &nhdr, &name_offset,
+ &desc_offset)) > 0)
+ {
+ /* Do not check NAME for now, help broken Linux kernels. */
+ const char *name = note_data->d_buf + name_offset;
+ const char *desc = note_data->d_buf + desc_offset;
+ GElf_Word regs_offset;
+ size_t nregloc;
+ const Ebl_Register_Location *reglocs;
+ size_t nitems;
+ const Ebl_Core_Item *items;
+ if (! ebl_core_note (core_arg->ebl, &nhdr, name,
+ ®s_offset, &nregloc, ®locs, &nitems, &items))
+ {
+ /* This note may be just not recognized, skip it. */
+ continue;
+ }
+ if (nhdr.n_type != NT_PRSTATUS)
+ continue;
+ const Ebl_Core_Item *item;
+ for (item = items; item < items + nitems; item++)
+ if (strcmp (item->name, "pid") == 0)
+ break;
+ if (item == items + nitems)
+ continue;
+ uint32_t val32 = read_4ubyte_unaligned_noncvt (desc + item->offset);
+ val32 = (elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB
+ ? be32toh (val32) : le32toh (val32));
+ pid_t tid = (int32_t) val32;
+ eu_static_assert (sizeof val32 <= sizeof tid);
+ thread_arg->note_offset = offset;
+ return tid;
+ }
+
+ free (thread_arg);
+ return 0;
+}
+
+static bool
+core_set_initial_registers (Dwfl_Thread *thread, void *thread_arg_voidp)
+{
+ struct thread_arg *thread_arg = thread_arg_voidp;
+ struct core_arg *core_arg = thread_arg->core_arg;
+ Elf *core = core_arg->core;
+ size_t offset = thread_arg->note_offset;
+ GElf_Nhdr nhdr;
+ size_t name_offset;
+ size_t desc_offset;
+ Elf_Data *note_data = core_arg->note_data;
+ size_t nregs = ebl_frame_nregs (core_arg->ebl);
+ assert (nregs > 0);
+ assert (offset < note_data->d_size);
+ size_t getnote_err = gelf_getnote (note_data, offset, &nhdr, &name_offset,
+ &desc_offset);
+ /* __libdwfl_attach_state_for_core already verified the note is there. */
+ assert (getnote_err != 0);
+ /* Do not check NAME for now, help broken Linux kernels. */
+ const char *name = note_data->d_buf + name_offset;
+ const char *desc = note_data->d_buf + desc_offset;
+ GElf_Word regs_offset;
+ size_t nregloc;
+ const Ebl_Register_Location *reglocs;
+ size_t nitems;
+ const Ebl_Core_Item *items;
+ int core_note_err = ebl_core_note (core_arg->ebl, &nhdr, name, ®s_offset,
+ &nregloc, ®locs, &nitems, &items);
+ /* __libdwfl_attach_state_for_core already verified the note is there. */
+ assert (core_note_err != 0);
+ assert (nhdr.n_type == NT_PRSTATUS);
+ const Ebl_Core_Item *item;
+ for (item = items; item < items + nitems; item++)
+ if (strcmp (item->name, "pid") == 0)
+ break;
+ assert (item < items + nitems);
+ pid_t tid;
+ {
+ uint32_t val32 = read_4ubyte_unaligned_noncvt (desc + item->offset);
+ val32 = (elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB
+ ? be32toh (val32) : le32toh (val32));
+ tid = (int32_t) val32;
+ eu_static_assert (sizeof val32 <= sizeof tid);
+ }
+ /* core_next_thread already found this TID there. */
+ assert (tid == INTUSE(dwfl_thread_tid) (thread));
+ for (item = items; item < items + nitems; item++)
+ if (item->pc_register)
+ break;
+ if (item < items + nitems)
+ {
+ Dwarf_Word pc;
+ switch (gelf_getclass (core) == ELFCLASS32 ? 32 : 64)
+ {
+ case 32:;
+ uint32_t val32 = read_4ubyte_unaligned_noncvt (desc + item->offset);
+ val32 = (elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB
+ ? be32toh (val32) : le32toh (val32));
+ /* Do a host width conversion. */
+ pc = val32;
+ break;
+ case 64:;
+ uint64_t val64 = read_8ubyte_unaligned_noncvt (desc + item->offset);
+ val64 = (elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB
+ ? be64toh (val64) : le64toh (val64));
+ pc = val64;
+ break;
+ default:
+ abort ();
+ }
+ INTUSE(dwfl_thread_state_register_pc) (thread, pc);
+ }
+ desc += regs_offset;
+ for (size_t regloci = 0; regloci < nregloc; regloci++)
+ {
+ const Ebl_Register_Location *regloc = reglocs + regloci;
+ // Iterate even regs out of NREGS range so that we can find pc_register.
+ if (regloc->bits != 32 && regloc->bits != 64)
+ continue;
+ const char *reg_desc = desc + regloc->offset;
+ for (unsigned regno = regloc->regno;
+ regno < regloc->regno + (regloc->count ?: 1U);
+ regno++)
+ {
+ /* PPC provides DWARF register 65 irrelevant for
+ CFI which clashes with register 108 (LR) we need.
+ LR (108) is provided earlier (in NT_PRSTATUS) than the # 65.
+ FIXME: It depends now on their order in core notes.
+ FIXME: It uses private function. */
+ if (regno < nregs
+ && __libdwfl_frame_reg_get (thread->unwound, regno, NULL))
+ continue;
+ Dwarf_Word val;
+ switch (regloc->bits)
+ {
+ case 32:;
+ uint32_t val32 = read_4ubyte_unaligned_noncvt (reg_desc);
+ reg_desc += sizeof val32;
+ val32 = (elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB
+ ? be32toh (val32) : le32toh (val32));
+ /* Do a host width conversion. */
+ val = val32;
+ break;
+ case 64:;
+ uint64_t val64 = read_8ubyte_unaligned_noncvt (reg_desc);
+ reg_desc += sizeof val64;
+ val64 = (elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB
+ ? be64toh (val64) : le64toh (val64));
+ assert (sizeof (*thread->unwound->regs) == sizeof val64);
+ val = val64;
+ break;
+ default:
+ abort ();
+ }
+ /* Registers not valid for CFI are just ignored. */
+ if (regno < nregs)
+ INTUSE(dwfl_thread_state_registers) (thread, regno, 1, &val);
+ if (regloc->pc_register)
+ INTUSE(dwfl_thread_state_register_pc) (thread, val);
+ reg_desc += regloc->pad;
+ }
+ }
+ return true;
+}
+
+static void
+core_detach (Dwfl *dwfl __attribute__ ((unused)), void *dwfl_arg)
+{
+ struct core_arg *core_arg = dwfl_arg;
+ ebl_closebackend (core_arg->ebl);
+ free (core_arg);
+}
+
+static const Dwfl_Thread_Callbacks core_thread_callbacks =
+{
+ core_next_thread,
+ NULL, /* get_thread */
+ core_memory_read,
+ core_set_initial_registers,
+ core_detach,
+ NULL, /* core_thread_detach */
+};
+
+int
+dwfl_core_file_attach (Dwfl *dwfl, Elf *core)
+{
+ Dwfl_Error err = DWFL_E_NOERROR;
+ Ebl *ebl = ebl_openbackend (core);
+ if (ebl == NULL)
+ {
+ err = DWFL_E_LIBEBL;
+ fail_err:
+ if (dwfl->process == NULL && dwfl->attacherr == DWFL_E_NOERROR)
+ dwfl->attacherr = __libdwfl_canon_error (err);
+ __libdwfl_seterrno (err);
+ return -1;
+ }
+ size_t nregs = ebl_frame_nregs (ebl);
+ if (nregs == 0)
+ {
+ err = DWFL_E_NO_UNWIND;
+ fail:
+ ebl_closebackend (ebl);
+ goto fail_err;
+ }
+ GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (core, &ehdr_mem);
+ if (ehdr == NULL)
+ {
+ err = DWFL_E_LIBELF;
+ goto fail;
+ }
+ if (ehdr->e_type != ET_CORE)
+ {
+ err = DWFL_E_NO_CORE_FILE;
+ goto fail;
+ }
+ size_t phnum;
+ if (elf_getphdrnum (core, &phnum) < 0)
+ {
+ err = DWFL_E_LIBELF;
+ goto fail;
+ }
+ pid_t pid = -1;
+ Elf_Data *note_data = NULL;
+ for (size_t cnt = 0; cnt < phnum; ++cnt)
+ {
+ GElf_Phdr phdr_mem, *phdr = gelf_getphdr (core, cnt, &phdr_mem);
+ if (phdr != NULL && phdr->p_type == PT_NOTE)
+ {
+ note_data = elf_getdata_rawchunk (core, phdr->p_offset,
+ phdr->p_filesz, ELF_T_NHDR);
+ break;
+ }
+ }
+ if (note_data == NULL)
+ {
+ err = DWFL_E_LIBELF;
+ goto fail;
+ }
+ size_t offset = 0;
+ GElf_Nhdr nhdr;
+ size_t name_offset;
+ size_t desc_offset;
+ while (offset < note_data->d_size
+ && (offset = gelf_getnote (note_data, offset,
+ &nhdr, &name_offset, &desc_offset)) > 0)
+ {
+ /* Do not check NAME for now, help broken Linux kernels. */
+ const char *name = note_data->d_buf + name_offset;
+ const char *desc = note_data->d_buf + desc_offset;
+ GElf_Word regs_offset;
+ size_t nregloc;
+ const Ebl_Register_Location *reglocs;
+ size_t nitems;
+ const Ebl_Core_Item *items;
+ if (! ebl_core_note (ebl, &nhdr, name,
+ ®s_offset, &nregloc, ®locs, &nitems, &items))
+ {
+ /* This note may be just not recognized, skip it. */
+ continue;
+ }
+ if (nhdr.n_type != NT_PRPSINFO)
+ continue;
+ const Ebl_Core_Item *item;
+ for (item = items; item < items + nitems; item++)
+ if (strcmp (item->name, "pid") == 0)
+ break;
+ if (item == items + nitems)
+ continue;
+ uint32_t val32 = read_4ubyte_unaligned_noncvt (desc + item->offset);
+ val32 = (elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB
+ ? be32toh (val32) : le32toh (val32));
+ pid = (int32_t) val32;
+ eu_static_assert (sizeof val32 <= sizeof pid);
+ break;
+ }
+ if (pid == -1)
+ {
+ /* No valid NT_PRPSINFO recognized in this CORE. */
+ err = DWFL_E_BADELF;
+ goto fail;
+ }
+ struct core_arg *core_arg = malloc (sizeof *core_arg);
+ if (core_arg == NULL)
+ {
+ err = DWFL_E_NOMEM;
+ goto fail;
+ }
+ core_arg->core = core;
+ core_arg->note_data = note_data;
+ core_arg->thread_note_offset = 0;
+ core_arg->ebl = ebl;
+ if (! INTUSE(dwfl_attach_state) (dwfl, core, pid, &core_thread_callbacks,
+ core_arg))
+ {
+ free (core_arg);
+ ebl_closebackend (ebl);
+ return -1;
+ }
+ return pid;
+}
+INTDEF (dwfl_core_file_attach)
/* Standard libdwfl callbacks for debugging the running Linux kernel.
- Copyright (C) 2005-2011 Red Hat, Inc.
+ Copyright (C) 2005-2011, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
if (fd < 0)
{
- char *debugfname = NULL;
Dwfl_Module fakemod = { .dwfl = dwfl };
/* First try the file's unadorned basename as DEBUGLINK_FILE,
to look for "vmlinux" files. */
fd = INTUSE(dwfl_standard_find_debuginfo) (&fakemod, NULL, NULL, 0,
*fname, basename (*fname), 0,
- &debugfname);
+ &fakemod.debug.name);
if (fd < 0 && try_debug)
/* Next, let the call use the default of basename + ".debug",
to look for "vmlinux.debug" files. */
fd = INTUSE(dwfl_standard_find_debuginfo) (&fakemod, NULL, NULL, 0,
*fname, NULL, 0,
- &debugfname);
- if (debugfname != NULL)
+ &fakemod.debug.name);
+ if (fakemod.debug.name != NULL)
{
free (*fname);
- *fname = debugfname;
+ *fname = fakemod.debug.name;
}
}
if (report)
{
+ /* Note that on some architectures (e.g. x86_64) the vmlinux
+ is ET_EXEC, while on others (e.g. ppc64) it is ET_DYN.
+ In both cases the phdr p_vaddr load address will be non-zero.
+ We want the image to be placed as if it was ET_DYN, so
+ pass true for add_p_vaddr which will do the right thing
+ (in combination with a zero base) in either case. */
Dwfl_Module *mod = INTUSE(dwfl_report_elf) (dwfl, KERNEL_MODNAME,
- fname, fd, 0);
+ fname, fd, 0, true);
if (mod == NULL)
result = -1;
else
mod->e_type = ET_DYN;
}
+ free (fname);
+
if (!report || result < 0)
close (fd);
}
- free (fname);
-
return result;
}
return result;
char *archive;
- if (unlikely ((*release)[0] == '/'
- ? asprintf (&archive, "%s/debug.a", *release)
- : asprintf (&archive, MODULEDIRFMT "/debug.a", *release)) < 0)
+ int res = (((*release)[0] == '/')
+ ? asprintf (&archive, "%s/debug.a", *release)
+ : asprintf (&archive, MODULEDIRFMT "/debug.a", *release));
+ if (unlikely (res < 0))
return ENOMEM;
int fd = try_kernel_name (dwfl, &archive, false);
#if USE_BZLIB
TRY (".ko.bz2");
#endif
+#if USE_LZMA
+ TRY (".ko.xz");
+#endif
return 0;
--- /dev/null
+/* Get Dwarf Frame state for target live PID process.
+ Copyright (C) 2013, 2014 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/>. */
+
+#include "libdwflP.h"
+#include <sys/ptrace.h>
+#include <sys/wait.h>
+#include <dirent.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+#ifndef MAX
+# define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
+
+#ifdef __linux__
+
+static bool
+linux_proc_pid_is_stopped (pid_t pid)
+{
+ char buffer[64];
+ FILE *procfile;
+ bool retval, have_state;
+
+ snprintf (buffer, sizeof (buffer), "/proc/%ld/status", (long) pid);
+ procfile = fopen (buffer, "r");
+ if (procfile == NULL)
+ return false;
+
+ have_state = false;
+ while (fgets (buffer, sizeof (buffer), procfile) != NULL)
+ if (strncmp (buffer, "State:", 6) == 0)
+ {
+ have_state = true;
+ break;
+ }
+ retval = (have_state && strstr (buffer, "T (stopped)") != NULL);
+ fclose (procfile);
+ return retval;
+}
+
+bool
+internal_function
+__libdwfl_ptrace_attach (pid_t tid, bool *tid_was_stoppedp)
+{
+ if (ptrace (PTRACE_ATTACH, tid, NULL, NULL) != 0)
+ {
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+ }
+ *tid_was_stoppedp = linux_proc_pid_is_stopped (tid);
+ if (*tid_was_stoppedp)
+ {
+ /* Make sure there is a SIGSTOP signal pending even when the process is
+ already State: T (stopped). Older kernels might fail to generate
+ a SIGSTOP notification in that case in response to our PTRACE_ATTACH
+ above. Which would make the waitpid below wait forever. So emulate
+ it. Since there can only be one SIGSTOP notification pending this is
+ safe. See also gdb/linux-nat.c linux_nat_post_attach_wait. */
+ syscall (__NR_tkill, tid, SIGSTOP);
+ ptrace (PTRACE_CONT, tid, NULL, NULL);
+ }
+ for (;;)
+ {
+ int status;
+ if (waitpid (tid, &status, __WALL) != tid || !WIFSTOPPED (status))
+ {
+ int saved_errno = errno;
+ ptrace (PTRACE_DETACH, tid, NULL, NULL);
+ errno = saved_errno;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+ }
+ if (WSTOPSIG (status) == SIGSTOP)
+ break;
+ if (ptrace (PTRACE_CONT, tid, NULL,
+ (void *) (uintptr_t) WSTOPSIG (status)) != 0)
+ {
+ int saved_errno = errno;
+ ptrace (PTRACE_DETACH, tid, NULL, NULL);
+ errno = saved_errno;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+ }
+ }
+ return true;
+}
+
+static bool
+pid_memory_read (Dwfl *dwfl, Dwarf_Addr addr, Dwarf_Word *result, void *arg)
+{
+ struct __libdwfl_pid_arg *pid_arg = arg;
+ pid_t tid = pid_arg->tid_attached;
+ assert (tid > 0);
+ Dwfl_Process *process = dwfl->process;
+ if (ebl_get_elfclass (process->ebl) == ELFCLASS64)
+ {
+#if SIZEOF_LONG == 8
+ errno = 0;
+ *result = ptrace (PTRACE_PEEKDATA, tid, (void *) (uintptr_t) addr, NULL);
+ return errno == 0;
+#else /* SIZEOF_LONG != 8 */
+ /* This should not happen. */
+ return false;
+#endif /* SIZEOF_LONG != 8 */
+ }
+#if SIZEOF_LONG == 8
+ /* We do not care about reads unaliged to 4 bytes boundary.
+ But 0x...ffc read of 8 bytes could overrun a page. */
+ bool lowered = (addr & 4) != 0;
+ if (lowered)
+ addr -= 4;
+#endif /* SIZEOF_LONG == 8 */
+ errno = 0;
+ *result = ptrace (PTRACE_PEEKDATA, tid, (void *) (uintptr_t) addr, NULL);
+ if (errno != 0)
+ return false;
+#if SIZEOF_LONG == 8
+# if BYTE_ORDER == BIG_ENDIAN
+ if (! lowered)
+ *result >>= 32;
+# else
+ if (lowered)
+ *result >>= 32;
+# endif
+#endif /* SIZEOF_LONG == 8 */
+ *result &= 0xffffffff;
+ return true;
+}
+
+static pid_t
+pid_next_thread (Dwfl *dwfl __attribute__ ((unused)), void *dwfl_arg,
+ void **thread_argp)
+{
+ struct __libdwfl_pid_arg *pid_arg = dwfl_arg;
+ struct dirent *dirent;
+ /* Start fresh on first traversal. */
+ if (*thread_argp == NULL)
+ rewinddir (pid_arg->dir);
+ do
+ {
+ errno = 0;
+ dirent = readdir (pid_arg->dir);
+ if (dirent == NULL)
+ {
+ if (errno != 0)
+ {
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return -1;
+ }
+ return 0;
+ }
+ }
+ while (strcmp (dirent->d_name, ".") == 0
+ || strcmp (dirent->d_name, "..") == 0);
+ char *end;
+ errno = 0;
+ long tidl = strtol (dirent->d_name, &end, 10);
+ if (errno != 0)
+ {
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return -1;
+ }
+ pid_t tid = tidl;
+ if (tidl <= 0 || (end && *end) || tid != tidl)
+ {
+ __libdwfl_seterrno (DWFL_E_PARSE_PROC);
+ return -1;
+ }
+ *thread_argp = dwfl_arg;
+ return tid;
+}
+
+/* Just checks that the thread id exists. */
+static bool
+pid_getthread (Dwfl *dwfl __attribute__ ((unused)), pid_t tid,
+ void *dwfl_arg, void **thread_argp)
+{
+ *thread_argp = dwfl_arg;
+ if (kill (tid, 0) < 0)
+ {
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+ }
+ return true;
+}
+
+/* Implement the ebl_set_initial_registers_tid setfunc callback. */
+
+static bool
+pid_thread_state_registers_cb (int firstreg, unsigned nregs,
+ const Dwarf_Word *regs, void *arg)
+{
+ Dwfl_Thread *thread = (Dwfl_Thread *) arg;
+ if (firstreg < 0)
+ {
+ assert (firstreg == -1);
+ assert (nregs == 1);
+ INTUSE(dwfl_thread_state_register_pc) (thread, *regs);
+ return true;
+ }
+ assert (nregs > 0);
+ return INTUSE(dwfl_thread_state_registers) (thread, firstreg, nregs, regs);
+}
+
+static bool
+pid_set_initial_registers (Dwfl_Thread *thread, void *thread_arg)
+{
+ struct __libdwfl_pid_arg *pid_arg = thread_arg;
+ assert (pid_arg->tid_attached == 0);
+ pid_t tid = INTUSE(dwfl_thread_tid) (thread);
+ if (! pid_arg->assume_ptrace_stopped
+ && ! __libdwfl_ptrace_attach (tid, &pid_arg->tid_was_stopped))
+ return false;
+ pid_arg->tid_attached = tid;
+ Dwfl_Process *process = thread->process;
+ Ebl *ebl = process->ebl;
+ return ebl_set_initial_registers_tid (ebl, tid,
+ pid_thread_state_registers_cb, thread);
+}
+
+static void
+pid_detach (Dwfl *dwfl __attribute__ ((unused)), void *dwfl_arg)
+{
+ struct __libdwfl_pid_arg *pid_arg = dwfl_arg;
+ closedir (pid_arg->dir);
+ free (pid_arg);
+}
+
+void
+internal_function
+__libdwfl_ptrace_detach (pid_t tid, bool tid_was_stopped)
+{
+ /* This handling is needed only on older Linux kernels such as
+ 2.6.32-358.23.2.el6.ppc64. Later kernels such as
+ 3.11.7-200.fc19.x86_64 remember the T (stopped) state
+ themselves and no longer need to pass SIGSTOP during
+ PTRACE_DETACH. */
+ ptrace (PTRACE_DETACH, tid, NULL,
+ (void *) (intptr_t) (tid_was_stopped ? SIGSTOP : 0));
+}
+
+static void
+pid_thread_detach (Dwfl_Thread *thread, void *thread_arg)
+{
+ struct __libdwfl_pid_arg *pid_arg = thread_arg;
+ pid_t tid = INTUSE(dwfl_thread_tid) (thread);
+ assert (pid_arg->tid_attached == tid);
+ pid_arg->tid_attached = 0;
+ if (! pid_arg->assume_ptrace_stopped)
+ __libdwfl_ptrace_detach (tid, pid_arg->tid_was_stopped);
+}
+
+static const Dwfl_Thread_Callbacks pid_thread_callbacks =
+{
+ pid_next_thread,
+ pid_getthread,
+ pid_memory_read,
+ pid_set_initial_registers,
+ pid_detach,
+ pid_thread_detach,
+};
+
+int
+dwfl_linux_proc_attach (Dwfl *dwfl, pid_t pid, bool assume_ptrace_stopped)
+{
+ char buffer[36];
+ FILE *procfile;
+ int err = 0; /* The errno to return and set for dwfl->attcherr. */
+
+ /* Make sure to report the actual PID (thread group leader) to
+ dwfl_attach_state. */
+ snprintf (buffer, sizeof (buffer), "/proc/%ld/status", (long) pid);
+ procfile = fopen (buffer, "r");
+ if (procfile == NULL)
+ {
+ err = errno;
+ fail:
+ if (dwfl->process == NULL && dwfl->attacherr == DWFL_E_NOERROR)
+ {
+ errno = err;
+ dwfl->attacherr = __libdwfl_canon_error (DWFL_E_ERRNO);
+ }
+ return err;
+ }
+
+ char *line = NULL;
+ size_t linelen = 0;
+ while (getline (&line, &linelen, procfile) >= 0)
+ if (strncmp (line, "Tgid:", 5) == 0)
+ {
+ errno = 0;
+ char *endptr;
+ long val = strtol (&line[5], &endptr, 10);
+ if ((errno == ERANGE && val == LONG_MAX)
+ || *endptr != '\n' || val < 0 || val != (pid_t) val)
+ pid = 0;
+ else
+ pid = (pid_t) val;
+ break;
+ }
+ free (line);
+ fclose (procfile);
+
+ if (pid == 0)
+ {
+ err = ESRCH;
+ goto fail;
+ }
+
+ char dirname[64];
+ int i = snprintf (dirname, sizeof (dirname), "/proc/%ld/task", (long) pid);
+ assert (i > 0 && i < (ssize_t) sizeof (dirname) - 1);
+ DIR *dir = opendir (dirname);
+ if (dir == NULL)
+ {
+ err = errno;
+ goto fail;
+ }
+ struct __libdwfl_pid_arg *pid_arg = malloc (sizeof *pid_arg);
+ if (pid_arg == NULL)
+ {
+ closedir (dir);
+ err = ENOMEM;
+ goto fail;
+ }
+ pid_arg->dir = dir;
+ pid_arg->tid_attached = 0;
+ pid_arg->assume_ptrace_stopped = assume_ptrace_stopped;
+ if (! INTUSE(dwfl_attach_state) (dwfl, NULL, pid, &pid_thread_callbacks,
+ pid_arg))
+ {
+ closedir (dir);
+ free (pid_arg);
+ return -1;
+ }
+ return 0;
+}
+INTDEF (dwfl_linux_proc_attach)
+
+struct __libdwfl_pid_arg *
+internal_function
+__libdwfl_get_pid_arg (Dwfl *dwfl)
+{
+ if (dwfl != NULL && dwfl->process != NULL
+ && dwfl->process->callbacks == &pid_thread_callbacks)
+ return (struct __libdwfl_pid_arg *) dwfl->process->callbacks_arg;
+
+ return NULL;
+}
+
+#else /* __linux__ */
+
+static pid_t
+pid_next_thread (Dwfl *dwfl __attribute__ ((unused)),
+ void *dwfl_arg __attribute__ ((unused)),
+ void **thread_argp __attribute__ ((unused)))
+{
+ errno = ENOSYS;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return -1;
+}
+
+static bool
+pid_getthread (Dwfl *dwfl __attribute__ ((unused)),
+ pid_t tid __attribute__ ((unused)),
+ void *dwfl_arg __attribute__ ((unused)),
+ void **thread_argp __attribute__ ((unused)))
+{
+ errno = ENOSYS;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+}
+
+bool
+internal_function
+__libdwfl_ptrace_attach (pid_t tid __attribute__ ((unused)),
+ bool *tid_was_stoppedp __attribute__ ((unused)))
+{
+ errno = ENOSYS;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+}
+
+static bool
+pid_memory_read (Dwfl *dwfl __attribute__ ((unused)),
+ Dwarf_Addr addr __attribute__ ((unused)),
+ Dwarf_Word *result __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+ errno = ENOSYS;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+}
+
+static bool
+pid_set_initial_registers (Dwfl_Thread *thread __attribute__ ((unused)),
+ void *thread_arg __attribute__ ((unused)))
+{
+ errno = ENOSYS;
+ __libdwfl_seterrno (DWFL_E_ERRNO);
+ return false;
+}
+
+static void
+pid_detach (Dwfl *dwfl __attribute__ ((unused)),
+ void *dwfl_arg __attribute__ ((unused)))
+{
+}
+
+void
+internal_function
+__libdwfl_ptrace_detach (pid_t tid __attribute__ ((unused)),
+ bool tid_was_stopped __attribute__ ((unused)))
+{
+}
+
+static void
+pid_thread_detach (Dwfl_Thread *thread __attribute__ ((unused)),
+ void *thread_arg __attribute__ ((unused)))
+{
+}
+
+static const Dwfl_Thread_Callbacks pid_thread_callbacks =
+{
+ pid_next_thread,
+ pid_getthread,
+ pid_memory_read,
+ pid_set_initial_registers,
+ pid_detach,
+ pid_thread_detach,
+};
+
+int
+dwfl_linux_proc_attach (Dwfl *dwfl __attribute__ ((unused)),
+ pid_t pid __attribute__ ((unused)),
+ bool assume_ptrace_stopped __attribute__ ((unused)))
+{
+ return ENOSYS;
+}
+INTDEF (dwfl_linux_proc_attach)
+
+struct __libdwfl_pid_arg *
+internal_function
+__libdwfl_get_pid_arg (Dwfl *dwfl __attribute__ ((unused)))
+{
+ return NULL;
+}
+
+#endif /* ! __linux __ */
+
/* Standard libdwfl callbacks for debugging a live Linux process.
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#include "libdwflP.h"
#include <inttypes.h>
#include <sys/types.h>
+#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>
#include <stdio_ext.h>
#include <unistd.h>
#include <assert.h>
#include <endian.h>
+#include "system.h"
#define PROCMAPSFMT "/proc/%d/maps"
#define PROCMEMFMT "/proc/%d/mem"
#define PROCAUXVFMT "/proc/%d/auxv"
+#define PROCEXEFMT "/proc/%d/exe"
-/* Search /proc/PID/auxv for the AT_SYSINFO_EHDR tag. */
+/* Return ELFCLASS64 or ELFCLASS32 for the main ELF executable. Return
+ ELFCLASSNONE for an error. */
+
+static unsigned char
+get_pid_class (pid_t pid)
+{
+ char *fname;
+ if (asprintf (&fname, PROCEXEFMT, pid) < 0)
+ return ELFCLASSNONE;
+
+ int fd = open64 (fname, O_RDONLY);
+ free (fname);
+ if (fd < 0)
+ return ELFCLASSNONE;
+
+ unsigned char buf[EI_CLASS + 1];
+ ssize_t nread = pread_retry (fd, &buf, sizeof buf, 0);
+ close (fd);
+ if (nread != sizeof buf || buf[EI_MAG0] != ELFMAG0
+ || buf[EI_MAG1] != ELFMAG1 || buf[EI_MAG2] != ELFMAG2
+ || buf[EI_MAG3] != ELFMAG3
+ || (buf[EI_CLASS] != ELFCLASS64 && buf[EI_CLASS] != ELFCLASS32))
+ return ELFCLASSNONE;
+
+ return buf[EI_CLASS];
+}
+
+/* Search /proc/PID/auxv for the AT_SYSINFO_EHDR tag.
+
+ It would be easiest to call get_pid_class and parse everything according to
+ the 32-bit or 64-bit class. But this would bring the overhead of syscalls
+ to open and read the "/proc/%d/exe" file.
+
+ Therefore this function tries to parse the "/proc/%d/auxv" content both
+ ways, as if it were the 32-bit format and also if it were the 64-bit format.
+ Only if it gives some valid data in both cases get_pid_class gets called.
+ In most cases only one of the format bit sizes gives valid data and the
+ get_pid_class call overhead can be saved. */
static int
grovel_auxv (pid_t pid, Dwfl *dwfl, GElf_Addr *sysinfo_ehdr)
if (fd < 0)
return errno == ENOENT ? 0 : errno;
+ GElf_Addr sysinfo_ehdr64 = 0;
+ GElf_Addr sysinfo_ehdr32 = 0;
+ GElf_Addr segment_align64 = dwfl->segment_align;
+ GElf_Addr segment_align32 = dwfl->segment_align;
+ off_t offset = 0;
ssize_t nread;
+ union
+ {
+ Elf64_auxv_t a64[64];
+ Elf32_auxv_t a32[128];
+ } d;
do
{
- union
- {
- char buffer[sizeof (long int) * 2 * 64];
- Elf64_auxv_t a64[sizeof (long int) * 2 * 64 / sizeof (Elf64_auxv_t)];
- Elf32_auxv_t a32[sizeof (long int) * 2 * 32 / sizeof (Elf32_auxv_t)];
- } d;
- nread = read (fd, &d, sizeof d);
- if (nread > 0)
+ eu_static_assert (sizeof d.a64 == sizeof d.a32);
+ nread = pread_retry (fd, d.a64, sizeof d.a64, offset);
+ if (nread < 0)
{
- switch (sizeof (long int))
- {
- case 4:
- for (size_t i = 0; (char *) &d.a32[i] < &d.buffer[nread]; ++i)
- if (d.a32[i].a_type == AT_SYSINFO_EHDR)
- {
- *sysinfo_ehdr = d.a32[i].a_un.a_val;
- if (dwfl->segment_align > 1)
- {
- nread = 0;
- break;
- }
- }
- else if (d.a32[i].a_type == AT_PAGESZ
- && dwfl->segment_align <= 1)
- dwfl->segment_align = d.a32[i].a_un.a_val;
+ int ret = errno;
+ close (fd);
+ return ret;
+ }
+ for (size_t a32i = 0; a32i < nread / sizeof d.a32[0]; a32i++)
+ {
+ const Elf32_auxv_t *a32 = d.a32 + a32i;
+ switch (a32->a_type)
+ {
+ case AT_SYSINFO_EHDR:
+ sysinfo_ehdr32 = a32->a_un.a_val;
break;
- case 8:
- for (size_t i = 0; (char *) &d.a64[i] < &d.buffer[nread]; ++i)
- if (d.a64[i].a_type == AT_SYSINFO_EHDR)
- {
- *sysinfo_ehdr = d.a64[i].a_un.a_val;
- if (dwfl->segment_align > 1)
- {
- nread = 0;
- break;
- }
- }
- else if (d.a64[i].a_type == AT_PAGESZ
- && dwfl->segment_align <= 1)
- dwfl->segment_align = d.a64[i].a_un.a_val;
+ case AT_PAGESZ:
+ segment_align32 = a32->a_un.a_val;
break;
- default:
- abort ();
+ }
+ }
+ for (size_t a64i = 0; a64i < nread / sizeof d.a64[0]; a64i++)
+ {
+ const Elf64_auxv_t *a64 = d.a64 + a64i;
+ switch (a64->a_type)
+ {
+ case AT_SYSINFO_EHDR:
+ sysinfo_ehdr64 = a64->a_un.a_val;
break;
- }
+ case AT_PAGESZ:
+ segment_align64 = a64->a_un.a_val;
+ break;
+ }
}
+ offset += nread;
}
- while (nread > 0);
+ while (nread == sizeof d.a64);
close (fd);
- return nread < 0 ? errno : 0;
+ bool valid64 = sysinfo_ehdr64 != 0 || segment_align64 != dwfl->segment_align;
+ bool valid32 = sysinfo_ehdr32 != 0 || segment_align32 != dwfl->segment_align;
+
+ unsigned char pid_class = ELFCLASSNONE;
+ if (valid64 && valid32)
+ pid_class = get_pid_class (pid);
+
+ if (pid_class == ELFCLASS64 || (valid64 && ! valid32))
+ {
+ *sysinfo_ehdr = sysinfo_ehdr64;
+ dwfl->segment_align = segment_align64;
+ return 0;
+ }
+ if (pid_class == ELFCLASS32 || (! valid64 && valid32))
+ {
+ *sysinfo_ehdr = sysinfo_ehdr32;
+ dwfl->segment_align = segment_align32;
+ return 0;
+ }
+ return ENOEXEC;
}
static int
{
bad_report:
free (line);
- fclose (f);
return -1;
}
}
char *file = line + nread + strspn (line + nread, " \t");
- if (file[0] == '\0' || (ino == 0 && dmajor == 0 && dminor == 0))
+ if (file[0] != '/' || (ino == 0 && dmajor == 0 && dminor == 0))
/* This line doesn't indicate a file mapping. */
continue;
&& ino == last_ino && dmajor == last_dmajor && dminor == last_dminor)
{
/* This is another portion of the same file's mapping. */
- assert (!strcmp (last_file, file));
+ if (strcmp (last_file, file) != 0)
+ goto bad_report;
high = end;
}
else
}
extern Elf *elf_from_remote_memory (GElf_Addr ehdr_vma,
+ GElf_Xword pagesize,
GElf_Addr *loadbasep,
ssize_t (*read_memory) (void *arg,
void *data,
const char *module_name, Dwarf_Addr base,
char **file_name, Elf **elfp)
{
+ int pid = -1;
if (module_name[0] == '/')
{
- int fd = open64 (module_name, O_RDONLY);
- if (fd >= 0)
+ /* When this callback is used together with dwfl_linux_proc_report
+ then we might see mappings of special character devices. Make
+ sure we only open and return regular files. Special devices
+ might hang on open or read. (deleted) files are super special.
+ The image might come from memory if we are attached. */
+ struct stat sb;
+ if (stat (module_name, &sb) == -1 || (sb.st_mode & S_IFMT) != S_IFREG)
+ {
+ if (strcmp (strrchr (module_name, ' ') ?: "", " (deleted)") == 0)
+ pid = INTUSE(dwfl_pid) (mod->dwfl);
+ else
+ return -1;
+ }
+
+ if (pid == -1)
{
- *file_name = strdup (module_name);
- if (*file_name == NULL)
+ int fd = open64 (module_name, O_RDONLY);
+ if (fd >= 0)
{
- close (fd);
- return ENOMEM;
+ *file_name = strdup (module_name);
+ if (*file_name == NULL)
+ {
+ close (fd);
+ return ENOMEM;
+ }
}
+ return fd;
}
- return fd;
}
- int pid;
- if (sscanf (module_name, "[vdso: %d]", &pid) == 1)
+ if (pid != -1 || sscanf (module_name, "[vdso: %d]", &pid) == 1)
{
/* Special case for in-memory ELF image. */
+ bool detach = false;
+ bool tid_was_stopped = false;
+ struct __libdwfl_pid_arg *pid_arg = __libdwfl_get_pid_arg (mod->dwfl);
+ if (pid_arg != NULL && ! pid_arg->assume_ptrace_stopped)
+ {
+ /* If any thread is already attached we are fine. Read
+ through that thread. It doesn't have to be the main
+ thread pid. */
+ pid_t tid = pid_arg->tid_attached;
+ if (tid != 0)
+ pid = tid;
+ else
+ detach = __libdwfl_ptrace_attach (pid, &tid_was_stopped);
+ }
+
char *fname;
if (asprintf (&fname, PROCMEMFMT, pid) < 0)
- return -1;
+ goto detach;
int fd = open64 (fname, O_RDONLY);
free (fname);
if (fd < 0)
- return -1;
+ goto detach;
- *elfp = elf_from_remote_memory (base, NULL, &read_proc_memory, &fd);
+ *elfp = elf_from_remote_memory (base, getpagesize (), NULL,
+ &read_proc_memory, &fd);
close (fd);
*file_name = NULL;
+
+ detach:
+ if (detach)
+ __libdwfl_ptrace_detach (pid, tid_was_stopped);
return -1;
}
- abort ();
return -1;
}
INTDEF (dwfl_linux_proc_find_elf)
Elf *elf)
{
Dwfl_Module *mod = __libdwfl_report_elf (dwfl, name, file_name, fd, elf,
- dwfl->offline_next_address, false);
+ dwfl->offline_next_address, true,
+ false);
if (mod != NULL)
{
/* If this is an ET_EXEC file with fixed addresses, the address range
#include <unistd.h>
#if !USE_ZLIB
-# define __libdw_gunzip(...) false
+# define __libdw_gunzip(...) DWFL_E_BADELF
#endif
#if !USE_BZLIB
-# define __libdw_bunzip2(...) false
+# define __libdw_bunzip2(...) DWFL_E_BADELF
#endif
#if !USE_LZMA
-# define __libdw_unlzma(...) false
+# define __libdw_unlzma(...) DWFL_E_BADELF
#endif
/* Consumes and replaces *ELF only on success. */
/* Relocate debug information.
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2011, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
__libdwfl_relocate_value (Dwfl_Module *mod, Elf *elf, size_t *shstrndx,
Elf32_Word shndx, GElf_Addr *value)
{
- assert (mod->e_type == ET_REL);
-
Elf_Scn *refscn = elf_getscn (elf, shndx);
GElf_Shdr refshdr_mem, *refshdr = gelf_getshdr (refscn, &refshdr_mem);
if (refshdr == NULL)
if (m->e_type != ET_REL)
{
- sym->st_value = dwfl_adjusted_st_value (m, sym->st_value);
+ sym->st_value = dwfl_adjusted_st_value (m, m->symfile->elf,
+ sym->st_value);
return DWFL_E_NOERROR;
}
}
}
- size_t nrels = shdr->sh_size / shdr->sh_entsize;
+ size_t sh_entsize
+ = gelf_fsize (relocated, shdr->sh_type == SHT_REL ? ELF_T_REL : ELF_T_RELA,
+ 1, EV_CURRENT);
+ size_t nrels = shdr->sh_size / sh_entsize;
size_t complete = 0;
if (shdr->sh_type == SHT_REL)
for (size_t relidx = 0; !result && relidx < nrels; ++relidx)
nrels = next;
}
- shdr->sh_size = reldata->d_size = nrels * shdr->sh_entsize;
+ shdr->sh_size = reldata->d_size = nrels * sh_entsize;
gelf_update_shdr (scn, shdr);
}
/* Manage address space lookup table for libdwfl.
- Copyright (C) 2008, 2009, 2010 Red Hat, Inc.
+ Copyright (C) 2008, 2009, 2010, 2013 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#include "libdwflP.h"
-static GElf_Addr
-segment_start (Dwfl *dwfl, GElf_Addr start)
+GElf_Addr
+internal_function
+__libdwfl_segment_start (Dwfl *dwfl, GElf_Addr start)
{
if (dwfl->segment_align > 1)
start &= -dwfl->segment_align;
return start;
}
-static GElf_Addr
-segment_end (Dwfl *dwfl, GElf_Addr end)
+GElf_Addr
+internal_function
+__libdwfl_segment_end (Dwfl *dwfl, GElf_Addr end)
{
if (dwfl->segment_align > 1)
end = (end + dwfl->segment_align - 1) & -dwfl->segment_align;
for (Dwfl_Module *mod = dwfl->modulelist; mod != NULL; mod = mod->next)
if (! mod->gc)
{
- const GElf_Addr start = segment_start (dwfl, mod->low_addr);
- const GElf_Addr end = segment_end (dwfl, mod->high_addr);
+ const GElf_Addr start = __libdwfl_segment_start (dwfl, mod->low_addr);
+ const GElf_Addr end = __libdwfl_segment_end (dwfl, mod->high_addr);
bool resized = false;
int idx = lookup (dwfl, start, hint);
dwfl->lookup_module = NULL;
}
- GElf_Addr start = segment_start (dwfl, bias + phdr->p_vaddr);
- GElf_Addr end = segment_end (dwfl, bias + phdr->p_vaddr + phdr->p_memsz);
+ GElf_Addr start = __libdwfl_segment_start (dwfl, bias + phdr->p_vaddr);
+ GElf_Addr end = __libdwfl_segment_end (dwfl,
+ bias + phdr->p_vaddr + phdr->p_memsz);
/* Coalesce into the last one if contiguous and matching. */
if (ndx != dwfl->lookup_tail_ndx
+2014-06-17 Mark Wielaard <mjw@redhat.com>
+
+ * eblinitreg.c (ebl_func_addr_mask): New function.
+ * libebl.h (ebl_func_addr_mask): Define.
+ * libeblP.h (struct ebl): Add func_addr_mask.
+
+2014-05-19 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (gen_SOURCES): Add eblcheckreloctargettype.c.
+ * eblcheckreloctargettype.c: New file.
+ * ebl-hooks.h (check_reloc_target_type): New hook.
+ * eblopenbackend.c (default_check_reloc_target_type): New function.
+ (fill_defaults): Assign default_check_reloc_target_type to
+ check_reloc_target_type.
+ * libebl.h (ebl_check_reloc_target_type): New function definition.
+
+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-18 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: s390 and s390x
+ * Makefile.am (gen_SOURCES): Add eblnormalizepc.c and eblunwind.c.
+ * ebl-hooks.h (normalize_pc, unwind): New.
+ * eblnormalizepc.c: New file.
+ * eblunwind.c: New file.
+ * libebl.h (Ebl_Register_Location): Add field pc_register.
+ (ebl_normalize_pc): New declaration.
+ (ebl_tid_registers_get_t, ebl_pid_memory_read_t): New definitions.
+ (ebl_unwind): New declaration.
+
+2013-12-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: ppc and ppc64
+ * Makefile.am (gen_SOURCES): Add ebldwarftoregno.c.
+ * ebl-hooks.h (dwarf_to_regno): New.
+ * ebldwarftoregno.c: New file.
+ * libebl.h (Ebl_Core_Item): New field pc_register.
+ (ebl_tid_registers_t): Add FIRSTREG -1 to the comment.
+ (ebl_dwarf_to_regno): New.
+
+2013-11-25 Petr Machata <pmachata@redhat.com>
+
+ * eblopenbackend.c (machines): Add entry for AArch64.
+
+2013-11-14 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Code cleanup: Remove const in prototype
+ * libebl.h (ebl_tid_registers_t): Remove const from firstreg.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (gen_SOURCES): Add eblinitreg.c.
+ * ebl-hooks.h (set_initial_registers_tid): New entry.
+ * eblinitreg.c: New file.
+ * libebl.h (ebl_tid_registers_t): New definition.
+ (ebl_set_initial_registers_tid, ebl_frame_nregs): New declarations.
+ * libeblP.h (struct ebl): New entry frame_nregs.
+
+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * libebl.h (ebl_abi_cfi): Document restrictions using register
+ rules.
+
+2013-09-26 Petr Machata <pmachata@redhat.com>
+
+ * eblcorenotetypename.c: Handle NT_ARM_TLS, NT_ARM_HW_BREAK,
+ NT_ARM_HW_WATCH, NT_SIGINFO, NT_FILE.
+
+2013-09-25 Mark Wielaard <mjw@redhat.com>
+
+ * eblsectionstripp.c (ebl_section_strip_p): Check shdr_l is not NULL.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2012-10-12 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * ebl-hooks.h (abi_cfi): Extend its comment for return value.
+ * eblopenbackend.c (default_abi_cfi): Return -1.
+ * libebl.h (ebl_abi_cfi): Extend its comment for return value.
+
+2012-08-30 Petr Machata <pmachata@redhat.com>
+
+ * eblcorenotetypename.c: Handle PPC_VSX, X86_XSTATE,
+ S390_HIGH_GPRS, S390_TIMER, S390_TODCMP, S390_TODPREG, S390_CTRS,
+ S390_PREFIX, S390_LAST_BREAK, S390_SYSTEM_CALL, and ARM_VFP.
+
2012-08-22 Jeff Kenton <jkenton@tilera.com>
* eblopenbackend.c (machines): Add tilegx.
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 2000-2010 Red Hat, Inc.
+## Copyright (C) 2000-2010, 2013 Red Hat, Inc.
## This file is part of elfutils.
##
## This file is free software; you can redistribute it and/or modify
##
include $(top_srcdir)/config/eu.am
AM_CFLAGS += -fpic
-INCLUDES += -I$(srcdir)/../libelf -I$(srcdir)/../libdw -I$(srcdir)/../libasm
+AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libdw -I$(srcdir)/../libasm
VERSION = 1
LIBEBL_SUBDIR = @LIBEBL_SUBDIR@
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
+ eblstother.c eblinitreg.c ebldwarftoregno.c eblnormalizepc.c \
+ eblunwind.c eblresolvesym.c eblcheckreloctargettype.c
libebl_a_SOURCES = $(gen_SOURCES)
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
subdir = libebl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
}
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"
LIBRARIES = $(lib_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libebl_a_AR = $(AR) $(ARFLAGS)
libebl_a_LIBADD =
am__objects_1 = eblopenbackend.$(OBJEXT) eblclosebackend.$(OBJEXT) \
eblsysvhashentrysize.$(OBJEXT) eblauxvinfo.$(OBJEXT) \
eblcheckobjattr.$(OBJEXT) ebl_check_special_section.$(OBJEXT) \
ebl_syscall_abi.$(OBJEXT) eblabicfi.$(OBJEXT) \
- eblstother.$(OBJEXT)
+ eblstother.$(OBJEXT) eblinitreg.$(OBJEXT) \
+ ebldwarftoregno.$(OBJEXT) eblnormalizepc.$(OBJEXT) \
+ eblunwind.$(OBJEXT) eblresolvesym.$(OBJEXT) \
+ eblcheckreloctargettype.$(OBJEXT)
am_libebl_a_OBJECTS = $(am__objects_1)
libebl_a_OBJECTS = $(am_libebl_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libebl_a_SOURCES)
DIST_SOURCES = $(libebl_a_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf -I$(srcdir)/../libdw \
-I$(srcdir)/../libasm
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
$($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1) -fpic
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
-
+ $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) -fpic
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda $(am_libebl_pic_a_OBJECTS)
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
lib_LIBRARIES = libebl.a
pkginclude_HEADERS = libebl.h
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
+ eblstother.c eblinitreg.c ebldwarftoregno.c eblnormalizepc.c \
+ eblunwind.c eblresolvesym.c eblcheckreloctargettype.c
libebl_a_SOURCES = $(gen_SOURCES)
noinst_HEADERS = libeblP.h ebl-hooks.h
$(am__aclocal_m4_deps):
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
else :; fi; \
done; \
test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
$(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
@$(POST_INSTALL)
clean-libLIBRARIES:
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
libebl.a: $(libebl_a_OBJECTS) $(libebl_a_DEPENDENCIES) $(EXTRA_libebl_a_DEPENDENCIES)
- -rm -f libebl.a
- $(libebl_a_AR) libebl.a $(libebl_a_OBJECTS) $(libebl_a_LIBADD)
- $(RANLIB) libebl.a
+ $(AM_V_at)-rm -f libebl.a
+ $(AM_V_AR)$(libebl_a_AR) libebl.a $(libebl_a_OBJECTS) $(libebl_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libebl.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblbackendname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblbsspltp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblcheckobjattr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblcheckreloctargettype.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblclosebackend.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblcopyrelocp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblcorenote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblcorenotetypename.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebldebugscnp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebldwarftoregno.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebldynamictagcheck.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebldynamictagname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblelfclass.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblelfmachine.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblgotpcreloccheck.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblgstrtab.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblinitreg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblmachineflagcheck.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblmachineflagname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblmachinesectionflagcheck.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblnonerelocp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblnormalizepc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblobjecttypename.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblobjnote.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblobjnotetypename.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblreloctypecheck.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblreloctypename.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblrelocvaliduse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblresolvesym.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblretval.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsectionname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsectionstripp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsymbolbindingname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsymboltypename.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsysvhashentrysize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblunwind.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblwstrtab.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-libLIBRARIES install-man install-pdf \
- install-pdf-am install-pkgincludeHEADERS install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags uninstall uninstall-am uninstall-libLIBRARIES \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-libLIBRARIES install-man \
+ install-pdf install-pdf-am install-pkgincludeHEADERS \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-libLIBRARIES \
uninstall-pkgincludeHEADERS
/* Backend hook signatures internal interface for libebl.
- Copyright (C) 2000-2011 Red Hat, Inc.
+ Copyright (C) 2000-2011, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
bool EBLHOOK(check_object_attribute) (Ebl *, const char *, int, uint64_t,
const char **, const char **);
+/* Check reloc target section type. */
+bool EBLHOOK(check_reloc_target_type) (Ebl *, Elf64_Word);
+
/* Describe auxv element type. */
int EBLHOOK(auxv_info) (GElf_Xword, const char **, const char **);
GElf_Addr addr, const char *fmt, DisasmOutputCB_t outcb,
DisasmGetSymCB_t symcb, void *outcbarg, void *symcbarg);
-/* Supply the machine-specific state of CFI before CIE initial programs. */
+/* Supply the machine-specific state of CFI before CIE initial programs.
+ Function returns 0 on success and -1 on error. */
int EBLHOOK(abi_cfi) (Ebl *ebl, Dwarf_CIE *abi_info);
+/* Fetch process data from live TID and call SETFUNC one or more times.
+ Method should be present only when EBL_FRAME_NREGS > 0, otherwise the
+ backend doesn't support unwinding. */
+bool EBLHOOK(set_initial_registers_tid) (pid_t tid,
+ ebl_tid_registers_t *setfunc,
+ void *arg);
+
+/* Convert *REGNO as is in DWARF to a lower range suitable for
+ Dwarf_Frame->REGS indexing. */
+bool EBLHOOK(dwarf_to_regno) (Ebl *ebl, unsigned *regno);
+
+/* Optionally modify *PC as fetched from inferior data into valid PC
+ instruction pointer. */
+void EBLHOOK(normalize_pc) (Ebl *ebl, Dwarf_Addr *pc);
+
+/* Get previous frame state for an existing frame state. Method is called only
+ if unwinder could not find CFI for current PC. PC is for the
+ existing frame. SETFUNC sets register in the previous frame. GETFUNC gets
+ register from the existing frame. Note that GETFUNC vs. SETFUNC act on
+ a disjunct set of registers. READFUNC reads memory. ARG has to be passed
+ for SETFUNC, GETFUNC and READFUNC. *SIGNAL_FRAMEP is initialized to false,
+ it can be set to true if existing frame is a signal frame. SIGNAL_FRAMEP is
+ never NULL. */
+bool EBLHOOK(unwind) (Ebl *ebl, Dwarf_Addr pc, ebl_tid_registers_t *setfunc,
+ ebl_tid_registers_get_t *getfunc,
+ ebl_pid_memory_read_t *readfunc, void *arg,
+ bool *signal_framep);
+
+/* 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) */
+bool EBLHOOK(resolve_sym_value) (Ebl *ebl, GElf_Addr *addr);
+
/* Destructor for ELF backend handle. */
void EBLHOOK(destr) (struct ebl *);
--- /dev/null
+/* Check whether a section type is a valid target for relocation.
+ Copyright (C) 2014 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
+
+#include <libeblP.h>
+
+
+bool
+ebl_check_reloc_target_type (Ebl *ebl, Elf64_Word sh_type)
+{
+ if (ebl->check_reloc_target_type (ebl, sh_type))
+ return true;
+
+ if (sh_type == SHT_PROGBITS || sh_type == SHT_NOBITS)
+ return true;
+
+ return false;
+}
/* Return note type name.
- Copyright (C) 2002, 2007, 2008 Red Hat, Inc.
+ Copyright (C) 2002, 2007, 2008, 2012, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
KNOWNSTYPE (PRXFPREG);
KNOWNSTYPE (PPC_VMX);
KNOWNSTYPE (PPC_SPE);
+ KNOWNSTYPE (PPC_VSX);
KNOWNSTYPE (386_TLS);
KNOWNSTYPE (386_IOPERM);
+ KNOWNSTYPE (X86_XSTATE);
+ KNOWNSTYPE (S390_HIGH_GPRS);
+ KNOWNSTYPE (S390_TIMER);
+ KNOWNSTYPE (S390_TODCMP);
+ KNOWNSTYPE (S390_TODPREG);
+ KNOWNSTYPE (S390_CTRS);
+ KNOWNSTYPE (S390_PREFIX);
+ KNOWNSTYPE (S390_LAST_BREAK);
+ KNOWNSTYPE (S390_SYSTEM_CALL);
+ KNOWNSTYPE (ARM_VFP);
+ KNOWNSTYPE (ARM_TLS);
+ KNOWNSTYPE (ARM_HW_BREAK);
+ KNOWNSTYPE (ARM_HW_WATCH);
+ KNOWNSTYPE (SIGINFO);
+ KNOWNSTYPE (FILE);
#undef KNOWNSTYPE
default:
--- /dev/null
+/* Convert *REGNO as is in DWARF to a lower range.
+ 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
+
+#include <libeblP.h>
+
+bool
+ebl_dwarf_to_regno (Ebl *ebl, unsigned *regno)
+{
+ if (ebl == NULL)
+ return false;
+ return ebl->dwarf_to_regno == NULL ? true : ebl->dwarf_to_regno (ebl, regno);
+}
--- /dev/null
+/* Fetch live process Dwfl_Frame from PID.
+ Copyright (C) 2013, 2014 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
+
+#include <libeblP.h>
+#include <assert.h>
+
+bool
+ebl_set_initial_registers_tid (Ebl *ebl, pid_t tid,
+ ebl_tid_registers_t *setfunc,
+ void *arg)
+{
+ /* Otherwise caller could not allocate THREAD frame of proper size.
+ If set_initial_registers_tid is unsupported then FRAME_NREGS is zero. */
+ assert (ebl->set_initial_registers_tid != NULL);
+ return ebl->set_initial_registers_tid (tid, setfunc, arg);
+}
+
+size_t
+ebl_frame_nregs (Ebl *ebl)
+{
+ return ebl == NULL ? 0 : ebl->frame_nregs;
+}
+
+GElf_Addr
+ebl_func_addr_mask (Ebl *ebl)
+{
+ return ((ebl == NULL || ebl->func_addr_mask == 0)
+ ? ~(GElf_Addr)0 : ebl->func_addr_mask);
+}
--- /dev/null
+/* Modify PC as fetched from inferior data into valid PC.
+ 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
+
+#include <libeblP.h>
+
+void
+ebl_normalize_pc (Ebl *ebl, Dwarf_Addr *pc)
+{
+ if (ebl != NULL && ebl->normalize_pc != NULL)
+ ebl->normalize_pc (ebl, pc);
+}
/* Generate ELF backend handle.
- Copyright (C) 2000-2011 Red Hat, Inc.
+ Copyright (C) 2000-2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
{ "openrisc", "elf_openrisc", "openrisc", 8, EM_OPENRISC, 0, 0 },
{ "arc", "elf_arc_a5", "arc_a5", 6, EM_ARC_A5, 0, 0 },
{ "xtensa", "elf_xtensa", "xtensa", 6, EM_XTENSA, 0, 0 },
+ { "aarch64", "elf_aarch64", "aarch64", 7, EM_AARCH64, ELFCLASS64, 0 },
};
#define nmachines (sizeof (machines) / sizeof (machines[0]))
int tag, uint64_t value,
const char **tag_name,
const char **value_name);
+static bool default_check_reloc_target_type (Ebl *ebl, Elf64_Word sh_type);
static int default_abi_cfi (Ebl *ebl, Dwarf_CIE *abi_info);
result->register_info = default_register_info;
result->syscall_abi = default_syscall_abi;
result->check_object_attribute = default_check_object_attribute;
+ result->check_reloc_target_type = default_check_reloc_target_type;
result->disasm = NULL;
result->abi_cfi = default_abi_cfi;
result->destr = default_destr;
return false;
}
+static bool
+default_check_reloc_target_type (Ebl *ebl __attribute__ ((unused)),
+ Elf64_Word sh_type __attribute__ ((unused)))
+{
+ return false;
+}
+
static int
default_abi_cfi (Ebl *ebl __attribute__ ((unused)),
Dwarf_CIE *abi_info __attribute__ ((unused)))
{
- return 0;
+ return -1;
}
--- /dev/null
+/* 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
+ 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
+
+#include <libeblP.h>
+#include <assert.h>
+
+bool
+ebl_resolve_sym_value (Ebl *ebl, GElf_Addr *addr)
+{
+ if (ebl == NULL || ebl->resolve_sym_value == NULL)
+ return false;
+
+ return ebl->resolve_sym_value (ebl, addr);
+}
/* Check whether section can be stripped.
- Copyright (C) 2005 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
Elf_Scn *scn_l = elf_getscn (ebl->elf, (shdr)->sh_info);
GElf_Shdr shdr_mem_l;
GElf_Shdr *shdr_l = gelf_getshdr (scn_l, &shdr_mem_l);
- if (shdr_l == NULL)
+ if (shdr_l != NULL)
{
const char *s_l = elf_strptr (ebl->elf, ehdr->e_shstrndx,
shdr_l->sh_name);
--- /dev/null
+/* Get previous frame state for an existing frame state.
+ 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
+
+#include <libeblP.h>
+
+bool
+ebl_unwind (Ebl *ebl, Dwarf_Addr pc, ebl_tid_registers_t *setfunc,
+ ebl_tid_registers_get_t *getfunc, ebl_pid_memory_read_t *readfunc,
+ void *arg, bool *signal_framep)
+{
+ if (ebl == NULL || ebl->unwind == NULL)
+ return false;
+ return ebl->unwind (ebl, pc, setfunc, getfunc, readfunc, arg, signal_framep);
+}
/* Interface for libebl.
- Copyright (C) 2000-2010 Red Hat, Inc.
+ Copyright (C) 2000-2010, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
const char **tag_name,
const char **value_name);
+/* Check whether a section type is a valid reloc target. */
+extern bool ebl_check_reloc_target_type (Ebl *ebl, Elf64_Word sh_type);
+
/* Check section name for being that of a debug informatino section. */
extern bool ebl_debugscn_p (Ebl *ebl, const char *name);
before each CIE's initial instructions. It should set the
data_alignment_factor member if it affects the initial instructions.
+ The callback should not use the register rules DW_CFA_expression or
+ DW_CFA_val_expression. Defining the CFA using DW_CFA_def_cfa_expression
+ is allowed. This is an implementation detail since register rules
+ store expressions as offsets from the .eh_frame or .debug_frame data.
+
As a shorthand for some common cases, for this instruction stream
we overload some CFI instructions that cannot be used in a CIE:
DWARF register number that identifies the actual PC in machine state.
If there is no canonical DWARF register number with that meaning, it's
left unchanged (callers usually initialize with (Dwarf_Word) -1).
- This value is not used by CFI per se. */
+ This value is not used by CFI per se.
+
+ Function returns 0 on success and -1 for error or unsupported by the
+ backend. */
extern int ebl_abi_cfi (Ebl *ebl, Dwarf_CIE *abi_info)
__nonnull_attribute__ (2);
uint8_t bits; /* Bits of data for one register. */
uint8_t pad; /* Bytes of padding after register's data. */
Dwarf_Half count; /* Consecutive register numbers here. */
+ bool pc_register;
} Ebl_Register_Location;
/* Non-register data items in core notes. */
Elf_Type type;
char format;
bool thread_identifier;
+ bool pc_register;
} Ebl_Core_Item;
/* Describe the format of a core file note with the given header and NAME.
const char **name, const char **format)
__nonnull_attribute__ (1, 3, 4);
+/* Callback type for ebl_set_initial_registers_tid.
+ Register -1 is mapped to PC (if arch PC has no DWARF number).
+ If FIRSTREG is -1 then NREGS has to be 1. */
+typedef bool (ebl_tid_registers_t) (int firstreg, unsigned nregs,
+ const Dwarf_Word *regs, void *arg)
+ __nonnull_attribute__ (3);
+
+/* Callback to fetch process data from live TID.
+ EBL architecture has to have EBL_FRAME_NREGS > 0, otherwise the
+ backend doesn't support unwinding and this function call may crash. */
+extern bool ebl_set_initial_registers_tid (Ebl *ebl,
+ pid_t tid,
+ ebl_tid_registers_t *setfunc,
+ void *arg)
+ __nonnull_attribute__ (1, 3);
+
+/* Number of registers to allocate for ebl_set_initial_registers_tid.
+ EBL architecture can unwind iff EBL_FRAME_NREGS > 0. */
+extern size_t ebl_frame_nregs (Ebl *ebl)
+ __nonnull_attribute__ (1);
+
+/* Mask to use for function symbol or unwind return addresses in case
+ the architecture adds some extra non-address bits to it. This is
+ different from ebl_resolve_sym_value which only works for actual
+ symbol addresses (in non-ET_REL files) that might resolve to an
+ address in a different section. ebl_func_addr_mask is called to
+ turn a given function value into the a real address or offset (the
+ original value might not be a real address). This works for all
+ cases where an actual function address (or offset in ET_REL symbol
+ tables) is needed. */
+extern GElf_Addr ebl_func_addr_mask (Ebl *ebl);
+
+/* Convert *REGNO as is in DWARF to a lower range suitable for
+ Dwarf_Frame->REGS indexing. */
+extern bool ebl_dwarf_to_regno (Ebl *ebl, unsigned *regno)
+ __nonnull_attribute__ (1, 2);
+
+/* Modify PC as fetched from inferior data into valid PC. */
+extern void ebl_normalize_pc (Ebl *ebl, Dwarf_Addr *pc)
+ __nonnull_attribute__ (1, 2);
+
+/* Callback type for ebl_unwind's parameter getfunc. */
+typedef bool (ebl_tid_registers_get_t) (int firstreg, unsigned nregs,
+ Dwarf_Word *regs, void *arg)
+ __nonnull_attribute__ (3);
+
+/* Callback type for ebl_unwind's parameter readfunc. */
+typedef bool (ebl_pid_memory_read_t) (Dwarf_Addr addr, Dwarf_Word *data,
+ void *arg)
+ __nonnull_attribute__ (3);
+
+/* Get previous frame state for an existing frame state. Method is called only
+ if unwinder could not find CFI for current PC. PC is for the
+ existing frame. SETFUNC sets register in the previous frame. GETFUNC gets
+ register from the existing frame. Note that GETFUNC vs. SETFUNC act on
+ a disjunct set of registers. READFUNC reads memory. ARG has to be passed
+ for SETFUNC, GETFUNC and READFUNC. *SIGNAL_FRAMEP is initialized to false,
+ it can be set to true if existing frame is a signal frame. SIGNAL_FRAMEP is
+ never NULL. */
+extern bool ebl_unwind (Ebl *ebl, Dwarf_Addr pc, ebl_tid_registers_t *setfunc,
+ ebl_tid_registers_get_t *getfunc,
+ ebl_pid_memory_read_t *readfunc, void *arg,
+ bool *signal_framep)
+ __nonnull_attribute__ (1, 3, 4, 5, 7);
+
+/* 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
}
/* Internal definitions for interface for libebl.
- Copyright (C) 2000-2009 Red Hat, Inc.
+ Copyright (C) 2000-2009, 2013, 2014 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
/* Size of entry in Sysv-style hash table. */
int sysvhash_entrysize;
+ /* Number of registers to allocate for ebl_set_initial_registers_tid.
+ Ebl architecture can unwind iff FRAME_NREGS > 0. */
+ size_t frame_nregs;
+
+ /* Mask to use to turn a function value into a real function address
+ in case the architecture adds some extra non-address bits to it.
+ If not initialized (0) then ebl_func_addr_mask will return ~0,
+ otherwise it should be the actual mask to use. */
+ GElf_Addr func_addr_mask;
+
+ /* 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;
};
+2014-07-07 Mark Wielaard <mjw@redhat.com>
+
+ * elf.h: Update from glibc.
+
+2014-04-13 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Remove !MUDFLAP conditions.
+ * elf_begin.c (read_file): Don't clear use_mmap when _MUDFLAP is
+ defined.
+ * elf_update.c (write_file): Remove _MUDFLAP condition.
+
+2014-01-17 Jakub Jelinek <jakub@redhat.com>
+ Roland McGrath <roland@redhat.com>
+
+ * libelfP.h (INVALID_NDX): Define.
+ * gelf_getdyn.c (gelf_getdyn): Use it. Remove ndx < 0 test if any.
+ * gelf_getlib.c (gelf_getlib): Likewise.
+ * gelf_getmove.c (gelf_getmove): Likewise.
+ * gelf_getrel.c (gelf_getrel): Likewise.
+ * gelf_getrela.c (gelf_getrela): Likewise.
+ * gelf_getsym.c (gelf_getsym): Likewise.
+ * gelf_getsyminfo.c (gelf_getsyminfo): Likewise.
+ * gelf_getsymshndx.c (gelf_getsymshndx): Likewise.
+ * gelf_getversym.c (gelf_getversym): Likewise.
+ * gelf_update_dyn.c (gelf_update_dyn): Likewise.
+ * gelf_update_lib.c (gelf_update_lib): Likewise.
+ * gelf_update_move.c (gelf_update_move): Likewise.
+ * gelf_update_rel.c (gelf_update_rel): Likewise.
+ * gelf_update_rela.c (gelf_update_rela): Likewise.
+ * gelf_update_sym.c (gelf_update_sym): Likewise.
+ * gelf_update_syminfo.c (gelf_update_syminfo): Likewise.
+ * gelf_update_symshndx.c (gelf_update_symshndx): Likewise.
+ * gelf_update_versym.c (gelf_update_versym): Likewise.
+
+2014-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ * elf32_getphdr.c (elfw2(LIBELFBITS,getphdr)): Check if program header
+ table fits into object's bounds.
+ * elf_getshdrstrndx.c (elf_getshstrndx): Add elf->start_offset to
+ elf->map_address. Check if first section header fits into object's
+ bounds.
+ * elf32_getshdr.c (elfw2(LIBELFBITS,getshdr)):
+ Check if section header table fits into object's bounds.
+ * elf_begin.c (get_shnum): Ensure section headers fits into
+ object's bounds.
+ (file_read_elf): Make sure scncnt is small enough to allocate both
+ ElfXX_Shdr and Elf_Scn array. Make sure section and program header
+ tables fit into object's bounds. Avoid memory leak on failure.
+ * elf_newscn.c (elf_newscn): Check for overflow.
+ * elf32_updatefile.c (__elfw2(LIBELFBITS,updatemmap)): Likewise.
+ (__elfw2(LIBELFBITS,updatefile)): Likewise.
+ * elf32_newphdr.c (elfw2(LIBELFBITS,newphdr)): Likewise.
+ * elf_getarsym.c (elf_getarsym): Likewise.
+
+2013-11-08 Mark Wielaard <mjw@redhat.com>
+
+ * elf32_updatefile.c (elfXX_updatemmap): Only memcpy ehdr when not
+ already directly mmapped.
+
+2013-11-05 Mark Wielaard <mjw@redhat.com>
+
+ * elf32_updatefile.c (elfXX_updatefile): Copy all section headers
+ if elf->flags dirty.
+
+2013-11-01 Michael Forney <mforney@mforney.org>
+
+ * Makefile.am: Use READELF.
+
+2013-10-01 Petr Machata <pmachata@redhat.com>
+
+ * elf.h: Update from glibc.
+
+2013-06-17 Petr Machata <pmachata@redhat.com>
+
+ * elf.h: Update from glibc.
+
+2013-08-28 Namhyung Kim <namhyung@gmail.com>
+
+ * gelf.h (gelf_fsize): Fix typo in comment.
+
+2013-08-28 Mark Wielaard <mjw@redhat.com>
+
+ * gelf_getauxv.c (gelf_getauxv): Add missing whitespace.
+
+2013-08-27 Mark Wielaard <mjw@redhat.com>
+
+ * gelf_getauxv.c (gelf_getauxv): Remove unnecessary casts to char *.
+
+2013-08-25 Kurt Roeckx <kurt@roeckx.be>
+
+ * gelf_getauxv.c (gelf_getauxv): Use memcpy instead of pointer
+ dereference to avoid alignment problems.
+
+2013-01-07 Roland McGrath <roland@hack.frob.com>
+
+ * elf_getarsym.c (elf_getarsym): Copy FILE_DATA into stack space if it
+ would be unaligned and !ALLOW_UNALIGNED.
+
+ * elf_getarsym.c (read_number_entries): Use memcpy instead of pointer
+ dereference so as not to assume the field is naturally aligned.
+
+2012-09-17 Petr Machata <pmachata@redhat.com>
+
+ * elf.h: Update from glibc.
+
2012-08-16 Roland McGrath <roland@hack.frob.com>
* elf.h: Update from glibc.
VERSION = 1
lib_LIBRARIES = libelf.a
-if !MUDFLAP
noinst_LIBRARIES = libelf_pic.a
noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so)
-endif
include_HEADERS = libelf.h gelf.h nlist.h
pkginclude_HEADERS = elf-knowledge.h
elf_gnu_hash.c \
elf_scnshndx.c
-if !MUDFLAP
libelf_pic_a_SOURCES =
am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
endif
libelf_so_SOURCES =
-libelf.so: libelf_pic.a libelf.map
+libelf.so$(EXEEXT): libelf_pic.a libelf.map
$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
-Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \
-Wl,--soname,$@.$(VERSION),-z,defs,-z,relro $(libelf_so_LDLIBS)
- if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+ if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
ln -fs $@ $@.$(VERSION)
install: install-am libelf.so
rm -f $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so
rm -f $(DESTDIR)$(libdir)/libelf.so.$(VERSION)
rm -f $(DESTDIR)$(libdir)/libelf.so
-endif
noinst_HEADERS = elf.h abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \
version_xlate.h gnuhash_xlate.h note_xlate.h dl-hash.h
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(include_HEADERS) $(noinst_HEADERS) \
- $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
-@BUILD_STATIC_TRUE@am__append_2 = -fpic
-@MUDFLAP_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1)
-@MUDFLAP_TRUE@am_libelf_pic_a_OBJECTS =
-@MUDFLAP_FALSE@@USE_LOCKS_TRUE@am__append_3 = -lpthread
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS) \
+ ChangeLog
+@BUILD_STATIC_TRUE@am__append_1 = -fpic
+noinst_PROGRAMS = $(am__EXEEXT_1)
+@USE_LOCKS_TRUE@am__append_2 = -lpthread
subdir = libelf
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" \
"$(DESTDIR)$(pkgincludedir)"
LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libelf_a_AR = $(AR) $(ARFLAGS)
libelf_a_LIBADD =
am_libelf_a_OBJECTS = elf_version.$(OBJEXT) elf_hash.$(OBJEXT) \
libelf_pic_a_AR = $(AR) $(ARFLAGS)
libelf_pic_a_LIBADD =
libelf_pic_a_OBJECTS = $(am_libelf_pic_a_OBJECTS)
-@MUDFLAP_FALSE@am__EXEEXT_1 = libelf.so$(EXEEXT)
+am__EXEEXT_1 = libelf.so$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am_libelf_so_OBJECTS =
libelf_so_OBJECTS = $(am_libelf_so_OBJECTS)
libelf_so_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) \
$(libelf_so_SOURCES)
DIST_SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) \
$(libelf_so_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
HEADERS = $(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
$($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1) $(am__append_2)
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
-
+ $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) \
+ $(am__append_1)
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda $(am_libelf_pic_a_OBJECTS) \
libelf.so.$(VERSION)
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
lib_LIBRARIES = libelf.a
-@MUDFLAP_FALSE@noinst_LIBRARIES = libelf_pic.a
+noinst_LIBRARIES = libelf_pic.a
include_HEADERS = libelf.h gelf.h nlist.h
pkginclude_HEADERS = elf-knowledge.h
libelf_a_SOURCES = elf_version.c elf_hash.c elf_error.c elf_fill.c \
elf_gnu_hash.c \
elf_scnshndx.c
-@MUDFLAP_FALSE@libelf_pic_a_SOURCES =
-@MUDFLAP_FALSE@am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
-@MUDFLAP_FALSE@libelf_so_LDLIBS = $(am__append_3)
-@MUDFLAP_FALSE@libelf_so_SOURCES =
+libelf_pic_a_SOURCES =
+am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
+libelf_so_LDLIBS = $(am__append_2)
+libelf_so_SOURCES =
noinst_HEADERS = elf.h abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \
version_xlate.h gnuhash_xlate.h note_xlate.h dl-hash.h
$(am__aclocal_m4_deps):
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
else :; fi; \
done; \
test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
$(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
@$(POST_INSTALL)
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
libelf.a: $(libelf_a_OBJECTS) $(libelf_a_DEPENDENCIES) $(EXTRA_libelf_a_DEPENDENCIES)
- -rm -f libelf.a
- $(libelf_a_AR) libelf.a $(libelf_a_OBJECTS) $(libelf_a_LIBADD)
- $(RANLIB) libelf.a
+ $(AM_V_at)-rm -f libelf.a
+ $(AM_V_AR)$(libelf_a_AR) libelf.a $(libelf_a_OBJECTS) $(libelf_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libelf.a
+
libelf_pic.a: $(libelf_pic_a_OBJECTS) $(libelf_pic_a_DEPENDENCIES) $(EXTRA_libelf_pic_a_DEPENDENCIES)
- -rm -f libelf_pic.a
- $(libelf_pic_a_AR) libelf_pic.a $(libelf_pic_a_OBJECTS) $(libelf_pic_a_LIBADD)
- $(RANLIB) libelf_pic.a
+ $(AM_V_at)-rm -f libelf_pic.a
+ $(AM_V_AR)$(libelf_pic_a_AR) libelf_pic.a $(libelf_pic_a_OBJECTS) $(libelf_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libelf_pic.a
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-@MUDFLAP_TRUE@libelf.so$(EXEEXT): $(libelf_so_OBJECTS) $(libelf_so_DEPENDENCIES) $(EXTRA_libelf_so_DEPENDENCIES)
-@MUDFLAP_TRUE@ @rm -f libelf.so$(EXEEXT)
-@MUDFLAP_TRUE@ $(LINK) $(libelf_so_OBJECTS) $(libelf_so_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlist.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
-@MUDFLAP_TRUE@install: install-am
install-exec: install-exec-am
install-data: install-data-am
-@MUDFLAP_TRUE@uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \
- ctags distclean distclean-compile distclean-generic \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-includeHEADERS install-info \
- install-info-am install-libLIBRARIES install-man install-pdf \
- install-pdf-am install-pkgincludeHEADERS install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am \
+ install-includeHEADERS install-info install-info-am \
+ install-libLIBRARIES install-man install-pdf install-pdf-am \
+ install-pkgincludeHEADERS install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
uninstall-libLIBRARIES uninstall-pkgincludeHEADERS
@AMDEP_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
@AMDEP_TRUE@ fi
@AMDEP_FALSE@ $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
-@MUDFLAP_FALSE@libelf.so: libelf_pic.a libelf.map
-@MUDFLAP_FALSE@ $(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
-@MUDFLAP_FALSE@ -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \
-@MUDFLAP_FALSE@ -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro $(libelf_so_LDLIBS)
-@MUDFLAP_FALSE@ if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
-@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION)
-
-@MUDFLAP_FALSE@install: install-am libelf.so
-@MUDFLAP_FALSE@ $(mkinstalldirs) $(DESTDIR)$(libdir)
-@MUDFLAP_FALSE@ $(INSTALL_PROGRAM) libelf.so $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so
-@MUDFLAP_FALSE@ ln -fs libelf-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libelf.so.$(VERSION)
-@MUDFLAP_FALSE@ ln -fs libelf.so.$(VERSION) $(DESTDIR)$(libdir)/libelf.so
-
-@MUDFLAP_FALSE@uninstall: uninstall-am
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libelf.so.$(VERSION)
-@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libelf.so
+libelf.so$(EXEEXT): libelf_pic.a libelf.map
+ $(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
+ -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \
+ -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro $(libelf_so_LDLIBS)
+ if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+ ln -fs $@ $@.$(VERSION)
+
+install: install-am libelf.so
+ $(mkinstalldirs) $(DESTDIR)$(libdir)
+ $(INSTALL_PROGRAM) libelf.so $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so
+ ln -fs libelf-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libelf.so.$(VERSION)
+ ln -fs libelf.so.$(VERSION) $(DESTDIR)$(libdir)/libelf.so
+
+uninstall: uninstall-am
+ rm -f $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so
+ rm -f $(DESTDIR)$(libdir)/libelf.so.$(VERSION)
+ rm -f $(DESTDIR)$(libdir)/libelf.so
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
/* This file defines standard ELF types, structures, and macros.
- Copyright (C) 1995-2012 Free Software Foundation, Inc.
+ Copyright (C) 1995-2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */
#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */
+#define EM_AARCH64 183 /* ARM AARCH64 */
#define EM_TILEPRO 188 /* Tilera TILEPro */
+#define EM_MICROBLAZE 189 /* Xilinx MicroBlaze */
#define EM_TILEGX 191 /* Tilera TILE-Gx */
#define EM_NUM 192
#define NT_LWPSTATUS 16 /* Contains copy of lwpstatus struct */
#define NT_LWPSINFO 17 /* Contains copy of lwpinfo struct */
#define NT_PRFPXREG 20 /* Contains copy of fprxregset struct */
+#define NT_SIGINFO 0x53494749 /* Contains copy of siginfo_t,
+ size might increase */
+#define NT_FILE 0x46494c45 /* Contains information about mapped
+ files */
#define NT_PRXFPREG 0x46e62b7f /* Contains copy of user_fxsr_struct */
#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */
#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */
+#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */
+#define NT_S390_TIMER 0x301 /* s390 timer register */
+#define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */
+#define NT_S390_TODPREG 0x303 /* s390 TOD programmable register */
+#define NT_S390_CTRS 0x304 /* s390 control registers */
+#define NT_S390_PREFIX 0x305 /* s390 prefix register */
+#define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */
+#define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */
+#define NT_S390_TDB 0x308 /* s390 transaction diagnostic block */
+#define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */
+#define NT_ARM_TLS 0x401 /* ARM TLS register */
+#define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */
+#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */
/* Legal values for the note segment descriptor types for object files. */
#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */
#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */
#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */
+#define DF_1_NODIRECT 0x00020000 /* Object has no-direct binding. */
+#define DF_1_IGNMULDEF 0x00040000
+#define DF_1_NOKSYMS 0x00080000
+#define DF_1_NOHDR 0x00100000
+#define DF_1_EDITED 0x00200000 /* Object is modified after built. */
+#define DF_1_NORELOC 0x00400000
+#define DF_1_SYMINTPOSE 0x00800000 /* Object has individual interposers. */
+#define DF_1_GLOBAUDIT 0x01000000 /* Global auditing required. */
+#define DF_1_SINGLETON 0x02000000 /* Singleton symbols are used. */
/* Flags for the feature selection in DT_FEATURE_1. */
#define DTF_1_PARINIT 0x00000001
/* Some more special a_type values describing the hardware. */
#define AT_PLATFORM 15 /* String identifying platform. */
-#define AT_HWCAP 16 /* Machine dependent hints about
+#define AT_HWCAP 16 /* Machine-dependent hints about
processor capabilities. */
/* This entry gives some information about the FPU initialization
#define AT_RANDOM 25 /* Address of 16 random bytes. */
+#define AT_HWCAP2 26 /* More machine-dependent hints about
+ processor capabilities. */
+
#define AT_EXECFN 31 /* Filename of executable. */
/* Pointer to the global system page used for system calls and other
#define R_386_TLS_DTPMOD32 35 /* ID of module containing symbol */
#define R_386_TLS_DTPOFF32 36 /* Offset in TLS block */
#define R_386_TLS_TPOFF32 37 /* Negated offset in static TLS block */
-/* 38? */
+#define R_386_SIZE32 38 /* 32-bit symbol size */
#define R_386_TLS_GOTDESC 39 /* GOT offset for TLS descriptor. */
#define R_386_TLS_DESC_CALL 40 /* Marker of call through TLS
descriptor for
/* For Sparc64, legal values for d_tag of Elf64_Dyn. */
-#define DT_SPARC_REGISTER 0x70000001
-#define DT_SPARC_NUM 2
+#define DT_SPARC_REGISTER 0x70000001
+#define DT_SPARC_NUM 2
/* MIPS R3000 specific definitions. */
/* Legal values for e_flags field of Elf32_Ehdr. */
-#define EF_MIPS_NOREORDER 1 /* A .noreorder directive was used */
-#define EF_MIPS_PIC 2 /* Contains PIC code */
-#define EF_MIPS_CPIC 4 /* Uses PIC calling sequence */
-#define EF_MIPS_XGOT 8
-#define EF_MIPS_64BIT_WHIRL 16
-#define EF_MIPS_ABI2 32
-#define EF_MIPS_ABI_ON32 64
-#define EF_MIPS_ARCH 0xf0000000 /* MIPS architecture level */
+#define EF_MIPS_NOREORDER 1 /* A .noreorder directive was used. */
+#define EF_MIPS_PIC 2 /* Contains PIC code. */
+#define EF_MIPS_CPIC 4 /* Uses PIC calling sequence. */
+#define EF_MIPS_XGOT 8
+#define EF_MIPS_64BIT_WHIRL 16
+#define EF_MIPS_ABI2 32
+#define EF_MIPS_ABI_ON32 64
+#define EF_MIPS_NAN2008 1024 /* Uses IEEE 754-2008 NaN encoding. */
+#define EF_MIPS_ARCH 0xf0000000 /* MIPS architecture level. */
/* Legal values for MIPS architecture level. */
-#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */
-#define EF_MIPS_ARCH_2 0x10000000 /* -mips2 code. */
-#define EF_MIPS_ARCH_3 0x20000000 /* -mips3 code. */
-#define EF_MIPS_ARCH_4 0x30000000 /* -mips4 code. */
-#define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */
-#define EF_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */
-#define EF_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */
-
-/* The following are non-official names and should not be used. */
-
-#define E_MIPS_ARCH_1 0x00000000 /* -mips1 code. */
-#define E_MIPS_ARCH_2 0x10000000 /* -mips2 code. */
-#define E_MIPS_ARCH_3 0x20000000 /* -mips3 code. */
-#define E_MIPS_ARCH_4 0x30000000 /* -mips4 code. */
-#define E_MIPS_ARCH_5 0x40000000 /* -mips5 code. */
-#define E_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */
-#define E_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */
+#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */
+#define EF_MIPS_ARCH_2 0x10000000 /* -mips2 code. */
+#define EF_MIPS_ARCH_3 0x20000000 /* -mips3 code. */
+#define EF_MIPS_ARCH_4 0x30000000 /* -mips4 code. */
+#define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */
+#define EF_MIPS_ARCH_32 0x50000000 /* MIPS32 code. */
+#define EF_MIPS_ARCH_64 0x60000000 /* MIPS64 code. */
+#define EF_MIPS_ARCH_32R2 0x70000000 /* MIPS32r2 code. */
+#define EF_MIPS_ARCH_64R2 0x80000000 /* MIPS64r2 code. */
+
+/* The following are unofficial names and should not be used. */
+
+#define E_MIPS_ARCH_1 EF_MIPS_ARCH_1
+#define E_MIPS_ARCH_2 EF_MIPS_ARCH_2
+#define E_MIPS_ARCH_3 EF_MIPS_ARCH_3
+#define E_MIPS_ARCH_4 EF_MIPS_ARCH_4
+#define E_MIPS_ARCH_5 EF_MIPS_ARCH_5
+#define E_MIPS_ARCH_32 EF_MIPS_ARCH_32
+#define E_MIPS_ARCH_64 EF_MIPS_ARCH_64
/* Special section indices. */
-#define SHN_MIPS_ACOMMON 0xff00 /* Allocated common symbols */
-#define SHN_MIPS_TEXT 0xff01 /* Allocated test symbols. */
-#define SHN_MIPS_DATA 0xff02 /* Allocated data symbols. */
-#define SHN_MIPS_SCOMMON 0xff03 /* Small common symbols */
-#define SHN_MIPS_SUNDEFINED 0xff04 /* Small undefined symbols */
+#define SHN_MIPS_ACOMMON 0xff00 /* Allocated common symbols. */
+#define SHN_MIPS_TEXT 0xff01 /* Allocated test symbols. */
+#define SHN_MIPS_DATA 0xff02 /* Allocated data symbols. */
+#define SHN_MIPS_SCOMMON 0xff03 /* Small common symbols. */
+#define SHN_MIPS_SUNDEFINED 0xff04 /* Small undefined symbols. */
/* Legal values for sh_type field of Elf32_Shdr. */
-#define SHT_MIPS_LIBLIST 0x70000000 /* Shared objects used in link */
-#define SHT_MIPS_MSYM 0x70000001
-#define SHT_MIPS_CONFLICT 0x70000002 /* Conflicting symbols */
-#define SHT_MIPS_GPTAB 0x70000003 /* Global data area sizes */
-#define SHT_MIPS_UCODE 0x70000004 /* Reserved for SGI/MIPS compilers */
-#define SHT_MIPS_DEBUG 0x70000005 /* MIPS ECOFF debugging information*/
-#define SHT_MIPS_REGINFO 0x70000006 /* Register usage information */
-#define SHT_MIPS_PACKAGE 0x70000007
-#define SHT_MIPS_PACKSYM 0x70000008
-#define SHT_MIPS_RELD 0x70000009
-#define SHT_MIPS_IFACE 0x7000000b
-#define SHT_MIPS_CONTENT 0x7000000c
-#define SHT_MIPS_OPTIONS 0x7000000d /* Miscellaneous options. */
-#define SHT_MIPS_SHDR 0x70000010
-#define SHT_MIPS_FDESC 0x70000011
-#define SHT_MIPS_EXTSYM 0x70000012
-#define SHT_MIPS_DENSE 0x70000013
-#define SHT_MIPS_PDESC 0x70000014
-#define SHT_MIPS_LOCSYM 0x70000015
-#define SHT_MIPS_AUXSYM 0x70000016
-#define SHT_MIPS_OPTSYM 0x70000017
-#define SHT_MIPS_LOCSTR 0x70000018
-#define SHT_MIPS_LINE 0x70000019
-#define SHT_MIPS_RFDESC 0x7000001a
-#define SHT_MIPS_DELTASYM 0x7000001b
-#define SHT_MIPS_DELTAINST 0x7000001c
-#define SHT_MIPS_DELTACLASS 0x7000001d
-#define SHT_MIPS_DWARF 0x7000001e /* DWARF debugging information. */
-#define SHT_MIPS_DELTADECL 0x7000001f
-#define SHT_MIPS_SYMBOL_LIB 0x70000020
-#define SHT_MIPS_EVENTS 0x70000021 /* Event section. */
-#define SHT_MIPS_TRANSLATE 0x70000022
-#define SHT_MIPS_PIXIE 0x70000023
-#define SHT_MIPS_XLATE 0x70000024
-#define SHT_MIPS_XLATE_DEBUG 0x70000025
-#define SHT_MIPS_WHIRL 0x70000026
-#define SHT_MIPS_EH_REGION 0x70000027
-#define SHT_MIPS_XLATE_OLD 0x70000028
-#define SHT_MIPS_PDR_EXCEPTION 0x70000029
+#define SHT_MIPS_LIBLIST 0x70000000 /* Shared objects used in link. */
+#define SHT_MIPS_MSYM 0x70000001
+#define SHT_MIPS_CONFLICT 0x70000002 /* Conflicting symbols. */
+#define SHT_MIPS_GPTAB 0x70000003 /* Global data area sizes. */
+#define SHT_MIPS_UCODE 0x70000004 /* Reserved for SGI/MIPS compilers */
+#define SHT_MIPS_DEBUG 0x70000005 /* MIPS ECOFF debugging info. */
+#define SHT_MIPS_REGINFO 0x70000006 /* Register usage information. */
+#define SHT_MIPS_PACKAGE 0x70000007
+#define SHT_MIPS_PACKSYM 0x70000008
+#define SHT_MIPS_RELD 0x70000009
+#define SHT_MIPS_IFACE 0x7000000b
+#define SHT_MIPS_CONTENT 0x7000000c
+#define SHT_MIPS_OPTIONS 0x7000000d /* Miscellaneous options. */
+#define SHT_MIPS_SHDR 0x70000010
+#define SHT_MIPS_FDESC 0x70000011
+#define SHT_MIPS_EXTSYM 0x70000012
+#define SHT_MIPS_DENSE 0x70000013
+#define SHT_MIPS_PDESC 0x70000014
+#define SHT_MIPS_LOCSYM 0x70000015
+#define SHT_MIPS_AUXSYM 0x70000016
+#define SHT_MIPS_OPTSYM 0x70000017
+#define SHT_MIPS_LOCSTR 0x70000018
+#define SHT_MIPS_LINE 0x70000019
+#define SHT_MIPS_RFDESC 0x7000001a
+#define SHT_MIPS_DELTASYM 0x7000001b
+#define SHT_MIPS_DELTAINST 0x7000001c
+#define SHT_MIPS_DELTACLASS 0x7000001d
+#define SHT_MIPS_DWARF 0x7000001e /* DWARF debugging information. */
+#define SHT_MIPS_DELTADECL 0x7000001f
+#define SHT_MIPS_SYMBOL_LIB 0x70000020
+#define SHT_MIPS_EVENTS 0x70000021 /* Event section. */
+#define SHT_MIPS_TRANSLATE 0x70000022
+#define SHT_MIPS_PIXIE 0x70000023
+#define SHT_MIPS_XLATE 0x70000024
+#define SHT_MIPS_XLATE_DEBUG 0x70000025
+#define SHT_MIPS_WHIRL 0x70000026
+#define SHT_MIPS_EH_REGION 0x70000027
+#define SHT_MIPS_XLATE_OLD 0x70000028
+#define SHT_MIPS_PDR_EXCEPTION 0x70000029
/* Legal values for sh_flags field of Elf32_Shdr. */
-#define SHF_MIPS_GPREL 0x10000000 /* Must be part of global data area */
-#define SHF_MIPS_MERGE 0x20000000
-#define SHF_MIPS_ADDR 0x40000000
-#define SHF_MIPS_STRINGS 0x80000000
-#define SHF_MIPS_NOSTRIP 0x08000000
-#define SHF_MIPS_LOCAL 0x04000000
-#define SHF_MIPS_NAMES 0x02000000
-#define SHF_MIPS_NODUPE 0x01000000
+#define SHF_MIPS_GPREL 0x10000000 /* Must be in global data area. */
+#define SHF_MIPS_MERGE 0x20000000
+#define SHF_MIPS_ADDR 0x40000000
+#define SHF_MIPS_STRINGS 0x80000000
+#define SHF_MIPS_NOSTRIP 0x08000000
+#define SHF_MIPS_LOCAL 0x04000000
+#define SHF_MIPS_NAMES 0x02000000
+#define SHF_MIPS_NODUPE 0x01000000
/* Symbol tables. */
{
struct
{
- Elf32_Word gt_current_g_value; /* -G value used for compilation */
- Elf32_Word gt_unused; /* Not used */
- } gt_header; /* First entry in section */
+ Elf32_Word gt_current_g_value; /* -G value used for compilation. */
+ Elf32_Word gt_unused; /* Not used. */
+ } gt_header; /* First entry in section. */
struct
{
- Elf32_Word gt_g_value; /* If this value were used for -G */
- Elf32_Word gt_bytes; /* This many bytes would be used */
- } gt_entry; /* Subsequent entries in section */
+ Elf32_Word gt_g_value; /* If this value were used for -G. */
+ Elf32_Word gt_bytes; /* This many bytes would be used. */
+ } gt_entry; /* Subsequent entries in section. */
} Elf32_gptab;
/* Entry found in sections of type SHT_MIPS_REGINFO. */
typedef struct
{
- Elf32_Word ri_gprmask; /* General registers used */
- Elf32_Word ri_cprmask[4]; /* Coprocessor registers used */
- Elf32_Sword ri_gp_value; /* $gp register value */
+ Elf32_Word ri_gprmask; /* General registers used. */
+ Elf32_Word ri_cprmask[4]; /* Coprocessor registers used. */
+ Elf32_Sword ri_gp_value; /* $gp register value. */
} Elf32_RegInfo;
/* Entries found in sections of type SHT_MIPS_OPTIONS. */
#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */
#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */
#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */
+#define R_PPC64_TLSGD 107 /* none (sym+add)@tlsgd */
+#define R_PPC64_TLSLD 108 /* none (sym+add)@tlsld */
+#define R_PPC64_TOCSAVE 109 /* none */
+
+/* Added when HA and HI relocs were changed to report overflows. */
+#define R_PPC64_ADDR16_HIGH 110
+#define R_PPC64_ADDR16_HIGHA 111
+#define R_PPC64_TPREL16_HIGH 112
+#define R_PPC64_TPREL16_HIGHA 113
+#define R_PPC64_DTPREL16_HIGH 114
+#define R_PPC64_DTPREL16_HIGHA 115
/* GNU extension to support local ifunc. */
#define R_PPC64_JMP_IREL 247
#define R_PPC64_REL16_HI 251 /* half16 (sym+add-.)@h */
#define R_PPC64_REL16_HA 252 /* half16 (sym+add-.)@ha */
+/* e_flags bits specifying ABI.
+ 1 for original function descriptor using ABI,
+ 2 for revised ABI without function descriptors,
+ 0 for unspecified or not using any features affected by the differences. */
+#define EF_PPC64_ABI 3
+
/* PowerPC64 specific values for the Dyn d_tag field. */
#define DT_PPC64_GLINK (DT_LOPROC + 0)
#define DT_PPC64_OPD (DT_LOPROC + 1)
#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
+#define DT_PPC64_OPT (DT_LOPROC + 3)
#define DT_PPC64_NUM 3
+/* PowerPC64 specific values for the DT_PPC64_OPT Dyn entry. */
+#define PPC64_OPT_TLS 1
+#define PPC64_OPT_MULTI_TOC 2
+
+/* PowerPC64 specific values for the Elf64_Sym st_other field. */
+#define STO_PPC64_LOCAL_BIT 5
+#define STO_PPC64_LOCAL_MASK (7 << STO_PPC64_LOCAL_BIT)
+#define PPC64_LOCAL_ENTRY_OFFSET(other) \
+ (((1 << (((other) & STO_PPC64_LOCAL_MASK) >> STO_PPC64_LOCAL_BIT)) >> 2) << 2)
+
/* ARM specific declarations */
#define EF_ARM_VFP_FLOAT 0x400
#define EF_ARM_MAVERICK_FLOAT 0x800
+#define EF_ARM_ABI_FLOAT_SOFT 0x200 /* NB conflicts with EF_ARM_SOFT_FLOAT */
+#define EF_ARM_ABI_FLOAT_HARD 0x400 /* NB conflicts with EF_ARM_VFP_FLOAT */
+
/* Other constants defined in the ARM ELF spec. version B-01. */
/* NB. These conflict with values defined above. */
#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */
+/* AArch64 relocs. */
+
+#define R_AARCH64_NONE 0 /* No relocation. */
+#define R_AARCH64_ABS64 257 /* Direct 64 bit. */
+#define R_AARCH64_ABS32 258 /* Direct 32 bit. */
+#define R_AARCH64_ABS16 259 /* Direct 16-bit. */
+#define R_AARCH64_PREL64 260 /* PC-relative 64-bit. */
+#define R_AARCH64_PREL32 261 /* PC-relative 32-bit. */
+#define R_AARCH64_PREL16 262 /* PC-relative 16-bit. */
+#define R_AARCH64_MOVW_UABS_G0 263 /* Dir. MOVZ imm. from bits 15:0. */
+#define R_AARCH64_MOVW_UABS_G0_NC 264 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_UABS_G1 265 /* Dir. MOVZ imm. from bits 31:16. */
+#define R_AARCH64_MOVW_UABS_G1_NC 266 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_UABS_G2 267 /* Dir. MOVZ imm. from bits 47:32. */
+#define R_AARCH64_MOVW_UABS_G2_NC 268 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_UABS_G3 269 /* Dir. MOV{K,Z} imm. from 63:48. */
+#define R_AARCH64_MOVW_SABS_G0 270 /* Dir. MOV{N,Z} imm. from 15:0. */
+#define R_AARCH64_MOVW_SABS_G1 271 /* Dir. MOV{N,Z} imm. from 31:16. */
+#define R_AARCH64_MOVW_SABS_G2 272 /* Dir. MOV{N,Z} imm. from 47:32. */
+#define R_AARCH64_LD_PREL_LO19 273 /* PC-rel. LD imm. from bits 20:2. */
+#define R_AARCH64_ADR_PREL_LO21 274 /* PC-rel. ADR imm. from bits 20:0. */
+#define R_AARCH64_ADR_PREL_PG_HI21 275 /* Page-rel. ADRP imm. from 32:12. */
+#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 /* Likewise; no overflow check. */
+#define R_AARCH64_ADD_ABS_LO12_NC 277 /* Dir. ADD imm. from bits 11:0. */
+#define R_AARCH64_LDST8_ABS_LO12_NC 278 /* Likewise for LD/ST; no check. */
+#define R_AARCH64_TSTBR14 279 /* PC-rel. TBZ/TBNZ imm. from 15:2. */
+#define R_AARCH64_CONDBR19 280 /* PC-rel. cond. br. imm. from 20:2. */
+#define R_AARCH64_JUMP26 282 /* PC-rel. B imm. from bits 27:2. */
+#define R_AARCH64_CALL26 283 /* Likewise for CALL. */
+#define R_AARCH64_LDST16_ABS_LO12_NC 284 /* Dir. ADD imm. from bits 11:1. */
+#define R_AARCH64_LDST32_ABS_LO12_NC 285 /* Likewise for bits 11:2. */
+#define R_AARCH64_LDST64_ABS_LO12_NC 286 /* Likewise for bits 11:3. */
+#define R_AARCH64_MOVW_PREL_G0 287 /* PC-rel. MOV{N,Z} imm. from 15:0. */
+#define R_AARCH64_MOVW_PREL_G0_NC 288 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_PREL_G1 289 /* PC-rel. MOV{N,Z} imm. from 31:16. */
+#define R_AARCH64_MOVW_PREL_G1_NC 290 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_PREL_G2 291 /* PC-rel. MOV{N,Z} imm. from 47:32. */
+#define R_AARCH64_MOVW_PREL_G2_NC 292 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_PREL_G3 293 /* PC-rel. MOV{N,Z} imm. from 63:48. */
+#define R_AARCH64_LDST128_ABS_LO12_NC 299 /* Dir. ADD imm. from bits 11:4. */
+#define R_AARCH64_MOVW_GOTOFF_G0 300 /* GOT-rel. off. MOV{N,Z} imm. 15:0. */
+#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_GOTOFF_G1 302 /* GOT-rel. o. MOV{N,Z} imm. 31:16. */
+#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_GOTOFF_G2 304 /* GOT-rel. o. MOV{N,Z} imm. 47:32. */
+#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 /* Likewise for MOVK; no check. */
+#define R_AARCH64_MOVW_GOTOFF_G3 306 /* GOT-rel. o. MOV{N,Z} imm. 63:48. */
+#define R_AARCH64_GOTREL64 307 /* GOT-relative 64-bit. */
+#define R_AARCH64_GOTREL32 308 /* GOT-relative 32-bit. */
+#define R_AARCH64_GOT_LD_PREL19 309 /* PC-rel. GOT off. load imm. 20:2. */
+#define R_AARCH64_LD64_GOTOFF_LO15 310 /* GOT-rel. off. LD/ST imm. 14:3. */
+#define R_AARCH64_ADR_GOT_PAGE 311 /* P-page-rel. GOT off. ADRP 32:12. */
+#define R_AARCH64_LD64_GOT_LO12_NC 312 /* Dir. GOT off. LD/ST imm. 11:3. */
+#define R_AARCH64_LD64_GOTPAGE_LO15 313 /* GOT-page-rel. GOT off. LD/ST 14:3 */
+#define R_AARCH64_TLSGD_ADR_PREL21 512 /* PC-relative ADR imm. 20:0. */
+#define R_AARCH64_TLSGD_ADR_PAGE21 513 /* page-rel. ADRP imm. 32:12. */
+#define R_AARCH64_TLSGD_ADD_LO12_NC 514 /* direct ADD imm. from 11:0. */
+#define R_AARCH64_TLSGD_MOVW_G1 515 /* GOT-rel. MOV{N,Z} 31:16. */
+#define R_AARCH64_TLSGD_MOVW_G0_NC 516 /* GOT-rel. MOVK imm. 15:0. */
+#define R_AARCH64_TLSLD_ADR_PREL21 517 /* Like 512; local dynamic model. */
+#define R_AARCH64_TLSLD_ADR_PAGE21 518 /* Like 513; local dynamic model. */
+#define R_AARCH64_TLSLD_ADD_LO12_NC 519 /* Like 514; local dynamic model. */
+#define R_AARCH64_TLSLD_MOVW_G1 520 /* Like 515; local dynamic model. */
+#define R_AARCH64_TLSLD_MOVW_G0_NC 521 /* Like 516; local dynamic model. */
+#define R_AARCH64_TLSLD_LD_PREL19 522 /* TLS PC-rel. load imm. 20:2. */
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 /* TLS DTP-rel. MOV{N,Z} 47:32. */
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 /* TLS DTP-rel. MOV{N,Z} 31:16. */
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 /* Likewise; MOVK; no check. */
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 /* TLS DTP-rel. MOV{N,Z} 15:0. */
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 /* Likewise; MOVK; no check. */
+#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 /* DTP-rel. ADD imm. from 23:12. */
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 /* DTP-rel. ADD imm. from 11:0. */
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 /* Likewise; no ovfl. check. */
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 /* DTP-rel. LD/ST imm. 11:0. */
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 /* Likewise; no check. */
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 /* DTP-rel. LD/ST imm. 11:1. */
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 /* Likewise; no check. */
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 /* DTP-rel. LD/ST imm. 11:2. */
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 /* Likewise; no check. */
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 /* DTP-rel. LD/ST imm. 11:3. */
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 /* Likewise; no check. */
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 /* GOT-rel. MOV{N,Z} 31:16. */
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 /* GOT-rel. MOVK 15:0. */
+#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 /* Page-rel. ADRP 32:12. */
+#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 /* Direct LD off. 11:3. */
+#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 /* PC-rel. load imm. 20:2. */
+#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 /* TLS TP-rel. MOV{N,Z} 47:32. */
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 /* TLS TP-rel. MOV{N,Z} 31:16. */
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 /* Likewise; MOVK; no check. */
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 /* TLS TP-rel. MOV{N,Z} 15:0. */
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 /* Likewise; MOVK; no check. */
+#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 /* TP-rel. ADD imm. 23:12. */
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 /* TP-rel. ADD imm. 11:0. */
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 /* Likewise; no ovfl. check. */
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 /* TP-rel. LD/ST off. 11:0. */
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 /* Likewise; no ovfl. check. */
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 /* TP-rel. LD/ST off. 11:1. */
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 /* Likewise; no check. */
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 /* TP-rel. LD/ST off. 11:2. */
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 /* Likewise; no check. */
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 /* TP-rel. LD/ST off. 11:3. */
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 /* Likewise; no check. */
+#define R_AARCH64_TLSDESC_LD_PREL19 560 /* PC-rel. load immediate 20:2. */
+#define R_AARCH64_TLSDESC_ADR_PREL21 561 /* PC-rel. ADR immediate 20:0. */
+#define R_AARCH64_TLSDESC_ADR_PAGE21 562 /* Page-rel. ADRP imm. 32:12. */
+#define R_AARCH64_TLSDESC_LD64_LO12 563 /* Direct LD off. from 11:3. */
+#define R_AARCH64_TLSDESC_ADD_LO12 564 /* Direct ADD imm. from 11:0. */
+#define R_AARCH64_TLSDESC_OFF_G1 565 /* GOT-rel. MOV{N,Z} imm. 31:16. */
+#define R_AARCH64_TLSDESC_OFF_G0_NC 566 /* GOT-rel. MOVK imm. 15:0; no ck. */
+#define R_AARCH64_TLSDESC_LDR 567 /* Relax LDR. */
+#define R_AARCH64_TLSDESC_ADD 568 /* Relax ADD. */
+#define R_AARCH64_TLSDESC_CALL 569 /* Relax BLR. */
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 /* TP-rel. LD/ST off. 11:4. */
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 /* Likewise; no check. */
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 /* DTP-rel. LD/ST imm. 11:4. */
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 /* Likewise; no check. */
+#define R_AARCH64_COPY 1024 /* Copy symbol at runtime. */
+#define R_AARCH64_GLOB_DAT 1025 /* Create GOT entry. */
+#define R_AARCH64_JUMP_SLOT 1026 /* Create PLT entry. */
+#define R_AARCH64_RELATIVE 1027 /* Adjust by program base. */
+#define R_AARCH64_TLS_DTPMOD64 1028 /* Module number, 64 bit. */
+#define R_AARCH64_TLS_DTPREL64 1029 /* Module-relative offset, 64 bit. */
+#define R_AARCH64_TLS_TPREL64 1030 /* TP-relative offset, 64 bit. */
+#define R_AARCH64_TLSDESC 1031 /* TLS Descriptor. */
+#define R_AARCH64_IRELATIVE 1032 /* STT_GNU_IFUNC relocation. */
+
/* ARM relocs. */
#define R_ARM_NONE 0 /* No reloc */
-#define R_ARM_PC24 1 /* PC relative 26 bit branch */
+#define R_ARM_PC24 1 /* Deprecated PC relative 26
+ bit branch. */
#define R_ARM_ABS32 2 /* Direct 32 bit */
#define R_ARM_REL32 3 /* PC relative 32 bit */
#define R_ARM_PC13 4
#define R_ARM_ABS16 5 /* Direct 16 bit */
#define R_ARM_ABS12 6 /* Direct 12 bit */
-#define R_ARM_THM_ABS5 7
+#define R_ARM_THM_ABS5 7 /* Direct & 0x7C (LDR, STR). */
#define R_ARM_ABS8 8 /* Direct 8 bit */
#define R_ARM_SBREL32 9
-#define R_ARM_THM_PC22 10
-#define R_ARM_THM_PC8 11
+#define R_ARM_THM_PC22 10 /* PC relative 24 bit (Thumb32 BL). */
+#define R_ARM_THM_PC8 11 /* PC relative & 0x3FC
+ (Thumb16 LDR, ADD, ADR). */
#define R_ARM_AMP_VCALL9 12
#define R_ARM_SWI24 13 /* Obsolete static relocation. */
#define R_ARM_TLS_DESC 13 /* Dynamic relocation. */
-#define R_ARM_THM_SWI8 14
-#define R_ARM_XPC25 15
-#define R_ARM_THM_XPC22 16
+#define R_ARM_THM_SWI8 14 /* Reserved. */
+#define R_ARM_XPC25 15 /* Reserved. */
+#define R_ARM_THM_XPC22 16 /* Reserved. */
#define R_ARM_TLS_DTPMOD32 17 /* ID of module containing symbol */
#define R_ARM_TLS_DTPOFF32 18 /* Offset in TLS block */
#define R_ARM_TLS_TPOFF32 19 /* Offset in static TLS block */
#define R_ARM_GOTOFF 24 /* 32 bit offset to GOT */
#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */
#define R_ARM_GOT32 26 /* 32 bit GOT entry */
-#define R_ARM_PLT32 27 /* 32 bit PLT address */
-#define R_ARM_ALU_PCREL_7_0 32
-#define R_ARM_ALU_PCREL_15_8 33
-#define R_ARM_ALU_PCREL_23_15 34
-#define R_ARM_LDR_SBREL_11_0 35
-#define R_ARM_ALU_SBREL_19_12 36
-#define R_ARM_ALU_SBREL_27_20 37
+#define R_ARM_PLT32 27 /* Deprecated, 32 bit PLT address. */
+#define R_ARM_CALL 28 /* PC relative 24 bit (BL, BLX). */
+#define R_ARM_JUMP24 29 /* PC relative 24 bit
+ (B, BL<cond>). */
+#define R_ARM_THM_JUMP24 30 /* PC relative 24 bit (Thumb32 B.W). */
+#define R_ARM_BASE_ABS 31 /* Adjust by program base. */
+#define R_ARM_ALU_PCREL_7_0 32 /* Obsolete. */
+#define R_ARM_ALU_PCREL_15_8 33 /* Obsolete. */
+#define R_ARM_ALU_PCREL_23_15 34 /* Obsolete. */
+#define R_ARM_LDR_SBREL_11_0 35 /* Deprecated, prog. base relative. */
+#define R_ARM_ALU_SBREL_19_12 36 /* Deprecated, prog. base relative. */
+#define R_ARM_ALU_SBREL_27_20 37 /* Deprecated, prog. base relative. */
+#define R_ARM_TARGET1 38
+#define R_ARM_SBREL31 39 /* Program base relative. */
+#define R_ARM_V4BX 40
+#define R_ARM_TARGET2 41
+#define R_ARM_PREL31 42 /* 32 bit PC relative. */
+#define R_ARM_MOVW_ABS_NC 43 /* Direct 16-bit (MOVW). */
+#define R_ARM_MOVT_ABS 44 /* Direct high 16-bit (MOVT). */
+#define R_ARM_MOVW_PREL_NC 45 /* PC relative 16-bit (MOVW). */
+#define R_ARM_MOVT_PREL 46 /* PC relative (MOVT). */
+#define R_ARM_THM_MOVW_ABS_NC 47 /* Direct 16 bit (Thumb32 MOVW). */
+#define R_ARM_THM_MOVT_ABS 48 /* Direct high 16 bit
+ (Thumb32 MOVT). */
+#define R_ARM_THM_MOVW_PREL_NC 49 /* PC relative 16 bit
+ (Thumb32 MOVW). */
+#define R_ARM_THM_MOVT_PREL 50 /* PC relative high 16 bit
+ (Thumb32 MOVT). */
+#define R_ARM_THM_JUMP19 51 /* PC relative 20 bit
+ (Thumb32 B<cond>.W). */
+#define R_ARM_THM_JUMP6 52 /* PC relative X & 0x7E
+ (Thumb16 CBZ, CBNZ). */
+#define R_ARM_THM_ALU_PREL_11_0 53 /* PC relative 12 bit
+ (Thumb32 ADR.W). */
+#define R_ARM_THM_PC12 54 /* PC relative 12 bit
+ (Thumb32 LDR{D,SB,H,SH}). */
+#define R_ARM_ABS32_NOI 55 /* Direct 32-bit. */
+#define R_ARM_REL32_NOI 56 /* PC relative 32-bit. */
+#define R_ARM_ALU_PC_G0_NC 57 /* PC relative (ADD, SUB). */
+#define R_ARM_ALU_PC_G0 58 /* PC relative (ADD, SUB). */
+#define R_ARM_ALU_PC_G1_NC 59 /* PC relative (ADD, SUB). */
+#define R_ARM_ALU_PC_G1 60 /* PC relative (ADD, SUB). */
+#define R_ARM_ALU_PC_G2 61 /* PC relative (ADD, SUB). */
+#define R_ARM_LDR_PC_G1 62 /* PC relative (LDR,STR,LDRB,STRB). */
+#define R_ARM_LDR_PC_G2 63 /* PC relative (LDR,STR,LDRB,STRB). */
+#define R_ARM_LDRS_PC_G0 64 /* PC relative (STR{D,H},
+ LDR{D,SB,H,SH}). */
+#define R_ARM_LDRS_PC_G1 65 /* PC relative (STR{D,H},
+ LDR{D,SB,H,SH}). */
+#define R_ARM_LDRS_PC_G2 66 /* PC relative (STR{D,H},
+ LDR{D,SB,H,SH}). */
+#define R_ARM_LDC_PC_G0 67 /* PC relative (LDC, STC). */
+#define R_ARM_LDC_PC_G1 68 /* PC relative (LDC, STC). */
+#define R_ARM_LDC_PC_G2 69 /* PC relative (LDC, STC). */
+#define R_ARM_ALU_SB_G0_NC 70 /* Program base relative (ADD,SUB). */
+#define R_ARM_ALU_SB_G0 71 /* Program base relative (ADD,SUB). */
+#define R_ARM_ALU_SB_G1_NC 72 /* Program base relative (ADD,SUB). */
+#define R_ARM_ALU_SB_G1 73 /* Program base relative (ADD,SUB). */
+#define R_ARM_ALU_SB_G2 74 /* Program base relative (ADD,SUB). */
+#define R_ARM_LDR_SB_G0 75 /* Program base relative (LDR,
+ STR, LDRB, STRB). */
+#define R_ARM_LDR_SB_G1 76 /* Program base relative
+ (LDR, STR, LDRB, STRB). */
+#define R_ARM_LDR_SB_G2 77 /* Program base relative
+ (LDR, STR, LDRB, STRB). */
+#define R_ARM_LDRS_SB_G0 78 /* Program base relative
+ (LDR, STR, LDRB, STRB). */
+#define R_ARM_LDRS_SB_G1 79 /* Program base relative
+ (LDR, STR, LDRB, STRB). */
+#define R_ARM_LDRS_SB_G2 80 /* Program base relative
+ (LDR, STR, LDRB, STRB). */
+#define R_ARM_LDC_SB_G0 81 /* Program base relative (LDC,STC). */
+#define R_ARM_LDC_SB_G1 82 /* Program base relative (LDC,STC). */
+#define R_ARM_LDC_SB_G2 83 /* Program base relative (LDC,STC). */
+#define R_ARM_MOVW_BREL_NC 84 /* Program base relative 16
+ bit (MOVW). */
+#define R_ARM_MOVT_BREL 85 /* Program base relative high
+ 16 bit (MOVT). */
+#define R_ARM_MOVW_BREL 86 /* Program base relative 16
+ bit (MOVW). */
+#define R_ARM_THM_MOVW_BREL_NC 87 /* Program base relative 16
+ bit (Thumb32 MOVW). */
+#define R_ARM_THM_MOVT_BREL 88 /* Program base relative high
+ 16 bit (Thumb32 MOVT). */
+#define R_ARM_THM_MOVW_BREL 89 /* Program base relative 16
+ bit (Thumb32 MOVW). */
#define R_ARM_TLS_GOTDESC 90
#define R_ARM_TLS_CALL 91
-#define R_ARM_TLS_DESCSEQ 92
+#define R_ARM_TLS_DESCSEQ 92 /* TLS relaxation. */
#define R_ARM_THM_TLS_CALL 93
+#define R_ARM_PLT32_ABS 94
+#define R_ARM_GOT_ABS 95 /* GOT entry. */
+#define R_ARM_GOT_PREL 96 /* PC relative GOT entry. */
+#define R_ARM_GOT_BREL12 97 /* GOT entry relative to GOT
+ origin (LDR). */
+#define R_ARM_GOTOFF12 98 /* 12 bit, GOT entry relative
+ to GOT origin (LDR, STR). */
+#define R_ARM_GOTRELAX 99
#define R_ARM_GNU_VTENTRY 100
#define R_ARM_GNU_VTINHERIT 101
-#define R_ARM_THM_PC11 102 /* thumb unconditional branch */
-#define R_ARM_THM_PC9 103 /* thumb conditional branch */
+#define R_ARM_THM_PC11 102 /* PC relative & 0xFFE (Thumb16 B). */
+#define R_ARM_THM_PC9 103 /* PC relative & 0x1FE
+ (Thumb16 B/B<cond>). */
#define R_ARM_TLS_GD32 104 /* PC-rel 32 bit for global dynamic
thread local data */
#define R_ARM_TLS_LDM32 105 /* PC-rel 32 bit for local dynamic
static TLS block offset */
#define R_ARM_TLS_LE32 108 /* 32 bit offset relative to static
TLS block */
-#define R_ARM_THM_TLS_DESCSEQ 129
+#define R_ARM_TLS_LDO12 109 /* 12 bit relative to TLS
+ block (LDR, STR). */
+#define R_ARM_TLS_LE12 110 /* 12 bit relative to static
+ TLS block (LDR, STR). */
+#define R_ARM_TLS_IE12GP 111 /* 12 bit GOT entry relative
+ to GOT origin (LDR). */
+#define R_ARM_ME_TOO 128 /* Obsolete. */
+#define R_ARM_THM_TLS_DESCSEQ 129
+#define R_ARM_THM_TLS_DESCSEQ16 129
+#define R_ARM_THM_TLS_DESCSEQ32 130
+#define R_ARM_THM_GOT_BREL12 131 /* GOT entry relative to GOT
+ origin, 12 bit (Thumb32 LDR). */
#define R_ARM_IRELATIVE 160
#define R_ARM_RXPC25 249
#define R_ARM_RSBREL32 250
#define R_M32R_GOTOFF_LO 64 /* Low 16 bit offset to GOT */
#define R_M32R_NUM 256 /* Keep this the last entry. */
+/* MicroBlaze relocations */
+#define R_MICROBLAZE_NONE 0 /* No reloc. */
+#define R_MICROBLAZE_32 1 /* Direct 32 bit. */
+#define R_MICROBLAZE_32_PCREL 2 /* PC relative 32 bit. */
+#define R_MICROBLAZE_64_PCREL 3 /* PC relative 64 bit. */
+#define R_MICROBLAZE_32_PCREL_LO 4 /* Low 16 bits of PCREL32. */
+#define R_MICROBLAZE_64 5 /* Direct 64 bit. */
+#define R_MICROBLAZE_32_LO 6 /* Low 16 bit. */
+#define R_MICROBLAZE_SRO32 7 /* Read-only small data area. */
+#define R_MICROBLAZE_SRW32 8 /* Read-write small data area. */
+#define R_MICROBLAZE_64_NONE 9 /* No reloc. */
+#define R_MICROBLAZE_32_SYM_OP_SYM 10 /* Symbol Op Symbol relocation. */
+#define R_MICROBLAZE_GNU_VTINHERIT 11 /* GNU C++ vtable hierarchy. */
+#define R_MICROBLAZE_GNU_VTENTRY 12 /* GNU C++ vtable member usage. */
+#define R_MICROBLAZE_GOTPC_64 13 /* PC-relative GOT offset. */
+#define R_MICROBLAZE_GOT_64 14 /* GOT entry offset. */
+#define R_MICROBLAZE_PLT_64 15 /* PLT offset (PC-relative). */
+#define R_MICROBLAZE_REL 16 /* Adjust by program base. */
+#define R_MICROBLAZE_JUMP_SLOT 17 /* Create PLT entry. */
+#define R_MICROBLAZE_GLOB_DAT 18 /* Create GOT entry. */
+#define R_MICROBLAZE_GOTOFF_64 19 /* 64 bit offset to GOT. */
+#define R_MICROBLAZE_GOTOFF_32 20 /* 32 bit offset to GOT. */
+#define R_MICROBLAZE_COPY 21 /* Runtime copy. */
+#define R_MICROBLAZE_TLS 22 /* TLS Reloc. */
+#define R_MICROBLAZE_TLSGD 23 /* TLS General Dynamic. */
+#define R_MICROBLAZE_TLSLD 24 /* TLS Local Dynamic. */
+#define R_MICROBLAZE_TLSDTPMOD32 25 /* TLS Module ID. */
+#define R_MICROBLAZE_TLSDTPREL32 26 /* TLS Offset Within TLS Block. */
+#define R_MICROBLAZE_TLSDTPREL64 27 /* TLS Offset Within TLS Block. */
+#define R_MICROBLAZE_TLSGOTTPREL32 28 /* TLS Offset From Thread Pointer. */
+#define R_MICROBLAZE_TLSTPREL32 29 /* TLS Offset From Thread Pointer. */
/* TILEPro relocations. */
#define R_TILEPRO_NONE 0 /* No reloc */
#define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63 /* X1 pipe PC-rel last hword 2 */
#define R_TILEGX_IMM16_X0_HW0_GOT 64 /* X0 pipe hword 0 GOT offset */
#define R_TILEGX_IMM16_X1_HW0_GOT 65 /* X1 pipe hword 0 GOT offset */
-/* Relocs 66-71 are currently not defined. */
+#define R_TILEGX_IMM16_X0_HW0_PLT_PCREL 66 /* X0 pipe PC-rel PLT hword 0 */
+#define R_TILEGX_IMM16_X1_HW0_PLT_PCREL 67 /* X1 pipe PC-rel PLT hword 0 */
+#define R_TILEGX_IMM16_X0_HW1_PLT_PCREL 68 /* X0 pipe PC-rel PLT hword 1 */
+#define R_TILEGX_IMM16_X1_HW1_PLT_PCREL 69 /* X1 pipe PC-rel PLT hword 1 */
+#define R_TILEGX_IMM16_X0_HW2_PLT_PCREL 70 /* X0 pipe PC-rel PLT hword 2 */
+#define R_TILEGX_IMM16_X1_HW2_PLT_PCREL 71 /* X1 pipe PC-rel PLT hword 2 */
#define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72 /* X0 pipe last hword 0 GOT offset */
#define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73 /* X1 pipe last hword 0 GOT offset */
#define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74 /* X0 pipe last hword 1 GOT offset */
#define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75 /* X1 pipe last hword 1 GOT offset */
-/* Relocs 76-77 are currently not defined. */
+#define R_TILEGX_IMM16_X0_HW3_PLT_PCREL 76 /* X0 pipe PC-rel PLT hword 3 */
+#define R_TILEGX_IMM16_X1_HW3_PLT_PCREL 77 /* X1 pipe PC-rel PLT hword 3 */
#define R_TILEGX_IMM16_X0_HW0_TLS_GD 78 /* X0 pipe hword 0 TLS GD offset */
#define R_TILEGX_IMM16_X1_HW0_TLS_GD 79 /* X1 pipe hword 0 TLS GD offset */
#define R_TILEGX_IMM16_X0_HW0_TLS_LE 80 /* X0 pipe hword 0 TLS LE offset */
/* Relocs 90-91 are currently not defined. */
#define R_TILEGX_IMM16_X0_HW0_TLS_IE 92 /* X0 pipe hword 0 TLS IE offset */
#define R_TILEGX_IMM16_X1_HW0_TLS_IE 93 /* X1 pipe hword 0 TLS IE offset */
-/* Relocs 94-99 are currently not defined. */
+#define R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL 94 /* X0 pipe PC-rel PLT last hword 0 */
+#define R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL 95 /* X1 pipe PC-rel PLT last hword 0 */
+#define R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL 96 /* X0 pipe PC-rel PLT last hword 1 */
+#define R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL 97 /* X1 pipe PC-rel PLT last hword 1 */
+#define R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL 98 /* X0 pipe PC-rel PLT last hword 2 */
+#define R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL 99 /* X1 pipe PC-rel PLT last hword 2 */
#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100 /* X0 pipe last hword 0 IE off */
#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101 /* X1 pipe last hword 0 IE off */
#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102 /* X0 pipe last hword 1 IE off */
/* Get ELF program header table.
- Copyright (C) 1998-2010 Red Hat, Inc.
+ Copyright (C) 1998-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
if (elf->map_address != NULL)
{
+ /* First see whether the information in the ELF header is
+ valid and it does not ask for too much. */
+ if (unlikely (ehdr->e_phoff >= elf->maximum_size)
+ || unlikely (elf->maximum_size - ehdr->e_phoff < size))
+ {
+ /* Something is wrong. */
+ __libelf_seterrno (ELF_E_INVALID_PHDR);
+ goto out;
+ }
+
/* All the data is already mapped. Use it. */
void *file_phdr = ((char *) elf->map_address
+ elf->start_offset + ehdr->e_phoff);
/* Return section header.
- Copyright (C) 1998-2002, 2005, 2007, 2009, 2012 Red Hat, Inc.
+ Copyright (C) 1998-2002, 2005, 2007, 2009, 2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
goto out;
size_t shnum;
- 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));
if (elf->map_address != NULL)
{
+ /* First see whether the information in the ELF header is
+ valid and it does not ask for too much. */
+ if (unlikely (ehdr->e_shoff >= elf->maximum_size)
+ || unlikely (elf->maximum_size - ehdr->e_shoff < size))
+ {
+ /* Something is wrong. */
+ __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
+ goto free_and_out;
+ }
+
ElfW2(LIBELFBITS,Shdr) *notcvt;
/* All the data is already mapped. If we could use it
/* Create new ELF program header table.
- Copyright (C) 1999-2010 Red Hat, Inc.
+ Copyright (C) 1999-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
|| count == PN_XNUM
|| elf->state.ELFW(elf,LIBELFBITS).phdr == NULL)
{
+ if (unlikely (count > SIZE_MAX / sizeof (ElfW2(LIBELFBITS,Phdr))))
+ {
+ result = NULL;
+ goto out;
+ }
+
/* Allocate a new program header with the appropriate number of
elements. */
result = (ElfW2(LIBELFBITS,Phdr) *)
/* Write changed data structures.
- Copyright (C) 2000-2010 Red Hat, Inc.
+ Copyright (C) 2000-2010, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
(*fctp) ((char *) elf->map_address + elf->start_offset, ehdr,
sizeof (ElfW2(LIBELFBITS,Ehdr)), 1);
}
- else
+ else if (elf->map_address + elf->start_offset != ehdr)
memcpy (elf->map_address + elf->start_offset, ehdr,
sizeof (ElfW2(LIBELFBITS,Ehdr)));
/* Write all the sections. Well, only those which are modified. */
if (shnum > 0)
{
+ if (unlikely (shnum > SIZE_MAX / sizeof (Elf_Scn *)))
+ return 1;
+
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
/* Write all the sections. Well, only those which are modified. */
if (shnum > 0)
{
+ if (unlikely (shnum > SIZE_MAX / (sizeof (Elf_Scn *)
+ + sizeof (ElfW2(LIBELFBITS,Shdr)))))
+ return 1;
+
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];
#endif
ElfW2(LIBELFBITS,Shdr) *shdr_data;
- if (change_bo || elf->state.ELFW(elf,LIBELFBITS).shdr == NULL)
+ if (change_bo || elf->state.ELFW(elf,LIBELFBITS).shdr == NULL
+ || (elf->flags & ELF_F_DIRTY))
shdr_data = (ElfW2(LIBELFBITS,Shdr) *)
alloca (shnum * sizeof (ElfW2(LIBELFBITS,Shdr)));
else
(*shdr_fctp) (&shdr_data[scn->index],
scn->shdr.ELFW(e,LIBELFBITS),
sizeof (ElfW2(LIBELFBITS,Shdr)), 1);
- else if (elf->state.ELFW(elf,LIBELFBITS).shdr == NULL)
+ else if (elf->state.ELFW(elf,LIBELFBITS).shdr == NULL
+ || (elf->flags & ELF_F_DIRTY))
memcpy (&shdr_data[scn->index], scn->shdr.ELFW(e,LIBELFBITS),
sizeof (ElfW2(LIBELFBITS,Shdr)));
/* Create descriptor for processing file.
- Copyright (C) 1998-2010, 2012 Red Hat, Inc.
+ Copyright (C) 1998-2010, 2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
if (unlikely (result == 0) && ehdr.e32->e_shoff != 0)
{
- if (ehdr.e32->e_shoff + sizeof (Elf32_Shdr) > maxsize)
+ if (unlikely (ehdr.e32->e_shoff >= maxsize)
+ || unlikely (maxsize - ehdr.e32->e_shoff < sizeof (Elf32_Shdr)))
/* Cannot read the first section header. */
return 0;
if (unlikely (result == 0) && ehdr.e64->e_shoff != 0)
{
- if (ehdr.e64->e_shoff + sizeof (Elf64_Shdr) > maxsize)
+ if (unlikely (ehdr.e64->e_shoff >= maxsize)
+ || unlikely (ehdr.e64->e_shoff + sizeof (Elf64_Shdr) > maxsize))
/* Cannot read the first section header. */
return 0;
/* Could not determine the number of sections. */
return NULL;
+ /* Check for too many sections. */
+ if (e_ident[EI_CLASS] == ELFCLASS32)
+ {
+ if (scncnt > SIZE_MAX / (sizeof (Elf_Scn) + sizeof (Elf32_Shdr)))
+ return NULL;
+ }
+ else if (scncnt > SIZE_MAX / (sizeof (Elf_Scn) + sizeof (Elf64_Shdr)))
+ return NULL;
+
/* We can now allocate the memory. Even if there are no section headers,
we allocate space for a zeroth section in case we need it later. */
const size_t scnmax = (scncnt ?: (cmd == ELF_C_RDWR || cmd == ELF_C_RDWR_MMAP)
{
/* We can use the mmapped memory. */
elf->state.elf32.ehdr = ehdr;
+
+ if (unlikely (ehdr->e_shoff >= maxsize)
+ || unlikely (maxsize - ehdr->e_shoff
+ < scncnt * sizeof (Elf32_Shdr)))
+ {
+ free_and_out:
+ free (elf);
+ __libelf_seterrno (ELF_E_INVALID_FILE);
+ return NULL;
+ }
elf->state.elf32.shdr
= (Elf32_Shdr *) ((char *) ehdr + ehdr->e_shoff);
{
/* We can use the mmapped memory. */
elf->state.elf64.ehdr = ehdr;
+
+ if (unlikely (ehdr->e_shoff >= maxsize)
+ || unlikely (ehdr->e_shoff
+ + scncnt * sizeof (Elf32_Shdr) > maxsize))
+ goto free_and_out;
elf->state.elf64.shdr
= (Elf64_Shdr *) ((char *) ehdr + ehdr->e_shoff);
|| cmd == ELF_C_WRITE_MMAP
|| cmd == ELF_C_READ_MMAP_PRIVATE);
-#if _MUDFLAP
- /* Mudflap doesn't grok that our mmap'd data is ok. */
- use_mmap = 0;
-#endif
-
if (use_mmap)
{
if (parent == NULL)
/* Return symbol table of archive.
- Copyright (C) 1998-2000, 2002, 2005, 2012 Red Hat, Inc.
+ Copyright (C) 1998-2000, 2002, 2005, 2009, 2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
size_t w = index64_p ? 8 : 4;
if (elf->map_address != NULL)
- u = *(union u *) (elf->map_address + *offp);
+ /* Use memcpy instead of pointer dereference so as not to assume the
+ field is naturally aligned within the file. */
+ memcpy (&u, elf->map_address + *offp, sizeof u);
else if ((size_t) pread_retry (elf->fildes, &u, w, *offp) != w)
return -1;
size_t index_size = atol (tmpbuf);
if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
+#if SIZE_MAX <= 4294967295U
+ || n >= SIZE_MAX / sizeof (Elf_Arsym)
+#endif
|| n * w > index_size)
{
/* This index table cannot be right since it does not fit into
else
{
file_data = (void *) (elf->map_address + off);
+ if (!ALLOW_UNALIGNED
+ && ((uintptr_t) file_data & -(uintptr_t) n) != 0)
+ file_data = memcpy (alloca (sz), elf->map_address + off, sz);
str_data = (char *) (elf->map_address + off + sz);
}
/* Return section index of section header string table.
- Copyright (C) 2002, 2005, 2009 Red Hat, Inc.
+ Copyright (C) 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
if (elf->map_address != NULL
&& elf->state.elf32.ehdr->e_ident[EI_DATA] == MY_ELFDATA
&& (ALLOW_UNALIGNED
- || (((size_t) ((char *) elf->map_address + offset))
+ || (((size_t) ((char *) elf->map_address
+ + elf->start_offset + offset))
& (__alignof__ (Elf32_Shdr) - 1)) == 0))
- /* We can directly access the memory. */
- num = ((Elf32_Shdr *) (elf->map_address + offset))->sh_link;
+ {
+ /* First see whether the information in the ELF header is
+ valid and it does not ask for too much. */
+ if (unlikely (elf->maximum_size - offset
+ < sizeof (Elf32_Shdr)))
+ {
+ /* Something is wrong. */
+ __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
+ result = -1;
+ goto out;
+ }
+
+ /* We can directly access the memory. */
+ num = ((Elf32_Shdr *) (elf->map_address + elf->start_offset
+ + offset))->sh_link;
+ }
else
{
/* We avoid reading in all the section headers. Just read
if (elf->map_address != NULL
&& elf->state.elf64.ehdr->e_ident[EI_DATA] == MY_ELFDATA
&& (ALLOW_UNALIGNED
- || (((size_t) ((char *) elf->map_address + offset))
+ || (((size_t) ((char *) elf->map_address
+ + elf->start_offset + offset))
& (__alignof__ (Elf64_Shdr) - 1)) == 0))
- /* We can directly access the memory. */
- num = ((Elf64_Shdr *) (elf->map_address + offset))->sh_link;
+ {
+ /* First see whether the information in the ELF header is
+ valid and it does not ask for too much. */
+ if (unlikely (elf->maximum_size - offset
+ < sizeof (Elf64_Shdr)))
+ {
+ /* Something is wrong. */
+ __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
+ result = -1;
+ goto out;
+ }
+
+ /* We can directly access the memory. */
+ num = ((Elf64_Shdr *) (elf->map_address + elf->start_offset
+ + offset))->sh_link;
+ }
else
{
/* We avoid reading in all the section headers. Just read
/* Append new section.
- Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
else
{
/* We must allocate a new element. */
- Elf_ScnList *newp;
+ Elf_ScnList *newp = NULL;
assert (elf->state.elf.scnincr > 0);
+ if (
+#if SIZE_MAX <= 4294967295U
+ likely (elf->state.elf.scnincr
+ < SIZE_MAX / 2 / sizeof (Elf_Scn) - sizeof (Elf_ScnList))
+#else
+ 1
+#endif
+ )
newp = (Elf_ScnList *) calloc (sizeof (Elf_ScnList)
+ ((elf->state.elf.scnincr *= 2)
* sizeof (Elf_Scn)), 1);
/* Try to map the file if this isn't done yet. */
if (elf->map_address == NULL && elf->cmd == ELF_C_WRITE_MMAP)
{
-#if _MUDFLAP
- /* Mudflap doesn't grok that our mmap'd data is ok. */
-#else
elf->map_address = mmap (NULL, size, PROT_READ | PROT_WRITE,
MAP_SHARED, elf->fildes, 0);
if (unlikely (elf->map_address == MAP_FAILED))
elf->map_address = NULL;
-#endif
}
if (elf->map_address != NULL)
extern int gelf_getclass (Elf *__elf);
-/* Return size of array of COUNT elemeents of the type denoted by TYPE
+/* Return size of array of COUNT elements of the type denoted by TYPE
in the external representation. The binary class is taken from ELF.
The result is based on version VERSION of the ELF standard. */
extern size_t gelf_fsize (Elf *__elf, Elf_Type __type, size_t __count,
goto out;
}
- *dst = ((GElf_auxv_t *) data_scn->d.d_buf)[ndx];
+ memcpy (dst, data_scn->d.d_buf + ndx * sizeof (GElf_auxv_t),
+ sizeof (GElf_auxv_t));
}
result = dst;
/* Get information from dynamic table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
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. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Dyn) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Dyn, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* The data is already in the correct form. Just make sure the
index is OK. */
- if (unlikely ((ndx + 1) * sizeof (GElf_Dyn) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, GElf_Dyn, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Get library from table at the given index.
- Copyright (C) 2004 Red Hat, Inc.
+ Copyright (C) 2004, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
/* The data is already in the correct form. Just make sure the
index is OK. */
GElf_Lib *result = NULL;
- if (unlikely ((ndx + 1) * sizeof (GElf_Lib) > data->d_size))
+ if (INVALID_NDX (ndx, GElf_Lib, data))
__libelf_seterrno (ELF_E_INVALID_INDEX);
else
{
/* Get move structure at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
/* The data is already in the correct form. Just make sure the
index is OK. */
- if (unlikely ((ndx + 1) * sizeof (GElf_Move) > data->d_size))
+ if (INVALID_NDX (ndx, GElf_Move, data))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Get REL relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (data_scn == NULL)
return NULL;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return NULL;
- }
-
if (unlikely (data_scn->d.d_type != ELF_T_REL))
{
__libelf_seterrno (ELF_E_INVALID_HANDLE);
if (scn->elf->class == ELFCLASS32)
{
/* We have to convert the data. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Rel) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Rel, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
{
/* Simply copy the data after we made sure we are actually getting
correct data. */
- if (unlikely ((ndx + 1) * sizeof (Elf64_Rel) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Rel, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
/* Get RELA relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (data_scn == NULL)
return NULL;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return NULL;
- }
-
if (unlikely (data_scn->d.d_type != ELF_T_RELA))
{
__libelf_seterrno (ELF_E_INVALID_HANDLE);
if (scn->elf->class == ELFCLASS32)
{
/* We have to convert the data. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Rela) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Rela, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
{
/* Simply copy the data after we made sure we are actually getting
correct data. */
- if (unlikely ((ndx + 1) * sizeof (Elf64_Rela) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Rela, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
/* Get symbol information from symbol table at the given index.
- Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1999.
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. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > data->d_size))
+ if (INVALID_NDX (ndx, Elf32_Sym, data))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* The data is already in the correct form. Just make sure the
index is OK. */
- if (unlikely ((ndx + 1) * sizeof (GElf_Sym) > data->d_size))
+ if (INVALID_NDX (ndx, GElf_Sym, data))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Get additional symbol information from symbol table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
/* The data is already in the correct form. Just make sure the
index is OK. */
- if (unlikely ((ndx + 1) * sizeof (GElf_Syminfo) > data->d_size))
+ if (INVALID_NDX (ndx, GElf_Syminfo, data))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Get symbol information and separate section index from symbol table
at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
section index table. */
if (likely (shndxdata_scn != NULL))
{
- if (unlikely ((ndx + 1) * sizeof (Elf32_Word) > shndxdata_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Word, &shndxdata_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
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. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > symdata->d_size))
+ if (INVALID_NDX (ndx, Elf32_Sym, symdata))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* The data is already in the correct form. Just make sure the
index is OK. */
- if (unlikely ((ndx + 1) * sizeof (GElf_Sym) > symdata->d_size))
+ if (INVALID_NDX (ndx, GElf_Sym, symdata))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Get symbol version information at the given index.
- Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1999.
/* The data is already in the correct form. Just make sure the
index is OK. */
- if (unlikely ((ndx + 1) * sizeof (GElf_Versym) > data->d_size))
+ if (INVALID_NDX (ndx, GElf_Versym, data))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
result = NULL;
/* Update information in dynamic table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (data == NULL)
return 0;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
- }
-
if (unlikely (data_scn->d.d_type != ELF_T_DYN))
{
/* The type of the data better should match. */
}
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Dyn) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Dyn, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
else
{
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf64_Dyn) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Dyn, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Update library in table at the given index.
- Copyright (C) 2004 Red Hat, Inc.
+ Copyright (C) 2004, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
if (data == NULL)
return 0;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
- }
-
Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data;
if (unlikely (data_scn->d.d_type != ELF_T_LIB))
{
/* Check whether we have to resize the data buffer. */
int result = 0;
- if (unlikely ((ndx + 1) * sizeof (Elf64_Lib) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Lib, &data_scn->d))
__libelf_seterrno (ELF_E_INVALID_INDEX);
else
{
/* Update move structure at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
assert (sizeof (GElf_Move) == sizeof (Elf64_Move));
/* Check whether we have to resize the data buffer. */
- if (unlikely (ndx < 0)
- || unlikely ((ndx + 1) * sizeof (GElf_Move) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, GElf_Move, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
return 0;
/* Update REL relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (dst == NULL)
return 0;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
- }
-
if (unlikely (data_scn->d.d_type != ELF_T_REL))
{
/* The type of the data better should match. */
}
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Rel) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Rel, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
else
{
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf64_Rel) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Rel, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Update RELA relocation information at given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (dst == NULL)
return 0;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
- }
-
if (unlikely (data_scn->d.d_type != ELF_T_RELA))
{
/* The type of the data better should match. */
}
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Rela) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Rela, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
else
{
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf64_Rela) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Rela, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Update symbol information in symbol table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (data == NULL)
return 0;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
- }
-
if (unlikely (data_scn->d.d_type != ELF_T_SYM))
{
/* The type of the data better should match. */
}
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Sym, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
else
{
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf64_Sym) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Sym, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Update additional symbol information in symbol table at the given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (data == NULL)
return 0;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
- }
-
if (unlikely (data_scn->d.d_type != ELF_T_SYMINFO))
{
/* The type of the data better should match. */
rwlock_wrlock (scn->elf->lock);
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (GElf_Syminfo) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, GElf_Syminfo, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Update symbol information and section index in symbol table at the
given index.
- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2000, 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
if (symdata == NULL)
return 0;
- if (unlikely (ndx < 0))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
- }
-
if (unlikely (symdata_scn->d.d_type != ELF_T_SYM))
{
/* The type of the data better should match. */
}
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > symdata_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf32_Sym, &symdata_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
else
{
/* Check whether we have to resize the data buffer. */
- if (unlikely ((ndx + 1) * sizeof (Elf64_Sym) > symdata_scn->d.d_size))
+ if (INVALID_NDX (ndx, Elf64_Sym, &symdata_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
goto out;
/* Update symbol version information.
- Copyright (C) 2001, 2002 Red Hat, Inc.
+ Copyright (C) 2001, 2002, 2005, 2009, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2001.
assert (sizeof (GElf_Versym) == sizeof (Elf64_Versym));
/* Check whether we have to resize the data buffer. */
- if (unlikely (ndx < 0)
- || unlikely ((ndx + 1) * sizeof (GElf_Versym) > data_scn->d.d_size))
+ if (INVALID_NDX (ndx, GElf_Versym, &data_scn->d))
{
__libelf_seterrno (ELF_E_INVALID_INDEX);
return 0;
/* Align offset to 4 bytes as needed for note name and descriptor data. */
#define NOTE_ALIGN(n) (((n) + 3) & -4U)
+/* Convenience macro. */
+#define INVALID_NDX(ndx, type, data) \
+ unlikely ((data)->d_size / sizeof (type) <= (unsigned int) (ndx))
+
#endif /* libelfP.h */
+2014-07-14 Mark Wielaard <mjw@redhat.com>
+
+ * biarch.m4 (utrace_BIARCH): Set biarch-no for cross-compile using
+ AC_RUN_IFELSE extra argument.
+
+2013-12-02 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * biarch.m4 (utrace_BIARCH): Call AC_MSG_WARN if !BIARCH.
+
+2013-11-07 Roland McGrath <roland@redhat.com>
+ Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * biarch.m4: New file.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * gettext.m4: Upgrade to gettext-0.18.2.
+ * iconv.m4: Upgrade to gettext-0.18.2.
+ * po.m4: Upgrade to gettext-0.18.2.
+
2010-04-14 Roland McGrath <roland@redhat.com>
* gettext.m4: Upgrade to gettext-0.17.
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
build_triplet = @build@
host_triplet = @host@
subdir = m4
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ChangeLog
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-tags: TAGS
-TAGS:
+tags TAGS:
+
+ctags CTAGS:
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
distdir: $(DISTFILES)
.MAKE: install-am install-strip
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
--- /dev/null
+AC_DEFUN([utrace_CC_m32], [dnl
+AC_CACHE_CHECK([$CC option for 32-bit word size], utrace_cv_CC_m32, [dnl
+save_CC="$CC"
+utrace_cv_CC_m32=none
+for ut_try in -m32 -m31; do
+ [CC=`echo "$save_CC" | sed 's/ -m[36][241]//'`" $ut_try"]
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int foo (void) { return 1; }]])],
+ [utrace_cv_CC_m32=$ut_try])
+ test x$utrace_cv_CC_m32 = xnone || break
+done
+CC="$save_CC"])])
+
+AC_DEFUN([utrace_HOST64], [AC_REQUIRE([utrace_CC_m32])
+AS_IF([test x$utrace_cv_CC_m32 != xnone], [dnl
+AC_CACHE_CHECK([for 64-bit host], utrace_cv_host64, [dnl
+AC_EGREP_CPP([@utrace_host64@], [#include <stdint.h>
+#if (UINTPTR_MAX > 0xffffffffUL)
+@utrace_host64@
+#endif],
+ utrace_cv_host64=yes, utrace_cv_host64=no)])
+AS_IF([test $utrace_cv_host64 = no],
+ [utrace_biarch=-m64 utrace_thisarch=$utrace_cv_CC_m32],
+ [utrace_biarch=$utrace_cv_CC_m32 utrace_thisarch=-m64])
+
+biarch_CC=`echo "$CC" | sed "s/ *${utrace_thisarch}//"`
+biarch_CC="$biarch_CC $utrace_biarch"])])
+
+AC_DEFUN([utrace_BIARCH], [AC_REQUIRE([utrace_HOST64])
+utrace_biarch_forced=no
+AC_ARG_WITH([biarch],
+ AC_HELP_STRING([--with-biarch],
+ [enable biarch tests despite build problems]),
+ [AS_IF([test "x$with_biarch" != xno], [utrace_biarch_forced=yes])])
+AS_IF([test $utrace_biarch_forced = yes], [dnl
+utrace_cv_cc_biarch=yes
+AC_MSG_NOTICE([enabling biarch tests regardless using $biarch_CC])], [dnl
+AS_IF([test x$utrace_cv_CC_m32 != xnone], [dnl
+AC_CACHE_CHECK([whether $biarch_CC makes executables we can run],
+ utrace_cv_cc_biarch, [dnl
+save_CC="$CC"
+CC="$biarch_CC"
+AC_RUN_IFELSE([AC_LANG_PROGRAM([], [])],
+ utrace_cv_cc_biarch=yes, utrace_cv_cc_biarch=no, utrace_cv_cc_biarch=no)
+CC="$save_CC"])], [utrace_cv_cc_biarch=no])
+AS_IF([test $utrace_cv_cc_biarch != yes], [dnl
+AC_MSG_WARN([not running biarch tests, $biarch_CC does not work])])])
+AM_CONDITIONAL(BIARCH, [test $utrace_cv_cc_biarch = yes])])
-# gettext.m4 serial 60 (gettext-0.17)
-dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
+# gettext.m4 serial 66 (gettext-0.18.2)
+dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
dnl Macro to add for using GNU gettext.
dnl 'need-formatstring-macros', then GNU gettext implementations that don't
dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
dnl INTLDIR is used to find the intl libraries. If empty,
-dnl the value `$(top_builddir)/intl/' is used.
+dnl the value '$(top_builddir)/intl/' is used.
dnl
dnl The result of the configuration is one of three cases:
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
])])])])])
+ ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+ [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
])])])])
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
])
- dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+ dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
gt_INTL_MACOSX
dnl Set USE_NLS.
gt_use_preinstalled_gnugettext=no
ifelse(gt_included_intl, yes, [
AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
+ AC_ARG_WITH([included-gettext],
[ --with-included-gettext use the GNU gettext library included here],
nls_cv_force_use_gnu_gettext=$withval,
nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+ AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
fi
AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
- [AC_TRY_LINK([#include <libintl.h>
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
$gt_revision_test_code
extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
- [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+extern int *_nl_domain_bindings;
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+ ]])],
[eval "$gt_func_gnugettext_libc=yes"],
[eval "$gt_func_gnugettext_libc=no"])])
gt_save_LIBS="$LIBS"
LIBS="$LIBS $LIBINTL"
dnl Now see whether libintl exists and does not depend on libiconv.
- AC_TRY_LINK([#include <libintl.h>
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
$gt_revision_test_code
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias (const char *);],
- [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+const char *_nl_expand_alias (const char *);
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+ ]])],
[eval "$gt_func_gnugettext_libintl=yes"],
[eval "$gt_func_gnugettext_libintl=no"])
dnl Now see whether libintl exists and depends on libiconv.
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <libintl.h>
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
$gt_revision_test_code
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias (const char *);],
- [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
- [LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- eval "$gt_func_gnugettext_libintl=yes"
- ])
+const char *_nl_expand_alias (const char *);
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+ ]])],
+ [LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
+ ])
fi
CPPFLAGS="$gt_save_CPPFLAGS"
LIBS="$gt_save_LIBS"])
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1,
+ AC_DEFINE([ENABLE_NLS], [1],
[Define to 1 if translation of program messages to the user's native language
is requested.])
else
fi
dnl For backward compatibility. Some packages may be using this.
- AC_DEFINE(HAVE_GETTEXT, 1,
+ AC_DEFINE([HAVE_GETTEXT], [1],
[Define if the GNU gettext() function is already present or preinstalled.])
- AC_DEFINE(HAVE_DCGETTEXT, 1,
+ AC_DEFINE([HAVE_DCGETTEXT], [1],
[Define if the GNU dcgettext() function is already present or preinstalled.])
fi
fi
dnl Make all variables we use known to autoconf.
- AC_SUBST(BUILD_INCLUDED_LIBINTL)
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATOBJEXT)
+ AC_SUBST([BUILD_INCLUDED_LIBINTL])
+ AC_SUBST([USE_INCLUDED_LIBINTL])
+ AC_SUBST([CATOBJEXT])
dnl For backward compatibility. Some configure.ins may be using this.
nls_cv_header_intl=
dnl For backward compatibility. Some Makefiles may be using this.
DATADIRNAME=share
- AC_SUBST(DATADIRNAME)
+ AC_SUBST([DATADIRNAME])
dnl For backward compatibility. Some Makefiles may be using this.
INSTOBJEXT=.mo
- AC_SUBST(INSTOBJEXT)
+ AC_SUBST([INSTOBJEXT])
dnl For backward compatibility. Some Makefiles may be using this.
GENCAT=gencat
- AC_SUBST(GENCAT)
+ AC_SUBST([GENCAT])
dnl For backward compatibility. Some Makefiles may be using this.
INTLOBJS=
if test "$USE_INCLUDED_LIBINTL" = yes; then
INTLOBJS="\$(GETTOBJS)"
fi
- AC_SUBST(INTLOBJS)
+ AC_SUBST([INTLOBJS])
dnl Enable libtool support if the surrounding package wishes it.
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
- AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+ AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
])
dnl For backward compatibility. Some Makefiles may be using this.
INTLLIBS="$LIBINTL"
- AC_SUBST(INTLLIBS)
+ AC_SUBST([INTLLIBS])
dnl Make all documented variables known to autoconf.
- AC_SUBST(LIBINTL)
- AC_SUBST(LTLIBINTL)
- AC_SUBST(POSUB)
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ AC_SUBST([POSUB])
])
-# iconv.m4 serial AM6 (gettext-0.17)
-dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
+# iconv.m4 serial 18 (gettext-0.18.2)
+dnl Copyright (C) 2000-2002, 2007-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
dnl because if the user has installed libiconv and not disabled its use
dnl via --without-libiconv-prefix, he wants to use it. The first
- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+ dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
am_save_CPPFLAGS="$CPPFLAGS"
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
- AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
+ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_func_iconv=yes)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
+ [am_cv_func_iconv=yes])
if test "$am_cv_func_iconv" != yes; then
am_save_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes)
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
+ [am_cv_lib_iconv=yes]
+ [am_cv_func_iconv=yes])
LIBS="$am_save_LIBS"
fi
])
if test "$am_cv_func_iconv" = yes; then
- AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
- dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
+ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
+ dnl Solaris 10.
am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
- AC_TRY_RUN([
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
#include <iconv.h>
#include <string.h>
int main ()
{
+ int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
returns. */
{
(char **) &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
- return 1;
+ result |= 1;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\263";
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_ascii_to_88591);
+ }
+ }
+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ const char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+ result |= 4;
+ iconv_close (cd_88591_to_utf8);
}
}
#if 0 /* This bug could be worked around by the caller. */
(char **) &inptr, &inbytesleft,
&outptr, &outbytesleft);
if ((int)res > 0)
- return 1;
+ result |= 8;
+ iconv_close (cd_88591_to_utf8);
}
}
#endif
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
/* Try HP-UX names. */
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- return 1;
- return 0;
-}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
- [case "$host_os" in
+ result |= 16;
+ return result;
+}]])],
+ [am_cv_func_iconv_works=yes],
+ [am_cv_func_iconv_works=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
*) am_cv_func_iconv_works="guessing yes" ;;
- esac])
+ esac
+changequote([,])dnl
+ ])
LIBS="$am_save_LIBS"
])
case "$am_cv_func_iconv_works" in
am_func_iconv=no am_cv_lib_iconv=no
fi
if test "$am_func_iconv" = yes; then
- AC_DEFINE(HAVE_ICONV, 1,
+ AC_DEFINE([HAVE_ICONV], [1],
[Define if you have the iconv() function and it works.])
fi
if test "$am_cv_lib_iconv" = yes; then
LIBICONV=
LTLIBICONV=
fi
- AC_SUBST(LIBICONV)
- AC_SUBST(LTLIBICONV)
+ AC_SUBST([LIBICONV])
+ AC_SUBST([LTLIBICONV])
])
-AC_DEFUN([AM_ICONV],
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl warnings.
+m4_define([gl_iconv_AC_DEFUN],
+ m4_version_prereq([2.64],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [m4_ifdef([gl_00GNULIB],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [[AC_DEFUN(
+ [$1], [$2])]])]))
+gl_iconv_AC_DEFUN([AM_ICONV],
[
AM_ICONV_LINK
if test "$am_cv_func_iconv" = yes; then
AC_MSG_CHECKING([for iconv declaration])
- AC_CACHE_VAL(am_cv_proto_iconv, [
- AC_TRY_COMPILE([
+ AC_CACHE_VAL([am_cv_proto_iconv], [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
#include <stdlib.h>
#include <iconv.h>
extern
#ifdef __cplusplus
"C"
#endif
-#if defined(__STDC__) || defined(__cplusplus)
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
#else
size_t iconv();
#endif
-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+ ]],
+ [[]])],
+ [am_cv_proto_iconv_arg1=""],
+ [am_cv_proto_iconv_arg1="const"])
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- AC_MSG_RESULT([$]{ac_t:-
- }[$]am_cv_proto_iconv)
- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+ AC_MSG_RESULT([
+ $am_cv_proto_iconv])
+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
[Define as const if the declaration of iconv() needs const.])
+ dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
+ m4_ifdef([gl_ICONV_H_DEFAULTS],
+ [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ if test -n "$am_cv_proto_iconv_arg1"; then
+ ICONV_CONST="const"
+ fi
+ ])
fi
])
-# po.m4 serial 15 (gettext-0.17)
-dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
+# po.m4 serial 20 (gettext-0.18.2)
+dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-AC_PREREQ(2.50)
+AC_PREREQ([2.60])
dnl Checks for all prerequisites of the po subdirectory.
AC_DEFUN([AM_PO_SUBDIRS],
[
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
AC_REQUIRE([AM_NLS])dnl
dnl Release version of the gettext macros. This is used to ensure that
dnl the gettext macros and po/Makefile.in.in are in sync.
- AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
dnl Perform the following tests also if --disable-nls has been given,
dnl because they are needed for "make dist" to work.
[$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
:)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
dnl Test whether it is GNU msgfmt >= 0.15.
changequote(,)dnl
case "$ac_file" in */Makefile.in)
# Adjust a relative srcdir.
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
# In autoconf-2.13 it is called $ac_given_srcdir.
# In autoconf-2.50 it is called $srcdir.
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
rm -f "$ac_dir/POTFILES"
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ gt_tab=`printf '\t'`
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
POMAKEFILEDEPS="POTFILES.in"
# ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
# on $ac_dir but don't depend on user-specified configuration
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
fi
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
else
# The set of available languages was given in configure.in.
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
fi
# Compute POFILES
changequote(,)dnl
# Adjust a relative srcdir.
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
# In autoconf-2.13 it is called $ac_given_srcdir.
# In autoconf-2.50 it is called $srcdir.
fi
# A sed script that extracts the value of VARIABLE from a Makefile.
+ tab=`printf '\t'`
sed_x_variable='
# Test if the hold space is empty.
x
x
ta
# Yes it was empty. Look if we have the expected variable definition.
-/^[ ]*VARIABLE[ ]*=/{
+/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
# Seen the first line of the variable definition.
- s/^[ ]*VARIABLE[ ]*=//
+ s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
ba
}
bd
sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
fi
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ # Hide the ALL_LINGUAS assignment from automake < 1.5.
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
# Compute POFILES
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
fi
sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+ tab=`printf '\t'`
if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
# Add dependencies that cannot be formulated as a simple suffix rule.
for lang in $ALL_LINGUAS; do
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
cat >> "$ac_file.tmp" <<EOF
$frobbedlang.msg: $lang.po
- @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
- \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
EOF
done
fi
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
cat >> "$ac_file.tmp" <<EOF
$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
- @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
- \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
EOF
done
fi
+2014-08-25 Mark Wielaard <mjw@redhat.com>
+
+ * *.po: Update for 0.160.
+
+2014-05-20 Mark Wielaard <mjw@redhat.com>
+
+ * *.po: Regenerated.
+
+2014-05-17 Mark Wielaard <mjw@redhat.com>
+
+ * *.po: Update for 0.159.
+
+2014-01-03 Mark Wielaard <mjw@redhat.com>
+
+ * *.po: Update for 0.158.
+
+2013-07-30 Mark Wielaard <mjw@redhat.com>
+
+ * *.po: Update for 0.157.
+
+2013-07-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * *.po: Update for 0.156.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.in.in: Upgrade to gettext-0.18.2.
+
2012-08-27 Mark Wielaard <mjw@redhat.com>
* *.po: Update for 0.155.
# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public
# Please note that the actual code of GNU gettext is covered by the GNU
# General Public License and is *not* in the public domain.
#
-# Origin: gettext-0.17
-GETTEXT_MACRO_VERSION = 0.17
+# Origin: gettext-0.18.2
+GETTEXT_MACRO_VERSION = 0.18
PACKAGE = @PACKAGE@
VERSION = @VERSION@
.po.gmo:
@lang=`echo $* | sed -e 's,.*/,,'`; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
.sin.sed:
sed -e '/^#/d' $< > t-$@
mv t-$@ $@
-all: check-macro-version all-@USE_NLS@
+all: all-@USE_NLS@
all-yes: stamp-po
all-no:
# Ensure that the gettext macros and this Makefile.in.in are in sync.
-check-macro-version:
- @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+CHECK_MACRO_VERSION = \
+ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
|| { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
exit 1; \
}
# $(POFILES) has been designed to not touch files that don't need to be
# changed.
stamp-po: $(srcdir)/$(DOMAIN).pot
+ @$(CHECK_MACRO_VERSION)
test ! -f $(srcdir)/$(DOMAIN).pot || \
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+# The determination of whether the package xyz is a GNU one is based on the
+# heuristic whether some file in the top level directory mentions "GNU xyz".
+# If GNU 'find' is available, we avoid grepping through monster files.
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
- if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
+ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
+ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
+ else \
+ LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
+ fi; \
+ } | grep -v 'libtool:' >/dev/null; then \
package_gnu='GNU '; \
else \
package_gnu=''; \
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
if test -f "$(srcdir)/$${lang}.po"; then \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
- cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) \
+ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+ esac; \
+ }; \
else \
$(MAKE) $${lang}.po-create; \
fi
fi
install-data-no: all
install-data-yes: all
- $(mkdir_p) $(DESTDIR)$(datadir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
fi
installdirs-data-no:
installdirs-data-yes:
- $(mkdir_p) $(DESTDIR)$(datadir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
tmpdir=`pwd`; \
echo "$$lang:"; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
cd $(srcdir); \
- if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ esac; \
+ }; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
update-gmo: Makefile $(GMOFILES)
@:
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
cd $(top_builddir) \
- && $(SHELL) ./config.status $(subdir)/$@.in po-directories
+ && @SHELL@ ./config.status $(subdir)/$@.in po-directories
force:
msgstr ""
"Project-Id-Version: elfutils VERSION\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
"PO-Revision-Date: 2009-06-29 15:15+0200\n"
"Last-Translator: Michael Münch <micm@fedoraproject.org>\n"
"Language-Team: German\n"
-"Language: \n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 0.3\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr "Kein Speicher mehr verfügbar"
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr "kein Fehler"
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr "nicht genügend Speicher"
msgid "no backend support available"
msgstr "keine Backend-Unterstützung verfügbar"
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr "unbekannter Fehler"
msgid "invalid directory index"
msgstr "ungültiger Verzeichnisindex"
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr "Außerhalb des Adressbereiches"
msgid "invalid address range index"
msgstr "Ungültiger Adressbereichs Index"
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr "Kein passender Adressbereich"
msgid "no alternative debug link found"
msgstr ""
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr "Eingabeauswahloptionen:"
msgid "Search path for separate debuginfo files"
msgstr "Dateisuchpfad für separate Debug-Informationen"
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "Nur eine Option von -e, -p, -k, -K, oder --core erlaubt"
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr "Konnte ELF Kerndatei %s nicht lesen"
-
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
-msgstr "Keine Module in der Kerndatei gefunden"
-
-#: libdwfl/argp-std.c:232
+#: libdwfl/argp-std.c:230
msgid "cannot load kernel symbols"
msgstr "Konnte Kernel Symbole nicht laden"
-#: libdwfl/argp-std.c:236
+#: libdwfl/argp-std.c:234
msgid "cannot find kernel modules"
msgstr "Konnte Kernel Module nicht finden"
-#: libdwfl/argp-std.c:250
+#: libdwfl/argp-std.c:251
msgid "cannot find kernel or modules"
msgstr "Konnte Kernel oder Module nicht finden"
-#: libdwfl/libdwflP.h:52
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "Konnte ELF Kerndatei %s nicht lesen"
+
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
+msgstr "Keine Module in der Kerndatei gefunden"
+
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr ""
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr ""
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr ""
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr ""
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr ""
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr ""
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr ""
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr ""
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr "Offset ausserhalb des Bereichs"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
#, fuzzy
msgid "relocation refers to undefined symbol"
msgstr "Zeige Grösse der definierten Symbole"
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr ""
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
#, fuzzy
msgid "No DWARF information found"
msgstr "keine DWARF Information"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr ""
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
#, fuzzy
msgid "No ELF program headers"
msgstr "Programm-Köpfe anzeigen"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr ""
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr ""
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
#, fuzzy
msgid "ELF file opened"
msgstr "keine ELF Datei"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
#, fuzzy
msgid "not a valid ELF file"
msgstr "Ungültige ELF Datei"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
#, fuzzy
msgid "cannot handle DWARF type description"
msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr ""
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
#, fuzzy
msgid "corrupt .gnu.prelink_undo section data"
msgstr "konnte Abschnittsdaten nicht holen: %s"
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr ""
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr ""
+
+#: libdwfl/libdwflP.h:84
+#, fuzzy
+msgid "Invalid register"
+msgstr "ungültiger Parameter"
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr ""
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr ""
+
+#: libdwfl/libdwflP.h:88
+#, fuzzy
+msgid "Invalid DWARF"
+msgstr "DWARF ungültig"
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr ""
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr ""
+
+#: libdwfl/libdwflP.h:94
+#, fuzzy
+msgid "Invalid argument"
+msgstr "ungültiger Parameter"
+
+#: libdwfl/libdwflP.h:95
+#, fuzzy
+msgid "Not an ET_CORE ELF file"
+msgstr "Ungültige ELF Datei"
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr "Kein Backend"
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
msgid "invalid size of destination operand"
msgstr "ungültige Grösse des Ziel-Operanden"
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr "ungültige Kodierung"
msgid "invalid section header"
msgstr "ungültiger Abschnitts-Header"
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr "Ungültige Daten"
msgstr ""
#: src/addr2line.c:64
+msgid "Also show symbol and the section names"
+msgstr ""
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr ""
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr ""
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr "Verschiedenes:"
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr ""
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr ""
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"GARANTIE,\n"
"auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr "Geschrieben von %s.\n"
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, fuzzy, c-format
msgid "Section syntax requires exactly one module"
msgstr "Abschnitt syntax benötigt genau ein Modul"
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr ""
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr "Konnte Symbol '%s' nicht finden"
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr ""
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr "'%s' kann nicht geöffnet werden"
msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
msgstr ""
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr "DATEI..."
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr "Kann Eingabedatei nicht öffnen"
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr "kann Elf-Deskriptor nicht erzeugen: %s\n"
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr "Keine Fehler"
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr "Dateiname fehlt.\n"
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr ""
-#: src/elflint.c:302
+#: src/elflint.c:306
#, fuzzy, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr "Keine ELF-Datei - sie hat die falschen Magic Bytes am Anfang\n"
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr ""
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr ""
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr ""
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr ""
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr ""
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr "e_ident[%zu] ist nicht null\n"
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr ""
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr ""
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr ""
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr ""
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr ""
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr ""
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr ""
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr ""
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr ""
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr ""
-#: src/elflint.c:473
+#: src/elflint.c:481
#, fuzzy, c-format
msgid "invalid number of program header table entries\n"
msgstr "Ungültige Anzahl von Parametern.\n"
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr ""
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr ""
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr ""
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr ""
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr ""
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr ""
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"group\n"
msgstr ""
-#: src/elflint.c:566
+#: src/elflint.c:574
#, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
msgstr ""
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr ""
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"type is not SHT_STRTAB\n"
msgstr ""
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"section\n"
msgstr ""
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr ""
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr ""
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr ""
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr ""
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr ""
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr ""
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"section index section\n"
msgstr ""
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"st_shndx (%<PRIu32>)\n"
msgstr ""
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr ""
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr ""
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr ""
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr ""
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
msgstr ""
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr ""
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
msgstr ""
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr ""
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"SHF_TLS flag set\n"
msgstr ""
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
msgstr ""
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"sh_info\n"
msgstr ""
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"sh_info\n"
msgstr ""
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr ""
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"[%2d]\n"
msgstr ""
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"match %s section address %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"match %s section size %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"section\n"
msgstr ""
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"segment address %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"segment size %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"default visibility\n"
msgstr ""
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr ""
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr ""
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"DT_RELCOUNT\n"
msgstr ""
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"specified %d relative relocations\n"
msgstr ""
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr ""
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr ""
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr ""
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr ""
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr ""
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr ""
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"type\n"
msgstr ""
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr ""
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"be used with %s\n"
msgstr ""
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr ""
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"%s\n"
msgstr ""
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"relocation flag not set\n"
msgstr ""
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr ""
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr ""
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr ""
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr ""
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr ""
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr ""
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr ""
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
msgstr ""
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"[%2d] '%s' referenced by sh_link\n"
msgstr ""
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr ""
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr ""
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr ""
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr ""
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
msgstr ""
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr ""
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr ""
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"same symbol table\n"
msgstr ""
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr ""
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr ""
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
msgstr ""
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr ""
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr ""
-#: src/elflint.c:2030
+#: src/elflint.c:2092
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
msgstr ""
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"undefined\n"
msgstr ""
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr ""
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr ""
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"entries\n"
msgstr ""
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr ""
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr ""
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
msgstr ""
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr ""
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr ""
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr ""
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr ""
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr ""
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr ""
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr ""
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr ""
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr ""
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr ""
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr ""
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr ""
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"SHF_GROUP flag set\n"
msgstr ""
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr ""
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr ""
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr ""
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr ""
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr ""
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr ""
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr ""
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr ""
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr ""
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"reference\n"
msgstr ""
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"%#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"name '%s'\n"
msgstr ""
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr ""
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr ""
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr ""
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr ""
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr ""
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr ""
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr ""
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr ""
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
msgstr ""
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr ""
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
msgstr ""
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr ""
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr ""
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr ""
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
msgstr ""
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr ""
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr ""
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr ""
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr ""
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr ""
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr ""
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr ""
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr ""
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"value\n"
msgstr ""
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in shstrndx\n"
msgstr ""
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in phnum\n"
msgstr ""
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr ""
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr ""
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
msgstr ""
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr ""
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
msgstr ""
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"segments\n"
msgstr ""
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
msgstr ""
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr ""
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr ""
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr ""
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr ""
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr ""
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"%d\n"
msgstr ""
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"program header entry %d\n"
msgstr ""
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"segment of program header entry %d\n"
msgstr ""
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr ""
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
msgstr ""
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"but type is not SHT_TYPE\n"
msgstr ""
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
msgstr ""
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr ""
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr ""
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"exist\n"
msgstr ""
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr ""
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr ""
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr ""
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
msgstr ""
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr ""
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr ""
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr ""
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr ""
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr ""
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr ""
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr ""
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr ""
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr ""
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr ""
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr ""
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr ""
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr ""
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr ""
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr ""
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr ""
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"alignment\n"
msgstr ""
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"program header entry"
msgstr ""
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr ""
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr ""
msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
msgstr ""
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr ""
msgid "cannot get header of 0th section: %s"
msgstr ""
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr ""
msgstr "%s: INTERNER FEHLER %d (%s-%s): %s"
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr "beim Schliessen von '%s'"
msgid "cannot create search tree"
msgstr "Kann Suchbaum nicht erstellen"
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr ""
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"Symbole aus %s:\n"
"\n"
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"\n"
msgstr ""
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr "%s: entry size in section `%s' is not what we expect"
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr ""
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: Ungültige Operation"
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: keine Symbole"
msgid "Show information from FILEs (a.out by default)."
msgstr ""
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr "Keine Operation angegeben.\n"
msgid "while close `%s'"
msgstr ""
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr ""
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr ""
msgid "error while freeing sub-ELF descriptor: %s"
msgstr ""
-#: src/readelf.c:67
+#: src/readelf.c:71
+#, fuzzy
+msgid "ELF input selection:"
+msgstr "Eingabeauswahloptionen:"
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+
+#: src/readelf.c:75
#, fuzzy
msgid "ELF output selection:"
msgstr "Eingabeauswahloptionen:"
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr ""
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr ""
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr ""
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr ""
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr "Programm-Köpfe anzeigen"
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr "Relocations anzeigen"
-#: src/readelf.c:77
+#: src/readelf.c:85
#, fuzzy
msgid "Display the sections' headers"
msgstr "Programm-Köpfe anzeigen"
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr "Symboltabelle anzeigen"
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr "Versionierungsinformationen anzeigen"
-#: src/readelf.c:81
+#: src/readelf.c:89
#, fuzzy
msgid "Display the ELF notes"
msgstr "Kernnotizen anzeigen"
-#: src/readelf.c:83
+#: src/readelf.c:91
#, fuzzy
msgid "Display architecture specific information, if any"
msgstr "Architekturspezifische Informationen anzeigen (falls vorhanden)"
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr "Abschnitte für Ausnahmebehandlung anzeigen"
-#: src/readelf.c:87
+#: src/readelf.c:95
msgid "Additional output selection:"
msgstr ""
-#: src/readelf.c:89
+#: src/readelf.c:97
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr ""
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr ""
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr "Symbolindex des Archivs anzeigen"
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr "Ausgabekontrolle:"
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
msgstr "Keine symbolischen Namen für Adressen in DWARF-Daten suchen"
-#: src/readelf.c:104
+#: src/readelf.c:112
+#, fuzzy
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr "Keine symbolischen Namen für Adressen in DWARF-Daten suchen"
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
msgstr ""
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr "Informationen aus der ELF-Datei in menschenlesbarer Form ausgeben."
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr ""
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
+msgid "cannot get section: %s"
+msgstr ""
+
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
msgstr ""
-#: src/readelf.c:493
+#: src/readelf.c:562
+#, fuzzy, c-format
+msgid "cannot get section name"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr ""
+
+#: src/readelf.c:587
+#, fuzzy, c-format
+msgid "cannot create temp file '%s'"
+msgstr "neue Datei konnte nicht angelegt werden"
+
+#: src/readelf.c:596
+#, fuzzy, c-format
+msgid "cannot write section data"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
+
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr ""
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, fuzzy, c-format
+msgid "error while rewinding file descriptor"
+msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr ""
+
+#: src/readelf.c:742
+#, fuzzy, c-format
+msgid "No such section '%s' in '%s'"
+msgstr "konnte Abschnittsdaten nicht holen: %s"
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr ""
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr ""
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr "Konnte '%s' nicht lesen: %s"
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr ""
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr ""
-#: src/readelf.c:646
+#: src/readelf.c:835
#, fuzzy, c-format
msgid "cannot determine number of program headers: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr ""
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr ""
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr ""
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr ""
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr ""
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr ""
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr ""
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
msgstr ""
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
" Class: %s\n"
msgstr ""
-#: src/readelf.c:762
+#: src/readelf.c:951
#, fuzzy, c-format
msgid " Data: %s\n"
msgstr " Daten: %s\n"
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr ""
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr "(aktuell)"
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr ""
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr ""
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr " Typ: "
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr ""
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr ""
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr ""
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr ""
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr ""
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr ""
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr "(Bytes)"
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:807
+#: src/readelf.c:996
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr ""
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr ""
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr ""
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr ""
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr ""
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr ""
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
"\n"
msgstr ""
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
"\n"
msgstr ""
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"\n"
msgstr ""
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr ""
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
msgstr ""
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
msgstr ""
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr ""
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr "Programm-Köpfe:"
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
msgstr ""
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr ""
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" Segment Sections..."
msgstr ""
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr ""
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr ""
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr ""
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, fuzzy, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "ungültige .debug_line Sektion"
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr ""
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr ""
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr ""
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr ""
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr ""
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr ""
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"Invalid symbol table at offset %#0<PRIx64>\n"
msgstr ""
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr ""
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr ""
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr ""
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr ""
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr ""
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr ""
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr ""
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr "keine"
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr "| <unbekannt>"
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, fuzzy, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Version: %hu Datei: %s Cnt: %hu\n"
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Name: %s Flags: %s Version: %hu\n"
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr ""
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr ""
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr " 0 *lokal* "
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr " 1 *global* "
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr ""
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
"\t\t\t unsuccessful lookup: %f\n"
msgstr ""
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr ""
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
msgstr ""
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
msgstr ""
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"%#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr ""
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " File: %11<PRIu32>\n"
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr "%s+%#<PRIx64> <%s>"
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr "%s+%#0*<PRIx64> <%s>"
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr "%#<PRIx64> <%s>"
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr "%#0*<PRIx64> <%s>"
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr "%s+%#<PRIx64>"
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr ""
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr ""
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr ""
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr ""
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr ""
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr ""
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr ""
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr ""
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
" [ Code]\n"
msgstr ""
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"Abbreviation section at offset %<PRIu64>:\n"
msgstr ""
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr ""
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr ""
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr "ja"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr "nein"
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr ""
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
-#: src/readelf.c:4219
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
-msgid "cannot get .debug_ranges content: %s"
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4569 src/readelf.c:6171
#, c-format
msgid ""
"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"Table at offset %Zu:\n"
+msgstr ""
+
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
msgstr ""
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4589
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4601
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4616
+#, fuzzy, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4622
+#, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr ""
+
+#: src/readelf.c:4626
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "Kein Adress-Wert"
+
+#: src/readelf.c:4631
+#, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr ""
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4675
+#, fuzzy, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4678
+#, fuzzy, c-format
+msgid " %s..%s\n"
+msgstr " [%6tx] %s..%s\n"
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr ""
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr ""
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr ""
+#: src/readelf.c:5210
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "ELF Kopf konnte nicht ausgelesen werden"
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
" [%6tx] Zero terminator\n"
msgstr ""
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, fuzzy, c-format
msgid "invalid augmentation length"
msgstr "ungültige Abschnittsausrichtung"
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr ""
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr ""
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr ""
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr ""
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr ""
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
" [Offset]\n"
msgstr ""
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
" Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
"%<PRIu8>, Offset size: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr ""
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr ""
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr ""
-#: src/readelf.c:5518
+#: src/readelf.c:6059
#, c-format
-msgid "cannot get line data section data: %s"
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
-#: src/readelf.c:5531
+#: src/readelf.c:6158
#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
+msgid "cannot get line data section data: %s"
msgstr ""
-#: src/readelf.c:5586
+#: src/readelf.c:6226
#, c-format
msgid ""
"\n"
"Opcodes:\n"
msgstr ""
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr ""
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
msgstr ""
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
" Entry Dir Time Size Name"
msgstr ""
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
msgstr ""
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr ""
-#: src/readelf.c:5781
+#: src/readelf.c:6421
msgid " end of sequence"
msgstr ""
-#: src/readelf.c:5798
+#: src/readelf.c:6438
#, c-format
msgid " set address to %s\n"
msgstr ""
-#: src/readelf.c:5819
+#: src/readelf.c:6459
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, c-format
msgid " set discriminator to %u\n"
msgstr ""
-#: src/readelf.c:5837
+#: src/readelf.c:6477
#, fuzzy
msgid " unknown opcode"
msgstr "unbekannter Typ"
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr ""
-#: src/readelf.c:5860
+#: src/readelf.c:6500
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr ""
-#: src/readelf.c:5864
+#: src/readelf.c:6504
#, c-format
msgid " advance address by %u to %s\n"
msgstr ""
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr ""
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr ""
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr ""
-#: src/readelf.c:5915
+#: src/readelf.c:6555
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr ""
-#: src/readelf.c:5919
+#: src/readelf.c:6559
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr ""
-#: src/readelf.c:5937
+#: src/readelf.c:6577
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr ""
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr ""
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr ""
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, c-format
msgid " set isa to %u\n"
msgstr ""
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr ""
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:6080
+#: src/readelf.c:6725
msgid " <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr ""
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr ""
-#: src/readelf.c:6327
+#: src/readelf.c:6972
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:6339
+#: src/readelf.c:6984
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:6352
+#: src/readelf.c:6997
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:6355
+#: src/readelf.c:7000
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:6363
+#: src/readelf.c:7008
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr ""
-#: src/readelf.c:6375
+#: src/readelf.c:7021
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr ""
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:6394
+#: src/readelf.c:7040
#, c-format
msgid " %<PRIu8> arguments:"
msgstr ""
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
msgstr ""
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, c-format
msgid ""
"\n"
" %*s String\n"
msgstr ""
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr ""
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
msgstr ""
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"Exception handling table section [%2zu] '.gcc_except_table':\n"
msgstr ""
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr ""
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr ""
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr ""
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
msgstr ""
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" Action: %u\n"
msgstr ""
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr ""
-#: src/readelf.c:7019
+#: src/readelf.c:7665
#, c-format
msgid ""
"\n"
"GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
msgstr ""
-#: src/readelf.c:7048
+#: src/readelf.c:7694
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7064
+#: src/readelf.c:7712
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7071
+#: src/readelf.c:7719
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7078
+#: src/readelf.c:7726
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7085
+#: src/readelf.c:7733
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7092
+#: src/readelf.c:7740
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7099
+#: src/readelf.c:7747
#, c-format
msgid ""
"\n"
" CU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:7121
+#: src/readelf.c:7769
#, c-format
msgid ""
"\n"
" TU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:7147
+#: src/readelf.c:7795
#, c-format
msgid ""
"\n"
" Address list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:7174
+#: src/readelf.c:7824
#, c-format
msgid ""
"\n"
" Symbol table at offset %#<PRIx32> contains %zu slots:\n"
msgstr ""
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr ""
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr ""
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"%*s... <repeats %u more times> ..."
msgstr ""
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr ""
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr ""
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr ""
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"Section [%Zu] '%s' has no data to dump.\n"
msgstr ""
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr ""
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, c-format
msgid ""
"\n"
"Section [%Zu] '%s' has no strings to dump.\n"
msgstr ""
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"section [%lu] does not exist"
msgstr ""
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"section '%s' does not exist"
msgstr ""
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr ""
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"Archive '%s' has no symbol index\n"
msgstr ""
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"Index of archive '%s' has %Zu entries:\n"
msgstr ""
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr ""
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr ""
msgid "%s: file format not recognized"
msgstr ""
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr ""
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr ""
msgid "Print the strings of printable characters in files."
msgstr ""
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr ""
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr ""
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr "lseek64 fehlgeschlagen"
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr "re-mmap fehlgeschlagen"
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr "mprotect fehlgeschlagen"
msgid "-F option specified twice"
msgstr ""
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr ""
msgid "%s: cannot use -o or -f when stripping archive"
msgstr ""
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr ""
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr ""
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr ""
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr ""
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr ""
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr ""
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr ""
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr ""
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr ""
-#: src/strip.c:1724
+#: src/strip.c:1752
#, fuzzy, c-format
msgid "bad relocation"
msgstr "Relocations anzeigen"
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr ""
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr ""
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr ""
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr ""
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, fuzzy, c-format
msgid "while writing '%s'"
msgstr "beim Schliessen von '%s'"
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr ""
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr ""
msgid "Only list module and file names, build IDs"
msgstr ""
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr ""
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr "Option -d zweimal angegeben"
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr "nur entweder -o oder -d erlaubt"
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "-n kann nicht mit expliziten Dateien oder -o oder -d verwendet werden"
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr "Ausgabeverzeichnis '%s'"
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr "genau zwei Datei-Argumente werden benötigt"
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr ""
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr ""
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr ""
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr ""
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr "konnte Programm-Kopf nicht erstellen: %s"
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr "konnte Programm-Kopf nicht kopieren: %s"
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr ""
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr "konnte Abschnittsdaten nicht kopieren: %s"
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr "konnte Verzeichnis nicht erstellen: %s"
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s"
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr "konnte Symboltabelle nicht aktualisieren: %s"
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr ""
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr ""
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr ""
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr ""
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr ""
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr ""
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr ""
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr ""
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr ""
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr ""
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr ""
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr ""
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr ""
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr ""
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr ""
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, fuzzy, c-format
msgid "cannot read section data: %s"
msgstr "konnte Abschnittsdaten nicht holen: %s"
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr ""
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr "konnte Programm-Kopf nicht aktualisieren: %s"
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr ""
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr ""
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
+#: src/unstrip.c:1955
+msgid "WARNING: "
+msgstr ""
+
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
msgstr ""
-#: src/unstrip.c:1994
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr ""
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr "kein passendes Modul gefunden"
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr "mehr als ein passendes Modul"
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
msgstr ""
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
"was found, or . if FILE contains the debug information."
msgstr ""
+#, fuzzy
+#~ msgid "cannot attach to process"
+#~ msgstr "Kann Suchbaum nicht erstellen"
+
+#, fuzzy
+#~ msgid "cannot attach to core"
+#~ msgstr "Kann Suchbaum nicht erstellen"
+
#~ msgid "unknown tag %hx"
#~ msgstr "unbekannter Tag %hx"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: elfutils 0.155\n"
+"Project-Id-Version: elfutils 0.160\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr ""
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr ""
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr ""
msgid "no backend support available"
msgstr ""
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr ""
msgid "invalid directory index"
msgstr ""
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr ""
msgid "invalid address range index"
msgstr ""
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr ""
msgid "no alternative debug link found"
msgstr ""
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr ""
msgid "Search path for separate debuginfo files"
msgstr ""
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr ""
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
+#: libdwfl/argp-std.c:230
+msgid "cannot load kernel symbols"
msgstr ""
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
+#: libdwfl/argp-std.c:234
+msgid "cannot find kernel modules"
msgstr ""
-#: libdwfl/argp-std.c:232
-msgid "cannot load kernel symbols"
+#: libdwfl/argp-std.c:251
+msgid "cannot find kernel or modules"
msgstr ""
-#: libdwfl/argp-std.c:236
-msgid "cannot find kernel modules"
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
msgstr ""
-#: libdwfl/argp-std.c:250
-msgid "cannot find kernel or modules"
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
msgstr ""
-#: libdwfl/libdwflP.h:52
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr ""
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr ""
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr ""
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr ""
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr ""
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr ""
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr ""
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr ""
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr ""
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
msgid "relocation refers to undefined symbol"
msgstr ""
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr ""
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
msgid "No DWARF information found"
msgstr ""
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr ""
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
msgid "No ELF program headers"
msgstr ""
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr ""
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr ""
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
msgid "ELF file opened"
msgstr ""
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
msgid "not a valid ELF file"
msgstr ""
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
msgid "cannot handle DWARF type description"
msgstr ""
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr ""
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
msgid "corrupt .gnu.prelink_undo section data"
msgstr ""
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr ""
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr ""
+
+#: libdwfl/libdwflP.h:84
+msgid "Invalid register"
+msgstr ""
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr ""
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr ""
+
+#: libdwfl/libdwflP.h:88
+msgid "Invalid DWARF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr ""
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr ""
+
+#: libdwfl/libdwflP.h:94
+msgid "Invalid argument"
+msgstr ""
+
+#: libdwfl/libdwflP.h:95
+msgid "Not an ET_CORE ELF file"
+msgstr ""
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr ""
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
msgid "invalid size of destination operand"
msgstr ""
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr ""
msgid "invalid section header"
msgstr ""
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr ""
msgstr ""
#: src/addr2line.c:64
+msgid "Also show symbol and the section names"
+msgstr ""
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr ""
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr ""
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr ""
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr ""
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr ""
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr ""
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, c-format
msgid "Section syntax requires exactly one module"
msgstr ""
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr ""
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr ""
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr ""
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr ""
msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
msgstr ""
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr ""
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr ""
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr ""
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr ""
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr ""
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr ""
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr ""
-#: src/elflint.c:302
+#: src/elflint.c:306
#, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr ""
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr ""
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr ""
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr ""
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr ""
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr ""
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr ""
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr ""
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr ""
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr ""
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr ""
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr ""
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr ""
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr ""
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr ""
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr ""
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr ""
-#: src/elflint.c:473
+#: src/elflint.c:481
#, c-format
msgid "invalid number of program header table entries\n"
msgstr ""
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr ""
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr ""
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr ""
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr ""
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr ""
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr ""
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"group\n"
msgstr ""
-#: src/elflint.c:566
+#: src/elflint.c:574
#, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
msgstr ""
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr ""
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"type is not SHT_STRTAB\n"
msgstr ""
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"section\n"
msgstr ""
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr ""
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr ""
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr ""
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr ""
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr ""
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr ""
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"section index section\n"
msgstr ""
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"st_shndx (%<PRIu32>)\n"
msgstr ""
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr ""
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr ""
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr ""
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr ""
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
msgstr ""
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr ""
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
msgstr ""
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr ""
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"SHF_TLS flag set\n"
msgstr ""
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
msgstr ""
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"sh_info\n"
msgstr ""
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"sh_info\n"
msgstr ""
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr ""
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"[%2d]\n"
msgstr ""
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"match %s section address %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"match %s section size %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"section\n"
msgstr ""
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"segment address %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"segment size %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"default visibility\n"
msgstr ""
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr ""
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr ""
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"DT_RELCOUNT\n"
msgstr ""
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"specified %d relative relocations\n"
msgstr ""
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr ""
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr ""
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr ""
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr ""
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr ""
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr ""
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"type\n"
msgstr ""
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr ""
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"be used with %s\n"
msgstr ""
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr ""
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"%s\n"
msgstr ""
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"relocation flag not set\n"
msgstr ""
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr ""
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr ""
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr ""
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr ""
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr ""
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr ""
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr ""
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
msgstr ""
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"[%2d] '%s' referenced by sh_link\n"
msgstr ""
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr ""
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr ""
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr ""
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr ""
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
msgstr ""
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr ""
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr ""
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"same symbol table\n"
msgstr ""
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr ""
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr ""
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
msgstr ""
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr ""
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr ""
-#: src/elflint.c:2030
+#: src/elflint.c:2092
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
msgstr ""
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"undefined\n"
msgstr ""
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr ""
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr ""
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"entries\n"
msgstr ""
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr ""
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr ""
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
msgstr ""
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr ""
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr ""
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr ""
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr ""
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr ""
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr ""
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr ""
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr ""
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr ""
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr ""
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr ""
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr ""
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"SHF_GROUP flag set\n"
msgstr ""
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr ""
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr ""
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr ""
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr ""
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr ""
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr ""
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr ""
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr ""
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr ""
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"reference\n"
msgstr ""
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"%#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"name '%s'\n"
msgstr ""
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr ""
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr ""
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr ""
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr ""
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr ""
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr ""
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr ""
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr ""
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
msgstr ""
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr ""
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
msgstr ""
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr ""
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr ""
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr ""
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
msgstr ""
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr ""
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr ""
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr ""
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr ""
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr ""
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr ""
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr ""
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr ""
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"value\n"
msgstr ""
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in shstrndx\n"
msgstr ""
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in phnum\n"
msgstr ""
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr ""
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr ""
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
msgstr ""
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr ""
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
msgstr ""
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"segments\n"
msgstr ""
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
msgstr ""
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr ""
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr ""
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr ""
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr ""
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr ""
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"%d\n"
msgstr ""
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"program header entry %d\n"
msgstr ""
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"segment of program header entry %d\n"
msgstr ""
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr ""
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
msgstr ""
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"but type is not SHT_TYPE\n"
msgstr ""
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
msgstr ""
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr ""
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr ""
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"exist\n"
msgstr ""
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr ""
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr ""
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr ""
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
msgstr ""
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr ""
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr ""
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr ""
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr ""
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr ""
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr ""
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr ""
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr ""
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr ""
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr ""
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr ""
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr ""
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr ""
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr ""
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr ""
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr ""
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"alignment\n"
msgstr ""
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"program header entry"
msgstr ""
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr ""
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr ""
msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
msgstr ""
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr ""
msgid "cannot get header of 0th section: %s"
msgstr ""
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr ""
msgstr ""
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr ""
msgid "cannot create search tree"
msgstr ""
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr ""
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"\n"
msgstr ""
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"\n"
msgstr ""
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr ""
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr ""
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr ""
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr ""
msgid "Show information from FILEs (a.out by default)."
msgstr ""
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr ""
msgid "while close `%s'"
msgstr ""
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr ""
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr ""
msgid "error while freeing sub-ELF descriptor: %s"
msgstr ""
-#: src/readelf.c:67
+#: src/readelf.c:71
+msgid "ELF input selection:"
+msgstr ""
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+
+#: src/readelf.c:75
msgid "ELF output selection:"
msgstr ""
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr ""
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr ""
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr ""
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr ""
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr ""
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr ""
-#: src/readelf.c:77
+#: src/readelf.c:85
msgid "Display the sections' headers"
msgstr ""
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr ""
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr ""
-#: src/readelf.c:81
+#: src/readelf.c:89
msgid "Display the ELF notes"
msgstr ""
-#: src/readelf.c:83
+#: src/readelf.c:91
msgid "Display architecture specific information, if any"
msgstr ""
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr ""
-#: src/readelf.c:87
+#: src/readelf.c:95
msgid "Additional output selection:"
msgstr ""
-#: src/readelf.c:89
+#: src/readelf.c:97
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr ""
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr ""
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr ""
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr ""
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
msgstr ""
-#: src/readelf.c:104
+#: src/readelf.c:112
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr ""
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
msgstr ""
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr ""
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr ""
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr ""
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
+msgid "cannot get section: %s"
+msgstr ""
+
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
+msgstr ""
+
+#: src/readelf.c:562
+#, c-format
+msgid "cannot get section name"
+msgstr ""
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr ""
+
+#: src/readelf.c:587
+#, c-format
+msgid "cannot create temp file '%s'"
+msgstr ""
+
+#: src/readelf.c:596
+#, c-format
+msgid "cannot write section data"
msgstr ""
-#: src/readelf.c:493
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr ""
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, c-format
+msgid "error while rewinding file descriptor"
+msgstr ""
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr ""
+
+#: src/readelf.c:742
+#, c-format
+msgid "No such section '%s' in '%s'"
+msgstr ""
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr ""
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr ""
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr ""
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr ""
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr ""
-#: src/readelf.c:646
+#: src/readelf.c:835
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr ""
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr ""
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr ""
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr ""
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr ""
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr ""
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr ""
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr ""
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
msgstr ""
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
" Class: %s\n"
msgstr ""
-#: src/readelf.c:762
+#: src/readelf.c:951
#, c-format
msgid " Data: %s\n"
msgstr ""
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr ""
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr ""
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr ""
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr ""
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr ""
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr ""
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr ""
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr ""
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr ""
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr ""
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr ""
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr ""
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:807
+#: src/readelf.c:996
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr ""
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr ""
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr ""
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr ""
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr ""
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr ""
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr ""
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
"\n"
msgstr ""
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
"\n"
msgstr ""
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"\n"
msgstr ""
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr ""
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
msgstr ""
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
msgstr ""
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr ""
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr ""
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr ""
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
msgstr ""
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr ""
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" Segment Sections..."
msgstr ""
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr ""
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr ""
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr ""
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr ""
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr ""
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr ""
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr ""
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr ""
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr ""
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr ""
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"Invalid symbol table at offset %#0<PRIx64>\n"
msgstr ""
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr ""
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr ""
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr ""
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr ""
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr ""
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr ""
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr ""
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr ""
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr ""
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr ""
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr ""
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr ""
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr ""
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr ""
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr ""
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr ""
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr ""
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr ""
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
"\t\t\t unsuccessful lookup: %f\n"
msgstr ""
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr ""
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
msgstr ""
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
msgstr ""
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"%#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr ""
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr ""
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr ""
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr ""
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr ""
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr ""
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr ""
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr ""
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr ""
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr ""
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr ""
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr ""
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr ""
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr ""
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr ""
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr ""
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr ""
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr ""
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr ""
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr ""
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr ""
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr ""
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr ""
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr ""
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr ""
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr ""
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr ""
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
" [ Code]\n"
msgstr ""
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"Abbreviation section at offset %<PRIu64>:\n"
msgstr ""
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr ""
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr ""
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr ""
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr ""
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr ""
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr ""
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
-#: src/readelf.c:4219
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
-msgid "cannot get .debug_ranges content: %s"
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4569 src/readelf.c:6171
#, c-format
msgid ""
"\n"
-"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"Table at offset %Zu:\n"
msgstr ""
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr ""
+
+#: src/readelf.c:4589
+#, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr ""
+
+#: src/readelf.c:4601
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr ""
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4616
+#, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr ""
+
+#: src/readelf.c:4622
+#, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr ""
+
+#: src/readelf.c:4626
+#, c-format
+msgid "unsupported address size"
+msgstr ""
+
+#: src/readelf.c:4631
+#, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr ""
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4675
+#, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr ""
+
+#: src/readelf.c:4678
+#, c-format
+msgid " %s..%s\n"
+msgstr ""
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr ""
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr ""
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, c-format
msgid " [%6tx] empty list\n"
msgstr ""
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr ""
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr ""
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
+#: src/readelf.c:5210
#, c-format
-msgid "cannot get %s content: %s"
+msgid "cannot get ELF: %s"
msgstr ""
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr ""
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
" [%6tx] Zero terminator\n"
msgstr ""
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, c-format
msgid "invalid augmentation length"
msgstr ""
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr ""
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr ""
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr ""
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr ""
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr ""
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr ""
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
" [Offset]\n"
msgstr ""
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
" Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
msgstr ""
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
"%<PRIu8>, Offset size: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr ""
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr ""
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr ""
-#: src/readelf.c:5518
+#: src/readelf.c:6059
#, c-format
-msgid "cannot get line data section data: %s"
+msgid ""
+"\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
-#: src/readelf.c:5531
+#: src/readelf.c:6158
#, c-format
-msgid ""
-"\n"
-"Table at offset %Zu:\n"
+msgid "cannot get line data section data: %s"
msgstr ""
-#: src/readelf.c:5586
+#: src/readelf.c:6226
#, c-format
msgid ""
"\n"
"Opcodes:\n"
msgstr ""
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr ""
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
msgstr ""
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
" Entry Dir Time Size Name"
msgstr ""
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
msgstr ""
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr ""
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr ""
-#: src/readelf.c:5781
+#: src/readelf.c:6421
msgid " end of sequence"
msgstr ""
-#: src/readelf.c:5798
+#: src/readelf.c:6438
#, c-format
msgid " set address to %s\n"
msgstr ""
-#: src/readelf.c:5819
+#: src/readelf.c:6459
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, c-format
msgid " set discriminator to %u\n"
msgstr ""
-#: src/readelf.c:5837
+#: src/readelf.c:6477
msgid " unknown opcode"
msgstr ""
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr ""
-#: src/readelf.c:5860
+#: src/readelf.c:6500
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr ""
-#: src/readelf.c:5864
+#: src/readelf.c:6504
#, c-format
msgid " advance address by %u to %s\n"
msgstr ""
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr ""
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr ""
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr ""
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr ""
-#: src/readelf.c:5915
+#: src/readelf.c:6555
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr ""
-#: src/readelf.c:5919
+#: src/readelf.c:6559
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr ""
-#: src/readelf.c:5937
+#: src/readelf.c:6577
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr ""
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr ""
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr ""
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, c-format
msgid " set isa to %u\n"
msgstr ""
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] ""
msgstr[1] ""
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr ""
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr ""
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr ""
-#: src/readelf.c:6080
+#: src/readelf.c:6725
msgid " <INVALID DATA>\n"
msgstr ""
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr ""
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr ""
-#: src/readelf.c:6327
+#: src/readelf.c:6972
#, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr ""
-#: src/readelf.c:6339
+#: src/readelf.c:6984
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr ""
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:6352
+#: src/readelf.c:6997
#, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr ""
-#: src/readelf.c:6355
+#: src/readelf.c:7000
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr ""
-#: src/readelf.c:6363
+#: src/readelf.c:7008
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr ""
-#: src/readelf.c:6375
+#: src/readelf.c:7021
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr ""
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:6394
+#: src/readelf.c:7040
#, c-format
msgid " %<PRIu8> arguments:"
msgstr ""
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
msgstr ""
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, c-format
msgid ""
"\n"
" %*s String\n"
msgstr ""
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr ""
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
msgstr ""
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"Exception handling table section [%2zu] '.gcc_except_table':\n"
msgstr ""
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr ""
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr ""
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr ""
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
msgstr ""
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" Action: %u\n"
msgstr ""
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr ""
-#: src/readelf.c:7019
+#: src/readelf.c:7665
#, c-format
msgid ""
"\n"
"GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
msgstr ""
-#: src/readelf.c:7048
+#: src/readelf.c:7694
#, c-format
msgid " Version: %<PRId32>\n"
msgstr ""
-#: src/readelf.c:7064
+#: src/readelf.c:7712
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7071
+#: src/readelf.c:7719
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7078
+#: src/readelf.c:7726
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7085
+#: src/readelf.c:7733
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7092
+#: src/readelf.c:7740
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr ""
-#: src/readelf.c:7099
+#: src/readelf.c:7747
#, c-format
msgid ""
"\n"
" CU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:7121
+#: src/readelf.c:7769
#, c-format
msgid ""
"\n"
" TU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:7147
+#: src/readelf.c:7795
#, c-format
msgid ""
"\n"
" Address list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
-#: src/readelf.c:7174
+#: src/readelf.c:7824
#, c-format
msgid ""
"\n"
" Symbol table at offset %#<PRIx32> contains %zu slots:\n"
msgstr ""
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr ""
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr ""
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"%*s... <repeats %u more times> ..."
msgstr ""
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr ""
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr ""
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr ""
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"Section [%Zu] '%s' has no data to dump.\n"
msgstr ""
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr ""
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, c-format
msgid ""
"\n"
"Section [%Zu] '%s' has no strings to dump.\n"
msgstr ""
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"String section [%Zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
msgstr ""
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"section [%lu] does not exist"
msgstr ""
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"section '%s' does not exist"
msgstr ""
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr ""
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"Archive '%s' has no symbol index\n"
msgstr ""
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"Index of archive '%s' has %Zu entries:\n"
msgstr ""
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr ""
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr ""
msgid "%s: file format not recognized"
msgstr ""
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr ""
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr ""
msgid "Print the strings of printable characters in files."
msgstr ""
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr ""
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr ""
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr ""
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr ""
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr ""
msgid "-F option specified twice"
msgstr ""
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr ""
msgid "%s: cannot use -o or -f when stripping archive"
msgstr ""
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr ""
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr ""
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr ""
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr ""
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr ""
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr ""
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr ""
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr ""
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr ""
-#: src/strip.c:1724
+#: src/strip.c:1752
#, c-format
msgid "bad relocation"
msgstr ""
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr ""
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr ""
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr ""
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr ""
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, c-format
msgid "while writing '%s'"
msgstr ""
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr ""
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr ""
msgid "Only list module and file names, build IDs"
msgstr ""
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr ""
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr ""
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr ""
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr ""
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr ""
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr ""
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr ""
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr ""
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr ""
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr ""
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr ""
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr ""
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr ""
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr ""
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr ""
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr ""
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr ""
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr ""
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr ""
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr ""
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr ""
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr ""
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr ""
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr ""
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr ""
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr ""
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr ""
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr ""
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr ""
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr ""
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr ""
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr ""
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr ""
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, c-format
msgid "cannot read section data: %s"
msgstr ""
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr ""
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr ""
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr ""
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr ""
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
+#: src/unstrip.c:1955
+msgid "WARNING: "
+msgstr ""
+
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
msgstr ""
-#: src/unstrip.c:1994
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr ""
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr ""
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr ""
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
msgstr ""
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
# English translations for elfutils package.
-# Copyright (C) 2012 Red Hat, Inc.
+# Copyright (C) 2014 Red Hat, Inc.
# This file is distributed under the same license as the elfutils package.
-# Automatically generated, 2012.
+# Automatically generated, 2014.
#
# All this catalog "translates" are quotation characters.
# The msgids must be ASCII and therefore cannot contain real quotation
#
msgid ""
msgstr ""
-"Project-Id-Version: elfutils 0.155\n"
+"Project-Id-Version: elfutils 0.160\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
-"PO-Revision-Date: 2012-08-27 20:34+0200\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
+"PO-Revision-Date: 2014-08-27 11:26+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
-"Language: en\n"
+"Language: en@boldquot\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr "memory exhausted"
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr "no error"
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr "out of memory"
msgid "no backend support available"
msgstr "no backend support available"
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr "unknown error"
msgid "invalid directory index"
msgstr "invalid directory index"
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr "address out of range"
msgid "invalid address range index"
msgstr "invalid address range index"
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr "no matching address range"
msgid "no alternative debug link found"
msgstr "no alternative debug link found"
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr "Input selection options:"
msgid "Search path for separate debuginfo files"
msgstr "Search path for separate debuginfo files"
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "only one of -e, -p, -k, -K, or --core allowed"
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr "cannot read ELF core file: %s"
-
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
-msgstr "No modules recognized in core file"
-
-#: libdwfl/argp-std.c:232
+#: libdwfl/argp-std.c:230
msgid "cannot load kernel symbols"
msgstr "cannot load kernel symbols"
-#: libdwfl/argp-std.c:236
+#: libdwfl/argp-std.c:234
msgid "cannot find kernel modules"
msgstr "cannot find kernel modules"
-#: libdwfl/argp-std.c:250
+#: libdwfl/argp-std.c:251
msgid "cannot find kernel or modules"
msgstr "cannot find kernel or modules"
-#: libdwfl/libdwflP.h:52
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "cannot read ELF core file: %s"
+
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
+msgstr "No modules recognized in core file"
+
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr "See errno"
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr "See elf_errno"
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr "See dwarf_errno"
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr "See ebl_errno (XXX missing)"
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr "gzip decompression failed"
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr "bzip2 decompression failed"
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr "LZMA decompression failed"
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr "no support library found for machine"
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr "Callbacks missing for ET_REL file"
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr "Unsupported relocation type"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr "r_offset is bogus"
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr "offset out of range"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
msgid "relocation refers to undefined symbol"
msgstr "relocation refers to undefined symbol"
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr "Callback returned failure"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
msgid "No DWARF information found"
msgstr "No DWARF information found"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr "No symbol table found"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
msgid "No ELF program headers"
msgstr "No ELF program headers"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr "address range overlaps an existing module"
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr "image truncated"
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
msgid "ELF file opened"
msgstr "ELF file opened"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
msgid "not a valid ELF file"
msgstr "not a valid ELF file"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
msgid "cannot handle DWARF type description"
msgstr "cannot handle DWARF type description"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr "ELF file does not match build ID"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
msgid "corrupt .gnu.prelink_undo section data"
msgstr "corrupt .gnu.prelink_undo section data"
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr "Internal error due to ebl"
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr "Missing data in core file"
+
+#: libdwfl/libdwflP.h:84
+msgid "Invalid register"
+msgstr "Invalid register"
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr "Error reading process memory"
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr "Couldn't find architecture of any ELF"
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr "Error parsing /proc filesystem"
+
+#: libdwfl/libdwflP.h:88
+msgid "Invalid DWARF"
+msgstr "Invalid DWARF"
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr "Unsupported DWARF"
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr "Unable to find more threads"
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr "Dwfl already has attached state"
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr "Dwfl has no attached state"
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr "Unwinding not supported for this architecture"
+
+#: libdwfl/libdwflP.h:94
+msgid "Invalid argument"
+msgstr "Invalid argument"
+
+#: libdwfl/libdwflP.h:95
+msgid "Not an ET_CORE ELF file"
+msgstr "Not an ET_CORE ELF file"
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr "No backend"
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
msgid "invalid size of destination operand"
msgstr "invalid size of destination operand"
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr "invalid encoding"
msgid "invalid section header"
msgstr "invalid section header"
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr "invalid data"
msgstr "Also show symbol or section names"
#: src/addr2line.c:64
+msgid "Also show symbol and the section names"
+msgstr "Also show symbol and the section names"
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr "Also show line table flags"
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr "Treat addresses as offsets relative to NAME section."
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr "Miscellaneous:"
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr ""
"Locate source files and line information for ADDRs (in a.out by default)."
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr "[ADDR...]"
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr "Written by %s.\n"
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, c-format
msgid "Section syntax requires exactly one module"
msgstr "Section syntax requires exactly one module"
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "offset %#<PRIxMAX> lies outside section ‘\e[1m%s\e[0m’"
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr "cannot find symbol ‘\e[1m%s\e[0m’"
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "offset %#<PRIxMAX> lies outside contents of ‘\e[1m%s\e[0m’"
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr "cannot open ‘\e[1m%s\e[0m’"
msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
msgstr "Pedantic checking of ELF files compliance with gABI/psABI spec."
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr "FILE..."
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr "cannot open input file"
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr "cannot generate Elf descriptor: %s\n"
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr "error while closing Elf descriptor: %s\n"
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr "No errors"
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr "Missing file name.\n"
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr " error while freeing sub-ELF descriptor: %s\n"
-#: src/elflint.c:302
+#: src/elflint.c:306
#, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr "Not an ELF file - it has the wrong magic bytes at the start\n"
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr "e_ident[%d] == %d is no known class\n"
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr "e_ident[%d] == %d is no known data encoding\n"
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr "unknown ELF header version number e_ident[%d] == %d\n"
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr "unsupported OS ABI e_ident[%d] == ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr "unsupport ABI version e_ident[%d] == %d\n"
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr "e_ident[%zu] is not zero\n"
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr "unknown object file type %d\n"
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr "unknown machine type %d\n"
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr "unknown object file version\n"
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr "invalid program header offset\n"
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr "executables and DSOs cannot have zero program header offset\n"
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr "invalid number of program header entries\n"
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr "invalid section header table offset\n"
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr "section header table must be present\n"
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr "invalid number of section header table entries\n"
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr "invalid section header index\n"
-#: src/elflint.c:473
+#: src/elflint.c:481
#, c-format
msgid "invalid number of program header table entries\n"
msgstr "invalid number of program header table entries\n"
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr "invalid machine flags: %s\n"
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr "invalid ELF header size: %hd\n"
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr "invalid program header size: %hd\n"
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr "invalid program header position or size\n"
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr "invalid section header size: %hd\n"
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr "invalid section header position or size\n"
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"group\n"
-#: src/elflint.c:566
+#: src/elflint.c:574
#, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
"section [%2d] '%s': section group [%2zu] ‘\e[1m%s\e[0m’ does not precede group "
"member\n"
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "section [%2d] '%s': cannot get section data\n"
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"section [%2d] '%s': referenced as string table for section [%2d] ‘\e[1m%s\e[0m’ "
"but type is not SHT_STRTAB\n"
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"section [%2d] '%s': symbol table cannot have more than one extended index "
"section\n"
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "section [%2d] '%s': cannot get symbol %d: %s\n"
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "section [%2d] '%s': ‘\e[1m%s\e[0m’ in zeroth entry not zero\n"
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "section [%2d] '%s': cannot get symbol %zu: %s\n"
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "section [%2d] '%s': symbol %zu: invalid name value\n"
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"section index section\n"
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"st_shndx (%<PRIu32>)\n"
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr "section [%2d] '%s': symbol %zu: invalid section index\n"
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr "section [%2d] '%s': symbol %zu: unknown type\n"
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
msgstr ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
msgstr ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"[%2d] ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"section [%2d] '%s': symbol %zu: referenced section [%2d] ‘\e[1m%s\e[0m’ does not "
"have SHF_TLS flag set\n"
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"[%2d] ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
msgstr ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"sh_info\n"
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"sh_info\n"
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"[%2d]\n"
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] ‘\e[1m"
"%s\e[0m’\n"
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"match %s section address %#<PRIx64>\n"
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"match %s section size %<PRIu64>\n"
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"section\n"
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"segment address %#<PRIx64>\n"
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"segment size %<PRIu64>\n"
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"default visibility\n"
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"section [%2d] '%s': relative relocations after index %d as specified by "
"DT_RELCOUNT\n"
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"specified %d relative relocations\n"
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "section [%2d] '%s': invalid destination section index\n"
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "section [%2d] '%s': invalid destination section type\n"
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "section [%2d] '%s': sh_info should be zero\n"
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr "section [%2d] '%s': no relocations for merge-able sections possible\n"
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr "text relocation flag set but there is no read-only segment\n"
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "section [%2d] '%s': relocation %zu: invalid type\n"
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"type\n"
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"be used with %s\n"
msgstr ""
-"section [%2d] '%s': relocation %zu: only symbol ‘\e[1m_GLOBAL_OFFSET_TABLE_\e"
-"[0m’ can be used with %s\n"
+"section [%2d] '%s': relocation %zu: only symbol "
+"‘\e[1m_GLOBAL_OFFSET_TABLE_\e[0m’ can be used with %s\n"
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"%s\n"
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"relocation flag not set\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "section [%2d] '%s': cannot get relocation %zu: %s\n"
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr "more than one dynamic section present\n"
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "section [%2d] '%s': sh_info not zero\n"
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "section [%2d] '%s': entry %zu: unknown tag\n"
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
msgstr ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"[%2d] ‘\e[1m%s\e[0m’ referenced by sh_link\n"
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"[%2d] ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "section [%2d] '%s': contains %s entry but not %s\n"
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "section [%2d] '%s': mandatory tag %s not present\n"
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "section [%2d] '%s': no hash section present\n"
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "section [%2d] '%s': not all of %s, %s, and %s are present\n"
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr "section [%2d] '%s': %s tag missing in prelinked executable\n"
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
msgstr ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
"section [%2d] '%s': extended section index section not for symbol table\n"
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "cannot get data for symbol section\n"
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "section [%2d] '%s': entry size does not match Elf32_Word\n"
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr "section [%2d] '%s': extended index table too small for symbol table\n"
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"section [%2d] '%s': extended section index in section [%2zu] ‘\e[1m%s\e[0m’ "
"refers to same symbol table\n"
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "symbol 0 should have zero extended section index\n"
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "cannot get data for symbol %zu\n"
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
msgstr ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "section [%2d] '%s': chain array too large\n"
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr "section [%2d] '%s': hash chain reference %zu out of bounds\n"
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr "section [%2d] '%s': bitmask size not power of 2: %u\n"
-#: src/elflint.c:2030
+#: src/elflint.c:2092
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr "section [%2d] '%s': 2nd hash function shift too big: %u\n"
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
msgstr ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"undefined\n"
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
msgstr ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr "section [%2d] '%s': bitmask does not match names in the hash table\n"
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr "section [%2d] '%s': relocatable files cannot have hash tables\n"
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr "section [%2d] '%s': hash table not for dynamic symbol table\n"
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr "section [%2d] '%s': hash table entry size incorrect\n"
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "section [%2d] '%s': not marked to be allocated\n"
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"section [%2d] '%s': hash table has not even room for initial administrative "
"entries\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
"sh_link in hash sections [%2zu] ‘\e[1m%s\e[0m’ and [%2zu] ‘\e[1m%s\e[0m’ not "
"identical\n"
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "section [%2zu] '%s': reference to symbol index 0\n"
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"symbol %d referenced in new hash table in [%2zu] ‘\e[1m%s\e[0m’ but not in old "
"hash table in [%2zu] ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"symbol %d referenced in old hash table in [%2zu] ‘\e[1m%s\e[0m’ but not in new "
"hash table in [%2zu] ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "section [%2d] '%s': nonzero sh_%s for NULL section\n"
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
msgstr ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "section [%2d] '%s': cannot get symbol table: %s\n"
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr "section [%2d] '%s': section reference in sh_link is no symbol table\n"
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "section [%2d] '%s': invalid symbol index in sh_info\n"
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "section [%2d] '%s': sh_flags not zero\n"
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "section [%2d] '%s': cannot get symbol for signature\n"
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "section [%2d] '%s': signature symbol cannot be empty string\n"
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "section [%2d] '%s': sh_flags not set correctly\n"
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "section [%2d] '%s': cannot get data: %s\n"
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "section [%2d] '%s': section group without flags word\n"
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "section [%2d] '%s': section group without member\n"
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "section [%2d] '%s': section group with only one member\n"
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "section [%2d] '%s': unknown section group flags\n"
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr "section [%2d] '%s': section index %Zu out of range\n"
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr "section [%2d] '%s': cannot get section header for element %zu: %s\n"
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr ""
"section [%2d] '%s': section group contains another group [%2d] ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"section [%2d] '%s': element %Zu references section [%2d] ‘\e[1m%s\e[0m’ without "
"SHF_GROUP flag set\n"
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "section [%2d] ‘\e[1m%s\e[0m’ is contained in more than one section group\n"
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"section [%2d] ‘\e[1m%s\e[0m’ refers in sh_link to section [%2d] ‘\e[1m%s\e[0m’ which "
"is no dynamic symbol table\n"
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"section [%2d] ‘\e[1m%s\e[0m’ has different number of entries than symbol table "
"[%2d] ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr "section [%2d] '%s': symbol %d: cannot read version data\n"
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr "section [%2d] '%s': symbol %d: local symbol with global scope\n"
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "section [%2d] '%s': symbol %d: local symbol with version\n"
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "section [%2d] '%s': symbol %d: invalid version index %d\n"
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr "more than one version reference section present\n"
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "section [%2d] '%s': sh_link does not link to string table\n"
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "section [%2d] '%s': entry %d has wrong version %d\n"
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "section [%2d] '%s': entry %d has invalid file reference\n"
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "section [%2d] '%s': entry %d references unknown dependency\n"
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"reference\n"
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"%#x, expected %#x\n"
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"name ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr "section [%2d] '%s': entry %d has invalid offset to next entry\n"
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr "more than one version definition section present\n"
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "section [%2d] '%s': more than one BASE definition\n"
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "section [%2d] '%s': entry %d has unknown flag\n"
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr "section [%2d] '%s': entry %d has invalid name reference\n"
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr "section [%2d] '%s': entry %d has duplicate version name ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
msgstr ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "section [%2d] '%s': no BASE definition\n"
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "section [%2d] '%s': unknown parent version ‘\e[1m%s\e[0m’\n"
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "section [%2d] '%s': empty object attributes section\n"
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "section [%2d] '%s': unrecognized attribute format\n"
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
msgstr ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "section [%2d] '%s': offset %zu: truncated attribute section\n"
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
msgstr ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "section [%2d] '%s': offset %zu: vendor ‘\e[1m%s\e[0m’ unknown\n"
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
msgstr ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "cannot get section header of zeroth section\n"
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "zeroth section has nonzero name\n"
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "zeroth section has nonzero type\n"
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "zeroth section has nonzero flags\n"
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "zeroth section has nonzero address\n"
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "zeroth section has nonzero offset\n"
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "zeroth section has nonzero align value\n"
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "zeroth section has nonzero entry size value\n"
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"value\n"
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in shstrndx\n"
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in phnum\n"
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "cannot get section header for section [%2zu] '%s': %s\n"
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "section [%2zu]: invalid name\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr "section [%2d] ‘\e[1m%s\e[0m’ has wrong type: expected %s, is %s\n"
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ has wrong flags: expected %s, is %s\n"
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
"section [%2zu] ‘\e[1m%s\e[0m’ has wrong flags: expected %s and possibly %s, is "
"%s\n"
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ present in object file\n"
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
"section [%2zu] ‘\e[1m%s\e[0m’ has SHF_ALLOC flag set but there is no loadable "
"segment\n"
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"section [%2zu] ‘\e[1m%s\e[0m’ has SHF_ALLOC flag not set but there are loadable "
"segments\n"
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
"section [%2zu] ‘\e[1m%s\e[0m’ is extension section index table in non-object "
"file\n"
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr "section [%2zu] '%s': size not multiple of entry size\n"
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr "cannot get section header\n"
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ has unsupported type %d\n"
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
"section [%2zu] ‘\e[1m%s\e[0m’ contains invalid processor-specific flag(s) "
"%#<PRIx64>\n"
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ contains unknown flag(s) %#<PRIx64>\n"
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr "section [%2zu] '%s': thread-local data sections address not zero\n"
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr "section [%2zu] '%s': invalid section reference in link value\n"
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr "section [%2zu] '%s': invalid section reference in info value\n"
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr "section [%2zu] '%s': strings flag set without merge flag\n"
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr "section [%2zu] '%s': merge flag set but entry size is zero\n"
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
"section [%2zu] ‘\e[1m%s\e[0m’ has unexpected type %d for an executable section\n"
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ is both executable and writable\n"
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"section [%2zu] ‘\e[1m%s\e[0m’ not fully contained in segment of program header "
"entry %d\n"
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"section [%2zu] ‘\e[1m%s\e[0m’ has type NOBITS but is read from the file in "
"segment of program header entry %d\n"
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"section [%2zu] ‘\e[1m%s\e[0m’ has not type NOBITS but is not read from the file "
"in segment of program header entry %d\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ is executable in nonexecutable segment %d\n"
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ is writable in unwritable segment %d\n"
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
msgstr ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"section [%2zu] '%s': ELF header says this is the section header string table "
"but type is not SHT_TYPE\n"
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
msgstr ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr "more than one version symbol table present\n"
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr "INTERP program header entry but no .interp section\n"
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
"loadable segment [%u] is executable but contains no executable sections\n"
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr "loadable segment [%u] is writable but contains no writable sections\n"
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"exist\n"
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr "duplicate version index %d\n"
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
msgstr ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: no note entries defined for the type of file\n"
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: cannot get content of note section: %s\n"
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: extra %<PRIu64> bytes after last note\n"
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr "section [%2d] '%s': no note entries defined for the type of file\n"
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr "section [%2d] '%s': cannot get content of note section\n"
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
msgstr ""
"only executables, shared objects, and core files can have program headers\n"
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "cannot get program header entry %d: %s\n"
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"program header entry %d: unknown program header entry type %#<PRIx64>\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "more than one INTERP entry in program header\n"
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "more than one TLS entry in program header\n"
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "static executable cannot have dynamic sections\n"
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr "dynamic section reference in program header has wrong offset\n"
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr "dynamic section size mismatch in program and section header\n"
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "more than one GNU_RELRO entry in program header\n"
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr "loadable segment GNU_RELRO applies to is not writable\n"
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "%s segment not contained in a loaded segment\n"
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr "program header offset in ELF header and PHDR entry do not match"
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr "call frame search table reference in program header has wrong offset\n"
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr "call frame search table size mismatch in program and section header\n"
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "call frame search table must be allocated\n"
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ must be allocated\n"
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr "call frame search table must not be writable\n"
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ must not be writable\n"
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "call frame search table must not be executable\n"
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "section [%2zu] ‘\e[1m%s\e[0m’ must not be executable\n"
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr "program header entry %d: file size greater than memory size\n"
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr "program header entry %d: alignment not a power of 2\n"
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"program header entry %d: file offset and virtual address not module of "
"alignment\n"
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"program header entry"
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "cannot read ELF header: %s\n"
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr "text relocation flag set but not needed\n"
msgstr ""
"Warning: size of ‘\e[1m%s\e[0m’ changed from %<PRIu64> in %s to %<PRIu64> in %s"
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "cannot determine number of sections: %s"
msgid "cannot get header of 0th section: %s"
msgstr "cannot get header of 0th section: %s"
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr "cannot update ELF header: %s"
msgstr "%s: INTERNAL ERROR %d (%s-%s): %s"
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr "while closing ‘\e[1m%s\e[0m’"
msgid "cannot create search tree"
msgstr "cannot create search tree"
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr "cannot get section header string table index"
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"Symbols from %s:\n"
"\n"
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"\n"
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr "%s: entry size in section ‘\e[1m%s\e[0m’ is not what we expect"
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr "%s: size of section ‘\e[1m%s\e[0m’ is not multiple of entry size"
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: Invalid operation"
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: no symbols"
msgid "Show information from FILEs (a.out by default)."
msgstr "Show information from FILEs (a.out by default)."
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr "No operation specified.\n"
msgid "while close `%s'"
msgstr "while close ‘\e[1m%s\e[0m’"
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr "INVALID SYMBOL"
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr "INVALID SECTION"
msgid "error while freeing sub-ELF descriptor: %s"
msgstr "error while freeing sub-ELF descriptor: %s"
-#: src/readelf.c:67
+#: src/readelf.c:71
+msgid "ELF input selection:"
+msgstr "ELF input selection:"
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+
+#: src/readelf.c:75
msgid "ELF output selection:"
msgstr "ELF output selection:"
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr "All these plus -p .strtab -p .dynstr -p .comment"
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr "Display the dynamic segment"
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr "Display the ELF file header"
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr "Display histogram of bucket list lengths"
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr "Display the program headers"
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr "Display relocations"
-#: src/readelf.c:77
+#: src/readelf.c:85
msgid "Display the sections' headers"
msgstr "Display the sections' headers"
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr "Display the symbol table"
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr "Display versioning information"
-#: src/readelf.c:81
+#: src/readelf.c:89
msgid "Display the ELF notes"
msgstr "Display the ELF notes"
-#: src/readelf.c:83
+#: src/readelf.c:91
msgid "Display architecture specific information, if any"
msgstr "Display architecture specific information, if any"
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr "Display sections for exception handling"
-#: src/readelf.c:87
+#: src/readelf.c:95
msgid "Additional output selection:"
msgstr "Additional output selection:"
-#: src/readelf.c:89
+#: src/readelf.c:97
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr "Dump the uninterpreted contents of SECTION, by number or name"
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr "Print string contents of sections"
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr "Display the symbol index of an archive"
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr "Output control:"
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
msgstr "Do not find symbol names for addresses in DWARF data"
-#: src/readelf.c:104
+#: src/readelf.c:112
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
msgstr "Ignored for compatibility (lines always wide)"
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr "Print information from ELF file in human-readable form."
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Unknown DWARF debug section ‘\e[1m%s\e[0m’.\n"
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "cannot generate Elf descriptor: %s"
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr "‘\e[1m%s\e[0m’ is not an archive, cannot print archive index"
+msgid "cannot get section: %s"
+msgstr "cannot get section: %s"
+
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
+msgstr "cannot get section header: %s"
-#: src/readelf.c:493
+#: src/readelf.c:562
+#, c-format
+msgid "cannot get section name"
+msgstr "cannot get section name"
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr "cannot get %s content: %s"
+
+#: src/readelf.c:587
+#, c-format
+msgid "cannot create temp file '%s'"
+msgstr "cannot create temp file ‘\e[1m%s\e[0m’"
+
+#: src/readelf.c:596
+#, c-format
+msgid "cannot write section data"
+msgstr "cannot write section data"
+
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "error while closing Elf descriptor: %s"
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, c-format
+msgid "error while rewinding file descriptor"
+msgstr "error while rewinding file descriptor"
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr "‘\e[1m%s\e[0m’ is not an archive, cannot print archive index"
+
+#: src/readelf.c:742
+#, c-format
+msgid "No such section '%s' in '%s'"
+msgstr "No such section ‘\e[1m%s\e[0m’ in ‘\e[1m%s\e[0m’"
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr "cannot stat input file"
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr "input file is empty"
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr "failed reading '%s': %s"
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr "cannot read ELF header: %s"
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr "cannot create EBL handle"
-#: src/readelf.c:646
+#: src/readelf.c:835
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "cannot determine number of program headers: %s"
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr "NONE (None)"
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr "REL (Relocatable file)"
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr "EXEC (Executable file)"
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr "DYN (Shared object file)"
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr "CORE (Core file)"
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "OS Specific: (%x)\n"
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Processor Specific: (%x)\n"
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
"ELF Header:\n"
" Magic: "
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
"\n"
" Class: %s\n"
-#: src/readelf.c:762
+#: src/readelf.c:951
#, c-format
msgid " Data: %s\n"
msgstr " Data: %s\n"
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " Ident Version: %hhd %s\n"
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr "(current)"
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr " OS/ABI: %s\n"
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " ABI Version: %hhd\n"
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr " Type: "
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr " Machine: %s\n"
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr " Version: %d %s\n"
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " Entry point address: %#<PRIx64>\n"
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Start of program headers: %<PRId64> %s\n"
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr "(bytes into file)"
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Start of section headers: %<PRId64> %s\n"
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr " Flags: %s\n"
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Size of this header: %<PRId16> %s\n"
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr "(bytes)"
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " Size of program header entries: %<PRId16> %s\n"
-#: src/readelf.c:807
+#: src/readelf.c:996
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " Number of program headers entries: %<PRId16>"
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> in [0].sh_info)"
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr " ([0] not available)"
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " Size of section header entries: %<PRId16> %s\n"
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " Number of section headers entries: %<PRId16>"
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> in [0].sh_size)"
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> in [0].sh_link)"
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
" Section header string table index: XINDEX%s\n"
"\n"
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
" Section header string table index: %<PRId16>\n"
"\n"
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr "Section Headers:"
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr "cannot get section: %s"
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr "cannot get section header: %s"
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr "Program Headers:"
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Requesting program interpreter: %s]\n"
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" Section to Segment mapping:\n"
" Segment Sections..."
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr "cannot get program header: %s"
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
"COMDAT section group [%2zu] ‘\e[1m%s\e[0m’ with signature ‘\e[1m%s\e[0m’ contains "
"%zu entries:\n"
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
"Section group [%2zu] ‘\e[1m%s\e[0m’ with signature ‘\e[1m%s\e[0m’ contains %zu "
"entries:\n"
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr "<INVALID SYMBOL>"
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr "<INVALID SECTION>"
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "invalid sh_link value in section %Zu"
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
msgstr[0] ""
"\n"
"Dynamic segment contains %lu entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
msgstr[1] ""
"\n"
"Dynamic segment contains %lu entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr " Type Value\n"
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Shared library: [%s]\n"
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr "Library soname: [%s]\n"
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "Library rpath: [%s]\n"
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "Library runpath: [%s]\n"
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (bytes)\n"
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"\n"
"Invalid symbol table at offset %#0<PRIx64>\n"
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
"Relocation section [%2zu] ‘\e[1m%s\e[0m’ for section [%2u] ‘\e[1m%s\e[0m’ at offset "
"%#0<PRIx64> contains %d entries:\n"
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
"Relocation section [%2u] ‘\e[1m%s\e[0m’ at offset %#0<PRIx64> contains %d "
"entries:\n"
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr " Offset Type Value Name\n"
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr " Offset Type Value Name\n"
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr "<INVALID RELOC>"
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr " Offset Type Value Addend Name\n"
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr ""
" Offset Type Value Addend Name\n"
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
"\n"
"Symbol table [%2u] ‘\e[1m%s\e[0m’ contains %u entries:\n"
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] " %lu local symbol String table: [%2u] ‘\e[1m%s\e[0m’\n"
msgstr[1] " %lu local symbols String table: [%2u] ‘\e[1m%s\e[0m’\n"
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Num: Value Size Type Bind Vis Ndx Name\n"
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Num: Value Size Type Bind Vis Ndx Name\n"
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr "bad dynamic symbol"
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr "none"
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr "| <unknown>"
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
msgstr[0] ""
"\n"
"Version needs section [%2u] ‘\e[1m%s\e[0m’ contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
msgstr[1] ""
"\n"
"Version needs section [%2u] ‘\e[1m%s\e[0m’ contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Version: %hu File: %s Cnt: %hu\n"
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Name: %s Flags: %s Version: %hu\n"
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
msgstr[0] ""
"\n"
"Version definition section [%2u] ‘\e[1m%s\e[0m’ contains %d entry:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
msgstr[1] ""
"\n"
"Version definition section [%2u] ‘\e[1m%s\e[0m’ contains %d entries:\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: Parent %d: %s\n"
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
"Version symbols section [%2u] ‘\e[1m%s\e[0m’ contains %d entries:\n"
" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e[0m’"
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr " 0 *local* "
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr " 1 *global* "
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
"\n"
"Histogram for bucket list length in section [%2u] ‘\e[1m%s\e[0m’ (total of %d "
"bucket):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
msgstr[1] ""
"\n"
"Histogram for bucket list length in section [%2u] ‘\e[1m%s\e[0m’ (total of %d "
"buckets):\n"
-" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m%s\e"
-"[0m’\n"
+" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘\e[1m"
+"%s\e[0m’\n"
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Length Number % of total Coverage\n"
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
" Average number of tests: successful lookup: %f\n"
"\t\t\t unsuccessful lookup: %f\n"
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "cannot get data for section %d: %s"
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Symbol Bias: %u\n"
" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
"Library list section [%2zu] ‘\e[1m%s\e[0m’ at offset %#0<PRIx64> contains %d "
"entries:\n"
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
" Library Time Stamp Checksum Version "
"Flags"
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"Object attributes section [%2zu] ‘\e[1m%s\e[0m’ of %<PRIu64> bytes at offset "
"%#0<PRIx64>:\n"
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr " Owner Size\n"
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " File: %11<PRIu32>\n"
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr "%s+%#<PRIx64> <%s>"
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr "%s+%#0*<PRIx64> <%s>"
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr "%#<PRIx64> <%s>"
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr "%#0*<PRIx64> <%s>"
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr "%s+%#<PRIx64>"
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr "empty block"
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr "%zu byte block:"
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> used with different address sizes"
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> used with different offset sizes"
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> used with different base addresses"
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64>:\n"
" [ Code]\n"
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"\n"
"Abbreviation section at offset %<PRIu64>:\n"
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** error while reading abbreviation: %s\n"
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr "yes"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr "no"
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "cannot get .debug_aranges content: %s"
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
"\n"
"DWARF section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64> contains %zu entries:\n"
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
-#: src/readelf.c:4219
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "cannot get .debug_ranges content: %s"
-
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
msgid ""
"\n"
"\n"
"DWARF section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64>:\n"
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4569 src/readelf.c:6171
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Table at offset %Zu:\n"
+
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "invalid data in section [%zu] ‘\e[1m%s\e[0m’"
+
+#: src/readelf.c:4589
+#, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr ""
+"\n"
+" Length: %6<PRIu64>\n"
+
+#: src/readelf.c:4601
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " DWARF version: %6<PRIuFAST16>\n"
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr "unsupported aranges version"
+
+#: src/readelf.c:4616
+#, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr " CU offset: %6<PRIx64>\n"
+
+#: src/readelf.c:4622
+#, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr " Address size: %6<PRIu64>\n"
+
+#: src/readelf.c:4626
+#, c-format
+msgid "unsupported address size"
+msgstr "unsupported address size"
+
+#: src/readelf.c:4631
+#, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr "unsupported segment size"
+
+#: src/readelf.c:4675
+#, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr " %s..%s (%<PRIx64>)\n"
+
+#: src/readelf.c:4678
+#, c-format
+msgid " %s..%s\n"
+msgstr " %s..%s\n"
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr " %Zu padding bytes\n"
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "cannot get .debug_ranges content: %s"
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <INVALID DATA>\n"
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] base address %s\n"
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] empty list\n"
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
+#: src/readelf.c:5210
#, c-format
-msgid "cannot get %s content: %s"
-msgstr "cannot get %s content: %s"
+msgid "cannot get ELF: %s"
+msgstr "cannot get ELF: %s"
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"\n"
"Call frame information section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64>:\n"
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "invalid data in section [%zu] ‘\e[1m%s\e[0m’"
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
"\n"
" [%6tx] Zero terminator\n"
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, c-format
msgid "invalid augmentation length"
msgstr "invalid augmentation length"
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr "FDE address encoding: "
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr "LSDA pointer encoding: "
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (offset: %#<PRIx64>)"
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (end offset: %#<PRIx64>)"
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sLSDA pointer: %#<PRIx64>\n"
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr "cannot get attribute code: %s"
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr "cannot get attribute form: %s"
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr "cannot get attribute value: %s"
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
"%<PRIu8>, Offset size: %<PRIu8>\n"
" Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: "
"%<PRIu8>, Offset size: %<PRIu8>\n"
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "cannot get DIE at offset %<PRIu64> in section '%s': %s"
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "cannot get DIE offset: %s"
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "cannot get next DIE: %s\n"
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr "cannot get next DIE: %s"
-#: src/readelf.c:5518
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr "cannot get line data section data: %s"
-
-#: src/readelf.c:5531
+#: src/readelf.c:6059
#, c-format
msgid ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64>:\n"
+"\n"
-#: src/readelf.c:5586
+#: src/readelf.c:6158
+#, c-format
+msgid "cannot get line data section data: %s"
+msgstr "cannot get line data section data: %s"
+
+#: src/readelf.c:6226
#, c-format
msgid ""
"\n"
"\n"
"Opcodes:\n"
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "invalid data at offset %tu in section [%zu] ‘\e[1m%s\e[0m’"
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] %hhu argument\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu arguments\n"
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
"\n"
"Directory table:"
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
"File name table:\n"
" Entry Dir Time Size Name"
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
"\n"
"Line number statements:"
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " special opcode %u: address+%u = %s, line%+d = %zu\n"
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr " extended opcode %u: "
-#: src/readelf.c:5781
+#: src/readelf.c:6421
msgid " end of sequence"
msgstr " end of sequence"
-#: src/readelf.c:5798
+#: src/readelf.c:6438
#, c-format
msgid " set address to %s\n"
msgstr " set address to %s\n"
-#: src/readelf.c:5819
+#: src/readelf.c:6459
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, c-format
msgid " set discriminator to %u\n"
msgstr " set discriminator to %u\n"
-#: src/readelf.c:5837
+#: src/readelf.c:6477
msgid " unknown opcode"
msgstr " unknown opcode"
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr " copy"
-#: src/readelf.c:5860
+#: src/readelf.c:6500
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr " advance address by %u to %s, op_index to %u\n"
-#: src/readelf.c:5864
+#: src/readelf.c:6504
#, c-format
msgid " advance address by %u to %s\n"
msgstr " advance address by %u to %s\n"
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " advance line by constant %d to %<PRId64>\n"
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " set file to %<PRIu64>\n"
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " set column to %<PRIu64>\n"
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " set ‘\e[1m%s\e[0m’ to %<PRIuFAST8>\n"
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr " set basic block flag"
-#: src/readelf.c:5915
+#: src/readelf.c:6555
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr " advance address by constant %u to %s, op_index to %u\n"
-#: src/readelf.c:5919
+#: src/readelf.c:6559
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr " advance address by constant %u to %s\n"
-#: src/readelf.c:5937
+#: src/readelf.c:6577
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr " advance address by fixed value %u to %s\n"
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr " set prologue end flag"
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr " set epilogue begin flag"
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, c-format
msgid " set isa to %u\n"
msgstr " set isa to %u\n"
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " unknown opcode with %<PRIu8> parameter:"
msgstr[1] " unknown opcode with %<PRIu8> parameters:"
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "cannot get .debug_loc content: %s"
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:6080
+#: src/readelf.c:6725
msgid " <INVALID DATA>\n"
msgstr " <INVALID DATA>\n"
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "cannot get macro information section data: %s"
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** non-terminated string at end of section"
-#: src/readelf.c:6327
+#: src/readelf.c:6972
#, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " Offset: 0x%<PRIx64>\n"
-#: src/readelf.c:6339
+#: src/readelf.c:6984
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr " Version: %<PRIu16>\n"
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr " unknown version, cannot parse section\n"
-#: src/readelf.c:6352
+#: src/readelf.c:6997
#, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " Flag: 0x%<PRIx8>\n"
-#: src/readelf.c:6355
+#: src/readelf.c:7000
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " Offset length: %<PRIu8>\n"
-#: src/readelf.c:6363
+#: src/readelf.c:7008
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " .debug_line offset: 0x%<PRIx64>\n"
-#: src/readelf.c:6375
+#: src/readelf.c:7021
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " extension opcode table, %<PRIu8> items:\n"
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
msgstr " [%<PRIx8>]"
-#: src/readelf.c:6394
+#: src/readelf.c:7040
#, c-format
msgid " %<PRIu8> arguments:"
msgstr " %<PRIu8> arguments:"
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
msgstr " no arguments."
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
msgstr "vendor opcode not verified?"
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64>:\n"
" %*s String\n"
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** error while reading strings: %s\n"
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"\n"
"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"\n"
"Exception handling table section [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr " LPStart encoding: %#x "
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr " TType encoding: %#x "
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr " Call site encoding: %#x "
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
"\n"
" Call site table:"
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" Landing pad: %#<PRIx64>\n"
" Action: %u\n"
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr "invalid TType encoding"
-#: src/readelf.c:7019
+#: src/readelf.c:7665
#, c-format
msgid ""
"\n"
"GDB section [%2zu] ‘\e[1m%s\e[0m’ at offset %#<PRIx64> contains %<PRId64> "
"bytes :\n"
-#: src/readelf.c:7048
+#: src/readelf.c:7694
#, c-format
msgid " Version: %<PRId32>\n"
msgstr " Version: %<PRId32>\n"
-#: src/readelf.c:7064
+#: src/readelf.c:7712
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " CU offset: %#<PRIx32>\n"
-#: src/readelf.c:7071
+#: src/readelf.c:7719
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " TU offset: %#<PRIx32>\n"
-#: src/readelf.c:7078
+#: src/readelf.c:7726
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " address offset: %#<PRIx32>\n"
-#: src/readelf.c:7085
+#: src/readelf.c:7733
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " symbol offset: %#<PRIx32>\n"
-#: src/readelf.c:7092
+#: src/readelf.c:7740
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " constant offset: %#<PRIx32>\n"
-#: src/readelf.c:7099
+#: src/readelf.c:7747
#, c-format
msgid ""
"\n"
"\n"
" CU list at offset %#<PRIx32> contains %zu entries:\n"
-#: src/readelf.c:7121
+#: src/readelf.c:7769
#, c-format
msgid ""
"\n"
"\n"
" TU list at offset %#<PRIx32> contains %zu entries:\n"
-#: src/readelf.c:7147
+#: src/readelf.c:7795
#, c-format
msgid ""
"\n"
"\n"
" Address list at offset %#<PRIx32> contains %zu entries:\n"
-#: src/readelf.c:7174
+#: src/readelf.c:7824
#, c-format
msgid ""
"\n"
"\n"
" Symbol table at offset %#<PRIx32> contains %zu slots:\n"
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "cannot get debug context descriptor: %s"
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr "cannot convert core note data: %s"
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"\n"
"%*s... <repeats %u more times> ..."
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr " Owner Data size Type\n"
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr "cannot get content of note section: %s"
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"\n"
"Note section [%2zu] ‘\e[1m%s\e[0m’ of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"\n"
"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"\n"
"Section [%Zu] ‘\e[1m%s\e[0m’ has no data to dump.\n"
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr "cannot get data for section [%Zu] '%s': %s"
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"\n"
"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, c-format
msgid ""
"\n"
"\n"
"Section [%Zu] ‘\e[1m%s\e[0m’ has no strings to dump.\n"
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"String section [%Zu] ‘\e[1m%s\e[0m’ contains %<PRIu64> bytes at offset "
"%#0<PRIx64>:\n"
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"\n"
"section [%lu] does not exist"
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"\n"
"section ‘\e[1m%s\e[0m’ does not exist"
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "cannot get symbol index of archive '%s': %s"
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"\n"
"Archive ‘\e[1m%s\e[0m’ has no symbol index\n"
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"\n"
"Index of archive ‘\e[1m%s\e[0m’ has %Zu entries:\n"
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr "cannot extract member at offset %Zu in '%s': %s"
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Archive member ‘\e[1m%s\e[0m’ contains:\n"
msgid "%s: file format not recognized"
msgstr "%s: file format not recognized"
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr "(TOTALS)\n"
msgid "Print the strings of printable characters in files."
msgstr "Print the strings of printable characters in files."
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr "invalid value ‘\e[1m%s\e[0m’ for %s parameter"
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr "invalid minimum length of matched string size"
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr "lseek64 failed"
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr "re-mmap failed"
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr "mprotect failed"
msgid "-F option specified twice"
msgstr "-F option specified twice"
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "-o option specified twice"
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: cannot use -o or -f when stripping archive"
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr "cannot open EBL backend"
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "cannot create new file '%s': %s"
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr "illformed file ‘\e[1m%s\e[0m’"
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr "while generating output file: %s"
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: error while creating ELF header: %s"
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr "while preparing output for ‘\e[1m%s\e[0m’"
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr "while create section header section: %s"
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr "cannot allocate section data: %s"
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr "while create section header string table: %s"
-#: src/strip.c:1724
+#: src/strip.c:1752
#, c-format
msgid "bad relocation"
msgstr "bad relocation"
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr "while writing '%s': %s"
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr "while creating ‘\e[1m%s\e[0m’"
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr "while computing checksum for debug information"
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: error while reading the file: %s"
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, c-format
msgid "while writing '%s'"
msgstr "while writing ‘\e[1m%s\e[0m’"
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr "error while finishing '%s': %s"
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "cannot set access and modification date of ‘\e[1m%s\e[0m’"
msgid "Only list module and file names, build IDs"
msgstr "Only list module and file names, build IDs"
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr "Force combining files even if some ELF headers don't seem to match"
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr "-d option specified twice"
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr "only one of -o or -d allowed"
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "-n cannot be used with explicit files or -o or -d"
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr "output directory ‘\e[1m%s\e[0m’"
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr "exactly two file arguments are required"
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr "-m, -a, -R, and -i options not allowed with explicit files"
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr "-o or -d is required when using implicit files"
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr "cannot create ELF header: %s"
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "cannot copy ELF header: %s"
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr "cannot create program headers: %s"
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr "cannot copy program header: %s"
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr "cannot copy section header: %s"
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr "cannot get section data: %s"
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr "cannot copy section data: %s"
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr "cannot create directory ‘\e[1m%s\e[0m’"
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "cannot get symbol table entry: %s"
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr "cannot update symbol table: %s"
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr "cannot update section header: %s"
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr "cannot update relocation: %s"
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr "cannot get symbol version: %s"
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr "unexpected section type in [%Zu] with sh_link to symtab"
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr "invalid string offset in symbol [%Zu]"
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr "cannot read section [%Zu] name: %s"
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "cannot read ‘\e[1m.gnu.prelink_undo\e[0m’ section: %s"
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr "invalid contents in ‘\e[1m%s\e[0m’ section"
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr "cannot find matching section for [%Zu] ‘\e[1m%s\e[0m’"
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "cannot add section name to string table: %s"
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr "cannot update section header string table data: %s"
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr "cannot get section header string table section index: %s"
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr "cannot get section count: %s"
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr "more sections in stripped file than debug file -- arguments reversed?"
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr "cannot read section header string table: %s"
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr "cannot add new section: %s"
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr "symbol [%Zu] has invalid section index"
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, c-format
msgid "cannot read section data: %s"
msgstr "cannot read section data: %s"
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr "cannot get ELF header: %s"
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr "cannot update program header: %s"
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr "cannot write output file: %s"
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr "DWARF data not adjusted for prelinking bias; consider prelink -u"
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
"DWARF data in ‘\e[1m%s\e[0m’ not adjusted for prelinking bias; consider prelink -"
"u"
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "cannot create ELF descriptor: %s"
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "‘\e[1m%s\e[0m’ and ‘\e[1m%s\e[0m’ do not seem to match"
+#: src/unstrip.c:1955
+msgid "WARNING: "
+msgstr "WARNING: "
+
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ", use --force"
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr "ELF header identification (e_ident) different"
+
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr "ELF header type (e_type) different"
+
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr "ELF header machine type (e_machine) different"
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr "stripped program header (e_phnum) smaller than unstripped"
-#: src/unstrip.c:1994
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "cannot find stripped file for module '%s': %s"
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "cannot open stripped file ‘\e[1m%s\e[0m’ for module '%s': %s"
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "cannot find debug file for module '%s': %s"
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "cannot open debug file ‘\e[1m%s\e[0m’ for module '%s': %s"
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "module ‘\e[1m%s\e[0m’ file ‘\e[1m%s\e[0m’ is not stripped"
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr "cannot cache section addresses for module '%s': %s"
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr "no matching modules found"
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr "matched more than one module"
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
# English translations for elfutils package.
-# Copyright (C) 2012 Red Hat, Inc.
+# Copyright (C) 2014 Red Hat, Inc.
# This file is distributed under the same license as the elfutils package.
-# Automatically generated, 2012.
+# Automatically generated, 2014.
#
# All this catalog "translates" are quotation characters.
# The msgids must be ASCII and therefore cannot contain real quotation
#
msgid ""
msgstr ""
-"Project-Id-Version: elfutils 0.155\n"
+"Project-Id-Version: elfutils 0.160\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
-"PO-Revision-Date: 2012-08-27 20:34+0200\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
+"PO-Revision-Date: 2014-08-27 11:26+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
-"Language: en\n"
+"Language: en@quot\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr "memory exhausted"
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr "no error"
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr "out of memory"
msgid "no backend support available"
msgstr "no backend support available"
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr "unknown error"
msgid "invalid directory index"
msgstr "invalid directory index"
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr "address out of range"
msgid "invalid address range index"
msgstr "invalid address range index"
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr "no matching address range"
msgid "no alternative debug link found"
msgstr "no alternative debug link found"
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr "Input selection options:"
msgid "Search path for separate debuginfo files"
msgstr "Search path for separate debuginfo files"
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "only one of -e, -p, -k, -K, or --core allowed"
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr "cannot read ELF core file: %s"
-
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
-msgstr "No modules recognized in core file"
-
-#: libdwfl/argp-std.c:232
+#: libdwfl/argp-std.c:230
msgid "cannot load kernel symbols"
msgstr "cannot load kernel symbols"
-#: libdwfl/argp-std.c:236
+#: libdwfl/argp-std.c:234
msgid "cannot find kernel modules"
msgstr "cannot find kernel modules"
-#: libdwfl/argp-std.c:250
+#: libdwfl/argp-std.c:251
msgid "cannot find kernel or modules"
msgstr "cannot find kernel or modules"
-#: libdwfl/libdwflP.h:52
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "cannot read ELF core file: %s"
+
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
+msgstr "No modules recognized in core file"
+
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr "See errno"
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr "See elf_errno"
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr "See dwarf_errno"
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr "See ebl_errno (XXX missing)"
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr "gzip decompression failed"
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr "bzip2 decompression failed"
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr "LZMA decompression failed"
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr "no support library found for machine"
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr "Callbacks missing for ET_REL file"
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr "Unsupported relocation type"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr "r_offset is bogus"
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr "offset out of range"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
msgid "relocation refers to undefined symbol"
msgstr "relocation refers to undefined symbol"
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr "Callback returned failure"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
msgid "No DWARF information found"
msgstr "No DWARF information found"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr "No symbol table found"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
msgid "No ELF program headers"
msgstr "No ELF program headers"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr "address range overlaps an existing module"
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr "image truncated"
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
msgid "ELF file opened"
msgstr "ELF file opened"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
msgid "not a valid ELF file"
msgstr "not a valid ELF file"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
msgid "cannot handle DWARF type description"
msgstr "cannot handle DWARF type description"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr "ELF file does not match build ID"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
msgid "corrupt .gnu.prelink_undo section data"
msgstr "corrupt .gnu.prelink_undo section data"
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr "Internal error due to ebl"
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr "Missing data in core file"
+
+#: libdwfl/libdwflP.h:84
+msgid "Invalid register"
+msgstr "Invalid register"
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr "Error reading process memory"
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr "Couldn't find architecture of any ELF"
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr "Error parsing /proc filesystem"
+
+#: libdwfl/libdwflP.h:88
+msgid "Invalid DWARF"
+msgstr "Invalid DWARF"
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr "Unsupported DWARF"
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr "Unable to find more threads"
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr "Dwfl already has attached state"
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr "Dwfl has no attached state"
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr "Unwinding not supported for this architecture"
+
+#: libdwfl/libdwflP.h:94
+msgid "Invalid argument"
+msgstr "Invalid argument"
+
+#: libdwfl/libdwflP.h:95
+msgid "Not an ET_CORE ELF file"
+msgstr "Not an ET_CORE ELF file"
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr "No backend"
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
msgid "invalid size of destination operand"
msgstr "invalid size of destination operand"
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr "invalid encoding"
msgid "invalid section header"
msgstr "invalid section header"
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr "invalid data"
msgstr "Also show symbol or section names"
#: src/addr2line.c:64
+msgid "Also show symbol and the section names"
+msgstr "Also show symbol and the section names"
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr "Also show line table flags"
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr "Treat addresses as offsets relative to NAME section."
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr "Miscellaneous:"
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr ""
"Locate source files and line information for ADDRs (in a.out by default)."
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr "[ADDR...]"
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr "Written by %s.\n"
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, c-format
msgid "Section syntax requires exactly one module"
msgstr "Section syntax requires exactly one module"
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "offset %#<PRIxMAX> lies outside section ‘%s’"
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr "cannot find symbol ‘%s’"
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "offset %#<PRIxMAX> lies outside contents of ‘%s’"
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr "cannot open ‘%s’"
msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
msgstr "Pedantic checking of ELF files compliance with gABI/psABI spec."
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr "FILE..."
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr "cannot open input file"
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr "cannot generate Elf descriptor: %s\n"
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr "error while closing Elf descriptor: %s\n"
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr "No errors"
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr "Missing file name.\n"
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr " error while freeing sub-ELF descriptor: %s\n"
-#: src/elflint.c:302
+#: src/elflint.c:306
#, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr "Not an ELF file - it has the wrong magic bytes at the start\n"
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr "e_ident[%d] == %d is no known class\n"
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr "e_ident[%d] == %d is no known data encoding\n"
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr "unknown ELF header version number e_ident[%d] == %d\n"
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr "unsupported OS ABI e_ident[%d] == ‘%s’\n"
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr "unsupport ABI version e_ident[%d] == %d\n"
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr "e_ident[%zu] is not zero\n"
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr "unknown object file type %d\n"
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr "unknown machine type %d\n"
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr "unknown object file version\n"
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr "invalid program header offset\n"
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr "executables and DSOs cannot have zero program header offset\n"
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr "invalid number of program header entries\n"
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr "invalid section header table offset\n"
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr "section header table must be present\n"
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr "invalid number of section header table entries\n"
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr "invalid section header index\n"
-#: src/elflint.c:473
+#: src/elflint.c:481
#, c-format
msgid "invalid number of program header table entries\n"
msgstr "invalid number of program header table entries\n"
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr "invalid machine flags: %s\n"
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr "invalid ELF header size: %hd\n"
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr "invalid program header size: %hd\n"
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr "invalid program header position or size\n"
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr "invalid section header size: %hd\n"
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr "invalid section header position or size\n"
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"group\n"
-#: src/elflint.c:566
+#: src/elflint.c:574
#, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
msgstr ""
"section [%2d] '%s': section group [%2zu] ‘%s’ does not precede group member\n"
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "section [%2d] '%s': cannot get section data\n"
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"section [%2d] '%s': referenced as string table for section [%2d] ‘%s’ but "
"type is not SHT_STRTAB\n"
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"section [%2d] '%s': symbol table cannot have more than one extended index "
"section\n"
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "section [%2d] '%s': cannot get symbol %d: %s\n"
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "section [%2d] '%s': ‘%s’ in zeroth entry not zero\n"
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "section [%2d] '%s': cannot get symbol %zu: %s\n"
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "section [%2d] '%s': symbol %zu: invalid name value\n"
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"section index section\n"
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"st_shndx (%<PRIu32>)\n"
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr "section [%2d] '%s': symbol %zu: invalid section index\n"
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr "section [%2d] '%s': symbol %zu: unknown type\n"
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
msgstr ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
msgstr ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"[%2d] ‘%s’\n"
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"section [%2d] '%s': symbol %zu: referenced section [%2d] ‘%s’ does not have "
"SHF_TLS flag set\n"
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"[%2d] ‘%s’\n"
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
msgstr ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"‘%s’\n"
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"sh_info\n"
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"sh_info\n"
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr "section [%2d] '%s': symbol %zu: non-local section symbol\n"
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"[%2d]\n"
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"‘%s’\n"
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"match %s section address %#<PRIx64>\n"
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"match %s section size %<PRIu64>\n"
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"section\n"
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"segment address %#<PRIx64>\n"
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"segment size %<PRIu64>\n"
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"default visibility\n"
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"section [%2d] '%s': relative relocations after index %d as specified by "
"DT_RELCOUNT\n"
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"specified %d relative relocations\n"
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "section [%2d] '%s': invalid destination section index\n"
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "section [%2d] '%s': invalid destination section type\n"
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "section [%2d] '%s': sh_info should be zero\n"
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr "section [%2d] '%s': no relocations for merge-able sections possible\n"
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr "text relocation flag set but there is no read-only segment\n"
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "section [%2d] '%s': relocation %zu: invalid type\n"
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"type\n"
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "section [%2d] '%s': relocation %zu: invalid symbol index\n"
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"section [%2d] '%s': relocation %zu: only symbol ‘_GLOBAL_OFFSET_TABLE_’ can "
"be used with %s\n"
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "section [%2d] '%s': relocation %zu: offset out of bounds\n"
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"%s\n"
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"relocation flag not set\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr "section [%2d] '%s': relocations are against loaded and unloaded data\n"
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "section [%2d] '%s': cannot get relocation %zu: %s\n"
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr "more than one dynamic section present\n"
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "section [%2d] '%s': sh_info not zero\n"
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "section [%2d] '%s': entry %zu: unknown tag\n"
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
msgstr ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"[%2d] ‘%s’ referenced by sh_link\n"
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"[%2d] ‘%s’\n"
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "section [%2d] '%s': contains %s entry but not %s\n"
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "section [%2d] '%s': mandatory tag %s not present\n"
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "section [%2d] '%s': no hash section present\n"
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "section [%2d] '%s': not all of %s, %s, and %s are present\n"
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr "section [%2d] '%s': %s tag missing in prelinked executable\n"
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
msgstr ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
"section [%2d] '%s': extended section index section not for symbol table\n"
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "cannot get data for symbol section\n"
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "section [%2d] '%s': entry size does not match Elf32_Word\n"
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr "section [%2d] '%s': extended index table too small for symbol table\n"
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"section [%2d] '%s': extended section index in section [%2zu] ‘%s’ refers to "
"same symbol table\n"
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "symbol 0 should have zero extended section index\n"
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "cannot get data for symbol %zu\n"
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
msgstr ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "section [%2d] '%s': chain array too large\n"
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr "section [%2d] '%s': hash chain reference %zu out of bounds\n"
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr "section [%2d] '%s': bitmask size not power of 2: %u\n"
-#: src/elflint.c:2030
+#: src/elflint.c:2092
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr "section [%2d] '%s': 2nd hash function shift too big: %u\n"
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
msgstr ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"undefined\n"
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
msgstr ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr "section [%2d] '%s': bitmask does not match names in the hash table\n"
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr "section [%2d] '%s': relocatable files cannot have hash tables\n"
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr "section [%2d] '%s': hash table not for dynamic symbol table\n"
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr "section [%2d] '%s': hash table entry size incorrect\n"
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "section [%2d] '%s': not marked to be allocated\n"
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"section [%2d] '%s': hash table has not even room for initial administrative "
"entries\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr "sh_link in hash sections [%2zu] ‘%s’ and [%2zu] ‘%s’ not identical\n"
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "section [%2zu] '%s': reference to symbol index 0\n"
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"symbol %d referenced in new hash table in [%2zu] ‘%s’ but not in old hash "
"table in [%2zu] ‘%s’\n"
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"symbol %d referenced in old hash table in [%2zu] ‘%s’ but not in new hash "
"table in [%2zu] ‘%s’\n"
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "section [%2d] '%s': nonzero sh_%s for NULL section\n"
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
msgstr ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "section [%2d] '%s': cannot get symbol table: %s\n"
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr "section [%2d] '%s': section reference in sh_link is no symbol table\n"
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "section [%2d] '%s': invalid symbol index in sh_info\n"
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "section [%2d] '%s': sh_flags not zero\n"
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "section [%2d] '%s': cannot get symbol for signature\n"
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "section [%2d] '%s': signature symbol cannot be empty string\n"
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "section [%2d] '%s': sh_flags not set correctly\n"
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "section [%2d] '%s': cannot get data: %s\n"
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "section [%2d] '%s': section group without flags word\n"
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "section [%2d] '%s': section group without member\n"
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "section [%2d] '%s': section group with only one member\n"
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "section [%2d] '%s': unknown section group flags\n"
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr "section [%2d] '%s': section index %Zu out of range\n"
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr "section [%2d] '%s': cannot get section header for element %zu: %s\n"
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr "section [%2d] '%s': section group contains another group [%2d] ‘%s’\n"
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"section [%2d] '%s': element %Zu references section [%2d] ‘%s’ without "
"SHF_GROUP flag set\n"
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "section [%2d] ‘%s’ is contained in more than one section group\n"
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"section [%2d] ‘%s’ refers in sh_link to section [%2d] ‘%s’ which is no "
"dynamic symbol table\n"
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"section [%2d] ‘%s’ has different number of entries than symbol table [%2d] "
"‘%s’\n"
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr "section [%2d] '%s': symbol %d: cannot read version data\n"
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr "section [%2d] '%s': symbol %d: local symbol with global scope\n"
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "section [%2d] '%s': symbol %d: local symbol with version\n"
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "section [%2d] '%s': symbol %d: invalid version index %d\n"
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr "more than one version reference section present\n"
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "section [%2d] '%s': sh_link does not link to string table\n"
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "section [%2d] '%s': entry %d has wrong version %d\n"
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "section [%2d] '%s': entry %d has invalid file reference\n"
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "section [%2d] '%s': entry %d references unknown dependency\n"
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"reference\n"
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"%#x, expected %#x\n"
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"name ‘%s’\n"
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr "section [%2d] '%s': entry %d has invalid offset to next entry\n"
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr "more than one version definition section present\n"
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "section [%2d] '%s': more than one BASE definition\n"
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "section [%2d] '%s': entry %d has unknown flag\n"
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr "section [%2d] '%s': entry %d has invalid name reference\n"
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr "section [%2d] '%s': entry %d has duplicate version name ‘%s’\n"
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
msgstr ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "section [%2d] '%s': no BASE definition\n"
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "section [%2d] '%s': unknown parent version ‘%s’\n"
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "section [%2d] '%s': empty object attributes section\n"
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "section [%2d] '%s': unrecognized attribute format\n"
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
msgstr ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "section [%2d] '%s': offset %zu: truncated attribute section\n"
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
msgstr ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "section [%2d] '%s': offset %zu: vendor ‘%s’ unknown\n"
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
msgstr ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "cannot get section header of zeroth section\n"
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "zeroth section has nonzero name\n"
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "zeroth section has nonzero type\n"
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "zeroth section has nonzero flags\n"
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "zeroth section has nonzero address\n"
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "zeroth section has nonzero offset\n"
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "zeroth section has nonzero align value\n"
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "zeroth section has nonzero entry size value\n"
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"value\n"
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in shstrndx\n"
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in phnum\n"
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "cannot get section header for section [%2zu] '%s': %s\n"
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "section [%2zu]: invalid name\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr "section [%2d] ‘%s’ has wrong type: expected %s, is %s\n"
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "section [%2zu] ‘%s’ has wrong flags: expected %s, is %s\n"
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
msgstr ""
"section [%2zu] ‘%s’ has wrong flags: expected %s and possibly %s, is %s\n"
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "section [%2zu] ‘%s’ present in object file\n"
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
msgstr ""
"section [%2zu] ‘%s’ has SHF_ALLOC flag set but there is no loadable segment\n"
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"section [%2zu] ‘%s’ has SHF_ALLOC flag not set but there are loadable "
"segments\n"
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
msgstr ""
"section [%2zu] ‘%s’ is extension section index table in non-object file\n"
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr "section [%2zu] '%s': size not multiple of entry size\n"
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr "cannot get section header\n"
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "section [%2zu] ‘%s’ has unsupported type %d\n"
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
msgstr ""
"section [%2zu] ‘%s’ contains invalid processor-specific flag(s) %#<PRIx64>\n"
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "section [%2zu] ‘%s’ contains unknown flag(s) %#<PRIx64>\n"
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr "section [%2zu] '%s': thread-local data sections address not zero\n"
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr "section [%2zu] '%s': invalid section reference in link value\n"
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr "section [%2zu] '%s': invalid section reference in info value\n"
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr "section [%2zu] '%s': strings flag set without merge flag\n"
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr "section [%2zu] '%s': merge flag set but entry size is zero\n"
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr "section [%2zu] ‘%s’ has unexpected type %d for an executable section\n"
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "section [%2zu] ‘%s’ is both executable and writable\n"
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"section [%2zu] ‘%s’ not fully contained in segment of program header entry "
"%d\n"
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"section [%2zu] ‘%s’ has type NOBITS but is read from the file in segment of "
"program header entry %d\n"
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"section [%2zu] ‘%s’ has not type NOBITS but is not read from the file in "
"segment of program header entry %d\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "section [%2zu] ‘%s’ is executable in nonexecutable segment %d\n"
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr "section [%2zu] ‘%s’ is writable in unwritable segment %d\n"
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
msgstr ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"section [%2zu] '%s': ELF header says this is the section header string table "
"but type is not SHT_TYPE\n"
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
msgstr ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr "more than one version symbol table present\n"
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr "INTERP program header entry but no .interp section\n"
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
"loadable segment [%u] is executable but contains no executable sections\n"
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr "loadable segment [%u] is writable but contains no writable sections\n"
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"exist\n"
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr "duplicate version index %d\n"
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
msgstr ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: no note entries defined for the type of file\n"
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: cannot get content of note section: %s\n"
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: extra %<PRIu64> bytes after last note\n"
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr "section [%2d] '%s': no note entries defined for the type of file\n"
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr "section [%2d] '%s': cannot get content of note section\n"
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
msgstr ""
"only executables, shared objects, and core files can have program headers\n"
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "cannot get program header entry %d: %s\n"
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"program header entry %d: unknown program header entry type %#<PRIx64>\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "more than one INTERP entry in program header\n"
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "more than one TLS entry in program header\n"
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "static executable cannot have dynamic sections\n"
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr "dynamic section reference in program header has wrong offset\n"
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr "dynamic section size mismatch in program and section header\n"
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "more than one GNU_RELRO entry in program header\n"
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr "loadable segment GNU_RELRO applies to is not writable\n"
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "%s segment not contained in a loaded segment\n"
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr "program header offset in ELF header and PHDR entry do not match"
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr "call frame search table reference in program header has wrong offset\n"
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr "call frame search table size mismatch in program and section header\n"
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "call frame search table must be allocated\n"
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "section [%2zu] ‘%s’ must be allocated\n"
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr "call frame search table must not be writable\n"
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "section [%2zu] ‘%s’ must not be writable\n"
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "call frame search table must not be executable\n"
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "section [%2zu] ‘%s’ must not be executable\n"
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr "program header entry %d: file size greater than memory size\n"
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr "program header entry %d: alignment not a power of 2\n"
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"program header entry %d: file offset and virtual address not module of "
"alignment\n"
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"program header entry"
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "cannot read ELF header: %s\n"
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr "text relocation flag set but not needed\n"
msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
msgstr "Warning: size of ‘%s’ changed from %<PRIu64> in %s to %<PRIu64> in %s"
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "cannot determine number of sections: %s"
msgid "cannot get header of 0th section: %s"
msgstr "cannot get header of 0th section: %s"
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr "cannot update ELF header: %s"
msgstr "%s: INTERNAL ERROR %d (%s-%s): %s"
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr "while closing ‘%s’"
msgid "cannot create search tree"
msgstr "cannot create search tree"
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr "cannot get section header string table index"
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"Symbols from %s:\n"
"\n"
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"\n"
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr "%s: entry size in section ‘%s’ is not what we expect"
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr "%s: size of section ‘%s’ is not multiple of entry size"
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: Invalid operation"
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: no symbols"
msgid "Show information from FILEs (a.out by default)."
msgstr "Show information from FILEs (a.out by default)."
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr "No operation specified.\n"
msgid "while close `%s'"
msgstr "while close ‘%s’"
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr "INVALID SYMBOL"
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr "INVALID SECTION"
msgid "error while freeing sub-ELF descriptor: %s"
msgstr "error while freeing sub-ELF descriptor: %s"
-#: src/readelf.c:67
+#: src/readelf.c:71
+msgid "ELF input selection:"
+msgstr "ELF input selection:"
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+
+#: src/readelf.c:75
msgid "ELF output selection:"
msgstr "ELF output selection:"
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr "All these plus -p .strtab -p .dynstr -p .comment"
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr "Display the dynamic segment"
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr "Display the ELF file header"
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr "Display histogram of bucket list lengths"
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr "Display the program headers"
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr "Display relocations"
-#: src/readelf.c:77
+#: src/readelf.c:85
msgid "Display the sections' headers"
msgstr "Display the sections' headers"
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr "Display the symbol table"
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr "Display versioning information"
-#: src/readelf.c:81
+#: src/readelf.c:89
msgid "Display the ELF notes"
msgstr "Display the ELF notes"
-#: src/readelf.c:83
+#: src/readelf.c:91
msgid "Display architecture specific information, if any"
msgstr "Display architecture specific information, if any"
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr "Display sections for exception handling"
-#: src/readelf.c:87
+#: src/readelf.c:95
msgid "Additional output selection:"
msgstr "Additional output selection:"
-#: src/readelf.c:89
+#: src/readelf.c:97
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr "Dump the uninterpreted contents of SECTION, by number or name"
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr "Print string contents of sections"
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr "Display the symbol index of an archive"
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr "Output control:"
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
msgstr "Do not find symbol names for addresses in DWARF data"
-#: src/readelf.c:104
+#: src/readelf.c:112
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
msgstr "Ignored for compatibility (lines always wide)"
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr "Print information from ELF file in human-readable form."
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Unknown DWARF debug section ‘%s’.\n"
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "cannot generate Elf descriptor: %s"
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr "‘%s’ is not an archive, cannot print archive index"
+msgid "cannot get section: %s"
+msgstr "cannot get section: %s"
-#: src/readelf.c:493
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
+msgstr "cannot get section header: %s"
+
+#: src/readelf.c:562
+#, c-format
+msgid "cannot get section name"
+msgstr "cannot get section name"
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr "cannot get %s content: %s"
+
+#: src/readelf.c:587
+#, c-format
+msgid "cannot create temp file '%s'"
+msgstr "cannot create temp file ‘%s’"
+
+#: src/readelf.c:596
+#, c-format
+msgid "cannot write section data"
+msgstr "cannot write section data"
+
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "error while closing Elf descriptor: %s"
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, c-format
+msgid "error while rewinding file descriptor"
+msgstr "error while rewinding file descriptor"
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr "‘%s’ is not an archive, cannot print archive index"
+
+#: src/readelf.c:742
+#, c-format
+msgid "No such section '%s' in '%s'"
+msgstr "No such section ‘%s’ in ‘%s’"
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr "cannot stat input file"
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr "input file is empty"
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr "failed reading '%s': %s"
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr "cannot read ELF header: %s"
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr "cannot create EBL handle"
-#: src/readelf.c:646
+#: src/readelf.c:835
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "cannot determine number of program headers: %s"
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr "NONE (None)"
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr "REL (Relocatable file)"
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr "EXEC (Executable file)"
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr "DYN (Shared object file)"
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr "CORE (Core file)"
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "OS Specific: (%x)\n"
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Processor Specific: (%x)\n"
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
"ELF Header:\n"
" Magic: "
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
"\n"
" Class: %s\n"
-#: src/readelf.c:762
+#: src/readelf.c:951
#, c-format
msgid " Data: %s\n"
msgstr " Data: %s\n"
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " Ident Version: %hhd %s\n"
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr "(current)"
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr " OS/ABI: %s\n"
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " ABI Version: %hhd\n"
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr " Type: "
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr " Machine: %s\n"
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr " Version: %d %s\n"
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " Entry point address: %#<PRIx64>\n"
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Start of program headers: %<PRId64> %s\n"
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr "(bytes into file)"
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Start of section headers: %<PRId64> %s\n"
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr " Flags: %s\n"
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Size of this header: %<PRId16> %s\n"
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr "(bytes)"
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " Size of program header entries: %<PRId16> %s\n"
-#: src/readelf.c:807
+#: src/readelf.c:996
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " Number of program headers entries: %<PRId16>"
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> in [0].sh_info)"
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr " ([0] not available)"
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " Size of section header entries: %<PRId16> %s\n"
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " Number of section headers entries: %<PRId16>"
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> in [0].sh_size)"
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> in [0].sh_link)"
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
" Section header string table index: XINDEX%s\n"
"\n"
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
" Section header string table index: %<PRId16>\n"
"\n"
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr "Section Headers:"
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr "cannot get section: %s"
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr "cannot get section header: %s"
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr "Program Headers:"
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Requesting program interpreter: %s]\n"
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" Section to Segment mapping:\n"
" Segment Sections..."
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr "cannot get program header: %s"
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
"\n"
"COMDAT section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entries:\n"
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
"\n"
"Section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entries:\n"
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr "<INVALID SYMBOL>"
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr "<INVALID SECTION>"
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "invalid sh_link value in section %Zu"
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
"Dynamic segment contains %lu entries:\n"
" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘%s’\n"
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr " Type Value\n"
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Shared library: [%s]\n"
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr "Library soname: [%s]\n"
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "Library rpath: [%s]\n"
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "Library runpath: [%s]\n"
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (bytes)\n"
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"\n"
"Invalid symbol table at offset %#0<PRIx64>\n"
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
"Relocation section [%2zu] ‘%s’ for section [%2u] ‘%s’ at offset %#0<PRIx64> "
"contains %d entries:\n"
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
"\n"
"Relocation section [%2u] ‘%s’ at offset %#0<PRIx64> contains %d entries:\n"
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr " Offset Type Value Name\n"
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr " Offset Type Value Name\n"
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr "<INVALID RELOC>"
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr " Offset Type Value Addend Name\n"
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr ""
" Offset Type Value Addend Name\n"
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
"\n"
"Symbol table [%2u] ‘%s’ contains %u entries:\n"
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] " %lu local symbol String table: [%2u] ‘%s’\n"
msgstr[1] " %lu local symbols String table: [%2u] ‘%s’\n"
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Num: Value Size Type Bind Vis Ndx Name\n"
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Num: Value Size Type Bind Vis Ndx Name\n"
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr "bad dynamic symbol"
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr "none"
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr "| <unknown>"
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
"Version needs section [%2u] ‘%s’ contains %d entries:\n"
" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘%s’\n"
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Version: %hu File: %s Cnt: %hu\n"
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Name: %s Flags: %s Version: %hu\n"
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
"Version definition section [%2u] ‘%s’ contains %d entries:\n"
" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘%s’\n"
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: Parent %d: %s\n"
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
"Version symbols section [%2u] ‘%s’ contains %d entries:\n"
" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘%s’"
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr " 0 *local* "
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr " 1 *global* "
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
"buckets):\n"
" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] ‘%s’\n"
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Length Number % of total Coverage\n"
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
" Average number of tests: successful lookup: %f\n"
"\t\t\t unsuccessful lookup: %f\n"
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "cannot get data for section %d: %s"
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Symbol Bias: %u\n"
" Bitmask Size: %zu bytes %<PRIuFAST32>%% bits set 2nd hash shift: %u\n"
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
"\n"
"Library list section [%2zu] ‘%s’ at offset %#0<PRIx64> contains %d entries:\n"
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
" Library Time Stamp Checksum Version "
"Flags"
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"Object attributes section [%2zu] ‘%s’ of %<PRIu64> bytes at offset "
"%#0<PRIx64>:\n"
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr " Owner Size\n"
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " File: %11<PRIu32>\n"
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr "%s+%#<PRIx64> <%s>"
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr "%s+%#0*<PRIx64> <%s>"
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr "%#<PRIx64> <%s>"
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr "%#0*<PRIx64> <%s>"
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr "%s+%#<PRIx64>"
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr "empty block"
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr "%zu byte block:"
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> used with different address sizes"
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> used with different offset sizes"
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> used with different base addresses"
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
" [ Code]\n"
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"\n"
"Abbreviation section at offset %<PRIu64>:\n"
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** error while reading abbreviation: %s\n"
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr "yes"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr "no"
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "cannot get .debug_aranges content: %s"
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
"\n"
"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64> contains %zu entries:\n"
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
-#: src/readelf.c:4219
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "cannot get .debug_ranges content: %s"
-
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
msgid ""
"\n"
"\n"
"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4569 src/readelf.c:6171
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Table at offset %Zu:\n"
+
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "invalid data in section [%zu] ‘%s’"
+
+#: src/readelf.c:4589
+#, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr ""
+"\n"
+" Length: %6<PRIu64>\n"
+
+#: src/readelf.c:4601
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " DWARF version: %6<PRIuFAST16>\n"
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr "unsupported aranges version"
+
+#: src/readelf.c:4616
+#, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr " CU offset: %6<PRIx64>\n"
+
+#: src/readelf.c:4622
+#, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr " Address size: %6<PRIu64>\n"
+
+#: src/readelf.c:4626
+#, c-format
+msgid "unsupported address size"
+msgstr "unsupported address size"
+
+#: src/readelf.c:4631
+#, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr "unsupported segment size"
+
+#: src/readelf.c:4675
+#, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr " %s..%s (%<PRIx64>)\n"
+
+#: src/readelf.c:4678
+#, c-format
+msgid " %s..%s\n"
+msgstr " %s..%s\n"
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr " %Zu padding bytes\n"
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "cannot get .debug_ranges content: %s"
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <INVALID DATA>\n"
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] base address %s\n"
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] empty list\n"
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
+#: src/readelf.c:5210
#, c-format
-msgid "cannot get %s content: %s"
-msgstr "cannot get %s content: %s"
+msgid "cannot get ELF: %s"
+msgstr "cannot get ELF: %s"
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"\n"
"Call frame information section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "invalid data in section [%zu] ‘%s’"
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
"\n"
" [%6tx] Zero terminator\n"
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, c-format
msgid "invalid augmentation length"
msgstr "invalid augmentation length"
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr "FDE address encoding: "
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr "LSDA pointer encoding: "
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (offset: %#<PRIx64>)"
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (end offset: %#<PRIx64>)"
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sLSDA pointer: %#<PRIx64>\n"
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr "cannot get attribute code: %s"
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr "cannot get attribute form: %s"
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr "cannot get attribute value: %s"
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
"%<PRIu8>, Offset size: %<PRIu8>\n"
" Type signature: %#<PRIx64>, Type offset: %#<PRIx64>\n"
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: "
"%<PRIu8>, Offset size: %<PRIu8>\n"
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "cannot get DIE at offset %<PRIu64> in section '%s': %s"
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "cannot get DIE offset: %s"
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "cannot get next DIE: %s\n"
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr "cannot get next DIE: %s"
-#: src/readelf.c:5518
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr "cannot get line data section data: %s"
-
-#: src/readelf.c:5531
+#: src/readelf.c:6059
#, c-format
msgid ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
+"\n"
-#: src/readelf.c:5586
+#: src/readelf.c:6158
+#, c-format
+msgid "cannot get line data section data: %s"
+msgstr "cannot get line data section data: %s"
+
+#: src/readelf.c:6226
#, c-format
msgid ""
"\n"
"\n"
"Opcodes:\n"
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "invalid data at offset %tu in section [%zu] ‘%s’"
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] %hhu argument\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu arguments\n"
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
"\n"
"Directory table:"
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
"File name table:\n"
" Entry Dir Time Size Name"
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
"\n"
"Line number statements:"
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " special opcode %u: address+%u = %s, line%+d = %zu\n"
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr " extended opcode %u: "
-#: src/readelf.c:5781
+#: src/readelf.c:6421
msgid " end of sequence"
msgstr " end of sequence"
-#: src/readelf.c:5798
+#: src/readelf.c:6438
#, c-format
msgid " set address to %s\n"
msgstr " set address to %s\n"
-#: src/readelf.c:5819
+#: src/readelf.c:6459
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, c-format
msgid " set discriminator to %u\n"
msgstr " set discriminator to %u\n"
-#: src/readelf.c:5837
+#: src/readelf.c:6477
msgid " unknown opcode"
msgstr " unknown opcode"
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr " copy"
-#: src/readelf.c:5860
+#: src/readelf.c:6500
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr " advance address by %u to %s, op_index to %u\n"
-#: src/readelf.c:5864
+#: src/readelf.c:6504
#, c-format
msgid " advance address by %u to %s\n"
msgstr " advance address by %u to %s\n"
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " advance line by constant %d to %<PRId64>\n"
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " set file to %<PRIu64>\n"
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " set column to %<PRIu64>\n"
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " set ‘%s’ to %<PRIuFAST8>\n"
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr " set basic block flag"
-#: src/readelf.c:5915
+#: src/readelf.c:6555
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr " advance address by constant %u to %s, op_index to %u\n"
-#: src/readelf.c:5919
+#: src/readelf.c:6559
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr " advance address by constant %u to %s\n"
-#: src/readelf.c:5937
+#: src/readelf.c:6577
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr " advance address by fixed value %u to %s\n"
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr " set prologue end flag"
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr " set epilogue begin flag"
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, c-format
msgid " set isa to %u\n"
msgstr " set isa to %u\n"
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " unknown opcode with %<PRIu8> parameter:"
msgstr[1] " unknown opcode with %<PRIu8> parameters:"
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "cannot get .debug_loc content: %s"
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:6080
+#: src/readelf.c:6725
msgid " <INVALID DATA>\n"
msgstr " <INVALID DATA>\n"
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "cannot get macro information section data: %s"
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** non-terminated string at end of section"
-#: src/readelf.c:6327
+#: src/readelf.c:6972
#, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " Offset: 0x%<PRIx64>\n"
-#: src/readelf.c:6339
+#: src/readelf.c:6984
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr " Version: %<PRIu16>\n"
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr " unknown version, cannot parse section\n"
-#: src/readelf.c:6352
+#: src/readelf.c:6997
#, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " Flag: 0x%<PRIx8>\n"
-#: src/readelf.c:6355
+#: src/readelf.c:7000
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " Offset length: %<PRIu8>\n"
-#: src/readelf.c:6363
+#: src/readelf.c:7008
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " .debug_line offset: 0x%<PRIx64>\n"
-#: src/readelf.c:6375
+#: src/readelf.c:7021
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " extension opcode table, %<PRIu8> items:\n"
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
msgstr " [%<PRIx8>]"
-#: src/readelf.c:6394
+#: src/readelf.c:7040
#, c-format
msgid " %<PRIu8> arguments:"
msgstr " %<PRIu8> arguments:"
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
msgstr " no arguments."
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
msgstr "vendor opcode not verified?"
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, c-format
msgid ""
"\n"
"DWARF section [%2zu] ‘%s’ at offset %#<PRIx64>:\n"
" %*s String\n"
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** error while reading strings: %s\n"
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"\n"
"Call frame search table section [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"\n"
"Exception handling table section [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr " LPStart encoding: %#x "
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr " TType encoding: %#x "
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr " Call site encoding: %#x "
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
"\n"
" Call site table:"
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" Landing pad: %#<PRIx64>\n"
" Action: %u\n"
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr "invalid TType encoding"
-#: src/readelf.c:7019
+#: src/readelf.c:7665
#, c-format
msgid ""
"\n"
"\n"
"GDB section [%2zu] ‘%s’ at offset %#<PRIx64> contains %<PRId64> bytes :\n"
-#: src/readelf.c:7048
+#: src/readelf.c:7694
#, c-format
msgid " Version: %<PRId32>\n"
msgstr " Version: %<PRId32>\n"
-#: src/readelf.c:7064
+#: src/readelf.c:7712
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " CU offset: %#<PRIx32>\n"
-#: src/readelf.c:7071
+#: src/readelf.c:7719
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " TU offset: %#<PRIx32>\n"
-#: src/readelf.c:7078
+#: src/readelf.c:7726
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " address offset: %#<PRIx32>\n"
-#: src/readelf.c:7085
+#: src/readelf.c:7733
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " symbol offset: %#<PRIx32>\n"
-#: src/readelf.c:7092
+#: src/readelf.c:7740
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " constant offset: %#<PRIx32>\n"
-#: src/readelf.c:7099
+#: src/readelf.c:7747
#, c-format
msgid ""
"\n"
"\n"
" CU list at offset %#<PRIx32> contains %zu entries:\n"
-#: src/readelf.c:7121
+#: src/readelf.c:7769
#, c-format
msgid ""
"\n"
"\n"
" TU list at offset %#<PRIx32> contains %zu entries:\n"
-#: src/readelf.c:7147
+#: src/readelf.c:7795
#, c-format
msgid ""
"\n"
"\n"
" Address list at offset %#<PRIx32> contains %zu entries:\n"
-#: src/readelf.c:7174
+#: src/readelf.c:7824
#, c-format
msgid ""
"\n"
"\n"
" Symbol table at offset %#<PRIx32> contains %zu slots:\n"
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "cannot get debug context descriptor: %s"
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr "cannot convert core note data: %s"
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"\n"
"%*s... <repeats %u more times> ..."
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr " Owner Data size Type\n"
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr "cannot get content of note section: %s"
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"\n"
"Note section [%2zu] ‘%s’ of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"\n"
"Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"\n"
"Section [%Zu] ‘%s’ has no data to dump.\n"
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr "cannot get data for section [%Zu] '%s': %s"
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"\n"
"Hex dump of section [%Zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, c-format
msgid ""
"\n"
"\n"
"Section [%Zu] ‘%s’ has no strings to dump.\n"
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"\n"
"String section [%Zu] ‘%s’ contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"\n"
"section [%lu] does not exist"
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"\n"
"section ‘%s’ does not exist"
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "cannot get symbol index of archive '%s': %s"
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"\n"
"Archive ‘%s’ has no symbol index\n"
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"\n"
"Index of archive ‘%s’ has %Zu entries:\n"
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr "cannot extract member at offset %Zu in '%s': %s"
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Archive member ‘%s’ contains:\n"
msgid "%s: file format not recognized"
msgstr "%s: file format not recognized"
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr "(TOTALS)\n"
msgid "Print the strings of printable characters in files."
msgstr "Print the strings of printable characters in files."
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr "invalid value ‘%s’ for %s parameter"
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr "invalid minimum length of matched string size"
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr "lseek64 failed"
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr "re-mmap failed"
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr "mprotect failed"
msgid "-F option specified twice"
msgstr "-F option specified twice"
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "-o option specified twice"
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: cannot use -o or -f when stripping archive"
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr "cannot open EBL backend"
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "cannot create new file '%s': %s"
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr "illformed file ‘%s’"
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr "while generating output file: %s"
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: error while creating ELF header: %s"
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr "while preparing output for ‘%s’"
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr "while create section header section: %s"
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr "cannot allocate section data: %s"
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr "while create section header string table: %s"
-#: src/strip.c:1724
+#: src/strip.c:1752
#, c-format
msgid "bad relocation"
msgstr "bad relocation"
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr "while writing '%s': %s"
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr "while creating ‘%s’"
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr "while computing checksum for debug information"
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: error while reading the file: %s"
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, c-format
msgid "while writing '%s'"
msgstr "while writing ‘%s’"
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr "error while finishing '%s': %s"
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "cannot set access and modification date of ‘%s’"
msgid "Only list module and file names, build IDs"
msgstr "Only list module and file names, build IDs"
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr "Force combining files even if some ELF headers don't seem to match"
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr "-d option specified twice"
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr "only one of -o or -d allowed"
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "-n cannot be used with explicit files or -o or -d"
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr "output directory ‘%s’"
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr "exactly two file arguments are required"
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr "-m, -a, -R, and -i options not allowed with explicit files"
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr "-o or -d is required when using implicit files"
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr "cannot create ELF header: %s"
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "cannot copy ELF header: %s"
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr "cannot create program headers: %s"
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr "cannot copy program header: %s"
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr "cannot copy section header: %s"
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr "cannot get section data: %s"
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr "cannot copy section data: %s"
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr "cannot create directory ‘%s’"
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "cannot get symbol table entry: %s"
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr "cannot update symbol table: %s"
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr "cannot update section header: %s"
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr "cannot update relocation: %s"
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr "cannot get symbol version: %s"
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr "unexpected section type in [%Zu] with sh_link to symtab"
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr "invalid string offset in symbol [%Zu]"
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr "cannot read section [%Zu] name: %s"
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "cannot read ‘.gnu.prelink_undo’ section: %s"
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr "invalid contents in ‘%s’ section"
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr "cannot find matching section for [%Zu] ‘%s’"
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "cannot add section name to string table: %s"
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr "cannot update section header string table data: %s"
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr "cannot get section header string table section index: %s"
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr "cannot get section count: %s"
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr "more sections in stripped file than debug file -- arguments reversed?"
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr "cannot read section header string table: %s"
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr "cannot add new section: %s"
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr "symbol [%Zu] has invalid section index"
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, c-format
msgid "cannot read section data: %s"
msgstr "cannot read section data: %s"
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr "cannot get ELF header: %s"
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr "cannot update program header: %s"
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr "cannot write output file: %s"
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr "DWARF data not adjusted for prelinking bias; consider prelink -u"
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
msgstr ""
"DWARF data in ‘%s’ not adjusted for prelinking bias; consider prelink -u"
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "cannot create ELF descriptor: %s"
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "‘%s’ and ‘%s’ do not seem to match"
+#: src/unstrip.c:1955
+msgid "WARNING: "
+msgstr "WARNING: "
+
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ", use --force"
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr "ELF header identification (e_ident) different"
+
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr "ELF header type (e_type) different"
+
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr "ELF header machine type (e_machine) different"
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr "stripped program header (e_phnum) smaller than unstripped"
-#: src/unstrip.c:1994
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "cannot find stripped file for module '%s': %s"
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "cannot open stripped file ‘%s’ for module '%s': %s"
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "cannot find debug file for module '%s': %s"
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "cannot open debug file ‘%s’ for module '%s': %s"
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "module ‘%s’ file ‘%s’ is not stripped"
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr "cannot cache section addresses for module '%s': %s"
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr "no matching modules found"
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr "matched more than one module"
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
msgstr ""
"Project-Id-Version: elfutils.master.es\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
"PO-Revision-Date: 2011-01-10 15:17-0300\n"
"Last-Translator: Claudio Rodrigo Pereyra Diaz <claudiorodrigo@pereyradiaz."
"com.ar>\n"
"Language-Team: Fedora Spanish <trans-es@lists.fedoraproject.org>\n"
-"Language: \n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Country: ARGENTINA\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr "memoria agotada"
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr "ningún error"
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr "memoria agotada"
msgid "no backend support available"
msgstr "No hay soporte de segundo plano"
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr "error desconocido"
msgid "invalid directory index"
msgstr "Índice de directorio inválido"
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr "dirección fuera de rango"
msgid "invalid address range index"
msgstr "Índice de dirección de rango inválido"
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr "dirección de rango no coincidente"
msgid "no alternative debug link found"
msgstr ""
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr "Opciones de selección de entrada:"
msgid "Search path for separate debuginfo files"
msgstr "Ruta de búsqueda para archivos debugingfo independientes"
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "Sólo uno de -e, -p, -k, -K, ó --core está permitido"
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr "No se puede leer archivo core ELF: %s"
-
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
-msgstr "No hay módulos reconocidos en el archivo core"
-
-#: libdwfl/argp-std.c:232
+#: libdwfl/argp-std.c:230
msgid "cannot load kernel symbols"
msgstr "No se pueden cargar símbolos de kernel"
-#: libdwfl/argp-std.c:236
+#: libdwfl/argp-std.c:234
msgid "cannot find kernel modules"
msgstr "no se pueden hallar módulos de kernel"
-#: libdwfl/argp-std.c:250
+#: libdwfl/argp-std.c:251
msgid "cannot find kernel or modules"
msgstr "imposible encontrar kernel o módulos"
-#: libdwfl/libdwflP.h:52
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "No se puede leer archivo core ELF: %s"
+
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
+msgstr "No hay módulos reconocidos en el archivo core"
+
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr "Ve errno"
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr "Ver elf_errno"
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr "Ver dwarf_errno"
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr "Ver ebl_errno (no se encuentra XXX)"
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr "falló la descompresión gzip"
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr "falló la descompresión bzip2"
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr "falló la descompresión LZMA"
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr "no se ha encontrado una biblioteca de soporte para la máquina"
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr "No se encuentran rellamadas para el archivo ET_REL"
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr "Tipo de reubicación no soportada"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr "r_offset se encuentra inutilizable"
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr "desplazamiento fuera de rango"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
msgid "relocation refers to undefined symbol"
msgstr "la reubicación hace referencia a un símbolo no definido"
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr "La rellamada devolvió un fallo"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
msgid "No DWARF information found"
msgstr "No se ha encontrado una información DWARF"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr "No se ha encontrado una tabla simbólica"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
msgid "No ELF program headers"
msgstr "No existen encabezados de programa ELF"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr "el rango de dirección se superpone con un módulo existente"
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr "imagen truncada"
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
msgid "ELF file opened"
msgstr "Archivo ELF abierto"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
msgid "not a valid ELF file"
msgstr "no es un archivo ELF válido"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
msgid "cannot handle DWARF type description"
msgstr "no es posible manipular tipo de descripción DWARF"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr "El archivo ELF no coincide con el ID construido"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
#, fuzzy
msgid "corrupt .gnu.prelink_undo section data"
msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr ""
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr ""
+
+#: libdwfl/libdwflP.h:84
+#, fuzzy
+msgid "Invalid register"
+msgstr "Parámetro inválido"
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr ""
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr ""
+
+#: libdwfl/libdwflP.h:88
+#, fuzzy
+msgid "Invalid DWARF"
+msgstr "DWARF inválido"
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr ""
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr ""
+
+#: libdwfl/libdwflP.h:94
+#, fuzzy
+msgid "Invalid argument"
+msgstr "Parámetro inválido"
+
+#: libdwfl/libdwflP.h:95
+#, fuzzy
+msgid "Not an ET_CORE ELF file"
+msgstr "no es un archivo ELF válido"
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr "No hay segundo plano (Backend)"
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
msgid "invalid size of destination operand"
msgstr "tamaño inválido del operando destino"
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr "codificación inválida"
msgid "invalid section header"
msgstr "encabezamiento de sección inválida"
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr "datos inválidos"
msgstr "También mostrar símbolo o nombres de sección"
#: src/addr2line.c:64
+#, fuzzy
+msgid "Also show symbol and the section names"
+msgstr "También mostrar símbolo o nombres de sección"
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr "También mostrar marcas de líneas de tabla"
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr "Manejar direcciones como compensaciones relativas a sección de NOMBRE."
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr "Misceláneos:"
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr ""
"Localizar archivos fuente e información de línea para DIRECCIONES (en a.out "
"por defecto)."
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr "[DIREC...]"
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"garantía, ni siquiera para SU COMERCIALIZACIÓN o PARA SER USADO CON UN FIN "
"DETERMINADO.\n"
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr "Escrito por %s.\n"
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, c-format
msgid "Section syntax requires exactly one module"
msgstr "Sintaxis de sección requiere exactamente un módulo"
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "Compensación %#<PRIxMAX> se encuentra fuera de sección '%s'"
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr "no se puede encontrar símbolo '%s'"
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "compensación %#<PRIxMAX> se encuentra fuera de contenido de '%s'"
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr "Imposible abrir '%s'"
msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
msgstr "Chequeo minucioso de ficheros ELF de acuerdo con gABI/psABI "
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr "FICHERO..."
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr "no se puede abrir el fichero de entrada"
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr "no se puede crear descriptor ELF: %s\n"
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr "error al cerrar el descriptor ELF: %s\n"
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr "No hay errores"
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr "Falta el nombre de archivo.\n"
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr " error al liberar descriptor sub-ELF: %s\n"
-#: src/elflint.c:302
+#: src/elflint.c:306
#, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr "No es un fichero ELF - tiene los bytes mágicos errados en el inicio\n"
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr "e_ident[%d] == %d es una clase desconocida\n"
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr "e_ident[%d] == %d es una codificación de datos desconocida\n"
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr ""
"número de versión de encabezamiento ELF desconocido e_ident[%d] == %d\n"
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr "Sistema operativo OS ABI e_ident[%d] == '%s' incompatible\n"
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr "Versión incompatible ABI e_ident[%d] == %d\n"
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr "e_ident[%zu] no es cero\n"
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr "tipo de fichero objeto desconocido %d\n"
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr "tipo de máquina desconocido %d\n"
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr "versión de fichero objeto desconocido\n"
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr "Compensación de encabezamiento de programa inválida\n"
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr ""
"tanto los ejecutables como los DSO no pueden tener compensación de "
"encabezamiento de programa cero\n"
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr "cantidad no válida de entradas del encabezamiento del programa\n"
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr "compensación de sección de tabla de encabezamiento inválida\n"
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr "tabla de encabezamiento de sección debe estar presente\n"
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr ""
"cantidad no válida de entradas en la tabla del encabezamiento de sección\n"
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr "Índice de sección de encabezamiento inválido\n"
-#: src/elflint.c:473
+#: src/elflint.c:481
#, c-format
msgid "invalid number of program header table entries\n"
msgstr "cantidad no válida de entradas de tabla de encabezado del programa\n"
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr "Indicadores de máquina inválidos: %s\n"
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr "tamaño inválido del encabezamiento ELF: %hd\n"
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr "tamaño inválido del encabezamiento del programa: %hd\n"
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr "tamaño o posición inválidos del encabezamiento del programa\n"
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr "tamaño inválido del encabezamiento de sección: %hd\n"
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr "tamaño o posición no válidos del encabezamiento de sección\n"
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"sección [%2d] '%s': sección con la bandera SHF_GROUP no es parte de una "
"sección de grupo\n"
-#: src/elflint.c:566
+#: src/elflint.c:574
#, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
"sección [%2d] '%s': el grupo de sección [%2zu] '%s' no precede al miembro de "
"grupo\n"
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "Sección [%2d] '%s': No se pueden obtener datos de sección\n"
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"sección [%2d] '%s': nombrado como una tabla de cadena para la sección [%2d] "
"'%s' pero el tipo no es SHT_STRTAB\n"
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"sección [%2d] '%s': la tabla de símbolo no puede tener más de una sección de "
"índice extendido\n"
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr ""
"sección [%2u] '%s': el tamaño de la entrada no coincide con ElfXX_Sym\n"
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "Sección [%2d] '%s': no se puede obtener símbolo %d: %s\n"
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "Sección [%2d] '%s': '%s' en la entrada zeroth no es cero\n"
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "sección [%2d] '%s': XINDEX en la entrada zeroth no es cero\n"
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "sección [%2d] '%s': no es posible obtener el símbolo %zu: %s\n"
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "sección [%2d] '%s': símbolo %zu: valor de nombre inválido\n"
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"Sección [%2d] '%s': símbolo %zu: el índice de sección es demasiado extenso, "
"pero no la sección extendida de la sección de índice\n"
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"Sección [%2d] '%s': símbolo %zu: XINDEX es utilizado para índice que pueda "
"caber en st_shndx (%<PRIu32>)\n"
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr "sección [%2d] '%s': símbolo %zu: índice de sección inválido\n"
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr "sección [%2d] '%s': símbolo %zu: tipo desconocido\n"
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr "sección [%2d] '%s': símbolo %zu: asociación de símbolo desconocida\n"
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr "Sección [%2d] '%s': símbolo %zu: símbolo único no de tipo de objeto\n"
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
"sección [%2d] '%s': símbolo %zu: COMMON solo es permitido en archivos "
"realojables\n"
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: símbolos locales COMMON no tienen sentido\n"
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: función en sección COMMON no tiene sentido\n"
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr "sección [%2d] '%s': símbolo %zu: st_value fuera de límites\n"
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"Sección [%2d] '%s': símbolo %zu no se ajusta totalmente en la sección [%2d] "
"'%s'\n"
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"Sección [%2d] '%s': símbolo %zu: sección de referencia [%2d] '%s' no tiene "
"establecida bandera SHF_TLS\n"
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"Sección [%2d] '%s': símbolo %zu: st_value fuera de límites de sección de "
"referencia [%2d] '%s'\n"
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
"Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de "
"programa TLS\n"
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"Sección [%2d] '%s': símbolo %zu: st_value falta sección de referencia [%2d] "
"'%s'\n"
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"Sección [%2d] '%s': símbolo %zu: símbolo local fuera del rango descrito en "
"sh_info\n"
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"Sección [%2d] '%s': símbolo %zu: símbolo non-local fuera del rango descrito "
"en sh_info\n"
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr "Sección [%2d] '%s': símbolo %zu: símbolo de sección non-local\n"
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ se refiere a sección "
"errada [%2d]\n"
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ se refiere a sección [%2d] "
"'%s'\n"
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"Sección [%2d] '%s': valor del símbolo _GLOBAL_OFFSET_TABLE_ %#<PRIx64> no "
"coincide con dirección de sección %s %#<PRIx64>\n"
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"Sección [%2d] '%s': tamaño de símbolo _GLOBAL_OFFSET_TABLE_ %<PRIu64> no "
"coincide con tamaño de sección %s %<PRIu64>\n"
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ presente, pero no. sección "
"got\n"
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"sección [%2d] '%s': Valor de símbolo _DYNAMIC_ %#<PRIx64> no coincide con la "
"dirección de segmento%#<PRIx64>\n"
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"Sección [%2d] '%s': tamaño de símbolo _DYNAMIC %<PRIu64> no coincide con "
"tamaño de segmento %<PRIu64>\n"
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"Sección [%2d] '%s': símbolo %zu: símbolo en tabla de símbolos dinámicos sin "
"visibilidad predeterminada\n"
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr ""
"Sección [%2d] '%s': símbolo %zu: bit desconocido establecido en st_other\n"
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "Sección [%2d] '%s': DT_RELCOUNT utilizada para esta sección RELA\n"
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
"Sección [%2d] '%s': valor DT_RELCOUNT %d demasiado alto para esta sección\n"
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"Sección [%2d] '%s': reubicaciones relativas después de que el %d de índice "
"haya sido especificado por DT_RELCOUNT\n"
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"Sección [%2d] '%s': reubicación no-relativa en %zu de índice; DT_RELCOUNT "
"especificado %d reubicaciones relativas\n"
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "sección [%2d] '%s': DT_RELACOUNT utilizado para esta sección REL\n"
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "Sección [%2d] '%s': índice de sección de destino inválido\n"
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "Sección [%2d] '%s': tipo de sección de destino inválido\n"
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "Sección [%2d] '%s': sh_info debe ser cero\n"
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr ""
"Sección [%2d] '%s': no reubicaciones para secciones de fusión posibles\n"
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
"Sección [%2d] '%s': tamaño de entrada de sección no coincide con ElfXX_Rela\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr "Reubicación de bandera pero no hay segmento de sólo lectura\n"
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "Sección [%2d] '%s': reubicación %zu: tipo inválido\n"
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"Sección [%2d] '%s': reubicación %zu: tipo de reubicación inválido para el "
"tipo de archivo\n"
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "Sección [%2d] '%s': reubicación %zu: índice de símbolo inválido\n"
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"Sección [%2d] '%s': reubicación %zu: sólo el símbolo '_GLOBAL_OFFSET_TABLE_' "
"puede utilizarse con %s\n"
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "Sección [%2d] '%s': reubicación %zu: compensación fuera de límites\n"
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"Sección [%2d] '%s': reubicación %zu: reubicación de copia con símbolo de "
"tipo %s\n"
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"Sección [%2d] '%s': reubicación %zu: sección de sólo-lectura modificada, "
"pero no se estableció bandera de reubicación\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
"Sección [%2d] '%s': las reubicaciones se hacen con datos cargados y "
"descargados\n"
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "Sección [%2d] '%s': no puede obtener reubicación %zu: %s\n"
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr "más de una sección dinámica presente\n"
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
"Sección [%2d] '%s': tamaño de entrada de sección no coincide con ElfXX_Dyn\n"
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "Sección [%2d] '%s': sh_info no es cero\n"
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
"Sección [%2d] '%s': no puede obtener entrada de sección dinámica %zu: %s\n"
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr "Sección [%2d] '%s': entradas non-DT_NULL siguen a la entrada DT_NULL\n"
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "Sección [%2d] '%s': entrada %zu: etiqueta desconocida\n"
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr "Sección [%2d] '%s': entrada %zu: más de una entrada con etiqueta %s\n"
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "Sección [%2d] '%s': entrada %zu: nivel 2 etiqueta %s utilizada\n"
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
"Sección [%2d] '%s': entrada %zu: el valor DT_PLTREL debe ser DT_REL or "
"DT_RELA\n"
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"Sección [%2d] '%s': entrada %zu: puntero no coincide con dirección de "
"sección [%2d] '%s' al que hace referencia sh_link\n"
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
"Sección [%2d] '%s': entrada %zu: valor %s debe apuntar en segmento cargado\n"
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"sección [%2d] '%s': entrada %zu: valor %s debe ser compensación válida en "
"sección [%2d] '%s'\n"
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "Sección [%2d] '%s': contiene entrada %s pero no %s\n"
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "Sección [%2d] '%s': etiqueta obligatoria %s no está presente\n"
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "Sección [%2d] '%s': no hay sección de dispersión presente\n"
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "Sección [%2d] '%s': no todas las %s, %s, y %s están presentes\n"
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
"Sección [%2d] '%s': etiqueta %s faltante en DSO marcada durante el pre-"
"enlace\n"
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
"Sección [%2d] '%s': archivo no-DSO marcado como dependencia durante el pre-"
"enlace\n"
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr "Sección [%2d] '%s': etiqueta %s faltante en pre-enlace ejecutable\n"
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
"Sección [%2d] '%s': sólo los archivos reubicables pueden tener índice de "
"sección extendido\n"
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
"Sección [%2d] '%s': índice de sección extendido no para tabla de símbolos\n"
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "no se puede obtener sección para símbolos\n"
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "Sección [%2d] '%s': tamaño de entrada no coincide con Elf32_Word\n"
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
"Sección [%2d] '%s': tabla de índice extendida demasiado pequeña para tabla "
"de símbolos\n"
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"Sección [%2d] '%s': índice de sección extendida en sección [%2zu] '%s' se "
"refiere a la misma tabla de símbolos\n"
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "símbolo 0 debe tener índice de sección extendida cero\n"
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "no puede obtener datos para símbolo %zu\n"
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
"índice de sección extendida es %<PRIu32> pero índice de símbolo no es "
"XINDEX\n"
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
"Sección [%2d] '%s': sección de tabla de dispersión es demasiado pequeña (es "
"%ld, se espera %ld)\n"
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "Sección [%2d] '%s': índice de la cadena es demasiado grande\n"
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
"Sección [%2d] '%s': referencia de cubetas de dispersión %zu fuera de "
"límites\n"
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
"Sección [%2d] '%s': referencia de cadena de dispersión %zu fuera de límites\n"
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
"Sección [%2d] '%s': referencia de cadena de dispersión %<PRIu64> fuera de "
"límites\n"
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr "Sección [%2d] '%s': tamaño de bitmask no es potencia de 2: %u\n"
-#: src/elflint.c:2030
-#, c-format
+#: src/elflint.c:2092
+#, fuzzy, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
"Sección [%2d] '%s': sección de tabla de dispersión es demasiado pequeña (es "
"%ld, se espera al menos least%ld)\n"
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
"Sección [%2d] '%s': segundo cambio de función de dispersión demasiado "
"grande: %u\n"
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
"Sección [%2d] '%s': cadena de dispersión para cubetas %zu inferior a "
"polarización de índice de símbolo\n"
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"Sección [%2d] '%s': el símbolo %u al que se hace referencia en cadena para "
"cubeta %zu es indefinido\n"
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
"Sección [%2d] '%s': valor de dispersión para símbolo %u en cadena para "
"cubeta %zu está errado\n"
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
"Sección [%2d] '%s': cadena de dispersión para cubeta %zu fuera de limites\n"
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
"Sección [%2d] '%s': referencia de símbolo en cadena para cubeta %zu fuera de "
"límites\n"
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
"Sección [%2d] '%s': bitmask no coincide con nombres en la tabla de "
"dispersión\n"
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
"Sección [%2d] '%s': archivos reubicables no pueden tener tablas de "
"dispersión\n"
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
"Sección [%2d] '%s': tabla de dispersión no para tabla de símbolos dinámicos\n"
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr ""
"Sección [%2d] '%s': tamaño incorrecto de entrada de tabla de dispersión\n"
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "Sección [%2d] '%s': no marcada para ser asignada\n"
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"Sección [%2d] '%s': tabla de dispersión no tiene ni siquiera espacio para "
"entradas administrativas iniciales\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
"sh_link en secciones de dispersión [%2zu] '%s' y [%2zu] '%s' no son "
"idénticas\n"
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "Sección [%2zu] '%s': referencia al índice de símbolo 0\n"
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"Símbolo %d nombrado en nueva tabla de dispersión en [%2zu] '%s' pero no en "
"la tabla de dispersión anterior en [%2zu] '%s'\n"
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"Símbolo %d nombrado en la tabla de dispersión anterior en [%2zu] '%s' pero "
"no en la nueva tabla de dispersión en [%2zu] '%s'\n"
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "Sección [%2d] '%s': nonzero sh_%s para sección NULL\n"
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
"Sección [%2d] '%s': grupos de sección sólo permitidos en archivos de objeto "
"reubicables\n"
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "Sección [%2d] '%s': no puede obtener tabla de símbolos: %s\n"
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
"Sección [%2d] '%s': referencia de sección en sh_link no es una tabla de "
"símbolos\n"
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "Sección [%2d] '%s': índice de símbolo inválido en sh_info\n"
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "Sección [%2d] '%s': sh_flags no cero\n"
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "Sección [%2d] '%s': no puede obtener símbolo para firma\n"
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr ""
"sección [%2d] '%s': el símbolo de firma no puede ser una cadena vacía\n"
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "Sección [%2d] '%s': sh_flags no establecida correctamente\n"
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "Sección [%2d] '%s': no puede obtener datos: %s\n"
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
"Sección [%2d] '%s': tamaño de sección no es múltiplo de tamaño de "
"(Elf32_Word)\n"
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "Sección [%2d] '%s': grupo de sección sin palabra de banderas\n"
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "Sección [%2d] '%s': grupo de sección sin miembro\n"
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "Sección [%2d] '%s': grupo de sección con sólo un miembro\n"
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "Sección [%2d] '%s': banderas de grupo de sección desconocido\n"
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr "Sección [%2d] '%s': índice de sección %Zu fuera de rango\n"
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
"Sección [%2d] '%s': no se puede obtener encabezamiento de sección para "
"elemento %zu: %s\n"
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr "Sección [%2d] '%s': grupo de sección contiene otro grupo [%2d] '%s'\n"
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"Sección [%2d] '%s': elemento %Zu hace referencia a sección [%2d] '%s' sin "
"establecer bandera SHF_GROUP\n"
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "Sección [%2d] '%s' está contenida en más de un grupo de sección\n"
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"Sección [%2d] '%s' se refiere en sh_link a la sección [%2d] '%s' la cual no "
"es una tabla de símbolos dinámicos\n"
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"Sección [%2d] '%s' tiene un número diferente de entradas a la de la tabla de "
"símbolos [%2d] '%s'\n"
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr ""
"Sección [%2d] '%s': el símbolo %d: no se pueden leer datos de versión\n"
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
"Sección [%2d] '%s': el símbolo %d: el símbolo local con alcance mundial\n"
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "Sección [%2d] '%s': símbolo %d: símbolo local con versión\n"
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "Sección [%2d] '%s': símbolo %d: índice de versión inválida %d\n"
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
"Sección [%2d] '%s': símbolo %d: índice de versión %d es para versión "
"definida\n"
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
"Sección [%2d] '%s': símbolo %d: índice de versión %d es para la versión "
"solicitada\n"
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr "Más de una sección de referencia de versión presente\n"
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "Sección [%2d] '%s': sh_link no se enlaza a la tabla de cadenas\n"
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "Sección [%2d] '%s': entrada %d tiene versión %d errada\n"
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene compensación errada de datos "
"auxiliares\n"
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "Sección [%2d] '%s': entrada %d tiene referencia de archivo inválida\n"
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "Sección [%2d] '%s': %d hace referencia a dependencia desconocida\n"
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
"sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene bandera "
"desconocida\n"
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene referencia de "
"nombre inválida\n"
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene valor de "
"dispersión: %#x, esperado %#x\n"
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene nombre duplicado "
"'%s'\n"
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
"sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene próximo campo "
"errado\n"
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
"sección [%2d] '%s': entrada %d tiene compensación inválida para próxima "
"entrada\n"
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr "más de una definición de versión presente de sección\n"
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "Sección [%2d] '%s': más de una definición de BASE\n"
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
"Sección [%2d] '%s': definición de BASE debe tener índice VER_NDX_GLOBAL\n"
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "Sección [%2d] '%s': entrada %d tiene bandera desconocida\n"
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr "Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida\n"
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene valor de dispersión errado: %#x, "
"esperado %#x\n"
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene nombre de versión duplicado '%s'\n"
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
"Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida en datos "
"auxiliares\n"
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
"Sección [%2d] '%s': entrada %d tiene próximo campo errado en datos "
"auxiliares\n"
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "Sección [%2d] '%s': no hay definición de BASE\n"
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "Sección [%2d] '%s': desconocida versión principal '%s'\n"
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "Sección [%2d] '%s': sección de atributos de objeto vacío\n"
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "Sección[%2d] '%s': formato de atributo no reconocido\n"
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
"Sección[%2d] '%s': compensación %zu: campo de longitud cero en sección de "
"atributo\n"
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
"Sección[%2d] '%s': compensación %zu: longitud inválida en sección de "
"atributo\n"
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
"Sección[%2d] '%s': compensación %zu: cadena de nombre de proveedor sin "
"terminar\n"
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
"Sección [%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de sub-"
"sección de atributo\n"
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "Sección [%2d] '%s': compensación %zu: sección de atributo truncado\n"
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
"Sección [%2d] '%s': compensación %zu: campo de longitud cero length en sub-"
"sección de atributo\n"
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
"Sección [%2d] '%s': compensación %zu: longitud inválida en sub-sección de "
"atributo\n"
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
"Sección[%2d] '%s': compensación %zu: sub-sección de atributo tiene etiqueta "
"inesperada %u\n"
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
"Sección[%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de "
"atributo\n"
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr ""
"Sección [%2d] '%s': compensación %zu: cadena sin terminar en atributo\n"
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr ""
"Sección [%2d] '%s': compensación %zu: etiqueta de atributo no reconocida %u\n"
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
"Sección [%2d] '%s': compensación %zu: no reconocido %s valor de atributo "
"%<PRIu64>\n"
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "Sección [%2d] '%s': compensación %zu: proveedor '%s' desconocido\n"
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
"Sección [%2d] '%s': compensación %zu: extra bytes después de la última "
"sección de atributo\n"
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "no puede obtener encabezamiento de sección de sección zeroth\n"
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "Sección zeroth tiene nombre nonzero\n"
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "Sección zeroth tiene tipo nonzero\n"
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "Sección zeroth tiene banderas nonzero\n"
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "Sección zeroth tiene dirección nonzero\n"
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "Sección zeroth tiene compensación nonzero\n"
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "Sección zeroth tiene valor de alineación nonzero\n"
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "Sección zeroth tiene valor de tamaño de entrada nonzero\n"
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"Sección zeroth tiene valor de tamaño nonzero mientras que el encabezamiento "
"ELF tiene valor shnum nonzero\n"
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"Sección zeroth tiene valor de enlace nonzero mientras que el encabezamiento "
"ELF no señala sobreflujo en shstrndx\n"
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"la sección zeroth tiene un valor de enlace distinto a cero mientras que el "
"encabezamiento ELF no señala desbordamiento en phnum\n"
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "No se puede obtener encabezamiento para sección [%2zu] '%s': %s\n"
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "Sección [%2zu]: nombre inválido\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr "Sección [%2d] '%s' tiene tipo errado: %s esperado, es %s\n"
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "Sección [%2zu] '%s' tiene banderas erradas: %s esperado, es %s\n"
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
"Sección [%2zu] '%s' tiene banderas erradas: %s esperado y posiblemente %s, "
"es %s\n"
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "Sección [%2zu] '%s' presente en archivo objeto\n"
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
"Sección [%2zu] '%s' tiene bandera SHF_ALLOC establecida pero no es un "
"segmento cargable\n"
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"Sección [%2zu] '%s' no tiene bandera SHF_ALLOC establecida pero hay "
"segmentos cargables\n"
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
"Sección [%2zu] '%s' es tabla de índice de sección de extensión en archivo no-"
"objeto\n"
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr "Sección [%2zu] '%s': tamaño no es múltiplo de tamaño de entrada\n"
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr "no se puede obtener encabezamiento de sección\n"
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "sección [%2zu] '%s' tiene tipo %d incompatible \n"
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
"Sección [%2zu] '%s' contiene bandera(s) de procesador-específico inválidas "
"%#<PRIx64>\n"
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "Sección [%2zu] '%s' contiene bandera(s) desconocidas %#<PRIx64>\n"
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
"Sección [%2zu] '%s': dirección de secciones de datos de hilo-local no cero\n"
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
"Sección [%2zu] '%s': referencia de sección inválida en valor de enlace\n"
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
"Sección [%2zu] '%s': referencia de sección inválida en valor de información\n"
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr ""
"Sección [%2zu] '%s': bandera de cadenas establecida sin bandera de fusión\n"
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
"Sección [%2zu] '%s': bandera de fusión establecida pero tamaño de entrada es "
"cero\n"
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
"Sección [%2zu] '%s' tiene un tipo %d inesperado para una sección ejecutable\n"
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "Sección [%2zu] '%s' es tanto de ejecución como de escritura\n"
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"Sección [%2zu] '%s' no contenida totalmente en segmento de entrada de "
"encabezamiento de programa %d\n"
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"Sección [%2zu] '%s' no tiene tipo NOBITS pero es leída desde el archivo en "
"segmento de entrada de encabezamiento de programa %d\n"
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"Sección [%2zu] '%s' no tiene tipo NOBITS pero no es leída desde el fichero "
"en segmento de entrada de encabezamiento de programa %d\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "Sección [%2zu] '%s' es ejecutable en segmento no ejecutable %d\n"
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
"Sección [%2zu] '%s' es de escritura en segmento que no es de escritura %d\n"
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
"Sección [%2zu] '%s': asignación de bandera establecida pero sección no en "
"ningún segmento cargado\n"
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"Sección [%2zu] '%s': encabezamiento ELF dice esta es la tabla de cadena de "
"encabezamiento de sección, pero el tipo no es SHT_TYPE\n"
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
"sección [%2zu] '%s': ficheros reubicables no pueden tener tablas de símbolos "
"dinámicos\n"
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr "Más de una tabla de símbolos presente\n"
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr ""
"Entrada de encabezamiento de programa INTERP pero no la sección .interp\n"
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
"segmento cargable [%u] es ejecutable pero no contiene secciones ejecutables\n"
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
"segmento cargable [%u] es de escritura pero contiene secciones protegidas "
"contra escritura\n"
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"Sección no .gnu.versym presente, pero la sección .gnu.versym_d o la sección ."
"gnu.versym_r existen\n"
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr "Duplicar índice de versión %d\n"
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
"Sección .gnu.versym presente sin las secciones .gnu.versym_d o .gnu."
"versym_r\n"
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
"phdr[%d]: tipo de nota de fichero core desconocido %<PRIu32> en compensación "
"%<PRIu64>\n"
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
"Sección [%2d] '%s': tipo de nota de fichero core desconocido %<PRIu32> en "
"compensación %Zu\n"
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
"phdr[%d]: tipo de nota de fichero objeto desconocido %<PRIu32> en "
"compensación %Zu\n"
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
"Sección [%2d] '%s': tipo de nota de fichero objeto desconocido %<PRIu32> en "
"compensación %Zu\n"
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: no hay entradas de nota definidas para el tipo de archivo\n"
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: no puede obtener contenido de sección de nota: %s\n"
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: extra %<PRIu64> bytes después de la última nota\n"
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
"Sección [%2d] '%s': no hay entradas de nota definidas para el tipo de "
"archivo\n"
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr ""
"Sección[%2d] '%s': no se puede obtener el contenido de sección de nota\n"
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr "Sección[%2d] '%s': extra %<PRIu64> bytes después de la última nota\n"
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
"Sólo ejecutables, objetos compartidos y ficheros core pueden tener "
"encabezamientos de programas\n"
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "no se puede obtener entrada de encabezamiento %d: %s\n"
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"entrada de encabezamiento de programa %d: tipo %#<PRIx64> de entrada de "
"encabezamiento de programa desconocido\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "Más de una entrada INTERP en encabezamiento de programa\n"
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "más de una entrada TLS en encabezamiento de programa\n"
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "ejecutable estático no puede tener secciones dinámicas\n"
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
"Referencia de sección dinámica en encabezamiento de programa tiene "
"compensación errada\n"
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
"No coinciden tamaño de sección dinámica en programa y encabezamiento de "
"sección\n"
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "Más de una entrada GNU_RELRO en encabezamiento de programa\n"
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr "Segmento cargable GNU_RELRO que se aplica no es de escritura\n"
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
"Banderas de segmento cargable [%u] no coinciden con banderas GNU_RELRO [%u]\n"
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "Segmento %s no contenido en un segmento cargable\n"
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
"Compensación de encabezamiento de programa en encabezamiento ELF y entrada "
"PHDR no coinciden"
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
"Referencia de tabla de búsqueda de marco de llamada en encabezamiento de "
"programa tiene una compensación errada\n"
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
"Tamaño de tabla de búsqueda de marco de llamada no coincide con programa y "
"encabezamiento de sección\n"
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "PT_GNU_EH_FRAME presente pero no la sección.eh_frame_hdr\n"
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "tabla de búsqueda de marco de llamada debe ser asignada\n"
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "sección [%2zu] '%s' debe ser asignada\n"
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr ""
"tabla de búsqueda de marco de llamada no debe tener permiso de escritura\n"
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "sección [%2zu] '%s' no debe tener permiso de escritura\n"
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "tabla de búsqueda de marco de llamada no debe ser ejecutable\n"
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "sección [%2zu] '%s' no debe ser ejecutable\n"
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr ""
"entrada de encabezamiento de programa %d: tamaño de fichero mayor que el "
"tamaño de memoria\n"
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr ""
"entrada de encabezamiento de programa %d: alineamiento no es potencia de 2\n"
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"entrada de encabezamiento de programa %d: compensación de fichero y "
"dirección virtual no módulo de alineación\n"
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"ejecutable/DSO con sección .eh_frame_hdr no tiene una entrada de "
"encabezamiento de programa PT_GNU_EH_FRAME"
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "No se puede leer encabezamiento ELF: %s\n"
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr "Bandera de reubicación de texto establecida pero no necesaria\n"
msgstr ""
"Advertencia: el tamaño de `%s' cambió de %<PRIu64> en %s a %<PRIu64> en %s"
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "no se pudieron determinar el número de secciones: %s"
msgid "cannot get header of 0th section: %s"
msgstr "No se puede obtener encabezamiento de sección 0th: %s"
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr "No se puede actualizar encabezamiento ELF: %s"
msgstr "%s: ERROR INTERNO %d (%s-%s): %s"
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr "error al cerrar '%s'"
msgid "cannot create search tree"
msgstr "No se puede crear el árbol de búsqueda"
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr "no se puede obtener índice de cadena de encabezamiento de sección"
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"Símbolos de %s:\n"
"\n"
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"%*s%-*s %-*s Clase Tipo %-*s %*s Sección\n"
"\n"
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr ""
"%s: el tamaño de la entrada en la sección `%s' no es el que esperábamos "
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr "%s: Tamaño de sección `%s' no es múltiplo de tamaño de entrada"
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: Operación inválida"
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: No hay símbolos"
msgid "Show information from FILEs (a.out by default)."
msgstr "Muestra información de FICHEROS (a.out por defecto)."
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr "No se especificó una operación.\n"
msgid "while close `%s'"
msgstr "mientras cierra `%s'"
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr "SÍMBOLO INVÁLIDO"
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr "SECCIÓN INVÁLIDA"
msgid "error while freeing sub-ELF descriptor: %s"
msgstr "error al liberar descriptor sub-ELF: %s"
-#: src/readelf.c:67
+#: src/readelf.c:71
+#, fuzzy
+msgid "ELF input selection:"
+msgstr "Selección de salida de ELF:"
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+
+#: src/readelf.c:75
msgid "ELF output selection:"
msgstr "Selección de salida de ELF:"
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr "Todo esto mas -p .strtab -p .dynstr -p .comment"
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr "Mostrar el segmento dinámico"
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr "Mostrar el encabezamiento del fichero ELF"
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr "Mostrar histograma de las longitudes de las listas de cubetas"
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr "Mostrar encabezamientos de programa"
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr "Mostrar reubicaciones"
-#: src/readelf.c:77
+#: src/readelf.c:85
msgid "Display the sections' headers"
msgstr "Mostrar los encabezados de las secciones"
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr "Mostrar la tabla de símbolos"
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr "Mostrar información de versión"
-#: src/readelf.c:81
+#: src/readelf.c:89
msgid "Display the ELF notes"
msgstr "Mostrar las notas ELF"
-#: src/readelf.c:83
+#: src/readelf.c:91
msgid "Display architecture specific information, if any"
msgstr "Mostrar información específica de la arquitectura (si es que la hay)"
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr "Muestra secciones para manejo de excepciones"
-#: src/readelf.c:87
+#: src/readelf.c:95
msgid "Additional output selection:"
msgstr "Selección de salida adicional:"
-#: src/readelf.c:89
+#: src/readelf.c:97
#, fuzzy
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
"Mostrar el contenido de la sección DWARF. SECCIÓN puede ser algo de lo "
"siguiente: abbrev, aranges, frame, info, loc, line, ranges, pubnames, str, "
"macinfo, o exception"
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr "Vuelca los contenidos no interpretados de SECCIÓN, por número o nombre"
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr "Imprime contenido de cadena de secciones"
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr "Muestra el índice de símbolos de un archivo"
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr "Control de salida:"
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
msgstr ""
"No se encuentran los nombres de símbolos para direcciones en datos DWARF"
-#: src/readelf.c:104
+#: src/readelf.c:112
+#, fuzzy
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr ""
+"No se encuentran los nombres de símbolos para direcciones en datos DWARF"
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
msgstr ""
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr ""
"Imprimir información del fichero ELF en una forma comprensible para los "
"seres humanos."
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Sección de depuración DWARF desconocida `%s'.\n"
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "no se puede crear descriptor ELF: %s"
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr "'%s' no es un archivo, no se puede imprimir índice de archivo"
+msgid "cannot get section: %s"
+msgstr "No se puede encontrar la sección: %s"
+
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
+msgstr "No se puede obtener encabezamiento de sección: %s"
+
+#: src/readelf.c:562
+#, fuzzy, c-format
+msgid "cannot get section name"
+msgstr "no se puede obtener encabezamiento de sección\n"
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr "No se puede obtener el contenido %s: %s"
+
+#: src/readelf.c:587
+#, fuzzy, c-format
+msgid "cannot create temp file '%s'"
+msgstr "no se puede crear fichero nuevo '%s': %s"
+
+#: src/readelf.c:596
+#, fuzzy, c-format
+msgid "cannot write section data"
+msgstr "no se puede leer la sección de datos: %s"
-#: src/readelf.c:493
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "error al cerrar el descriptor ELF: %s"
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, fuzzy, c-format
+msgid "error while rewinding file descriptor"
+msgstr "error al cerrar el descriptor ELF: %s"
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr "'%s' no es un archivo, no se puede imprimir índice de archivo"
+
+#: src/readelf.c:742
+#, fuzzy, c-format
+msgid "No such section '%s' in '%s'"
+msgstr "No se puede obtener contenido de sección %zu en '%s': %s"
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr "no sepudo stat archivo de entrada"
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr "archivo de entrada vacío"
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr "Falló lectura de '%s': %s"
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr "no se pudo leer encabezamiento ELF: %s"
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr "no se puede crear EBL"
-#: src/readelf.c:646
+#: src/readelf.c:835
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr "NONE (Ninguno)"
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr "REL (Fichero reubicable)"
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr "EXEC (Fichero ejecutable)"
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr "DYN (Fichero objeto compartido)"
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr "CORE (Fichero núcleo)"
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "OS Specific: (%x)\n"
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Específico del procesador: (%x)\n"
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
"Encabezamiento ELF:\n"
" Mágico: "
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
"\n"
" Clase: %s\n"
-#: src/readelf.c:762
+#: src/readelf.c:951
#, c-format
msgid " Data: %s\n"
msgstr " Datos: %s\n"
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " Versión ident: %hhd %s\n"
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr "(actual)"
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr " OS/ABI: %s\n"
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " Versión ABI: %hhd\n"
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr " Tipo: "
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr " Máquina: %s\n"
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr " Versión: %d %s\n"
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " Dirección de punto de entrada: %#<PRIx64>\n"
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Inicio de encabezamientos de programa: %<PRId64> %s\n"
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr " (bytes en el archivo)"
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Inicio de encabezamientos de sección: %<PRId64> %s\n"
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr " Indicadores: %s\n"
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Tamaño de este encabezamiento: %<PRId16> %s\n"
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr "(bytes)"
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr ""
" Tamaño de las entradas en encabezamiento del programa: %<PRId16> %s\n"
-#: src/readelf.c:807
+#: src/readelf.c:996
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " Cantidad de entradas de encabezados de programa: %<PRId16>"
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> in [0].sh_info)"
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr " ([0] no disponible)"
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr ""
" Tamaño de las entradas en el encabezamiento de sección: %<PRId16> %s\n"
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " Cantidad de entradas en los encabezamientos de sección: %<PRId16>"
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> en [0].sh_size)"
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> en [0].sh_link)"
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
" Índice de tabla de cadenas de sección de encabezamiento de : XINDEX%s\n"
"\n"
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
"\n"
msgstr " Índice de tabla de cadenas de sección de encabezamiento: %<PRId16>\n"
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"Hay %d encabezamientos de sección, comenzando en compensación %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr "encabezamientos de sección:"
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
"[Nr] Nombre Tipo Dirección Off Tamaño Inf Al "
"Enlace banderas ES"
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr "No se puede encontrar la sección: %s"
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr "No se puede obtener encabezamiento de sección: %s"
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr "encabezamientos de programa:"
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Tipo Compensación Dirección Virtual Dirección "
"Física Tamaño de Fichero Tamaño de Memoria Alineación de bandera"
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
" Tipo Compensación Dirección Virtual Dirección "
"Física Tamaño de Fichero Tamaño de Memoria Alineación de bandera"
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Solicitando intérprete de programa: %s]\n"
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" Sección para asignación de segmento:\n"
" Secciones de segmento..."
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr "no se puede obtener memoria para encabezamiento del programa: %s"
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
"\n"
"Grupo de sección COMDAT [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
"\n"
"Grupo de sección [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr "<SÍMBOLO INVÁLIDO>"
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr "<SECCIÓN INVÁLIDA>"
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, fuzzy, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr ".debug_line section inválida"
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr " Tipo Valor\n"
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Biblioteca compartida: [%s]\n"
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr "Nombre-so de la biblioteca: [%s]\n"
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "Rpath de la biblioteca: [%s]\n"
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "Ruta de ejecución de la biblioteca: [%s]\n"
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (bytes)\n"
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"\n"
"Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
"Sección de reubicación [%2zu] '%s' para sección [%2u] '%s' en compensación "
"%#0<PRIx64> contiene entradas %d:\n"
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
"Sección de reubicación [%2u] '%s' en compensación %#0<PRIx64> contiene "
"entradas %d:\n"
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr " Compensación Tipo Valor Nombre\n"
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr " Compensación Tipo Valor Nombre\n"
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr "<REUBIC INVÁLIDA>"
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr " Compensación Tipo Valor Nombre Adend\n"
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr " Compensación Tipo Valor Nombre Adend\n"
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
"\n"
"La tabla de símbolos [%2u] '%s' contiene entradas %u:\n"
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] "símbolos locales %lu Tabla de cadena: [%2u] '%s'\n"
msgstr[1] " Símbolos locales %lu Tabla de cadenas: [%2u] '%s'\n"
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Núm: Valor Tamaño Tipo Unión Vis Nombre Ndx\n"
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Num: Valor Tamaño Tipo Unión Vis Nombre Ndx\n"
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr "símbolo dinámico erróneo"
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr "nada"
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr "| <desconocido>"
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Versión: %hu Fichero: %s Conteo: %hu\n"
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Nombre: %s Banderas: %s Versión: %hu\n"
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr ""
" %#06x: Versión: %hd Banderas: %s Índice: %hd Conteo: %hd Nombre: %s\n"
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: Principal %d: %s\n"
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'"
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr " 0 *local* "
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr " 1 *global* "
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
" Dirección: %#0*<PRIx64> Compensación: %#08<PRIx64> Enlace a sección: "
"[%2u] '%s'\n"
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Longitud Número % of total Cobertura\n"
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
" Número promedio de pruebas: búsqueda exitosa: %f\n"
" búsqueda sin éxito: %f\n"
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "No se pueden obtener datos para la sección %d: %s"
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Tamaño de Bitmask: %zu bytes %<PRIuFAST32>%% bits establecen segundo "
"cambio de dispersión: %u\n"
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
"Sección de lista de biblioteca [%2zu] '%s' en compensación %#0<PRIx64> "
"contiene entradas %d:\n"
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
" Biblioteca Marca de tiempo Indicadores "
"de versión de suma de verificación"
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"Sección de atributos de objeto [%2zu] '%s' de %<PRIu64> bytes con "
"desplazamiento %#0<PRIx64>:\n"
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr " Propietario Tamaño\n"
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " File: %11<PRIu32>\n"
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr "%s+%#<PRIx64> <%s>"
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr "%s+%#0*<PRIx64> <%s>"
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr "%#<PRIx64> <%s>"
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr "%#0*<PRIx64> <%s>"
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr "%s+%#<PRIx64>"
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr "bloque vacío"
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr "bloque de byte %zu:"
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> utilizado con offsetr de diferente tamaño"
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, fuzzy, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <MATERIAL INUTIL SIN UTILIZAR EN EL RESTO DE LA SECCION>\n"
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <MATERIAL INUTIL NO UTILIZADO> ... %<PRIu64> bytes ...\n"
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" [ Código]\n"
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"\n"
"Sección de abreviatura en compensación %<PRIu64>:\n"
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** error en lectura de abreviatura: %s\n"
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] compensación: %<PRId64>, hijos: %s, etiqueta: %s\n"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr "sí"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr "no"
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "no se ha podido obtener contenido de .debug_aranges: %s"
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entradas %zu:\n"
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
" Inicio [%*zu]: %0#*<PRIx64>, longitud: %5<PRIu64>, compensación CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:4219
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
-
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
msgid ""
"\n"
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4569 src/readelf.c:6171
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Tabla en compensación %Zu:\n"
+
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "Datos inválidos en sección [%zu] '%s'"
+
+#: src/readelf.c:4589
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr " (compensación: %#<PRIx64>)"
+
+#: src/readelf.c:4601
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4616
+#, fuzzy, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr " (compensación: %#<PRIx64>)"
+
+#: src/readelf.c:4622
+#, fuzzy, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr " (fin de compensación: %#<PRIx64>)"
+
+#: src/readelf.c:4626
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "no hay valor de dirección"
+
+#: src/readelf.c:4631
+#, fuzzy, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr " establecer archivo a %<PRIu64>\n"
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4675
+#, fuzzy, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4678
+#, fuzzy, c-format
+msgid " %s..%s\n"
+msgstr " [%6tx] %s..%s\n"
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <DATOS INVÁLIDOS>\n"
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] (dirección base) %s\n"
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] lista vacía\n"
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "No se puede obtener el contenido %s: %s"
+#: src/readelf.c:5210
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "no se puede leer encabezamiento ELF: %s"
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"Sección de información de marco de llamada [%2zu] '%s' en compensación "
"%#<PRIx64>:\n"
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "Datos inválidos en sección [%zu] '%s'"
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
"\n"
" [%6tx] Terminator cero\n"
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, c-format
msgid "invalid augmentation length"
msgstr "longitud de aumento inválida"
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr "Codificación de dirección FDE:"
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr "Codificación de puntero LSDA:"
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr "Puntero %-26sLSDA: %#<PRIx64>\n"
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr "No se puede obtener código de atributo: %s"
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr "No se puede obtener forma de atributo: %s"
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr "No se puede obtener valor: %s"
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
"Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
" Tipo de firma: %#<PRIx64>, Tipo de compensación: %#<PRIx64>\n"
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
" Versión: %<PRIu16>, Compensación de sección de abreviatura: %<PRIu64>, "
"Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "no se puede obtener DIE en compensación %<PRIu64> en sección '%s': %s"
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "no se puede obtener DIE en compensación: %s"
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"no se ha podido obtener etiqueta de DIE en compensación%<PRIu64> en sección "
"'%s': %s"
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "No se puede obtener próximo DIE: %s\n"
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr "No se puede obtener próximo DIE: %s"
-#: src/readelf.c:5518
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr "No se puede obtener sección de datos de línea: %s"
-
-#: src/readelf.c:5531
-#, c-format
+#: src/readelf.c:6059
+#, fuzzy, c-format
msgid ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
"\n"
-"Tabla en compensación %Zu:\n"
+"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
-#: src/readelf.c:5586
+#: src/readelf.c:6158
+#, c-format
+msgid "cannot get line data section data: %s"
+msgstr "No se puede obtener sección de datos de línea: %s"
+
+#: src/readelf.c:6226
#, c-format
msgid ""
"\n"
"\n"
"Códigos operativos:\n"
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "datos inválidos en compensación %tu en sección [%zu] '%s'"
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] argumento %hhu \n"
msgstr[1] " [%*<PRIuFAST8>] argumento %hhu\n"
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
"\n"
"Tabla de Directorio:"
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
"Tabla de nombre de archivo:\n"
" Directorio de entrada Tiempo Tamaño Nombre"
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
"\n"
" Declaraciones de número de Línea:"
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
" opcode especial %u: dirección+%u = %s, op_index = %u, línea%+d = %zu\n"
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " opcode especial %u: dirección+%u = %s, línea%+d = %zu\n"
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr " Código operativo extendido %u: "
-#: src/readelf.c:5781
+#: src/readelf.c:6421
#, fuzzy
msgid " end of sequence"
msgstr "Fin de secuencia"
-#: src/readelf.c:5798
+#: src/readelf.c:6438
#, fuzzy, c-format
msgid " set address to %s\n"
msgstr "Establecer dirección a %s\n"
-#: src/readelf.c:5819
+#: src/readelf.c:6459
#, fuzzy, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
"definir nuevo archivo: dir=%u, mtime=%<PRIu64>, longitud=%<PRIu64>, nombre="
"%s\n"
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, c-format
msgid " set discriminator to %u\n"
msgstr " establecer discriminador a %u\n"
-#: src/readelf.c:5837
+#: src/readelf.c:6477
#, fuzzy
msgid " unknown opcode"
msgstr "código operativo desconocido "
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr "Copiar"
-#: src/readelf.c:5860
+#: src/readelf.c:6500
#, fuzzy, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr "dirección avanzada por %u a %s, op_index a %u\n"
-#: src/readelf.c:5864
+#: src/readelf.c:6504
#, fuzzy, c-format
msgid " advance address by %u to %s\n"
msgstr "Dirección de avance por %u a %s\n"
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " línea de avance por la constante %d a %<PRId64>\n"
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " establecer archivo a %<PRIu64>\n"
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " Establecer columna a %<PRIu64>\n"
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr "Establecer '%s' a %<PRIuFAST8>\n"
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr "Establecer bandera de bloque básico"
-#: src/readelf.c:5915
+#: src/readelf.c:6555
#, fuzzy, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr "dirección avanzada por constante %u a %s, op_index a %u\n"
-#: src/readelf.c:5919
+#: src/readelf.c:6559
#, fuzzy, c-format
msgid " advance address by constant %u to %s\n"
msgstr "Dirección de avance por constante %u a %s\n"
-#: src/readelf.c:5937
+#: src/readelf.c:6577
#, fuzzy, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr "dirección de avance por valor corregido %u a %s\n"
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr " Establecer bandera prologue_end"
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr " Establecer bandera epilogue_begin"
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, c-format
msgid " set isa to %u\n"
msgstr " establecer isa para %u\n"
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " opcódigo con parámetro %<PRIu8> desconocido:"
msgstr[1] " opcódigo con parámetros %<PRIu8> desconocido:"
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "no es posible obtener contenido de .debug_loc: %s"
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:6080
+#: src/readelf.c:6725
msgid " <INVALID DATA>\n"
msgstr " <DATOS INVÁLIDOS>\n"
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "no es posible obtener datos de la sección de macro información: %s"
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** cadena no finalizada al final de la sección"
-#: src/readelf.c:6327
+#: src/readelf.c:6972
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " Propietario Tamaño\n"
-#: src/readelf.c:6339
+#: src/readelf.c:6984
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:6352
+#: src/readelf.c:6997
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " Dirección de punto de entrada: %#<PRIx64>\n"
-#: src/readelf.c:6355
+#: src/readelf.c:7000
#, fuzzy, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:6363
+#: src/readelf.c:7008
#, fuzzy, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:6375
+#: src/readelf.c:7021
#, fuzzy, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " opcódigo con parámetro %<PRIu8> desconocido:"
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:6394
+#: src/readelf.c:7040
#, fuzzy, c-format
msgid " %<PRIu8> arguments:"
msgstr " [%*<PRIuFAST8>] argumento %hhu \n"
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
msgstr ""
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
" Compensación [%5d] DIE: %6<PRId64>, Compensación CU DIE: %6<PRId64>, "
"nombre: %s\n"
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, c-format
msgid ""
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
" %*s String\n"
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** error en lectura de cadenas: %s\n"
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"\n"
"Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"\n"
"Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr "Codificación LPStart: %#x "
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr "Codificación TType: %#x "
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr "Codificación de sitio de llamada: %#x "
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
"\n"
" Tabla de sitio de llamada:"
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" Landing pad: %#<PRIx64>\n"
" Action: %u\n"
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr "Codificación TType inválida"
-#: src/readelf.c:7019
+#: src/readelf.c:7665
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:7048
+#: src/readelf.c:7694
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7064
+#: src/readelf.c:7712
#, fuzzy, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:7071
+#: src/readelf.c:7719
#, fuzzy, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:7078
+#: src/readelf.c:7726
#, fuzzy, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:7085
+#: src/readelf.c:7733
#, fuzzy, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " (compensación: %#<PRIx64>)"
-#: src/readelf.c:7092
+#: src/readelf.c:7740
#, fuzzy, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " (fin de compensación: %#<PRIx64>)"
-#: src/readelf.c:7099
+#: src/readelf.c:7747
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:7121
+#: src/readelf.c:7769
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:7147
+#: src/readelf.c:7795
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
-#: src/readelf.c:7174
+#: src/readelf.c:7824
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "no se puede depurar descriptor de contexto: %s"
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr "no es posible convertir datos de la nota principal: %s"
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"\n"
"%*s... <repeats %u more times> ..."
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr " Owner Data size Type\n"
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr "no se puede obtener el contenido de sección de nota: %s"
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"\n"
"Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"\n"
"Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"\n"
"Sección [%Zu] '%s' no tiene datos para volcar.\n"
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr "no se pueden obtener datos para sección [%Zu] '%s': %s"
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, c-format
msgid ""
"\n"
"\n"
"Sección [%Zu] '%s' no tiene datos para volcar.\n"
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
"%#0<PRIx64>:\n"
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"\n"
"sección [%lu] no existe"
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"\n"
"sección '%s' no existe"
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "no se puede obtener el índice de símbolo de archivo '%s': %s"
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"\n"
"Archivo '%s' no tiene índice de símbolo\n"
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"\n"
"Índice de archivo '%s' tiene %Zu entradas:\n"
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr "no es posible extraer miembro en compensación %Zu en '%s': %s"
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Miembro de archivo contiene '%s':\n"
msgid "%s: file format not recognized"
msgstr "%s: No se reconoce el formato del fichero"
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr "(TOTALES)\n"
msgid "Print the strings of printable characters in files."
msgstr "Imprimir las cadenas de caracteres imprimibles en archivos."
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr "Valor inválido '%s' para parámetro %s"
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr "longitud mínima inválida de tamaño de cadena coincidente"
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr "lseek64 falló"
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr "re-mmap falló"
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr "mprotect falló"
msgid "-F option specified twice"
msgstr "opción -F especificada dos veces"
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "opción -o especificada dos veces"
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: no puede utilizarse -o o -f cuando se extrae un archivo"
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr "No se puede abrir el segundo plano EBL"
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "no se puede crear fichero nuevo '%s': %s"
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr "Fichero illformed '%s'"
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr "al generar fichero de salida: %s"
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: error al crear encabezamiento ELF: %s"
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr "al preparar salida para '%s'"
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr "al crear sección de encabezamiento de sección: %s"
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr "no se puede asignar espacio para los datos: %s"
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr "al crear tabla de cadenas de encabezamiento de sección: %s"
-#: src/strip.c:1724
+#: src/strip.c:1752
#, fuzzy, c-format
msgid "bad relocation"
msgstr "Mostrar reubicaciones"
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr "al escribir '%s': %s"
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr "al crear '%s'"
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr "al computar la suma de verificación para información de depuración"
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: error al leer el fichero: %s"
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, c-format
msgid "while writing '%s'"
msgstr "al escribir '%s'"
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr "Error al terminar '%s': %s"
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "no es posible establecer acceso y fecha de modificación de '%s'"
msgid "Only list module and file names, build IDs"
msgstr "Solamente listar módulo y nombres de archivo, crear los ID"
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr ""
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr "opción -d especificada dos veces"
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr "Sólo se permite usar -o ó -d "
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "-n no puede utilizarse con archivos explícitos o con -o ó -d"
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr "Directorio de salida '%s'"
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr "dos argumentos de archivos se requieren exactamente"
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr "No se permiten las opciones -m, -a, -R, ni -i con archivos explícitos"
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr "se requiere -o ó -d cuando se utilizan archivos implícitos"
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr "no se puede crear el encabezamiento ELF: %s"
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "no se puede copiar encabezamiento ELF: %s"
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr "No pueden crear encabezamientos de programa: %s"
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr "no puede copiar encabezamiento de programa: %s"
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr "no se puede copiar encabezamiento de sección: %s"
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr "no se pueden obtener datos de sección: %s"
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr "no pueden copiar datos de sección: %s"
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr "no se puede crear el directorio '%s'"
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "no se puede obtener entrada de tabla de símbolos: %s"
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr "no se puede actualizar tabla de símbolos: %s"
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr "no se puede actualizar encabezamiento de sección: %s"
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr "no se puede actualizar reubicación: %s"
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr "no se puede obtener versión de símbolo: %s"
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr "tipo de sección inesperado en [%Zu] con sh_link para symtab"
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr "compensación de cadena inválida en símbolo [%Zu]"
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr "no se puede leer nombre [%Zu]: %s"
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr "contenido inválido en sección '%s'"
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr "no se puede hallar sección coincidente para [%Zu] '%s'"
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "no se puede añadir nombre de sección a tabla de cadenas: %s"
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr ""
"no se pueden actualizar datos de tabla de cadenas de encabezamiento de "
"sección: %s"
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
"no se puede obtener índice de sección de tabla de cadenas de encabezamiento "
"de sección: %s"
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr "No se puede obtener cuenta de sección: %s"
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
"más secciones en el archivo despojado que en el archivo de depuración -- "
"¿argumentos invertidos?"
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr "no se puede obtener tabla de cadenas de encabezamiento de sección: %s"
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr "No se puede añadir nueva sección: %s"
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr "símbolo [%Zu] tiene índice de sección inválido"
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, c-format
msgid "cannot read section data: %s"
msgstr "no se puede leer la sección de datos: %s"
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr "no se puede leer encabezamiento ELF: %s"
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr "no se puede actualizar encabezamiento de programa: %s"
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr "no se puede escribir al archivo de salida: %s"
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
"datos DWARF no se ajustan para polarización de pre-enlace; considere prelink "
"-u"
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
"Datos DWARF en '%s' no se ajustan a polarización de pre-enlace; considere "
"prelink -u"
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "no se puede crear un descriptor ELF: %s"
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "Al parecer '%s' y '%s'no coinciden"
+#: src/unstrip.c:1955
+msgid "WARNING: "
+msgstr ""
+
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr ""
-#: src/unstrip.c:1994
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "no se puede hallar archivo obtenido para módulo '%s': %s "
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "No se puede abrir el archivo '%s' obtenido para módulo '%s': %s"
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "no puede hallar archivo de depuración para módulo '%s': %su"
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "No puede abrir archivo de depuración '%s' para módulo '%s': %s"
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "No se obtuvo el archivo '%s' de módulo '%s' "
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
"No puede almacenar en cache direcciones de sección para módulo '%s': %s"
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr "No se encontraron módulos coincidentes"
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr "coincidió con más de un módulo"
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
"file. DEBUGFILE is the separate debuginfo file name, or - if no debuginfo "
"was found, or . if FILE contains the debug information."
+#, fuzzy
+#~ msgid "cannot attach to process"
+#~ msgstr "No se puede crear el árbol de búsqueda"
+
+#, fuzzy
+#~ msgid "cannot attach to core"
+#~ msgstr "No se puede crear el árbol de búsqueda"
+
+#~ msgid "'%s' and '%s' do not seem to match"
+#~ msgstr "Al parecer '%s' y '%s'no coinciden"
+
#~ msgid "unknown tag %hx"
#~ msgstr "etiqueta %hx desconocida"
msgstr ""
"Project-Id-Version: ja\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
"PO-Revision-Date: 2009-09-20 15:32+0900\n"
"Last-Translator: Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>\n"
"Language-Team: Japanese <jp@li.org>\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr "メモリー消費済み"
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr "エラー無し"
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr "メモリー不足"
msgid "no backend support available"
msgstr "バックエンドサポートが利用できません"
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr "不明なエラー"
msgid "invalid directory index"
msgstr "不当なディレクトリー索引"
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr "アドレスが範囲外です"
msgid "invalid address range index"
msgstr "不当なアドレス範囲索引"
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr "アドレス範囲に対応しません"
msgid "no alternative debug link found"
msgstr ""
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr "選択オプションを入力してください:"
msgid "Search path for separate debuginfo files"
msgstr "分離した debuginfo ファイルべきパスを探す"
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "-e か、-p、-k、-K、--core のひとつだけが認められます"
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr "ELF コアファイルを読めません: %s"
-
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
-msgstr "コアファイルの中にモジュールを認識できません"
-
-#: libdwfl/argp-std.c:232
+#: libdwfl/argp-std.c:230
msgid "cannot load kernel symbols"
msgstr "カーネルシンボルをロードできません"
-#: libdwfl/argp-std.c:236
+#: libdwfl/argp-std.c:234
msgid "cannot find kernel modules"
msgstr "カーネルモジュールを見つけられません"
-#: libdwfl/argp-std.c:250
+#: libdwfl/argp-std.c:251
msgid "cannot find kernel or modules"
msgstr "カーネルかモジュールを見つけられません"
-#: libdwfl/libdwflP.h:52
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "ELF コアファイルを読めません: %s"
+
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
+msgstr "コアファイルの中にモジュールを認識できません"
+
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr ""
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr ""
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr ""
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr ""
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr ""
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr ""
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr ""
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr ""
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr ""
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr "オフセットが範囲を越えている"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
#, fuzzy
msgid "relocation refers to undefined symbol"
msgstr "定義されたシンボルの印刷サイズ"
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr ""
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
#, fuzzy
msgid "No DWARF information found"
msgstr "DWARF 情報がありません"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr ""
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
#, fuzzy
msgid "No ELF program headers"
msgstr "プログラムヘッダーを得られません: %s"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr ""
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr ""
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
#, fuzzy
msgid "ELF file opened"
msgstr "ファイルのオープンを追跡します。"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
#, fuzzy
msgid "not a valid ELF file"
msgstr "不当な ELF ファイル"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
#, fuzzy
msgid "cannot handle DWARF type description"
msgstr "Elf 記述子を生成できません: %s"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr ""
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
#, fuzzy
msgid "corrupt .gnu.prelink_undo section data"
msgstr "ラインデータセクションデータを得られません: %s"
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr ""
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr ""
+
+#: libdwfl/libdwflP.h:84
+#, fuzzy
+msgid "Invalid register"
+msgstr "不当なパラメーター"
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr ""
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr ""
+
+#: libdwfl/libdwflP.h:88
+#, fuzzy
+msgid "Invalid DWARF"
+msgstr "不当な DWARF"
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr ""
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr ""
+
+#: libdwfl/libdwflP.h:94
+#, fuzzy
+msgid "Invalid argument"
+msgstr "不当なパラメーター"
+
+#: libdwfl/libdwflP.h:95
+#, fuzzy
+msgid "Not an ET_CORE ELF file"
+msgstr "不当な ELF ファイル"
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr "バックエンドがありません"
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
msgid "invalid size of destination operand"
msgstr "宛先演算子の大きさが無効"
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr "無効なエンコード"
msgid "invalid section header"
msgstr "不当なセクションヘッダー"
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr "不当なデータ"
msgstr ""
#: src/addr2line.c:64
+msgid "Also show symbol and the section names"
+msgstr ""
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr ""
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr ""
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr "雑則:"
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr ""
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr ""
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr "%s によって書かれました。\n"
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, c-format
msgid "Section syntax requires exactly one module"
msgstr ""
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr ""
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr ""
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr ""
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr "'%s' を開けません"
msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
msgstr "ELF ファイルが gABI/psABI 仕様へ準拠しているかの厳密なチェック。"
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr "ふぁいる..."
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr "入力ファイルを開けません"
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr "Elf 記述子を生成できません: %s\n"
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr "Elf 記述子を閉じている時にエラー: %s\n"
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr "エラーはありません"
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr "ファイル名がありません。\n"
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr "副-ELF 記述子を解放している時にエラー: %s\n"
-#: src/elflint.c:302
+#: src/elflint.c:306
#, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr "ELF ファイルではありません - 最初に誤ったマジックバイトがあります\n"
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr "e_ident[%d] == %d は既知のクラスではありません\n"
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr "e_ident[%d] == %d は既知のデータエンコードではありません\n"
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr "不明な ELF ヘッダーバージョン数 e_ident[%d] == %d\n"
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr "不明な OS ABI e_ident[%d] == '%s'\n"
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr "不明な ABI バージョン e_ident[%d] == %d\n"
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr "e_ident[%zu] がゼロではありません\n"
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr "不明なオブジェクトファイルタイプ %d\n"
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr "不明なマシンタイプ %d\n"
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr "不明なオブジェクトファイルバージョン\n"
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr "不当なプログラムヘッダーオフセット\n"
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr ""
"実行ファイルと DSO はプログラムヘッダーオフセットが 0 であってはいけません\n"
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr "プログラムヘッダー項目数として不当な数\n"
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr "不当なセクションヘッダーテーブルオフセット\n"
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr "セクションヘッダーテーブルがなければなりません\n"
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr "セクションヘッダーテーブル項目数として不当な数\n"
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr "不当なセクションヘッダーインデックス\n"
-#: src/elflint.c:473
+#: src/elflint.c:481
#, fuzzy, c-format
msgid "invalid number of program header table entries\n"
msgstr "プログラムヘッダー項目数として不当な数\n"
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr "不当なマシンフラグ: %s\n"
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr "不当な ELF ヘッダーサイズ: %hd\n"
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr "不当なプログラムヘッダーサイズ: %hd\n"
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr "不当なプログラムヘッダー位置かサイズ\n"
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr "不当なセクションヘッダーサイズ: %hd\n"
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr "不当なセクションヘッダー位置かサイズ\n"
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"セクション [%2d] '%s': SHF_GROUP フラグのあるセクションにセクショングループの"
"一部分が設定されていません\n"
-#: src/elflint.c:566
+#: src/elflint.c:574
#, fuzzy, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
"セクション [%2d] '%s': セクショングループ [%2zu] '%s' がグループメンバーを継"
"続していません\n"
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"セクション [%2d] '%s': セクション [%2d] '%s' 用の文字列テーブルとして参照され"
"ていますが、タイプが SHT_STRTAB ではありません\n"
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"セクション [%2d] '%s': シンボルテーブルは 1 個を越える拡張インデックスセク"
"ションを持てません\n"
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "セクション [%2u] '%s': 項目サイズが ElfXX_Sym と一致しません\n"
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "セクション [%2d] '%s': シンボル %d を得られません: %s\n"
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "セクション [%2d] '%s': 0番目の項目にある '%s' ゼロではありません\n"
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "セクション [%2d] '%s': 0番目の項目用の XINDEX がゼロではありません\n"
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "セクション [%2d] '%s': シンボル %zu を得られません: %s\n"
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "セクション [%2d] '%s': シンボル %zu: 不当な名前の値\n"
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"セクション [%2d] '%s': シンボル %zu: 大きすぎるセクションインデックスだが、拡"
"張セクションインデックスセクションがありません\n"
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"セクション [%2d] '%s': シンボル %zu: st_shndx (%<PRIu32>) に適合するインデッ"
"クス用に使われる XINDEX\n"
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr "セクション [%2d] '%s': シンボル %zu: 不当なセクションインデックス\n"
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr "セクション [%2d] '%s': シンボル %zu: 不明なタイプ\n"
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr "セクション [%2d] '%s': シンボル %zu: 不明なシンボルバインディング\n"
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: オブジェクトタイプと異なる固有のシンボ"
"ル\n"
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
"セクション [%2d] '%s': シンボル %zu: COMMON はリロケータブルファイル内のみで"
"許されます\n"
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: ローカルな COMMON シンボルは意味がありま"
"せん\n"
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
"セクション [%2d] '%s': シンボル %zu: COMMON セクションの機能は意味がありませ"
"ん\n"
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr "セクション [%2d] '%s': シンボル %zu: st_value 境界外\n"
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"セクション [%2d] '%s': シンボル %zu は参照されるセクション [%2d] '%s' とは完"
"全に一致しません\n"
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' は "
"SHF_TLS フラグが設定されていません\n"
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"セクション [%2d] '%s': シンボル %zu: st_value 参照されるセクション [%2d] "
"'%s' の境界外\n"
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
"セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目がない TLS シ"
"ンボル\n"
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' の"
"st_value 不足\n"
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外のローカルシン"
"ボル\n"
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外の非ローカルシ"
"ンボル\n"
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr "セクション [%2d] '%s': シンボル %zu: 非ローカルセクションシンボル\n"
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルが間違ったセクション "
"[%2d] を参照しています\n"
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルはセクション [%2d] '%s' "
"を参照しています\n"
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボル値 %#<PRIx64> は %s のセ"
"クションアドレス %#<PRIx64> と一致しません\n"
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルサイズ %<PRIu64> は %s "
"のセクションサイズ %<PRIu64> と一致しません\n"
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルはありますが、.got セク"
"ションがありません\n"
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"セクション [%2d] '%s': _DYNAMIC_ シンボル値 %#<PRIx64> は動的セグメントアドレ"
"ス %#<PRIx64> と一致しません\n"
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"セクション [%2d] '%s': _DYNAMIC シンボルサイズ %<PRIu64> は動的セグメントサイ"
"ズ %<PRIu64> と一致しません\n"
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"セクション [%2d] '%s': シンボル %zu: 省略以外の可視性を持った動的シンボルテー"
"ブル中のシンボル\n"
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr ""
"セクション [%2d] '%s': シンボル %zu: st_other 中に設定された不明なビット\n"
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "セクション [%2d] '%s': この RELA セクション用に使われる DT_RELCOUNT\n"
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
"セクション [%2d] '%s': このセクション用には高すぎる DT_RELCOUNT 値 %d\n"
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"セクション [%2d] '%s': UT_RELOCOUNT で指定されたインデックス %d 後の相対リロ"
"ケーション\n"
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"セクション [%2d] '%s': インデックス %zu での非相対リロケーション; %d 相対リ"
"ロケーションで指定された DT_RELCOUNT\n"
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "セクション [%2d] '%s': この REL セクション用に使われる DT_RELACOUNT\n"
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n"
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "セクション [%2d] '%s': 不当な宛先セクションタイプ\n"
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "セクション [%2d] '%s': sh_info はゼロでなければなりません\n"
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr ""
"セクション [%2d] '%s': マージできるセクションのリロケーションは不可能です\n"
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
"セクション [%2d] '%s': セクション項目サイズが ElfXX_Rela と一致しません\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
"テキストリロケーションフラグが設定されていますが、読込み専用セグメントがあり"
"ません\n"
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "セクション [%2d] '%s': リロケーション %zu: 不当なタイプ\n"
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"セクション [%2d] '%s': リロケーション %zu: このファイル用のリロケーションタイ"
"プは不当です\n"
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr ""
"セクション [%2d] '%s': リロケーション %zu: 不当なシンボルインデックス\n"
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"セクション [%2d] '%s': リロケーション %zu: シンボル '_GLOBAL_OFFSET_TABLE_' "
"のみが %s と一緒に使用できます\n"
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "セクション [%2d] '%s': リロケーション %zu: オフセット境界外\n"
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"セクション [%2d] '%s': リロケーション %zu: タイプ %s のシンボルに対するコピー"
"リロケーション\n"
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"セクション [%2d] '%s': リロケーション %zu: 読込み専用セクションが変更されまし"
"たが、テキストリロケーションフラグが設定されていません\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
"セクション [%2d] '%s': リロケーションがロードされたデータとロードされなかった"
"データに対してです\n"
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr ""
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr ""
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr ""
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr ""
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr ""
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr ""
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr ""
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
msgstr ""
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"[%2d] '%s' referenced by sh_link\n"
msgstr ""
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
msgstr ""
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"[%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr ""
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr ""
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr ""
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr ""
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
msgstr ""
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
msgstr ""
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr ""
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr ""
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"same symbol table\n"
msgstr ""
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr ""
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr ""
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
msgstr ""
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr ""
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr ""
-#: src/elflint.c:2030
+#: src/elflint.c:2092
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
msgstr ""
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"undefined\n"
msgstr ""
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
msgstr ""
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
msgstr ""
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr ""
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr ""
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"entries\n"
msgstr ""
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr ""
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"table in [%2zu] '%s'\n"
msgstr ""
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr ""
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
msgstr ""
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr ""
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr ""
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr ""
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr ""
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, fuzzy, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr ""
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr ""
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr ""
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr ""
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr ""
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr ""
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr ""
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr ""
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"SHF_GROUP flag set\n"
msgstr ""
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr ""
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"dynamic symbol table\n"
msgstr ""
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"'%s'\n"
msgstr ""
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr ""
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr ""
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr ""
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr ""
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr ""
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr ""
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr ""
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr ""
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"reference\n"
msgstr ""
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"%#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"name '%s'\n"
msgstr ""
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
msgstr ""
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr ""
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr ""
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr ""
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr ""
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr ""
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr ""
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr ""
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr ""
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr ""
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
msgstr ""
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr ""
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
msgstr ""
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr ""
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr ""
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr ""
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
msgstr ""
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr ""
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr ""
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr ""
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr ""
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr ""
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr ""
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr ""
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr ""
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"value\n"
msgstr ""
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in shstrndx\n"
msgstr ""
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"overflow in phnum\n"
msgstr ""
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr ""
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr ""
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr ""
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
msgstr ""
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr ""
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
msgstr ""
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"segments\n"
msgstr ""
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
msgstr ""
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr ""
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr ""
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr ""
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr ""
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr ""
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"%d\n"
msgstr ""
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"program header entry %d\n"
msgstr ""
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"segment of program header entry %d\n"
msgstr ""
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr ""
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
msgstr ""
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"but type is not SHT_TYPE\n"
msgstr ""
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
msgstr ""
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr ""
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr ""
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
msgstr ""
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"exist\n"
msgstr ""
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr ""
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr ""
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr ""
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr ""
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
msgstr ""
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr ""
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr ""
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr ""
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr ""
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr ""
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr ""
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr ""
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr ""
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr ""
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr ""
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr ""
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr ""
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr ""
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr ""
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr ""
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr ""
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"alignment\n"
msgstr ""
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"program header entry"
msgstr ""
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr ""
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr ""
"警告: `%1$s の大きさが %3$s の %2$<PRIu64> から %5$s の %4$<PRIu64> に変更さ"
"れました"
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "セクション数を決定できません: %s"
msgid "cannot get header of 0th section: %s"
msgstr "0番目のセクションのヘッダーを得られません: %s"
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr "ELF ヘッダーを更新できません: %s"
msgstr "%s: 内部エラー %d (%s-%s): %s"
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr "'%s' を閉じている最中"
msgid "cannot create search tree"
msgstr "検索ツリーを生成できません"
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr "セクションヘッダー文字列テーブル索引が得られません"
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"%s からのシンボル:\n"
"\n"
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"%*s%-*s %-*s クラス タイプ %-*s %*s セクション\n"
"\n"
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr "%s: セクションの項目の大きさ `%s' は予期したものとは異なります"
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr "%s: セクション `%s' の大きさは項目の大きさの整数倍ではありません"
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: 不当な操作"
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: シンボルがありません"
msgid "Show information from FILEs (a.out by default)."
msgstr ""
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr "操作が指定されていません。\n"
msgid "while close `%s'"
msgstr ""
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr "不当なシンボル"
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr "不当なセクション"
msgid "error while freeing sub-ELF descriptor: %s"
msgstr ""
-#: src/readelf.c:67
+#: src/readelf.c:71
+#, fuzzy
+msgid "ELF input selection:"
+msgstr "出力選択:"
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+
+#: src/readelf.c:75
#, fuzzy
msgid "ELF output selection:"
msgstr "出力選択:"
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr ""
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr "動的セグメントを表示"
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr "ELF ファイルヘッダーを表示"
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr "バケットリスト長の柱状図を表示"
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr "プログラムヘッダーを表示"
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr "リロケーションを表示"
-#: src/readelf.c:77
+#: src/readelf.c:85
#, fuzzy
msgid "Display the sections' headers"
msgstr "セクションのヘッダーを表示"
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr "シンボルテーブルを表示"
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr "バージョニング情報の表示"
-#: src/readelf.c:81
+#: src/readelf.c:89
#, fuzzy
msgid "Display the ELF notes"
msgstr "コアノートを表示"
-#: src/readelf.c:83
+#: src/readelf.c:91
#, fuzzy
msgid "Display architecture specific information, if any"
msgstr "(もしあれば)アーキテクチャー固有の情報を表示"
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr "例外を取り扱うためのセクションを表示"
-#: src/readelf.c:87
+#: src/readelf.c:95
#, fuzzy
msgid "Additional output selection:"
msgstr "出力選択:"
-#: src/readelf.c:89
+#: src/readelf.c:97
#, fuzzy
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
"DWARF セクションの内容を表示。SECTION は addrevか、aranges、frame、info、"
"loc、ranges、pubnames、str、macinfo、exception のいずれかです"
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr "数字か名前で解釈できないセクションの内容をダンプする"
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr "セクションの文字列内容を印刷する"
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr "アーカイブのシンボル索引を表示"
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr "出力制御:"
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
msgstr "DWARFデータ中のアドレスのためのシンボル名を探さない"
-#: src/readelf.c:104
+#: src/readelf.c:112
+#, fuzzy
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr "DWARFデータ中のアドレスのためのシンボル名を探さない"
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
msgstr ""
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr "ELF ファイルから人間が読める形で情報を印刷する。"
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "不明な DWARF デバッグセクション `%s'.\n"
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "Elf 記述子を生成できません: %s"
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr "'%s' はアーカイブではなく、アーカイブ索引を印刷できません"
+msgid "cannot get section: %s"
+msgstr "セクションを得られません: %s"
+
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
+msgstr "セクションヘッダーを得られません: %s"
+
+#: src/readelf.c:562
+#, fuzzy, c-format
+msgid "cannot get section name"
+msgstr "セクションを得られません: %s"
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr "%s の内容を得られません: %s"
+
+#: src/readelf.c:587
+#, fuzzy, c-format
+msgid "cannot create temp file '%s'"
+msgstr "新しいファイル '%s' を生成できません: %s"
+
+#: src/readelf.c:596
+#, fuzzy, c-format
+msgid "cannot write section data"
+msgstr "セクションデータを割り当てられません: %s"
-#: src/readelf.c:493
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "Elf 記述子を閉じている時にエラー: %s"
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, fuzzy, c-format
+msgid "error while rewinding file descriptor"
+msgstr "Elf 記述子を閉じている時にエラー: %s"
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr "'%s' はアーカイブではなく、アーカイブ索引を印刷できません"
+
+#: src/readelf.c:742
+#, fuzzy, c-format
+msgid "No such section '%s' in '%s'"
+msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr "入力ファイルを stat できません"
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr "入力ファイルが空です"
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr "'%s' の読込みに失敗: %s"
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr "ELF ヘッダーが読めません: %s"
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr "EBL ヘッダーを生成できません"
-#: src/readelf.c:646
+#: src/readelf.c:835
#, fuzzy, c-format
msgid "cannot determine number of program headers: %s"
msgstr "セクション数を決定できません: %s"
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr "なし (なし)"
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr "REL (リロケータブルファイル)"
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr "(EXEC (実行ファイル)"
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr "DYN (共用オブジェクトファイル)"
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr "CORE (コアファイル)"
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "OS 固有: (%x)\n"
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "プロセッサー固有: (%x)\n"
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
"ELF ヘッダー:\n"
" マジック: "
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
"\n"
" クラス: %s\n"
-#: src/readelf.c:762
+#: src/readelf.c:951
#, c-format
msgid " Data: %s\n"
msgstr " データ: %s\n"
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " 識別バージョン: %hhd %s\n"
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr "(現在)"
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr " OS/ABI: %s\n"
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " ABI バージョン: %hhd\n"
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr " タイプ: "
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr " マシン : %s\n"
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr " バージョン: %d %s\n"
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " 入口点アドレス : %#<PRIx64>\n"
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " プログラムヘッダーの開始: %<PRId64> %s\n"
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr "(ファイルへのバイト数)"
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " セクションヘッダーの開始: %<PRId64> %s\n"
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr " フラグ: %s\n"
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " このヘッダーの大きさ: %<PRId16> %s\n"
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr "(バイト)"
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " プログラムヘッダー項目の大きさ:%<PRId16> %s\n"
-#: src/readelf.c:807
+#: src/readelf.c:996
#, fuzzy, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " プログラムヘッダー項目の数 : %<PRId16>\n"
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, fuzzy, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr "([0].sh_link の %<PRIu32>)"
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr "([0]は使えません)"
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " セクションヘッダー項目の大きさ:%<PRId16> %s\n"
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " セクションヘッダー項目の数 : %<PRId16>"
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " ([0].sh_size の %<PRIu32>)"
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr "([0].sh_link の %<PRIu32>)"
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
" セクションヘッダー文字列テーブル索引: XINDEX%s\n"
"\n"
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
" セクションヘッダー文字列テーブル索引: %<PRId16>\n"
"\n"
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"オフセット %2$#<PRIx64> から始まる %1$d 個のセクションヘッダーがあります:\n"
"\n"
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr "セクションヘッダー:"
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
"[番] 名前 タイプ アドレス オフセ 大きさ ES フラグLk "
"Inf Al"
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
"[番] 名前 タイプ アドレス オフセ 大きさ ES "
"フラグLk Inf Al"
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr "セクションを得られません: %s"
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr "セクションヘッダーを得られません: %s"
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr "プログラムヘッダー:"
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" タイプ オフセ 仮アドレス 物アドレス ファイ量 メモ量 Flg 調整 "
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
" タイプ オフセ 仮想アドレス 物理アドレス ファイル量メモ"
"量 Flg 調整 "
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[プログラム割込みを要求: %s]\n"
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" セクションからセグメントへのマッビング:\n"
" セグメント セクション..."
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr "プログラムヘッダーを得られません: %s"
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
"署名 '%3$s' を持つ COMDAT セクショングループ [%1$2zu] '%2$s' には %4$zu 個の"
"項目があります:\n"
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
"署名 '%3$s' を持つセクショングループ [%1$2zu] '%2$s' には %4$zu 個の項目があ"
"ります:\n"
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr "<不当なシンボル>"
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr "<不当なセクション>"
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, fuzzy, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "不当な .debug_line セクション"
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションへのリンク: "
"[%2u] '%s'\n"
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr " タイプ 値\n"
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr "共用ライブラリー: [%s]\n"
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr "ライブラリー so 名: [%s]\n"
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "ライブラリー rパス: [%s]\n"
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "ライブラリー run パス: [%s]\n"
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (バイト)\n"
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"\n"
"オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
"オフセット %5$#0<PRIx64> のセクション [%3$2u] '%4$s' 用のリロケーションセク"
"ション [%1$2zu] '%2$s' には %6$d 個の項目があります:\n"
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
"オフセット %3$#0<PRIx64> のリロケーションセクション [%1$2u] '%2$s' には %4$d "
"個の項目があります:\n"
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr " オフセット タイプ 値 名前\n"
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr " オフセット タイプ 値 名前\n"
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr "<不当なRELOC>"
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr " オフセット タイプ 値 付加名\n"
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr " オフセット タイプ 値 付加名\n"
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
"\n"
"シンボルテーブル [%2u] '%s' には %u 個の項目があります:\n"
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[0] " %lu ローカルシンボル文字列テーブル: [%2u] '%s'\n"
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " 数 : 値 大き タイプ Bind Vis Ndx 名前\n"
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " 数 : 値 大き タイプ Bind Vis Ndx 名前\n"
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr "不正な動的シンボル"
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr "なし"
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr "| <不明>"
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションへのリンク: "
"[%2u] '%s'\n"
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: バージョン: %hu ファイル: %s 数: %hu\n"
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: 名前: %s フラグ: %s バージョン: %hu\n"
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションへのリンク: "
"[%2u] '%s'\n"
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr " %#06x: バージョン: %hd フラグ: %s 索引: %hd 数: %hd 名前: %s\n"
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: 親 %d: %s\n"
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションへのリンク: "
"[%2u] '%s'"
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr " 0 *ローカル* "
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr " 1 *グローバル* "
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
" アドレス: %#0*<PRIx64> オフセット: %#08<PRIx64> セクションへのリンク: "
"[%2u] '%s'\n"
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, fuzzy, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " 長さ 数 全体の% 範囲 \n"
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, fuzzy, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
" テストの平均数: 検索成功: %f\n"
" 検索失敗: %f\n"
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "セクションからデータを得られません %d: %s"
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" ビットマスクの大きさ: %zu バイト %<PRIuFAST32>%% ビット設定 第2ハッシュシフ"
"ト: %u\n"
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
"オフセット %3$#0<PRIx64> のライブラリー一覧セクション [%1$2zu] '%2$s' には "
"%4$d 個の項目があります:\n"
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
" ライブラリー タイムスタンプ チェックサム バー"
"ジョン フラグ"
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのオブジェクト属性セクション "
"[%1$2zu] '%2$s':\n"
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr " 所有者 大きさ\n"
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " ファイル: %11<PRIu32>\n"
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>、%s\n"
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr "%s+%#<PRIx64> <%s>"
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr "%s+%#0*<PRIx64> <%s>"
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr "%#<PRIx64> <%s>"
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr "%#0*<PRIx64> <%s>"
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr "%s+%#<PRIx64>"
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr "空ブロック"
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr "%zu バイトのブロック:"
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr ""
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr ""
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr ""
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr ""
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr ""
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
" [ コード]\n"
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"\n"
"オフセット %<PRIu64> の略語セクション:\n"
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** 略語を読んでいる間にエラー: %s\n"
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] オフセット: %<PRId64>、子: %s、タグ: %s\n"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr "はい"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr "いいえ"
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr ".debug_aragnes の内容を得られません: %s"
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
"目があります:\n"
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
msgstr ""
" [%*zu] 開始: %0#*<PRIx64>、長さ: %5<PRIu64>、CU DIE オフセット: %6<PRId64>\n"
-#: src/readelf.c:4219
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr ".degub_ranges の内容を得られません: %s"
-
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
msgid ""
"\n"
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4569 src/readelf.c:6171
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"オフセット %Zu のテーブル:\n"
+
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "セクション [%zu] '%s' の不当なデータ"
+
+#: src/readelf.c:4589
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr " (オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:4601
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4616
+#, fuzzy, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr " (オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:4622
+#, fuzzy, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr " (終了オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:4626
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "アドレス値ではありません"
+
+#: src/readelf.c:4631
+#, fuzzy, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr " ファイルを %<PRIu64> に設定する\n"
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4675
+#, fuzzy, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4678
+#, fuzzy, c-format
+msgid " %s..%s\n"
+msgstr " [%6tx] %s..%s\n"
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr ".degub_ranges の内容を得られません: %s"
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <不当なデータ>\n"
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] ベースアドレス %s\n"
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, fuzzy, c-format
msgid " [%6tx] empty list\n"
msgstr ""
"\n"
" [%6tx] ゼロ終端\n"
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "%s の内容を得られません: %s"
+#: src/readelf.c:5210
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "次の DIE を得られません: %s"
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"\n"
"オフセット %3$#<PRIx64> の フレーム情報呼出しセクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "セクション [%zu] '%s' の不当なデータ"
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
"\n"
" [%6tx] ゼロ終端\n"
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, fuzzy, c-format
msgid "invalid augmentation length"
msgstr "不当な拡大エンコード"
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr "FDE アドレスエンコード"
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr "LSDA ポインターエンコード:"
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sLSDA ポインター: %#<PRIx64>\n"
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr "属性コードを得られません: %s"
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr "属性様式を得られません: %s"
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr "属性値を得られません: %s"
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
" [オフセット]\n"
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, fuzzy, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
" バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
"きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
" バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
"きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"セクション '%2$s' の オフセット %1$<PRIu64> の DIE を得られません: %3$s"
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "DIE オフセットを得られません: %s"
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"セクション '%2$s' 中のオフセット %1$<PRIu64> の DIE のタグを得られません: "
"%3$s"
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "次の DIE を得られません: %s\n"
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr "次の DIE を得られません: %s"
-#: src/readelf.c:5518
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr "ラインデータセクションデータを得られません: %s"
-
-#: src/readelf.c:5531
-#, c-format
+#: src/readelf.c:6059
+#, fuzzy, c-format
msgid ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
"\n"
-"オフセット %Zu のテーブル:\n"
+"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
-#: src/readelf.c:5586
+#: src/readelf.c:6158
+#, c-format
+msgid "cannot get line data section data: %s"
+msgstr "ラインデータセクションデータを得られません: %s"
+
+#: src/readelf.c:6226
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"命令コード:\n"
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "セクション [%2$zu] '%3$s' 中のオフセット %1$tu に不当なデータ"
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[0] " [%*<PRIuFAST8>] %hhu パラメーター\n"
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
"\n"
"ディレクトリーテーブル:"
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
"ファイル名テーブル:\n"
" Entry Dir 時刻 大きさ 名前"
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
"\n"
"行 番号 文:"
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, fuzzy, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr " 拡張命令コード %u: "
-#: src/readelf.c:5781
+#: src/readelf.c:6421
#, fuzzy
msgid " end of sequence"
msgstr "列の終わり"
-#: src/readelf.c:5798
+#: src/readelf.c:6438
#, fuzzy, c-format
msgid " set address to %s\n"
msgstr "アドレスを %s に設定する\n"
-#: src/readelf.c:5819
+#: src/readelf.c:6459
#, fuzzy, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
"新ファイルを定義する: dir=%u、mtime=%<PRIu64>、長さh=%<PRIu64>、名前=%s\n"
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, fuzzy, c-format
msgid " set discriminator to %u\n"
msgstr "カラムを %<PRIu64> に設定する\n"
-#: src/readelf.c:5837
+#: src/readelf.c:6477
#, fuzzy
msgid " unknown opcode"
msgstr "不明な命令コード"
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr "複写"
-#: src/readelf.c:5860
+#: src/readelf.c:6500
#, fuzzy, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr "アドレスを %u だけ進めて %s にする\n"
-#: src/readelf.c:5864
+#: src/readelf.c:6504
#, fuzzy, c-format
msgid " advance address by %u to %s\n"
msgstr "アドレスを %u だけ進めて %s にする\n"
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr "行を定数 %d だけ進めて %<PRId64> にする\n"
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " ファイルを %<PRIu64> に設定する\n"
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr "カラムを %<PRIu64> に設定する\n"
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " '%s' を %<PRIuFAST8> に設定する\n"
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr "基本ブロックフラグを設定する"
-#: src/readelf.c:5915
+#: src/readelf.c:6555
#, fuzzy, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr "アドレスを定数 %u だけ済めて %s にする\n"
-#: src/readelf.c:5919
+#: src/readelf.c:6559
#, fuzzy, c-format
msgid " advance address by constant %u to %s\n"
msgstr "アドレスを定数 %u だけ済めて %s にする\n"
-#: src/readelf.c:5937
+#: src/readelf.c:6577
#, fuzzy, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr "アドレスを固定値 %u だけ進めて %s にする\n"
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr "プロローグ終了フラグを設定する"
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr "エピローグ開始フラグを設定する"
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, fuzzy, c-format
msgid " set isa to %u\n"
msgstr " ファイルを %<PRIu64> に設定する\n"
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[0] " %<PRIu8> 個のパラメーターのある不明な命令コード:"
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr ".debug_loc の内容を得られません: %s"
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:6080
+#: src/readelf.c:6725
#, fuzzy
msgid " <INVALID DATA>\n"
msgstr " [%6tx] <不当なデータ>\n"
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "マクロ情報セクションのデータを得られません: %s"
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** 最後のセクションの終端していない文字列"
-#: src/readelf.c:6327
+#: src/readelf.c:6972
#, fuzzy, c-format
msgid " Offset: 0x%<PRIx64>\n"
msgstr " 所有者 大きさ\n"
-#: src/readelf.c:6339
+#: src/readelf.c:6984
#, fuzzy, c-format
msgid " Version: %<PRIu16>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr ""
-#: src/readelf.c:6352
+#: src/readelf.c:6997
#, fuzzy, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " 入口点アドレス : %#<PRIx64>\n"
-#: src/readelf.c:6355
+#: src/readelf.c:7000
#, fuzzy, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:6363
+#: src/readelf.c:7008
#, fuzzy, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:6375
+#: src/readelf.c:7021
#, fuzzy, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " %<PRIu8> 個のパラメーターのある不明な命令コード:"
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
msgstr ""
-#: src/readelf.c:6394
+#: src/readelf.c:7040
#, fuzzy, c-format
msgid " %<PRIu8> arguments:"
msgstr " [%*<PRIuFAST8>] %hhu パラメーター\n"
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
msgstr ""
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
msgstr ""
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
# # "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
# # " %4$*s 文字列\n" がエラーになるのは何故? 取り敢えず fuzzy扱い
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, fuzzy, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
" %4$*s 文字列\n"
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** 文字列の読込み中にエラー: %s\n"
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"\n"
"呼出しフレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"\n"
"例外取扱いテーブルセクション [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr " LPStart コード化: %#x "
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr "TType コード化: %#x "
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr "呼出しサイトコード化: %#x "
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
"\n"
" 呼出しサイトテーブル:"
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" 離着陸場: %#<PRIx64>\n"
" 行動: %u\n"
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr "不当な TType コード化"
-#: src/readelf.c:7019
+#: src/readelf.c:7665
#, fuzzy, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
"目があります:\n"
-#: src/readelf.c:7048
+#: src/readelf.c:7694
#, fuzzy, c-format
msgid " Version: %<PRId32>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:7064
+#: src/readelf.c:7712
#, fuzzy, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:7071
+#: src/readelf.c:7719
#, fuzzy, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:7078
+#: src/readelf.c:7726
#, fuzzy, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:7085
+#: src/readelf.c:7733
#, fuzzy, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " (オフセット: %#<PRIx64>)"
-#: src/readelf.c:7092
+#: src/readelf.c:7740
#, fuzzy, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " (終了オフセット: %#<PRIx64>)"
-#: src/readelf.c:7099
+#: src/readelf.c:7747
#, fuzzy, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
"目があります:\n"
-#: src/readelf.c:7121
+#: src/readelf.c:7769
#, fuzzy, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
"目があります:\n"
-#: src/readelf.c:7147
+#: src/readelf.c:7795
#, fuzzy, c-format
msgid ""
"\n"
"オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
"目があります:\n"
-#: src/readelf.c:7174
+#: src/readelf.c:7824
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "デバッグ内容記述子を得られません: %s"
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr "コアノートデータの変換ができません: %s"
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"\n"
"%*s... < %u 回の繰返し> ..."
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr " 所有者 データ大きさタイプ\n"
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr "ノートセクションの内容を得られません: %s"
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのノートセクション [%1$2zu] "
"'%2$s':\n"
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"\n"
"オフセット %2$#0<PRIx64> の %1$<PRIu64> バイトのノートセグメント:\n"
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"\n"
"セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
"プ、%3$<PRIu64> バイト:\n"
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, fuzzy, c-format
msgid ""
"\n"
"\n"
"セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
"イトあります:\n"
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"\n"
"セクション [%lu] がありません"
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"\n"
"セクション '%s' がありません"
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "アーカイブのシンボル索引 '%s' を得られません: %s"
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"\n"
"アーカイブ '%s' にはシンボル索引がありません\n"
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"\n"
"アーカイブ '%s' の索引には %Zu 項目あります:\n"
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr "'%2$s' の オフセット %1$Zu のメンバーを抽出できません: %3$s"
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "アーカイブメンバー '%s' には以下があります:\n"
msgid "%s: file format not recognized"
msgstr "%s: ファイル形式を認識できません"
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr "(合計)\n"
msgid "Print the strings of printable characters in files."
msgstr ""
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr ""
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr ""
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr ""
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr ""
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr ""
msgid "-F option specified twice"
msgstr "-F オプションが 2 回指定されています"
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "-o オプションが 2 回指定されています"
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: アーカイブから抜き出している時は -o や -f は使えません"
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr "EBL バックエンドを開けません"
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "新しいファイル '%s' を生成できません: %s"
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr "不適格なファイル '%s'"
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr "出力ファイルを生成している間: %s"
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: ELF ヘッダーを生成している間にエラー: %s"
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr "'%s' のための出力を準備している間"
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr "セクションヘッダーセクションを生成している間: %s"
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr "セクションデータを割り当てられません: %s"
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr "セクションヘッダー文字列テーブルを生成中: %s"
-#: src/strip.c:1724
+#: src/strip.c:1752
#, fuzzy, c-format
msgid "bad relocation"
msgstr "リロケーションを表示"
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr "'%s' を書込み中: %s"
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr "'%s' を生成中"
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr "デバッグ情報のチェックサムを計算中"
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: ファイルを読込み中にエラー: %s"
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, fuzzy, c-format
msgid "while writing '%s'"
msgstr "'%s' を書込み中: %s"
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr "'%s' の終了中にエラー: %s"
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "'%s' のアクセスと変更日付を設定できません"
msgid "Only list module and file names, build IDs"
msgstr ""
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr ""
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr ""
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr ""
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr ""
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr ""
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr ""
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr ""
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr ""
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr ""
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr ""
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr ""
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr ""
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr ""
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr ""
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr ""
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr ""
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr ""
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr ""
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr ""
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr ""
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr ""
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr ""
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr ""
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr ""
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr ""
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr ""
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr ""
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr ""
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr ""
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr ""
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr ""
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr ""
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr ""
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, fuzzy, c-format
msgid "cannot read section data: %s"
msgstr "セクションデータを割り当てられません: %s"
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr ""
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr ""
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr ""
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
msgstr ""
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr ""
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
+#: src/unstrip.c:1955
+msgid "WARNING: "
msgstr ""
-#: src/unstrip.c:1994
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr ""
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr ""
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr ""
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
msgstr ""
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
"was found, or . if FILE contains the debug information."
msgstr ""
+#, fuzzy
+#~ msgid "cannot attach to process"
+#~ msgstr "検索ツリーを生成できません"
+
+#, fuzzy
+#~ msgid "cannot attach to core"
+#~ msgstr "検索ツリーを生成できません"
+
#~ msgid "unknown tag %hx"
#~ msgstr "不明なタグ %hx"
# translation of pl.po to Polish
# Jakub Bogusz <qboosh@pld-linux.org>, 2003-2007.
-# Piotr Drąg <piotrdrag@gmail.com>, 2010.
+# Piotr Drąg <piotrdrag@gmail.com>, 2010-2012.
#
msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
-"PO-Revision-Date: 2011-02-13 16:25+0100\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
+"PO-Revision-Date: 2012-09-02 19:12+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr "pamięć wyczerpana"
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr "brak błędu"
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr "brak pamięci"
msgid "no backend support available"
msgstr "brak dostępnej obsługi zaplecza"
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr "nieznany błąd"
msgid "invalid directory index"
msgstr "nieprawidłowy indeks katalogu"
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr "adres jest spoza zakresu"
msgid "invalid address range index"
msgstr "nieprawidłowy indeks zakresu adresów"
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr "brak pasującego zakresu adresów"
#: libdw/dwarf_error.c:94
msgid "no alternative debug link found"
-msgstr ""
+msgstr "nie odnaleziono alternatywnego dowiązania debugowania"
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr "Opcje wyboru wejścia:"
msgid "Search path for separate debuginfo files"
msgstr "Wyszukuje ścieżkę dla oddzielnych plików debuginfo"
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr "dopuszczalna jest tylko jedna z opcji -e, -p, -k, -K lub --core"
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr "nie można odczytać pliku core ELF: %s"
-
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
-msgstr "Nie rozpoznano żadnych modułów w pliku core"
-
-#: libdwfl/argp-std.c:232
+#: libdwfl/argp-std.c:230
msgid "cannot load kernel symbols"
msgstr "nie można wczytać symboli jądra"
-#: libdwfl/argp-std.c:236
+#: libdwfl/argp-std.c:234
msgid "cannot find kernel modules"
msgstr "nie można odnaleźć modułów jądra"
-#: libdwfl/argp-std.c:250
+#: libdwfl/argp-std.c:251
msgid "cannot find kernel or modules"
msgstr "nie można odnaleźć jądra lub modułów"
-#: libdwfl/libdwflP.h:52
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "nie można odczytać pliku core ELF: %s"
+
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
+msgstr "Nie rozpoznano żadnych modułów w pliku core"
+
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr "Proszę zobaczyć errno"
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr "Proszę zobaczyć elf_errno"
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr "Proszę zobaczyć dwarf_errno"
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr "Proszę zobaczyć ebl_errno (brak XXX)"
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr "dekompresja gzip nie powiodła się"
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr "dekompresja bzip2 nie powiodła się"
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr "dekompresja LZMA nie powiodła się"
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr "nie odnaleziono biblioteki obsługi dla komputera"
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr "Brak wywołań zwrotnych dla pliku ET_REL"
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr "Nieobsługiwany typ relokacji"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr "r_offset jest fałszywe"
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr "offset spoza zakresu"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
msgid "relocation refers to undefined symbol"
msgstr "relokacja odnosi się do nieokreślonego symbolu"
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr "Wywołanie zwrotne zwróciło niepowodzenie"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
msgid "No DWARF information found"
msgstr "Nie odnaleziono informacji DWARF"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr "Nie odnaleziono tabeli symboli"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
msgid "No ELF program headers"
msgstr "Brak nagłówków programu ELF"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr "zakres adresów pokrywa się z istniejącym modułem"
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr "skrócono obraz"
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
msgid "ELF file opened"
msgstr "otwarto plik ELF"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
msgid "not a valid ELF file"
msgstr "nie jest prawidłowym plikiem ELF"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
msgid "cannot handle DWARF type description"
msgstr "nie można obsłużyć opisu typu DWARF"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr "plik ELF nie posiada pasującego identyfikatora kopii"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
msgid "corrupt .gnu.prelink_undo section data"
msgstr "uszkodzone dane sekcji .gnu.prelink_undo"
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr ""
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr ""
+
+#: libdwfl/libdwflP.h:84
+#, fuzzy
+msgid "Invalid register"
+msgstr "nieprawidłowy parametr"
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr ""
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr ""
+
+#: libdwfl/libdwflP.h:88
+#, fuzzy
+msgid "Invalid DWARF"
+msgstr "nieprawidłowy DWARF"
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr ""
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr ""
+
+#: libdwfl/libdwflP.h:94
+#, fuzzy
+msgid "Invalid argument"
+msgstr "nieprawidłowy parametr"
+
+#: libdwfl/libdwflP.h:95
+#, fuzzy
+msgid "Not an ET_CORE ELF file"
+msgstr "nie jest prawidłowym plikiem ELF"
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr "Brak zaplecza"
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
msgstr "<nieznany>: %#<PRIx64>"
#: libebl/eblobjnote.c:55
-#, fuzzy, c-format
+#, c-format
msgid "unknown SDT version %u\n"
-msgstr "nieznana wersja"
+msgstr "nieznana wersja SDT %u\n"
#: libebl/eblobjnote.c:73
-#, fuzzy, c-format
+#, c-format
msgid "invalid SDT probe descriptor\n"
-msgstr "nieprawidłowy deskryptor pliku"
+msgstr "nieprawidłowy deskryptor sondy SDT\n"
#: libebl/eblobjnote.c:123
#, c-format
msgid " PC: "
-msgstr ""
+msgstr " PC: "
#: libebl/eblobjnote.c:125
#, c-format
msgid " Base: "
-msgstr ""
+msgstr " Podstawa: "
#: libebl/eblobjnote.c:127
#, c-format
msgid " Semaphore: "
-msgstr ""
+msgstr " Semafor: "
#: libebl/eblobjnote.c:129
#, c-format
msgid " Provider: "
-msgstr ""
+msgstr " Dostawca: "
#: libebl/eblobjnote.c:131
#, c-format
msgid " Name: "
-msgstr ""
+msgstr " Nazwa: "
#: libebl/eblobjnote.c:133
#, c-format
msgid " Args: "
-msgstr ""
+msgstr " Parametry: "
#: libebl/eblobjnote.c:143
#, c-format
msgid "invalid size of destination operand"
msgstr "nieprawidłowy rozmiar operanda docelowego"
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr "nieprawidłowe kodowanie"
msgid "invalid section header"
msgstr "nieprawidłowy nagłówek sekcji"
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr "nieprawidłowe dane"
msgstr "Wyświetla także nazwy symboli ub sekcji"
#: src/addr2line.c:64
+#, fuzzy
+msgid "Also show symbol and the section names"
+msgstr "Wyświetla także nazwy symboli ub sekcji"
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr "Wyświetla także flagi tabeli wierszy"
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr "Traktuje adresy jako offsety względne do sekcji NAZWA."
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr "Różne:"
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr ""
"Odnajdywanie plików źródłowych i informacji o wierszu dla ADRESU (domyślne w "
"a.out)."
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr "[ADRES...]"
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI\n"
"HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n"
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr "Napisane przez %s.\n"
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, c-format
msgid "Section syntax requires exactly one module"
msgstr "Składnia sekcji wymaga dokładnie jednego modułu"
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "offset %#<PRIxMAX> leży poza sekcją \"%s\""
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr "nie można odnaleźć symbolu \"%s\""
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "offset %#<PRIxMAX> leży poza zawartością \"%s\""
#: src/ar.c:249
#, c-format
msgid "command option required"
-msgstr ""
+msgstr "wymagana jest opcja polecenia"
#: src/ar.c:314
#, c-format
#: src/elfcmp.c:69
msgid "Ignore differences in build ID"
-msgstr "Ignorowanie różnic w identyfikatorze budowania"
+msgstr "Ignorowanie różnic w identyfikatorze kopii"
#: src/elfcmp.c:70
msgid "Output nothing; yield exit status only"
#: src/elfcmp.c:462
#, c-format
msgid "%s %s differ: build ID length"
-msgstr "%s %s różnią się: długość identyfikatora budowania"
+msgstr "%s %s różnią się: długość identyfikatora kopii"
#: src/elfcmp.c:470
#, c-format
msgid "%s %s differ: build ID content"
-msgstr "%s %s różnią się: zawartość identyfikatora budowania"
+msgstr "%s %s różnią się: zawartość identyfikatora kopii"
#: src/elfcmp.c:479
#, c-format
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr "nie można otworzyć \"%s\""
msgstr ""
"Szczegółowe sprawdzanie zgodności plików ELF ze specyfikacją gABI/psABI."
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr "PLIK..."
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr "nie można otworzyć pliku wejściowego"
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr "nie można utworzyć deskryptora ELF: %s\n"
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr "błąd podczas zamykania deskryptora ELF: %s\n"
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr "Brak błędów"
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr "Brak nazwy pliku.\n"
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr " błąd podczas zwalniania deskryptora pod-ELF: %s\n"
-#: src/elflint.c:302
+#: src/elflint.c:306
#, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr "To nie jest plik ELF - posiada błędne bajty magiczne na początku\n"
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr "e_ident[%d] == %d nie jest znaną klasą\n"
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr "e_ident[%d] == %d nie jest znanym kodowaniem danych\n"
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr "nieznany numer wersji nagłówka ELF e_ident[%d] == %d\n"
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr "nieobsługiwane ABI systemu operacyjnego e_ident[%d] == \"%s\"\n"
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr "nieobsługiwana wersja ABI e_ident[%d] == %d\n"
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr "e_ident[%zu] nie wynosi zero\n"
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr "nieznany typ pliku obiektu %d\n"
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr "nieznany typ komputera %d\n"
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr "nieznana wersja pliku obiektu\n"
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr "nieprawidłowy offset nagłówka programu\n"
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr ""
"pliki wykonywalne i DSO nie mogą mieć zerowego offsetu nagłówka programu\n"
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr "nieprawidłowa liczba wpisów nagłówka programu\n"
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr "nieprawidłowy offset tabeli nagłówków sekcji\n"
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr "tabela nagłówków sekcji musi istnieć\n"
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr "nieprawidłowa liczba wpisów tabeli nagłówków sekcji\n"
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr "nieprawidłowy indeks nagłówka sekcji\n"
-#: src/elflint.c:473
+#: src/elflint.c:481
#, c-format
msgid "invalid number of program header table entries\n"
msgstr "nieprawidłowa liczba wpisów tabeli nagłówka programu\n"
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr "nieprawidłowe flagi komputera: %s\n"
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr "nieprawidłowy rozmiar nagłówka ELF: %hd\n"
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr "nieprawidłowa rozmiar nagłówka programu: %hd\n"
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr "nieprawidłowe położenie lub rozmiar nagłówka programu\n"
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr "nieprawidłowy rozmiar nagłówka sekcji: %hd\n"
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr "nieprawidłowe położenie lub rozmiar nagłówka sekcji\n"
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
msgstr ""
"sekcja [%2d] \"%s\": sekcja z flagą SHF_GROUP nie jest częścią grupy sekcji\n"
-#: src/elflint.c:566
+#: src/elflint.c:574
#, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
"sekcja [%2d] \"%s\": grupa sekcji [%2zu] \"%s\" nie poprzedza elementu "
"grupy\n"
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać danych sekcji\n"
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"sekcja [%2d] \"%s\": użyta jako tabela ciągów dla sekcji [%2d] \"%s\", ale "
"nie jest typu SHT_STRTAB\n"
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"sekcja [%2d] \"%s\": tabela symboli nie może mieć więcej niż jednej "
"rozszerzonej sekcji indeksów\n"
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "sekcja [%2u] \"%s\": rozmiar wpisu nie zgadza się z ElfXX_Sym\n"
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać symbolu %d: %s\n"
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "sekcja [%2d] \"%s\": \"%s\" w zerowym wpisie nie jest zerem\n"
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "sekcja [%2d] \"%s\": XINDEX dla zerowego wpisu nie jest zerem\n"
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać symbolu %zu: %s\n"
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: nieprawidłowa wartość nazwy\n"
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"sekcja [%2d] \"%s\": symbol %zu: za duży indeks sekcji, ale nie posiada "
"sekcji rozszerzonych indeksów sekcji\n"
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"sekcja [%2d] \"%s\": symbol %zu: XINDEX użyty dla indeksu, który zmieściłby "
"się w st_shndx (%<PRIu32>)\n"
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: nieprawidłowy indeks sekcji\n"
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: nieznany typ\n"
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: nieznane dowiązanie symbolu\n"
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr ""
"sekcja [%2d] \"%s\": symbol %zu: unikalny symbol nie jest typem obiektu\n"
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
"sekcja [%2d] \"%s\": symbol %zu: COMMON jest dozwolone tylko w plikach "
"relokowalnych\n"
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: lokalne symbole COMMON to nonsens\n"
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: funkcja w sekcji COMMON to nonsens\n"
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: st_value spoza zakresu\n"
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"sekcja [%2d] \"%s\": symbol %zu nie mieści się w całości we wskazywanej "
"sekcji [%2d] \"%s\"\n"
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"sekcja [%2d] \"%s\": symbol %zu: wskazywana sekcja [%2d] \"%s\" nie posiada "
"ustawionej flagi SHF_TLS\n"
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"sekcja [%2d] \"%s\": symbol %zu: st_value spoza zakresu wskazywanej sekcji "
"[%2d] \"%s\"\n"
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
"sekcja [%2d] \"%s\": symbol %zu: symbol TLS, ale brak wpisu TLS nagłówka "
"programu\n"
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"sekcja [%2d] \"%s\": symbol %zu: st_value pomija wskazywaną sekcję [%2d] \"%s"
"\"\n"
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"sekcja [%2d] \"%s\": symbol %zu: lokalny symbol spoza zakresu określonego w "
"sh_info\n"
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"sekcja [%2d] \"%s\": symbol %zu: nielokalny symbol spoza zakresu określonego "
"w sh_info\n"
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: nielokalny symbol sekcji\n"
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"sekcja [%2d] \"%s\": symbol _GLOBAL_OFFSET_TABLE_ odnosi się do błędnej "
"sekcji [%2d]\n"
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"sekcja [%2d] \"%s\": symbol _GLOBAL_OFFSET_TABLE_ odnosi się do sekcji [%2d] "
"\"%s\"\n"
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"sekcja [%2d] \"%s\": wartość symbolu _GLOBAL_OFFSET_TABLE_ %#<PRIx64> nie "
"pasuje do adresu sekcji %s %#<PRIx64>\n"
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"sekcja [%2d] \"%s\": rozmiar symbolu _GLOBAL_OFFSET_TABLE_ %<PRIu64> nie "
"pasuje do rozmiaru sekcji %s %<PRIu64>\n"
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"sekcja [%2d] \"%s\": symbol _GLOBAL_OFFSET_TABLE_ istnieje, ale brak sekcji ."
"got\n"
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"sekcja [%2d] \"%s\": wartość symbolu _DYNAMIC_ %#<PRIx64> nie pasuje do "
"adresu segmentu dynamicznego %#<PRIx64>\n"
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"sekcja [%2d] \"%s\": rozmiar symbolu _DYNAMIC_ %<PRIu64> nie pasuje do "
"rozmiaru segmentu dynamicznego %<PRIu64>\n"
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"sekcja [%2d] \"%s\": symbol %zu: symbol w dynamicznej tabeli symboli z "
"niedomyślną widocznością\n"
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr "sekcja [%2d] \"%s\": symbol %zu: ustawiono nieznany bit w st_other\n"
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "sekcja [%2d] \"%s\": DT_RELCOUNT użyte dla tej sekcji RELA\n"
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr "sekcja [%2d] \"%s\": DT_RELCOUNT %d za duże dla tej sekcji\n"
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"sekcja [%2d] \"%s\": relokacje względne po indeksie %d podanym przez "
"DT_RELCOUNT\n"
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"sekcja [%2d] \"%s\": relokacja bezwzględna pod indeksem %zu; DT_RELCOUNT "
"podał %d relokacji względnych\n"
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "sekcja [%2d] \"%s\": DT_RELACOUNT użyte dla tej sekcji REL\n"
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "sekcja [%2d] \"%s\": nieprawidłowy indeks sekcji docelowej\n"
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "sekcja [%2d] \"%s\": nieprawidłowy typ sekcji docelowej\n"
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "sekcja [%2d] \"%s\": sh_info powinno wynosić zero\n"
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr "sekcja [%2d] \"%s\": relokacje dla sekcji złączalnych są niemożliwe\n"
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
"sekcja [%2d] \"%s\": rozmiar wpisu sekcji nie zgadza się z ElfXX_Rela\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
"flaga relokacji tekstu jest ustawiona, ale nie posiada segmentu tylko do "
"odczytu\n"
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "sekcja [%2d] \"%s\": relokacja %zu: nieprawidłowy typ\n"
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"sekcja [%2d] \"%s\": relokacja %zu: typ relokacji nieprawidłowy dla tego "
"typu pliku\n"
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "sekcja [%2d] \"%s\": relokacja %zu: nieprawidłowy indeks symbolu\n"
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"sekcja [%2d] \"%s\": relokacja %zu: z %s można użyć tylko symbolu "
"\"_GLOBAL_OFFSET_TABLE_\"\n"
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "sekcja [%2d] \"%s\": relokacja %zu: offset spoza zakresu\n"
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"sekcja [%2d] \"%s\": relokacja %zu: relokacja kopii względem symbolu typu "
"%s\n"
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"sekcja [%2d] \"%s\": relokacja %zu: sekcja tylko do odczytu została "
"zmodyfikowana, ale nie ustawiono flagi relokacji tekstu\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr ""
"sekcja [%2d] \"%s\": relokacje względem wczytanych i niewczytanych danych\n"
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać relokacji %zu: %s\n"
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr "obecna jest więcej niż jedna sekcja dynamiczna\n"
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr "sekcja [%2d] \"%s\": rozmiar wpisu sekcji nie zgadza się z ElfXX_Dyn\n"
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "sekcja [%2d] \"%s\": sh_info nie wynosi zero\n"
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
"sekcja [%2d] \"%s\": nie można uzyskać wpisu %zu sekcji dynamicznej: %s\n"
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr "sekcja [%2d] \"%s\": wpisy nie-DT_NULL występują po wpisie DT_NULL\n"
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "sekcja [%2d] \"%s\": wpis %zu: nieznany znacznik\n"
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr ""
"sekcja [%2d] \"%s\": wpis %zu: więcej niż jeden wpis ze znacznikiem %s\n"
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "sekcja [%2d] \"%s\": wpis %zu: użyto znacznika %s poziomu 2\n"
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
"sekcja [%2d] \"%s\": wpis %zu: wartość DT_PLTREL musi wynosić DT_REL lub "
"DT_RELA\n"
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"sekcja [%2d] \"%s\": wpis %zu: wskaźnik nie pasuje do adresu sekcji [%2d] "
"\"%s\" wskazywanej przez sh_link\n"
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
"sekcja [%2d] \"%s\": wpis %zu: wartość %s musi wskazywać na wczytany "
"segment\n"
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"sekcja [%2d] \"%s\": wpis %zu: wartość %s musi być prawidłowym offsetem w "
"sekcji [%2d] \"%s\"\n"
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "sekcja [%2d] \"%s\": zawiera wpis %s, ale nie %s\n"
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "sekcja [%2d] \"%s\": brak obowiązkowego znacznika %s\n"
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "sekcja [%2d] \"%s\": brak sekcji skrótów\n"
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "sekcja [%2d] \"%s\": nie wszystkie z %s, %s i %s są obecne\n"
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
"sekcja [%2d] \"%s\": brak znacznika %s w DSO oznaczonym podczas wstępnej "
"konsolidacji\n"
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
"sekcja [%2d] \"%s\": plik nie-DSO oznaczony jako zależność podczas wstępnej "
"konsolidacji\n"
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
"sekcja [%2d] \"%s\": brak znacznika %s we wstępnie konsolidowanym pliku "
"wykonywalnym\n"
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
"sekcja [%2d] \"%s\": tylko pliki relokowalne mogą mieć rozszerzoną sekcję "
"indeksów\n"
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
"sekcja [%2d] \"%s\": sekcja rozszerzonych indeksów sekcji nie dla tabeli "
"symboli\n"
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "nie można uzyskać danych dla sekcji symboli\n"
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "sekcja [%2d] \"%s\": rozmiar wpisu nie zgadza się z Elf32_Word\n"
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
"sekcja [%2d] \"%s\": tabela rozszerzonych indeksów jest za mała dla tabeli "
"symboli\n"
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"sekcja [%2d] \"%s\": rozszerzony indeks sekcji w sekcji [%2zu] \"%s\" "
"odwołuje się do tej samej tabeli symboli\n"
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "symbol 0 powinien mieć zerowy rozszerzony indeks sekcji\n"
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "nie można uzyskać danych dla symbolu %zu\n"
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
"rozszerzony indeks sekcji wynosi %<PRIu32>, ale indeks symbolu nie wynosi "
"XINDEX\n"
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
"sekcja [%2d] \"%s\": sekcja tabeli mieszającej jest za mała (%ld, oczekiwano "
"%ld)\n"
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "sekcja [%2d] \"%s\": tabela łańcuchowa jest za duża\n"
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
"sekcja [%2d] \"%s\": odwołanie do kubełka skrótu %zu jest spoza zakresu\n"
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
"sekcja [%2d] \"%s\": odwołanie do łańcucha skrótu %zu jest spoza zakresu\n"
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
"sekcja [%2d] \"%s\": odwołanie do łańcucha skrótu %<PRIu64> jest spoza "
"zakresu\n"
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr "sekcja [%2d] \"%s\": rozmiar maski bitowej nie jest potęgą 2: %u\n"
-#: src/elflint.c:2030
-#, c-format
+#: src/elflint.c:2092
+#, fuzzy, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
"sekcja [%2d] \"%s\": sekcja tabeli mieszającej jest za mała (%ld, oczekiwano "
"co najmniej %ld)\n"
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr ""
"sekcja [%2d] \"%s\": drugie przesunięcie funkcji mieszającej jest za duże: "
"%u\n"
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
"sekcja [%2d] \"%s\": łańcuch mieszający dla kubełka %zu jest mniejszy niż "
"przesunięcie indeksu symboli\n"
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"sekcja [%2d] \"%s\": symbol %u wskazywany w łańcuchu dla kubełka %zu jest "
"nieokreślony\n"
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
"sekcja [%2d] \"%s\": wartość skrótu dla symbolu %u w łańcuchu dla kubełka "
"%zu jest błędna\n"
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
"sekcja [%2d] \"%s\": łańcuch skrótu dla kubełka %zu jest spoza zakresu\n"
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
"sekcja [%2d] \"%s\": odwołanie do symbolu w łańcuchu dla kubełka %zu jest "
"spoza zakresu\n"
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr ""
"sekcja [%2d] \"%s\": maska bitowa nie pasuje do nazw w tabeli mieszającej\n"
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
"sekcja [%2d] \"%s\": pliki relokowalne nie mogą posiadać tabeli "
"mieszających\n"
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
"sekcja [%2d] \"%s\": tabela mieszająca nie dla tabeli dynamicznych symboli\n"
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr "sekcja [%2d] \"%s\": niepoprawny rozmiar wpisu tabeli mieszającej\n"
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "sekcja [%2d] \"%s\": nieoznaczona do przydzielenia\n"
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"sekcja [%2d] \"%s\": tabela mieszająca nie posiada miejsca nawet na "
"początkowe wpisy administracyjne\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr ""
"sh_link w sekcjach skrótu [%2zu] \"%s\" i [%2zu] \"%s\" nie są identyczne\n"
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "sekcja [%2zu] \"%s\": odwołanie do symbolu o indeksie 0\n"
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"symbol %d wymieniony w nowej tabeli mieszającej w [%2zu] \"%s\", ale nie w "
"poprzedniej tabeli mieszającej [%2zu] \"%s\"\n"
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"symbol %d wymieniony w poprzedniej tabeli mieszającej w [%2zu] \"%s\", ale "
"nie w nowej tabeli mieszającej w [%2zu] \"%s\"\n"
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "sekcja [%2d] \"%s\": niezerowe sh_%s dla sekcji NULL\n"
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
"sekcja [%2d] \"%s\": w plikach obiektów relokowalnych dozwolone są tylko "
"grupy sekcji\n"
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać tabeli symboli: %s\n"
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
"sekcja [%2d] \"%s\": odwołanie do sekcji w sh_link nie posiada tabeli "
"symboli\n"
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "sekcja [%2d] \"%s\": nieprawidłowy indeks symbolu w sh_info\n"
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "sekcja [%2d] \"%s\": niezerowe sh_flags\n"
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać symbolu dla podpisu\n"
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "sekcja [%2d] \"%s\": symbol podpisu nie można być pustym ciągiem\n"
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "sekcja [%2d] \"%s\": sh_flags nie ustawione poprawnie\n"
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać danych: %s\n"
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr ""
-"sekcja [%2d] \"%s\": rozmiar sekcji nie jest wielokrotnością sizeof"
-"(Elf32_Word)\n"
+"sekcja [%2d] \"%s\": rozmiar sekcji nie jest wielokrotnością "
+"sizeof(Elf32_Word)\n"
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "sekcja [%2d] \"%s\": grupa sekcji bez słowa flag\n"
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "sekcja [%2d] \"%s\": grupa sekcji bez elementów\n"
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "sekcja [%2d] \"%s\": grupa sekcji z tylko jednym elementem\n"
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "sekcja [%2d] \"%s\": nieznane flagi grupy sekcji\n"
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr "sekcja [%2d] \"%s\": indeks sekcji %Zu jest spoza zakresu\n"
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
"sekcja [%2d] \"%s\": nie można uzyskać nagłówka sekcji dla elementu %zu: %s\n"
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr "sekcja [%2d] \"%s\": grupa sekcji zawiera inną grupę [%2d] \"%s\"\n"
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"sekcja [%2d] \"%s\": element %Zu odwołuje się do sekcji [%2d] \"%s\" bez "
"flagi SHF_GROUP\n"
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "sekcja [%2d] \"%s\" jest zawarta w więcej niż jednej grupie sekcji\n"
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"sekcja [%2d] \"%s\" odwołuje się w sh_link do sekcji [%2d] \"%s\", która nie "
"jest tabelą symboli dynamicznych\n"
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"sekcja [%2d] \"%s\" posiada inną liczbę wpisów niż tabela symboli [%2d] \"%s"
"\"\n"
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr "sekcja [%2d] \"%s\": symbol %d: nie można odczytać danych wersji\n"
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr "sekcja [%2d] \"%s\": symbol %d: symbol lokalny z zakresem globalnym\n"
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "sekcja [%2d] \"%s\": symbol %d: symbol lokalny z wersją\n"
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "sekcja [%2d] \"%s\": symbol %d: nieprawidłowy indeks wersji %d\n"
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
msgstr ""
"sekcja [%2d] \"%s\": symbol %d: indeks wersji %d jest dla wersji określonej\n"
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
msgstr ""
"sekcja [%2d] \"%s\": symbol %d: indeks wersji %d jest dla wersji żądanej\n"
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr "obecna jest więcej niż jedna sekcja odniesienia wersji\n"
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "sekcja [%2d] \"%s\": sh_link nie łączy się z tabelą ciągów\n"
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "sekcja [%2d] \"%s\": wpis %d posiada błędną wersję %d\n"
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
"sekcja [%2d] \"%s\": wpis %d posiada błędny offset dla danych dodatkowych\n"
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "sekcja [%2d] \"%s\": symbol %d posiada błędne odniesienie do pliku\n"
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "sekcja [%2d] \"%s\": wpis %d odnosi się do nieznanej zależności\n"
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
"sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada nieznaną flagę\n"
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada nieprawidłowe "
"odniesienie do nazwy\n"
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada błędną wartość "
"skrótu: %#x, oczekiwano %#x\n"
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada powtórzoną nazwę "
"wersji \"%s\"\n"
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
"sekcja [%2d] \"%s\": wpis dodatkowy %d do wpisu %d posiada błędne następne "
"pole\n"
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
"sekcja [%2d] \"%s\": wpis %d posiada błędny offset do następnego wpisu\n"
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr "obecna jest więcej niż jedna sekcja definicji wersji\n"
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "sekcja [%2d] \"%s\": jest więcej niż jedna definicja BASE\n"
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
"sekcja [%2d] \"%s\": definicja BASE musi posiadać indeks VER_NDX_GLOBAL\n"
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "sekcja [%2d] \"%s\": wpis %d posiada nieznaną flagę\n"
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr ""
"sekcja [%2d] \"%s\": wpis %d posiada nieprawidłowe odniesienie do nazwy\n"
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
"sekcja [%2d] \"%s\": wpis %d posiada błędną wartość skrótu: %#x, oczekiwano "
"%#x\n"
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr "sekcja [%2d] \"%s\": wpis %d posiada powtórzoną nazwę wersji \"%s\"\n"
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
"sekcja [%2d] \"%s\": wpis %d posiada nieprawidłowe odniesienie do nazwy w "
"danych dodatkowych\n"
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
"sekcja [%2d] \"%s\": wpis %d posiada błędne następne pole w danych "
"dodatkowych\n"
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "sekcja [%2d] \"%s\": brak definicji BASE\n"
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "sekcja [%2d] \"%s\": nieznana wersja rodzica \"%s\"\n"
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "sekcja [%2d] \"%s\": pusta sekcja atrybutów obiektu\n"
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "sekcja [%2d] \"%s\": nierozpoznany format atrybutu\n"
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
"sekcja [%2d] \"%s\": offset %zu: pole o zerowej długości w sekcji atrybutów\n"
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
"sekcja [%2d] \"%s\": offset %zu: nieprawidłowa długość w sekcji atrybutów\n"
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr "sekcja [%2d] \"%s\": offset %zu: niezakończony ciąg nazwy producenta\n"
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
"sekcja [%2d] \"%s\": offset %zu: niekończące się ULEB128 w znaczniku "
"podsekcji atrybutów\n"
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "sekcja [%2d] \"%s\": offset %zu: skrócona sekcja atrybutów\n"
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
"sekcja [%2d] \"%s\": offset %zu: zerowej długości pole w podsekcji "
"atrybutów\n"
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
"sekcja [%2d] \"%s\": offset %zu: nieprawidłowa długość w podsekcji "
"atrybutów\n"
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
"sekcja [%2d] \"%s\": offset %zu: podsekcja atrybutów posiada nieoczekiwany "
"znacznik %u\n"
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
"sekcja [%2d] \"%s\": offset %zu: niekończące się ULEB128 w znaczniku "
"atrybutu\n"
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr "sekcja [%2d] \"%s\": offset %zu: niezakończony ciąg w atrybucie\n"
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr "sekcja [%2d] \"%s\": offset %zu: nierozpoznany znacznik atrybutu %u\n"
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
"sekcja [%2d] \"%s\": offset %zu: atrybut %s posiada nierozpoznaną wartość "
"%<PRIu64>\n"
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "sekcja [%2d] \"%s\": offset %zu: producent \"%s\" jest nieznany\n"
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
"sekcja [%2d] \"%s\": offset %zu: dodatkowe bajty po ostatniej sekcji "
"atrybutów\n"
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "nie można uzyskać nagłówka sekcji zerowej\n"
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "sekcja zerowa posiada niezerową nazwę\n"
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "sekcja zerowa posiada niezerowy typ\n"
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "sekcja zerowa posiada niezerowe flagi\n"
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "sekcja zerowa posiada niezerowy adres\n"
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "sekcja zerowa posiada niezerowy offset\n"
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "sekcja zerowa posiada niezerową wartość wyrównania\n"
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "sekcja zerowa posiada niezerową wartość rozmiaru wpisu\n"
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"sekcja zerowa posiada niezerową wartość rozmiaru, a nagłówek ELF posiada "
"niezerową wartość shnum\n"
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"sekcja zerowa posiada niezerową wartość dowiązań, a nagłówek ELF nie "
"wskazuje przepełnienia w shstrndx\n"
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"sekcja zerowa posiada niezerową wartość dowiązań, a nagłówek ELF nie "
"wskazuje przepełnienia w phnum\n"
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "nie można uzyskać nagłówka sekcji dla sekcji [%2zu] \"%s\": %s\n"
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "sekcja [%2zu]: nieprawidłowa nazwa\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr "sekcja [%2d] \"%s\" posiada błędny typ: oczekiwano %s, jest %s\n"
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "sekcja [%2zu] \"%s\" posiada błędne flagi: oczekiwano %s, jest %s\n"
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
"sekcja [%2zu] \"%s\" posiada błędne flagi: oczekiwano %s i być może %s, jest "
"%s\n"
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "sekcja [%2zu] \"%s\" jest obecna w pliku obiektu\n"
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
"sekcja [%2zu] \"%s\" posiada flagę SHF_ALLOC, ale nie posiada segmentu "
"wczytywalnego\n"
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"sekcja [%2zu] \"%s\" nie posiada flagi SHF_ALLOC, ale są segmenty "
"wczytywalne\n"
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
"sekcja [%2zu] \"%s\" jest tabelą indeksów sekcji rozszerzeń w pliku "
"nieobiektowym\n"
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr ""
"sekcja [%2zu] \"%s\": rozmiar nie jest wielokrotnością rozmiaru wpisu\n"
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr "nie można uzyskać nagłówka sekcji\n"
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "sekcja [%2zu] \"%s\" posiada nieobsługiwany typ %d\n"
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
"sekcja [%2zu] \"%s\" zawiera nieprawidłowe flagi specyficzne dla procesora "
"%#<PRIx64>\n"
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "sekcja [%2zu] \"%s\" zawiera nieznane flagi %#<PRIx64>\n"
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
"sekcja [%2zu] \"%s\": adres sekcji danych lokalnych dla wątków nie jest "
"zerem\n"
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
"sekcja [%2zu] \"%s\": nieprawidłowe odwołanie do sekcji w wartości "
"dowiązania\n"
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
"sekcja [%2zu] \"%s\": nieprawidłowe odwołanie do sekcji w wartości "
"informacyjnej\n"
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr "sekcja [%2zu] \"%s\": flaga ciągów jest ustawiona bez flagi merge\n"
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
"sekcja [%2zu] \"%s\": flaga merge jest ustawiona, ale rozmiar wpisu jest "
"zerowy\n"
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr ""
"sekcja [%2zu] \"%s\" posiada nieoczekiwany typ %d dla sekcji wykonywalnej\n"
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "sekcja [%2zu] \"%s\" jest wykonywalne i zapisywalne\n"
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"sekcja [%2zu] \"%s\" nie jest w całości zawarta w segmencie wpisu %d "
"nagłówka programu\n"
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"sekcja [%2zu] \"%s\" posiada typ NOBITS, a jest odczytywana z pliku w "
"segmencie wpisu %d nagłówka programu\n"
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"sekcja [%2zu] \"%s\" nie posiada typu NOBITS, a nie jest odczytywana z pliku "
"w segmencie wpisu %d nagłówka programu\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "sekcja [%2zu] \"%s\" jest wykonywalne w segmencie niewykonywalnym %d\n"
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr "sekcja [%2zu] \"%s\" jest zapisywalne w niezapisywalnym segmencie %d\n"
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
"sekcja [%2zu] \"%s\": posiada flagę alloc, ale sekcja nie jest w żadnym "
"segmencie wczytywalnym\n"
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"sekcja [%2zu] \"%s\": według nagłówka ELF to jest tabela ciągów nagłówków "
"sekcji, ale typ nie jest SHT_TYPE\n"
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
"sekcja [%2zu] \"%s\": pliki relokowalne nie mogą posiadać tabeli symboli "
"dynamicznych\n"
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr "obecna jest więcej niż jedna tabela symboli wersji\n"
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr "jest wpis nagłówka programu INTERP, ale nie posiada sekcji .interp\n"
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
"wczytywalny segment [%u] jest wykonywalny, ale nie zawiera wykonywalnych "
"sekcji\n"
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
"wczytywalny segment [%u] jest zapisywalny, ale nie zawiera zapisywalnych "
"sekcji\n"
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"brak sekcji .gnu.versym, ale istnieje sekcja .gnu.versym_d lub .gnu."
"versym_r\n"
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr "powtórzony indeks wersji %d\n"
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr "sekcja .gnu.versym istnieje bez .gnu.versym_d lub .gnu.versym_r\n"
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
"phdr[%d]: nieznany typ notatki pliku core %<PRIu32> pod offsetem %<PRIu64>\n"
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
"phdr[%2d]: \"%s\": nieznany typ notatki pliku core %<PRIu32> pod offsetem "
"%Zu\n"
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
"phdr[%d]: nieznany typ notatki pliku obiektu %<PRIu32> pod offsetem %Zu\n"
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
"phdr[%d]: \"%s\": nieznany typ notatki pliku obiektu %<PRIu32> pod offsetem "
"%Zu\n"
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: brak określonych wpisów notatek dla typu pliku\n"
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: nie można uzyskać zawartości sekcji notatki: %s\n"
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: dodatkowe %<PRIu64> bajtów po ostatniej notatce\n"
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr "sekcja [%2d] \"%s\": brak określonych wpisów notatek dla typu pliku\n"
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr "sekcja [%2d] \"%s\": nie można uzyskać zawartości sekcji notatek\n"
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr "sekcja [%2d] \"%s\": dodatkowe %<PRIu64> bajtów po ostatniej notatce\n"
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
"tylko pliki wykonywalne, obiekty współdzielone i pliki core mogą posiadać "
"nagłówki programu\n"
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "nie można uzyskać wpisu nagłówka programu %d: %s\n"
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"wpis nagłówka programu %d: nieznany typ wpisu nagłówka programu %#<PRIx64>\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "więcej niż jeden wpis INTERP w nagłówku programu\n"
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "więcej niż jeden wpis TLS w nagłówku programu\n"
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "statyczny plik wykonywalny nie może posiadać sekcji dynamicznych\n"
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
"odniesienie sekcji dynamicznej w nagłówku programu posiada błędny offset\n"
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr "różne rozmiary sekcji dynamicznej w nagłówku programu i sekcji\n"
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "więcej niż jeden wpis GNU_RELRO w nagłówku programu\n"
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr "wczytywalny segment wskazywany przez GNU_RELRO nie jest zapisywalny\n"
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr "flagi wczytywalnego segmentu [%u] nie pasują do flag GNU_RELRO [%u]\n"
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "segment %s nie zawiera się we wczytywalnym segmencie\n"
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr ""
"offsety nagłówka programu w nagłówku ELF i wpisie PHDR nie zgadzają się"
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
"odniesienie tabeli wyszukiwania ramki wywołania w nagłówku programu posiada "
"błędny offset\n"
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
"różne rozmiary tabel wyszukiwania ramki wywołania w nagłówku programu i "
"sekcji\n"
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "PT_GNU_EH_FRAME jest obecne, ale brak sekcji .eh_frame_hdr\n"
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "tabela wyszukiwania ramki wywołania musi być przydzielona\n"
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "sekcja [%2zu] \"%s\": musi być przydzielona\n"
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr "tabela wyszukiwania ramki wywołania nie może być zapisywalna\n"
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "sekcja [%2zu] \"%s\" nie może być zapisywalna\n"
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "tabela wyszukiwania ramki wywołania nie może być wykonywalna\n"
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "sekcja [%2zu] \"%s\" nie może być wykonywalna\n"
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr "wpis nagłówka programu %d: rozmiar pliku większy niż rozmiar pamięci\n"
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr "wpis nagłówka programu %d: wyrównanie nie jest potęgą 2\n"
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"wpis nagłówka programu %d: offset w pliku i adres wirtualny nie są "
"wielokrotnością wyrównania\n"
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"plik wykonywalny/DSO z sekcją .eh_frame_hdr nie posiada wpisu nagłówka "
"programu PT_GNU_EH_FRAME"
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "nie można odczytać nagłówka ELF: %s\n"
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr "flaga relokacji tekstu jest ustawiona, ale niepotrzebna\n"
#: src/ld.c:167
msgid "Generate build ID note (md5, sha1 (default), uuid)."
-msgstr "Tworzy wpis identyfikatora budowania (md5, sha1 (domyślnie), uuid)."
+msgstr "Tworzy wpis identyfikatora kopii (md5, sha1 (domyślnie), uuid)."
#: src/ld.c:169
msgid "Linker Operation Control:"
msgstr ""
"Ostrzeżenie: rozmiar \"%s\" zmienił się z %<PRIu64> w %s na %<PRIu64> w %s"
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "nie można określić liczby sekcji: %s"
#: src/ldgeneric.c:4104
#, c-format
msgid "cannot create build ID section: %s"
-msgstr "nie można utworzyć sekcji identyfikatora budowania: %s"
+msgstr "nie można utworzyć sekcji identyfikatora kopii: %s"
#: src/ldgeneric.c:4181
#, c-format
msgid "cannot get header of 0th section: %s"
msgstr "nie można uzyskać nagłówka zerowej sekcji: %s"
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr "nie można zaktualizować nagłówka ELF: %s"
msgstr "Używa BAZY do wypisywania wartości symboli"
#: src/nm.c:87
-#, fuzzy
msgid "Mark special symbols"
-msgstr "Oznacza słabe symbole"
+msgstr "Oznacza specjalne symbole"
#: src/nm.c:89
msgid "Print size of defined symbols"
#: src/nm.c:98
msgid "Decode low-level symbol names into source code names"
-msgstr ""
+msgstr "Dekoduje niskopoziomowe nazwy symboli na nazwy kodu źródłowego"
#: src/nm.c:105
msgid "List symbols from FILEs (a.out by default)."
msgstr "Wyświetla listę symboli z PLIKU (domyślnie a.out)."
#: src/nm.c:116 src/objdump.c:80
-#, fuzzy
msgid "Output formatting"
-msgstr "Format wyjścia:"
+msgstr "Formatowanie wyjścia"
#: src/nm.c:140 src/objdump.c:104 src/size.c:109 src/strip.c:120
#, c-format
msgstr "%s: BŁĄD WEWNĘTRZNY %d (%s-%s): %s"
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr "podczas zamykania \"%s\""
msgstr "%s: nie rozpoznano formatu pliku"
#: src/nm.c:460
-#, fuzzy
msgid ""
"\n"
"Archive index:\n"
msgstr ""
"\n"
-"Indeks archiwum:"
+"Indeks archiwum:\n"
#: src/nm.c:469
#, c-format
msgid "cannot create search tree"
msgstr "nie można utworzyć drzewa wyszukiwania"
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji"
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"Symbole z %s:\n"
"\n"
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"%*s%-*s %-*s Klasa Typ %-*s %*s Sekcja\n"
"\n"
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr "%s: rozmiar wpisu w sekcji \"%s\" nie jest tym, czego oczekiwano"
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr "%s: rozmiar sekcji \"%s\" nie jest wielokrotnością rozmiaru wpisu"
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: nieprawidłowe działanie"
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: brak symboli"
msgstr "Wyświetla kod asemblera sekcji wykonywalnych"
#: src/objdump.c:60
-#, fuzzy
msgid "Output content selection:"
-msgstr "Wybór opcji wyjścia:"
+msgstr "Wybór zawartości wyjścia:"
#: src/objdump.c:62
msgid "Only display information for section NAME."
msgid "Show information from FILEs (a.out by default)."
msgstr "Wyświetla informacje z PLIKÓW (domyślnie a.out)."
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr "Nie podano działania.\n"
msgid "while close `%s'"
msgstr "podczas zamykania \"%s\""
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr "NIEPRAWIDŁOWY SYMBOL"
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr "NIEPRAWIDŁOWA SEKCJA"
msgstr "nie można deasemblować"
#: src/objdump.c:736
-#, fuzzy, c-format
+#, c-format
msgid "cannot allocate memory"
-msgstr "nie można przydzielić sekcji PLT: %s"
+msgstr "nie można przydzielić pamięci"
#: src/ranlib.c:66
msgid "Generate an index to speed access to archives."
msgid "error while freeing sub-ELF descriptor: %s"
msgstr "błąd podczas zwalniania deskryptora pod-ELF: %s"
-#: src/readelf.c:67
+#: src/readelf.c:71
+#, fuzzy
+msgid "ELF input selection:"
+msgstr "Wybór wyjścia ELF:"
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+
+#: src/readelf.c:75
msgid "ELF output selection:"
msgstr "Wybór wyjścia ELF:"
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr "Wszystkie te plus -p .strtab -p .dynstr -p .comment"
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr "Wyświetla segment dynamiczny"
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr "Wyświetla nagłówek pliku ELF"
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr "Wyświetla histogram długości list kubełków"
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr "Wyświetla nagłówki programu"
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr "Wyświetla relokacje"
-#: src/readelf.c:77
+#: src/readelf.c:85
msgid "Display the sections' headers"
msgstr "Wyświetla nagłówków sekcji"
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr "Wyświetla tabelę symboli"
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr "Wyświetla informacje o wersjonowaniu"
-#: src/readelf.c:81
+#: src/readelf.c:89
msgid "Display the ELF notes"
msgstr "Wyświetla notatki ELF"
-#: src/readelf.c:83
+#: src/readelf.c:91
msgid "Display architecture specific information, if any"
msgstr "Wyświetla informacje specyficzne dla architektury, jeśli są"
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr "Wyświetla sekcje do obsługi wyjątków"
-#: src/readelf.c:87
+#: src/readelf.c:95
msgid "Additional output selection:"
msgstr "Dodatkowy wybór wyjścia:"
-#: src/readelf.c:89
+#: src/readelf.c:97
#, fuzzy
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
"Wyświetla zawartość sekcji DWARF. SEKCJA może być jednym z abbrev, aranges, "
-"frame, info, loc, line, ranges, pubnames, str, macinfo lub exception."
+"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro lub "
+"exception."
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr "Zrzuca niezinterpretowaną zawartość SEKCJI, według liczny lub nazwy"
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr "Wyświetla zawartość ciągów sekcji"
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr "Wyświetla indeks symboli archiwum"
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr "Kontrola wyjścia:"
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
msgstr "Bez odnajdywania nazw symboli dla adresów w danych DWARF"
-#: src/readelf.c:104
+#: src/readelf.c:112
+#, fuzzy
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr "Bez odnajdywania nazw symboli dla adresów w danych DWARF"
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
-msgstr ""
+msgstr "Ignorowane dla zgodności (wiersze są zawsze szerokie)"
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr "Wyświetla informacje z pliku ELF w postaci czytelnej dla człowieka."
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Nieznana sekcja debugowania DWARF \"%s\".\n"
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "nie można utworzyć deskryptora ELF: %s"
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr "\"%s\" nie jest archiwum, nie można wyświetlić indeksu archiwum"
+msgid "cannot get section: %s"
+msgstr "nie można uzyskać sekcji: %s"
+
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
+msgstr "nie można uzyskać nagłówka sekcji: %s"
+
+#: src/readelf.c:562
+#, fuzzy, c-format
+msgid "cannot get section name"
+msgstr "nie można uzyskać nagłówka sekcji\n"
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr "nie można uzyskać zwartości %s: %s"
+
+#: src/readelf.c:587
+#, fuzzy, c-format
+msgid "cannot create temp file '%s'"
+msgstr "nie można utworzyć nowego pliku \"%s\": %s"
-#: src/readelf.c:493
+#: src/readelf.c:596
+#, fuzzy, c-format
+msgid "cannot write section data"
+msgstr "nie można odczytać danych sekcji: %s"
+
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "błąd podczas zamykania deskryptora ELF: %s"
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, fuzzy, c-format
+msgid "error while rewinding file descriptor"
+msgstr "błąd podczas zamykania deskryptora ELF: %s"
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr "\"%s\" nie jest archiwum, nie można wyświetlić indeksu archiwum"
+
+#: src/readelf.c:742
+#, fuzzy, c-format
+msgid "No such section '%s' in '%s'"
+msgstr "nie można odczytać notatki sekcji [%zu] \"%s\" w \"%s\": %s"
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr "nie można wykonać stat na pliku wejściowym"
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr "plik wejściowy jest pusty"
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr "odczytanie \"%s\" nie powiodło się: %s"
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr "nie można odczytać nagłówka ELF: %s"
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr "nie można utworzyć uchwytu EBL"
-#: src/readelf.c:646
+#: src/readelf.c:835
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "nie można określić liczby nagłówków programu: %s"
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr "NONE (żaden)"
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr "REL (plik relokowalny)"
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr "EXEC (plik wykonywalny)"
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr "DYN (plik obiektu współdzielonego)"
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr "CORE (plik core)"
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "Zależny od systemu: (%x)\n"
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Zależny od procesora: (%x)\n"
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
"Nagłówek ELF:\n"
" Magic: "
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
"\n"
" Klasa: %s\n"
-#: src/readelf.c:762
+#: src/readelf.c:951
#, c-format
msgid " Data: %s\n"
msgstr " Dane: %s\n"
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " Wersja Ident: %hhd %s\n"
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr "(bieżąca)"
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr " System operacyjny/ABI: %s\n"
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " Wersja ABI: %hhd\n"
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr " Typ: "
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr " Komputer: %s\n"
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr " Wersja: %d %s\n"
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " Adres punktu wejściowego: %#<PRIx64>\n"
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Początek nagłówków programu: %<PRId64> %s\n"
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr "(bajtów w pliku)"
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Początek nagłówków sekcji: %<PRId64> %s\n"
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr " Flagi: %s\n"
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Rozmiar tego nagłówka: %<PRId16> %s\n"
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr "(bajtów)"
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " Rozmiar wpisów nagłówka programu: %<PRId16> %s\n"
-#: src/readelf.c:807
+#: src/readelf.c:996
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " Liczba wpisów nagłówków programu: %<PRId16>"
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> w [0].sh_info)"
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr " ([0] niedostępny)"
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " Rozmiar wpisów nagłówka sekcji: %<PRId16> %s\n"
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " Liczba wpisów nagłówków sekcji: %<PRId16>"
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> w [0].sh_size)"
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> w [0].sh_link)"
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
" Indeks tabeli ciągów nagłówków sekcji: XINDEX%s\n"
"\n"
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
" Indeks tabeli ciągów nagłówków sekcji: %<PRId16>\n"
"\n"
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"Jest %d nagłówków sekcji, rozpoczynających się od offsetu %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr "Nagłówki sekcji:"
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
"[Nr] Nazwa Typ Adres Offset Rozm ES Flagi Lk "
"Inf Al"
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
"[Nr] Nazwa Typ Adres Offset Rozmiar ES "
"Flagi Lk Inf Al"
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr "nie można uzyskać sekcji: %s"
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr "nie można uzyskać nagłówka sekcji: %s"
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr "Nagłówki programu:"
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Typ Offset AdresWirt AdresFiz RozmPlik RozmPam Flg "
"Wyrównanie"
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
" Typ Offset AdresWirtualny AdresFizyczny RozmPlik "
"RozmPam Flg Wyrównanie"
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Wywołanie interpretera programu: %s]\n"
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" mapowanie sekcji do segmentów:\n"
" Segment sekcji..."
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr "nie można uzyskać nagłówka programu: %s"
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
"\n"
"Grupa sekcji COMDAT [%2zu] \"%s\" z podpisem \"%s\" zawiera %zu wpisów:\n"
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
"\n"
"Grupa sekcji [%2zu] \"%s\" z podpisem \"%s\" zawiera %zu wpisów:\n"
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr "<NIEPRAWIDŁOWY SYMBOL>"
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr "<NIEPRAWIDŁOWY SEKCJA>"
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, fuzzy, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "nieprawidłowa sekcja .debug_line"
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> Dowiązanie do sekcji: [%2u] "
"'%s'\n"
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr " Typ Wartość\n"
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Biblioteka współdzielona: [%s]\n"
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr "soname biblioteki: [%s]\n"
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "rpath biblioteki: [%s]\n"
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "runpath biblioteki: [%s]\n"
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (bajtów)\n"
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"\n"
"Nieprawidłowa tabela symboli pod offsetem %#0<PRIx64>\n"
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
"Sekcja relokacji [%2zu] \"%s\" dla sekcji [%2u] \"%s\" pod offsetem "
"%#0<PRIx64> zawiera %d wpisów:\n"
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
"\n"
"Sekcja relokacji [%2u] \"%s\" pod offsetem %#0<PRIx64> zawiera %d wpisów:\n"
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr " Offset Typ Wartość Nazwa\n"
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr " Offset Typ Wartość Nazwa\n"
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr "<NIEPRAWIDŁOWA RELOKACJA>"
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr " Offset Typ Wartość Koniec Nazwa\n"
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr ""
" Offset Typ Wartość Koniec Nazwa\n"
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
"\n"
"Tabela symboli [%2u] \"%s\" zawiera %u wpisów:\n"
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[1] " %lu symbole lokalne Tabela ciągów: [%2u] \"%s\"\n"
msgstr[2] " %lu symboli lokalnych Tabela ciągów: [%2u] \"%s\"\n"
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n"
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n"
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr "błędny symbol dynamiczny"
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr "brak"
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr "| <nieznany>"
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> Dowiązanie do sekcji: [%2u] \"%s"
"\"\n"
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Wersja: %hu Plik: %s Licznik: %hu\n"
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Nazwa: %s Flagi: %s Wersja: %hu\n"
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> Dowiązanie do sekcji: [%2u] \"%s"
"\"\n"
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr ""
" %#06x: Wersja: %hd Flagi: %s Indeks: %hd Licznik: %hd Nazwa: %s\n"
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: Rodzic %d: %s\n"
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> Dowiązanie do sekcji: [%2u] \"%s"
"\""
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr " 0 *lokalny* "
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr " 1 *globalny* "
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
" Adres: %#0*<PRIx64> Offset: %#08<PRIx64> Dowiązanie do sekcji: [%2u] \"%s"
"\"\n"
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Długość Liczba % całości Pokrycie\n"
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
" Średnia liczba testów: udane wyszukania: %f\n"
"\t\t\t nieudane wyszukania: %f\n"
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "nie można uzyskać danych dla sekcji %d: %s"
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Rozmiar maski bitowej: %zu bajtów %<PRIuFAST32>%% bitów ustawionych "
"drugie przesunięcie skrótu: %u\n"
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
"Sekcja listy bibliotek [%2zu] \"%s\" pod offsetem %#0<PRIx64> zawiera %d "
"wpisów:\n"
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
" Biblioteka Oznaczenie czasu Suma k. Wersja "
"Flagi"
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"Sekcja atrybutów obiektu [%2zu] \"%s\" %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr " Właściciel Rozmiar\n"
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " Plik: %11<PRIu32>\n"
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr "%s+%#<PRIx64> <%s>"
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr "%s+%#0*<PRIx64> <%s>"
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr "%#<PRIx64> <%s>"
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr "%#0*<PRIx64> <%s>"
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr "%s+%#<PRIx64>"
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr "pusty blok"
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr "%zu bajtowy blok:"
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <SKRÓCONE>\n"
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami adresu"
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami offsetu"
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, fuzzy, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami adresu"
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <NIEUŻYWANE ŚMIECIE W RESZCIE SEKCJI>\n"
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <NIEUŻYWANE ŚMIECIE>... %<PRIu64> bajtów...\n"
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
" [ Kod]\n"
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"\n"
"Sekcja skrótów pod offsetem %<PRIu64>:\n"
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** błąd podczas odczytywania skrótu: %s\n"
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] offset: %<PRId64>, potomek: %s, znacznik: %s\n"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr "tak"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr "nie"
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "nie można uzyskać zawartości .debug_aranges: %s"
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
"\n"
"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64> zawiera %zu wpisów:\n"
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
" [%*zu] początek: %0#*<PRIx64>, długość: %5<PRIu64>, offset CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:4219
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "nie można uzyskać zawartości .debug_ranges: %s"
-
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
msgid ""
"\n"
"\n"
"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4569 src/readelf.c:6171
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Tabela pod offsetem %Zu:\n"
+
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
+
+#: src/readelf.c:4589
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr " Długość offsetu: %<PRIu8>\n"
+
+#: src/readelf.c:4601
+#, fuzzy, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " Wersja: %<PRIu16>\n"
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr ""
+
+#: src/readelf.c:4616
+#, fuzzy, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr " offset CU: %#<PRIx32>\n"
+
+#: src/readelf.c:4622
+#, fuzzy, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr " offset adresu: %#<PRIx32>\n"
+
+#: src/readelf.c:4626
+#, fuzzy, c-format
+msgid "unsupported address size"
+msgstr "brak wartości adresu"
+
+#: src/readelf.c:4631
+#, fuzzy, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr " ustawienie pliku na %<PRIu64>\n"
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr ""
+
+#: src/readelf.c:4675
+#, fuzzy, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr " %s: %<PRId64>\n"
+
+#: src/readelf.c:4678
+#, fuzzy, c-format
+msgid " %s..%s\n"
+msgstr " [%6tx] %s...%s\n"
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr ""
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "nie można uzyskać zawartości .debug_ranges: %s"
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <NIEPRAWIDŁOWE DANE>\n"
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] adres podstawowy %s\n"
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] pusta lista\n"
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s...%s\n"
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr " %s...%s\n"
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
-#, c-format
-msgid "cannot get %s content: %s"
-msgstr "nie można uzyskać zwartości %s: %s"
+#: src/readelf.c:5210
+#, fuzzy, c-format
+msgid "cannot get ELF: %s"
+msgstr "nie można uzyskać nagłówka ELF: %s"
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"\n"
"Sekcja informacji o ramce wywołania [%2zu] \"%s\" pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
"\n"
" [%6tx] Zerowy koniec\n"
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, c-format
msgid "invalid augmentation length"
msgstr "nieprawidłowa długość powiększenia"
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr "Kodowanie adresu FDE: "
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr "Kodowanie wskaźnika LSDA: "
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (offset: %#<PRIx64>)"
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (kończący offset: %#<PRIx64>)"
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sWskaźnik LSDA: %#<PRIx64>\n"
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr "nie można uzyskać kodu atrybutu: %s"
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr "nie można uzyskać formy atrybutu: %s"
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr "nie można uzyskać wartości atrybutu: %s"
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
" [Offset]\n"
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
"%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
" Podpis typu: %#<PRIx64>, offset typu: %#<PRIx64>\n"
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
" Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
"%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "nie można uzyskać DIE pod offsetem %<PRIu64> w sekcji \"%s\": %s"
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "nie można uzyskać offsetu DIE: %s"
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"nie można uzyskać znacznika DIE pod offsetem %<PRIu64> w sekcji \"%s\": %s"
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "nie można uzyskać następnego DIE: %s\n"
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr "nie można uzyskać następnego DIE: %s"
-#: src/readelf.c:5518
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr "nie można uzyskać danych sekcji danych wiersza: %s"
-
-#: src/readelf.c:5531
-#, c-format
+#: src/readelf.c:6059
+#, fuzzy, c-format
msgid ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
"\n"
-"Tabela pod offsetem %Zu:\n"
+"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
-#: src/readelf.c:5586
+#: src/readelf.c:6158
+#, c-format
+msgid "cannot get line data section data: %s"
+msgstr "nie można uzyskać danych sekcji danych wiersza: %s"
+
+#: src/readelf.c:6226
#, c-format
msgid ""
"\n"
"\n"
"Instrukcje:\n"
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "nieprawidłowe dane pod offsetem %tu w sekcji [%zu] \"%s\""
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu parametry\n"
msgstr[2] " [%*<PRIuFAST8>] %hhu parametrów\n"
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
"\n"
"Tabela katalogu:"
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
"Tabela nazw plików:\n"
" Wpis Kat Czas Rozmiar Nazwa"
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
"\n"
"Instrukcje numerów wierszy:"
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
" instrukcja specjalna %u: adres+%u = %s, op_index = %u, wiersz%+d = %zu\n"
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " instrukcja specjalna %u: adres+%u = %s, wiersz%+d = %zu\n"
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr " instrukcja rozszerzona %u: "
-#: src/readelf.c:5781
-#, fuzzy
+#: src/readelf.c:6421
msgid " end of sequence"
-msgstr "koniec sekwencji"
+msgstr " koniec sekwencji"
-#: src/readelf.c:5798
-#, fuzzy, c-format
+#: src/readelf.c:6438
+#, c-format
msgid " set address to %s\n"
-msgstr "ustawienie adresu na %s\n"
+msgstr " ustawienie adresu na %s\n"
-#: src/readelf.c:5819
-#, fuzzy, c-format
+#: src/readelf.c:6459
+#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
-"definicja nowego pliku: dir=%u, mtime=%<PRIu64>, długość=%<PRIu64>, nazwa="
+" definicja nowego pliku: dir=%u, mtime=%<PRIu64>, długość=%<PRIu64>, nazwa="
"%s\n"
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, c-format
msgid " set discriminator to %u\n"
msgstr " ustawienie dyskryminatora na %u\n"
-#: src/readelf.c:5837
-#, fuzzy
+#: src/readelf.c:6477
msgid " unknown opcode"
-msgstr "nieznana instrukcja"
+msgstr " nieznana instrukcja"
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr " kopiowanie"
-#: src/readelf.c:5860
-#, fuzzy, c-format
+#: src/readelf.c:6500
+#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
-msgstr ""
-"zwiększenie adresu o %u do %s, op_index do %u\n"
-"\n"
+msgstr " zwiększenie adresu o %u do %s, op_index do %u\n"
-#: src/readelf.c:5864
-#, fuzzy, c-format
+#: src/readelf.c:6504
+#, c-format
msgid " advance address by %u to %s\n"
-msgstr "zwiększenie adresu o %u do %s\n"
+msgstr " zwiększenie adresu o %u do %s\n"
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " zwiększenie wiersza o stałą %d do %<PRId64>\n"
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " ustawienie pliku na %<PRIu64>\n"
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " ustawienie kolumny na %<PRIu64>\n"
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " ustawienie \"%s\" na %<PRIuFAST8>\n"
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr " ustawienie podstawowej flagi bloku"
-#: src/readelf.c:5915
-#, fuzzy, c-format
+#: src/readelf.c:6555
+#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
-msgstr "zwiększenie adresu o stałą %u do %s, op_index do %u\n"
+msgstr " zwiększenie adresu o stałą %u do %s, op_index do %u\n"
-#: src/readelf.c:5919
-#, fuzzy, c-format
+#: src/readelf.c:6559
+#, c-format
msgid " advance address by constant %u to %s\n"
-msgstr "zwiększenie adresu o stałą %u do %s\n"
+msgstr " zwiększenie adresu o stałą %u do %s\n"
-#: src/readelf.c:5937
-#, fuzzy, c-format
+#: src/readelf.c:6577
+#, c-format
msgid " advance address by fixed value %u to %s\n"
-msgstr "zwiększenie adresu o stałą wartość %u do %s\n"
+msgstr " zwiększenie adresu o stałą wartość %u do %s\n"
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr " ustawienie flagi końca prologu"
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr " ustawienie flagi początku epilogu"
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, c-format
msgid " set isa to %u\n"
msgstr " ustawienie isa na %u\n"
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[1] " nieznana instrukcja z %<PRIu8> parametrami:"
msgstr[2] " nieznana instrukcja z %<PRIu8> parametrami:"
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "nie można uzyskać zawartości .debug_log: %s"
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s...%s"
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr " %s...%s"
-#: src/readelf.c:6080
+#: src/readelf.c:6725
msgid " <INVALID DATA>\n"
msgstr " <NIEPRAWIDŁOWE DANE>\n"
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "nie można uzyskać danych sekcji informacji o makrach: %s"
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** niezakończony ciąg na końcu sekcji"
-#: src/readelf.c:6327
-#, fuzzy, c-format
+#: src/readelf.c:6972
+#, c-format
msgid " Offset: 0x%<PRIx64>\n"
-msgstr " Właściciel Rozmiar\n"
+msgstr " Offset: 0x%<PRIx64>\n"
-#: src/readelf.c:6339
-#, fuzzy, c-format
+#: src/readelf.c:6984
+#, c-format
msgid " Version: %<PRIu16>\n"
-msgstr " %s: %<PRId64>\n"
+msgstr " Wersja: %<PRIu16>\n"
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
-msgstr ""
+msgstr " nieznana wersja, nie można przetworzyć sekcji\n"
-#: src/readelf.c:6352
-#, fuzzy, c-format
+#: src/readelf.c:6997
+#, c-format
msgid " Flag: 0x%<PRIx8>\n"
-msgstr " Adres punktu wejściowego: %#<PRIx64>\n"
+msgstr " Flaga: 0x%<PRIx8>\n"
-#: src/readelf.c:6355
-#, fuzzy, c-format
+#: src/readelf.c:7000
+#, c-format
msgid " Offset length: %<PRIu8>\n"
-msgstr " (offset: %#<PRIx64>)"
+msgstr " Długość offsetu: %<PRIu8>\n"
-#: src/readelf.c:6363
-#, fuzzy, c-format
+#: src/readelf.c:7008
+#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
-msgstr " (kończący offset: %#<PRIx64>)"
+msgstr " Offset .debug_line: 0x%<PRIx64>\n"
-#: src/readelf.c:6375
-#, fuzzy, c-format
+#: src/readelf.c:7021
+#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
-msgstr " nieznana instrukcja z %<PRIu8> parametrem:"
+msgstr " tablica instrukcji rozszerzenia, %<PRIu8> elementów:\n"
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
-msgstr ""
+msgstr " [%<PRIx8>]"
-#: src/readelf.c:6394
-#, fuzzy, c-format
+#: src/readelf.c:7040
+#, c-format
msgid " %<PRIu8> arguments:"
-msgstr " [%*<PRIuFAST8>] %hhu parametr\n"
+msgstr " Parametry %<PRIu8>:"
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
-msgstr ""
+msgstr " brak parametrów."
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
-msgstr ""
+msgstr "instrukcja producenta nie została sprawdzona?"
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr " [%5d] offset DIE: %6<PRId64>, offset CU DIE: %6<PRId64>, nazwa: %s\n"
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, c-format
msgid ""
"\n"
"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
" %*s Ciąg\n"
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** błąd podczas odczytywania ciągów: %s\n"
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"\n"
"Sekcja tabeli wyszukiwania ramki wywołania [%2zu] \".eh_frame_hdr\":\n"
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"\n"
"Sekcja tabeli obsługiwania wyjątków [%2zu] \".gcc_except_table\":\n"
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr " Kodowanie LPStart: %#x "
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr " Kodowanie TType: %#x "
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr " Kodowanie strony wywołania: %#x "
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
"\n"
" Tabela strony wywołania:"
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" Lądowisko: %#<PRIx64>\n"
" Działanie: %u\n"
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr "nieprawidłowe kodowanie TType"
-#: src/readelf.c:7019
-#, fuzzy, c-format
+#: src/readelf.c:7665
+#, c-format
msgid ""
"\n"
"GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
msgstr ""
"\n"
-"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64> zawiera %zu wpis:\n"
+"Sekcja GDB [%2zu] \"%s\" pod offsetem %#<PRIx64> zawiera %<PRId64> bajtów:\n"
-#: src/readelf.c:7048
-#, fuzzy, c-format
+#: src/readelf.c:7694
+#, c-format
msgid " Version: %<PRId32>\n"
-msgstr " %s: %<PRId64>\n"
+msgstr " Wersja: %<PRId32>\n"
-#: src/readelf.c:7064
-#, fuzzy, c-format
+#: src/readelf.c:7712
+#, c-format
msgid " CU offset: %#<PRIx32>\n"
-msgstr " (offset: %#<PRIx64>)"
+msgstr " offset CU: %#<PRIx32>\n"
-#: src/readelf.c:7071
-#, fuzzy, c-format
+#: src/readelf.c:7719
+#, c-format
msgid " TU offset: %#<PRIx32>\n"
-msgstr " (offset: %#<PRIx64>)"
+msgstr " offset TU: %#<PRIx32>\n"
-#: src/readelf.c:7078
-#, fuzzy, c-format
+#: src/readelf.c:7726
+#, c-format
msgid " address offset: %#<PRIx32>\n"
-msgstr " (kończący offset: %#<PRIx64>)"
+msgstr " offset adresu: %#<PRIx32>\n"
-#: src/readelf.c:7085
-#, fuzzy, c-format
+#: src/readelf.c:7733
+#, c-format
msgid " symbol offset: %#<PRIx32>\n"
-msgstr " (offset: %#<PRIx64>)"
+msgstr " offset symbolu: %#<PRIx32>\n"
-#: src/readelf.c:7092
-#, fuzzy, c-format
+#: src/readelf.c:7740
+#, c-format
msgid " constant offset: %#<PRIx32>\n"
-msgstr " (kończący offset: %#<PRIx64>)"
+msgstr " offset stałej: %#<PRIx32>\n"
-#: src/readelf.c:7099
-#, fuzzy, c-format
+#: src/readelf.c:7747
+#, c-format
msgid ""
"\n"
" CU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
"\n"
-"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64> zawiera %zu wpis:\n"
+" Lista CU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:7121
-#, fuzzy, c-format
+#: src/readelf.c:7769
+#, c-format
msgid ""
"\n"
" TU list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
"\n"
-"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64> zawiera %zu wpis:\n"
+" Lista TU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:7147
-#, fuzzy, c-format
+#: src/readelf.c:7795
+#, c-format
msgid ""
"\n"
" Address list at offset %#<PRIx32> contains %zu entries:\n"
msgstr ""
"\n"
-"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64> zawiera %zu wpis:\n"
+" Lista adresów pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
-#: src/readelf.c:7174
-#, fuzzy, c-format
+#: src/readelf.c:7824
+#, c-format
msgid ""
"\n"
" Symbol table at offset %#<PRIx32> contains %zu slots:\n"
msgstr ""
"\n"
-"Nieprawidłowa tabela symboli pod offsetem %#0<PRIx64>\n"
+" Tabela symboli pod offsetem %#<PRIx32> zawiera %zu gniazd:\n"
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s"
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr "nie można przekonwertować danych notatki core: %s"
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"\n"
"%*s... <powtarza się jeszcze %u razy>..."
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr " Właściciel Rozmiar danych Typ\n"
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr "nie można uzyskać zawartości sekcji notatki: %s"
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"Segment notatki [%2zu] \"%s\" o długości %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"\n"
"Segment notatki o długości %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"\n"
"Sekcja [%Zu] \"%s\" nie posiada danych do zrzucenia.\n"
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr "nie można uzyskać danych dla sekcji [%Zu] \"%s\": %s"
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"Segment zrzutu szesnastkowego [%Zu] \"%s\", %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, c-format
msgid ""
"\n"
"\n"
"Sekcja [%Zu] \"%s\" nie posiada ciągów do zrzucenia.\n"
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"Sekcja ciągów [%Zu] \"%s\" zawiera %<PRIu64> bajtów pod offsetem "
"%#0<PRIx64>:\n"
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"\n"
"sekcja [%lu] nie istnieje"
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"\n"
"sekcja \"%s\" nie istnieje"
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "nie można uzyskać indeksu symboli archiwum \"%s\": %s"
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"\n"
"Archiwum \"%s\" nie posiada indeksu symboli\n"
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"\n"
"Indeks archiwum \"%s\" posiada %Zu wpisów:\n"
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr "nie można wydobyć elementów pod offsetem %Zu w \"%s\": %s"
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Element archiwum \"%s\" zawiera:\n"
msgid "%s: file format not recognized"
msgstr "%s: nie rozpoznano formatu pliku"
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr " (ex %s)"
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr "(CAŁKOWITE)\n"
msgid "Print the strings of printable characters in files."
msgstr "Wyświetla ciągi znaków drukowalnych w plikach."
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr "nieprawidłowa wartość \"%s\" dla parametru %s"
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr "nieprawidłowa minimalna długość dopasowanego rozmiaru ciągu"
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr "lseek64 nie powiodło się"
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr "ponowne mmap nie powiodło się"
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr "mprotect nie powiodło się"
"sections are placed in a debug file (only relevant for ET_REL files, "
"operation is not reversable, needs -f)"
msgstr ""
+"Rozwiązuje wszystkie proste relokacje między sekcjami debugowania, jeśli "
+"usunięte sekcje zostały umieszczone w pliku debugowania (ma znaczenie tylko "
+"dla plików ET_REL, działanie jest nieodwracalne, wymaga użycia opcji -f)"
#: src/strip.c:85
msgid "Remove .comment section"
#: src/strip.c:181
#, c-format
msgid "--reloc-debug-sections used without -f"
-msgstr ""
+msgstr "Użyto --reloc-debug-sections bez opcji -f"
#: src/strip.c:195
#, c-format
msgid "-F option specified twice"
msgstr "Opcję -F podano dwukrotnie"
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "Opcję -o podano dwukrotnie"
msgid "%s: cannot use -o or -f when stripping archive"
msgstr "%s: nie można używać -o lub -f podczas okrajania archiwum"
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr "nie można otworzyć zaplecza EBL"
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "nie można utworzyć nowego pliku \"%s\": %s"
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr "plik \"%s\" posiada błędny format"
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr "podczas tworzenia pliku wyjściowego: %s"
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr "podczas przygotowywania wyjścia dla \"%s\""
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr "podczas tworzenia sekcji nagłówka sekcji: %s"
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr "nie można przydzielić danych sekcji: %s"
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr "podczas tworzenia tabeli ciągów nagłówka sekcji: %s"
-#: src/strip.c:1724
-#, fuzzy, c-format
+#: src/strip.c:1752
+#, c-format
msgid "bad relocation"
-msgstr "Wyświetla relokacje"
+msgstr "błędna relokacja"
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr "podczas zapisywania \"%s\": %s"
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr "podczas tworzenia \"%s\""
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania"
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: błąd podczas odczytywania pliku: %s"
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, c-format
msgid "while writing '%s'"
msgstr "podczas zapisywania \"%s\""
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr "błąd podczas kończenia \"%s\": %s"
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "nie można ustawić czasu dostępu i modyfikacji \"%s\""
#: src/unstrip.c:84
msgid "Only list module and file names, build IDs"
-msgstr "Wyświetla tylko nazwy modułów i plików, identyfikatory budowania"
+msgstr "Wyświetla tylko nazwy modułów i plików, identyfikatory kopii"
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr ""
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr "opcję -d podano dwukrotnie"
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr "dozwolona jest tylko jedna z opcji -o lub -d"
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr "opcja -n nie może być używana z jawnymi plikami albo z opcją -o lub -d"
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr "katalog wyjściowy \"%s\""
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr "wymagane są dokładnie dwa parametry plików"
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr "opcje -m, -a, -R oraz -i nie są dozwolone z jawnymi plikami"
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr "opcja -o lub -d jest wymagana podczas używania ukrytych plików"
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr "nie można utworzyć nagłówka ELF: %s"
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "nie można skopiować nagłówka ELF: %s"
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr "nie można utworzyć nagłówków programu: %s"
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr "nie można skopiować nagłówka programu: %s"
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr "nie można skopiować nagłówka sekcji: %s"
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr "nie można uzyskać danych sekcji: %s"
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr "nie można skopiować danych sekcji: %s"
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr "nie można utworzyć katalogu \"%s\""
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "nie można uzyskać wpisu tabeli symboli: %s"
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr "nie można zaktualizować tabeli symboli: %s"
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr "nie można zaktualizować nagłówka sekcji: %s"
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr "nie można zaktualizować relokacji: %s"
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr "nie można uzyskać wersji symbolu: %s"
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr "nieoczekiwany typ sekcji w [%Zu] z sh_link do tabeli symboli"
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr "nieprawidłowy offset ciągu w symbolu [%Zu]"
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr "nie można odczytać nazwy sekcji [%Zu]: %s"
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "nie można odczytać sekcji \".gnu.prelink_undo\": %s"
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr "nieprawidłowa zawartość w sekcji \"%s\""
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr "nie można odnaleźć pasującej sekcji dla [%Zu] \"%s\""
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "nie można nazwy sekcji do tabeli ciągów: %s"
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr "nie można zaktualizować danych tabeli ciągów nagłówków sekcji: %s"
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr "nie można uzyskać indeksu sekcji tabeli ciągów nagłówków sekcji: %s"
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr "nie można uzyskać licznika sekcji: %s"
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
"więcej sekcji w okrojonym pliku niż w pliku debugowania - odwrócono "
"parametry?"
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr "nie można odczytać tabeli ciągów nagłówków sekcji: %s"
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr "nie można dodać nowej sekcji: %s"
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr "symbol [%Zu] posiada nieprawidłowy indeks sekcji"
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, c-format
msgid "cannot read section data: %s"
msgstr "nie można odczytać danych sekcji: %s"
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr "nie można uzyskać nagłówka ELF: %s"
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr "nie można zaktualizować nagłówka programu: %s"
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr "nie można zapisać pliku wyjściowego: %s"
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
"Dane DWARF nie zostały dostosowane do przesunięcia wczesnego konsolidowania; "
"proszę rozważyć polecenie prelink -u"
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
"Dane DWARF w \"%s\" nie zostały dostosowane do przesunięcia wczesnego "
"konsolidowania; proszę rozważyć polecenie prelink -u"
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "nie można utworzyć deskryptora ELF: %s"
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "\"%s\" i \"%s\" nie zgadzają się"
+#: src/unstrip.c:1955
+msgid "WARNING: "
+msgstr ""
-#: src/unstrip.c:1994
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr ""
+
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "nie można odnaleźć okrojonego pliku dla modułu \"%s\": %s"
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "nie można otworzyć okrojonego pliku \"%s\" dla modułu \"%s\": %s"
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "nie można odnaleźć pliku debugowania dla modułu \"%s\": %s"
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "nie można otworzyć pliku debugowania \"%s\" dla modułu \"%s\": %s"
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "moduł \"%s\" pliku \"%s\" nie został okrojony"
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr ""
"nie można utworzyć pamięci podręcznej adresów sekcji dla modułu \"%s\": %s"
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr "nie odnaleziono pasujących modułów"
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr "pasuje więcej niż jeden moduł"
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
"OKROJONY-PLIK PLIK-DEBUGOWANIA\n"
"[MODUŁ...]"
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
"\n"
"Używając opcji -n żadne pliki nie zostają zapisane, a jeden wiersz do "
"standardowego wyjścia dla każdego modułu:\n"
-"\tPOCZĄTEK+ROZMIAR IDENTYFIKATOR-BUDOWANIA PLIK PLIK-DEBUGOWANIA NAZWA-"
-"MODUŁU\n"
+"\tPOCZĄTEK+ROZMIAR IDENTYFIKATOR-KOPII PLIK PLIK-DEBUGOWANIA NAZWA-MODUŁU\n"
"POCZĄTEK i ROZMIAR są liczbami szesnastkowymi podającymi zakres adresów "
-"modułu. IDENTYFIKATOR-BUDOWANIA jest liczbą szesnastkową dla bitów "
-"identyfikatora budowania lub \"-\", jeśli identyfikator jest nieznany; "
-"liczba szesnastkowa może być uzupełniona @0xADRES podającym adres, gdzie "
-"znajduje się identyfikator, jeśli jest to wiadome. PLIK jest nazwą pliku "
+"modułu. IDENTYFIKATOR-KOPII jest liczbą szesnastkową dla bitów "
+"identyfikatora kopii lub \"-\", jeśli identyfikator jest nieznany; liczba "
+"szesnastkowa może być uzupełniona @0xADRES podającym adres, gdzie znajduje "
+"się identyfikator, jeśli jest to wiadome. PLIK jest nazwą pliku "
"odnalezionego dla modułu lub \"-\", jeśli go nie odnaleziono lub \".\", "
"jeśli obraz ELF jest dostępny, ale nie z żadnego nazwanego pliku. PLIK-"
"DEBUGOWANIA jest nazwą oddzielnego pliku debuginfo lub \"-\", jeśli nie "
"odnaleziono debuginfo lub \".\", jeśli PLIK zawiera informacje debugowania."
-#~ msgid "unknown tag %hx"
-#~ msgstr "nieznany znacznik %hx"
-
-#~ msgid "unknown user tag %hx"
-#~ msgstr "nieznany znacznik użytkownika %hx"
-
-#~ msgid "unknown attribute %hx"
-#~ msgstr "nieznany atrybut %hx"
-
-#~ msgid "unknown user attribute %hx"
-#~ msgstr "nieznany atrybut użytkownika %hx"
+#, fuzzy
+#~ msgid "cannot attach to process"
+#~ msgstr "nie można utworzyć drzewa wyszukiwania"
#, fuzzy
-#~ msgid "unknown form %#<PRIx64>"
-#~ msgstr "nieznana forma %<PRIx64>"
-
-#~ msgid ""
-#~ "\n"
-#~ "\n"
-#~ "Symbols from %s[%s]:\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "\n"
-#~ "Symbole z %s[%s]:\n"
-#~ "\n"
+#~ msgid "cannot attach to core"
+#~ msgstr "nie można utworzyć drzewa wyszukiwania"
+
+#~ msgid "'%s' and '%s' do not seem to match"
+#~ msgstr "\"%s\" i \"%s\" nie zgadzają się"
# Copyright (C) 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the elfutils package.
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2010, 2011, 2012.
+# Yuri Chornoivan <yurchor@ukr.net>, 2010, 2011, 2012, 2013.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugzilla.redhat.com/\n"
-"POT-Creation-Date: 2012-08-27 20:34+0200\n"
-"PO-Revision-Date: 2012-08-11 17:59+0300\n"
+"POT-Creation-Date: 2014-08-27 11:26+0200\n"
+"PO-Revision-Date: 2013-10-09 17:50+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language: uk\n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 1.5\n"
-#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:2842
-#: src/readelf.c:3181 src/unstrip.c:2090 src/unstrip.c:2298
+#: lib/xmalloc.c:54 lib/xmalloc.c:68 lib/xmalloc.c:82 src/readelf.c:3098
+#: src/readelf.c:3447 src/readelf.c:8018 src/unstrip.c:2115 src/unstrip.c:2323
#, c-format
msgid "memory exhausted"
msgstr "пам’ять вичерпано"
-#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:49
+#: libasm/asm_error.c:65 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:53
#: libelf/elf_error.c:60
msgid "no error"
msgstr "без помилок"
-#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:51
+#: libasm/asm_error.c:66 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:55
#: libelf/elf_error.c:91
msgid "out of memory"
msgstr "нестача пам'яті"
msgid "no backend support available"
msgstr "підтримки серверів не передбачено"
-#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:50
+#: libasm/asm_error.c:84 libdw/dwarf_error.c:59 libdwfl/libdwflP.h:54
#: libelf/elf_error.c:63
msgid "unknown error"
msgstr "невідома помилка"
msgid "invalid directory index"
msgstr "некоректний покажчик каталогу"
-#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:70
+#: libdw/dwarf_error.c:84 libdwfl/libdwflP.h:74
msgid "address out of range"
msgstr "некоректна адреса"
msgid "invalid address range index"
msgstr "некоректний індекс діапазону адрес"
-#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:71
+#: libdw/dwarf_error.c:89 libdwfl/libdwflP.h:75
msgid "no matching address range"
msgstr "не виявлено відповідного діапазону адрес"
msgid "no alternative debug link found"
msgstr "альтернативного діагностичного посилання не знайдено"
-#: libdwfl/argp-std.c:46 src/unstrip.c:2240
+#: libdwfl/argp-std.c:46 src/unstrip.c:2265
msgid "Input selection options:"
msgstr "Вибір параметрів виведення даних:"
msgid "Search path for separate debuginfo files"
msgstr "Шукати у вказаному каталозі окремі файли debuginfo"
-#: libdwfl/argp-std.c:142
+#: libdwfl/argp-std.c:157
msgid "only one of -e, -p, -k, -K, or --core allowed"
msgstr ""
"можна використовувати лише один за параметрів: -e, -p, -k, -K або --core"
-#: libdwfl/argp-std.c:202
-#, c-format
-msgid "cannot read ELF core file: %s"
-msgstr "не вдалося прочитати файл core ELF: %s"
-
-#: libdwfl/argp-std.c:220
-msgid "No modules recognized in core file"
-msgstr "Не вдалося виявити модулі у файлі core"
-
-#: libdwfl/argp-std.c:232
+#: libdwfl/argp-std.c:230
msgid "cannot load kernel symbols"
msgstr "не вдалося завантажити символи ядра"
-#: libdwfl/argp-std.c:236
+#: libdwfl/argp-std.c:234
msgid "cannot find kernel modules"
msgstr "не вдалося виявити модулі ядра"
-#: libdwfl/argp-std.c:250
+#: libdwfl/argp-std.c:251
msgid "cannot find kernel or modules"
msgstr "не вдалося виявити ядро або модулі"
-#: libdwfl/libdwflP.h:52
+#: libdwfl/argp-std.c:290
+#, c-format
+msgid "cannot read ELF core file: %s"
+msgstr "не вдалося прочитати файл core ELF: %s"
+
+#: libdwfl/argp-std.c:311
+msgid "No modules recognized in core file"
+msgstr "Не вдалося виявити модулі у файлі core"
+
+#: libdwfl/libdwflP.h:56
msgid "See errno"
msgstr "Див. errno"
-#: libdwfl/libdwflP.h:53
+#: libdwfl/libdwflP.h:57
msgid "See elf_errno"
msgstr "Див. elf_errno"
-#: libdwfl/libdwflP.h:54
+#: libdwfl/libdwflP.h:58
msgid "See dwarf_errno"
msgstr "Див. dwarf_errno"
-#: libdwfl/libdwflP.h:55
+#: libdwfl/libdwflP.h:59
msgid "See ebl_errno (XXX missing)"
msgstr "Див. ebl_errno (не виявлено XXX)"
-#: libdwfl/libdwflP.h:56
+#: libdwfl/libdwflP.h:60
msgid "gzip decompression failed"
msgstr "Помилка під час спроби видобування з gzip"
-#: libdwfl/libdwflP.h:57
+#: libdwfl/libdwflP.h:61
msgid "bzip2 decompression failed"
msgstr "Помилка під час спроби видобування з bzip2"
-#: libdwfl/libdwflP.h:58
+#: libdwfl/libdwflP.h:62
msgid "LZMA decompression failed"
msgstr "Помилка під час спроби видобування з LZMA"
-#: libdwfl/libdwflP.h:59
+#: libdwfl/libdwflP.h:63
msgid "no support library found for machine"
msgstr "у системі не виявлено бібліотеки підтримки"
-#: libdwfl/libdwflP.h:60
+#: libdwfl/libdwflP.h:64
msgid "Callbacks missing for ET_REL file"
msgstr "Немає зворотних викликів для файла ET_REL"
-#: libdwfl/libdwflP.h:61
+#: libdwfl/libdwflP.h:65
msgid "Unsupported relocation type"
msgstr "Непідтримуваний тип пересування"
-#: libdwfl/libdwflP.h:62
+#: libdwfl/libdwflP.h:66
msgid "r_offset is bogus"
msgstr "r_offset є фіктивним"
-#: libdwfl/libdwflP.h:63 libelf/elf_error.c:111 libelf/elf_error.c:171
+#: libdwfl/libdwflP.h:67 libelf/elf_error.c:111 libelf/elf_error.c:171
msgid "offset out of range"
msgstr "перевищення можливого зміщення"
-#: libdwfl/libdwflP.h:64
+#: libdwfl/libdwflP.h:68
msgid "relocation refers to undefined symbol"
msgstr "пересування посилається на невизначений символ."
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:69
msgid "Callback returned failure"
msgstr "Зворотним викликом повернуто помилку"
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:70
msgid "No DWARF information found"
msgstr "Не виявлено відомостей DWARF"
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:71
msgid "No symbol table found"
msgstr "Не виявлено таблиці символів"
-#: libdwfl/libdwflP.h:68
+#: libdwfl/libdwflP.h:72
msgid "No ELF program headers"
msgstr "Немає заголовків програми ELF"
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:73
msgid "address range overlaps an existing module"
msgstr "діапазон адрес перекриває існуючий модуль"
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:76
msgid "image truncated"
msgstr "образ обрізано"
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:77
msgid "ELF file opened"
msgstr "Відкритий файл ELF"
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:78
msgid "not a valid ELF file"
msgstr "не є коректним файлом ELF"
-#: libdwfl/libdwflP.h:75
+#: libdwfl/libdwflP.h:79
msgid "cannot handle DWARF type description"
msgstr "не вдалося обробити опис типу DWARF"
-#: libdwfl/libdwflP.h:76
+#: libdwfl/libdwflP.h:80
msgid "ELF file does not match build ID"
msgstr "Файл ELF не відповідає ідентифікатору збирання"
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:81
msgid "corrupt .gnu.prelink_undo section data"
msgstr "дані розділу «.gnu.prelink_undo» пошкоджено"
+#: libdwfl/libdwflP.h:82
+msgid "Internal error due to ebl"
+msgstr ""
+
+#: libdwfl/libdwflP.h:83
+msgid "Missing data in core file"
+msgstr ""
+
+#: libdwfl/libdwflP.h:84
+#, fuzzy
+msgid "Invalid register"
+msgstr "некоректний параметр"
+
+#: libdwfl/libdwflP.h:85
+msgid "Error reading process memory"
+msgstr ""
+
+#: libdwfl/libdwflP.h:86
+msgid "Couldn't find architecture of any ELF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:87
+msgid "Error parsing /proc filesystem"
+msgstr ""
+
+#: libdwfl/libdwflP.h:88
+#, fuzzy
+msgid "Invalid DWARF"
+msgstr "некоректний запис DWARF"
+
+#: libdwfl/libdwflP.h:89
+msgid "Unsupported DWARF"
+msgstr ""
+
+#: libdwfl/libdwflP.h:90
+msgid "Unable to find more threads"
+msgstr ""
+
+#: libdwfl/libdwflP.h:91
+msgid "Dwfl already has attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:92
+msgid "Dwfl has no attached state"
+msgstr ""
+
+#: libdwfl/libdwflP.h:93
+msgid "Unwinding not supported for this architecture"
+msgstr ""
+
+#: libdwfl/libdwflP.h:94
+#, fuzzy
+msgid "Invalid argument"
+msgstr "некоректний параметр"
+
+#: libdwfl/libdwflP.h:95
+#, fuzzy
+msgid "Not an ET_CORE ELF file"
+msgstr "не є коректним файлом ELF"
+
#: libebl/eblbackendname.c:42
msgid "No backend"
msgstr "Немає сервера"
-#: libebl/eblcorenotetypename.c:86 libebl/eblobjecttypename.c:57
+#: libebl/eblcorenotetypename.c:102 libebl/eblobjecttypename.c:57
#: libebl/eblobjnotetypename.c:73 libebl/eblosabiname.c:77
#: libebl/eblsectionname.c:89 libebl/eblsectiontypename.c:119
#: libebl/eblsegmenttypename.c:83
#: libebl/eblobjnote.c:129
#, c-format
msgid " Provider: "
-msgstr " остачальник: "
+msgstr " Ð\9fоÑ\81Ñ\82аÑ\87алÑ\8cник: "
#: libebl/eblobjnote.c:131
#, c-format
msgid "invalid size of destination operand"
msgstr "некоректна розмірність вихідного параметра"
-#: libelf/elf_error.c:87 src/readelf.c:4697
+#: libelf/elf_error.c:87 src/readelf.c:5190
#, c-format
msgid "invalid encoding"
msgstr "некоректне кодування"
msgid "invalid section header"
msgstr "некоректний заголовок розділу"
-#: libelf/elf_error.c:187 src/readelf.c:6335 src/readelf.c:6780
-#: src/readelf.c:6881 src/readelf.c:7043
+#: libelf/elf_error.c:187 src/readelf.c:6980 src/readelf.c:7426
+#: src/readelf.c:7527 src/readelf.c:7689
#, c-format
msgid "invalid data"
msgstr "некоректні дані"
msgstr "Показувати також назви символів та розділів"
#: src/addr2line.c:64
+#, fuzzy
+msgid "Also show symbol and the section names"
+msgstr "Показувати також назви символів та розділів"
+
+#: src/addr2line.c:65
msgid "Also show line table flags"
msgstr "Показувати також прапорці рядків таблиці"
-#: src/addr2line.c:66
+#: src/addr2line.c:67
msgid "Treat addresses as offsets relative to NAME section."
msgstr "Вважати адреси зміщеннями відносно розділу НАЗВА."
-#: src/addr2line.c:68 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+#: src/addr2line.c:69
+msgid ""
+"Show all source locations that caused inline expansion of subroutines at the "
+"address."
+msgstr ""
+"Показати усі місця у початковому коді, у яких було виявлено вбудоване "
+"розгортання підпрограм за вказаною адресою."
+
+#: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
msgid "Miscellaneous:"
msgstr "Інше:"
-#: src/addr2line.c:77
+#: src/addr2line.c:81
msgid ""
"Locate source files and line information for ADDRs (in a.out by default)."
msgstr "Шукати АДРЕСИ у файлах кодів та даних про рядки (типово, у a.out)."
-#: src/addr2line.c:81
+#: src/addr2line.c:85
msgid "[ADDR...]"
msgstr "[АДРЕСА...]"
-#: src/addr2line.c:181 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:231
+#: src/addr2line.c:196 src/ar.c:289 src/elfcmp.c:662 src/elflint.c:235
#: src/findtextrel.c:162 src/ld.c:949 src/nm.c:265 src/objdump.c:181
-#: src/ranlib.c:128 src/readelf.c:460 src/size.c:211 src/strings.c:219
-#: src/strip.c:213 src/unstrip.c:226
+#: src/ranlib.c:128 src/readelf.c:500 src/size.c:211 src/strings.c:226
+#: src/strip.c:213 src/unstrip.c:233
#, c-format
msgid ""
"Copyright (C) %s Red Hat, Inc.\n"
"початкових кодах. Умовами ліцензування програми НЕ передбачено жодних "
"гарантій, зокрема гарантій працездатності або придатності для певної мети.\n"
-#: src/addr2line.c:186 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:236
+#: src/addr2line.c:201 src/ar.c:294 src/elfcmp.c:667 src/elflint.c:240
#: src/findtextrel.c:167 src/ld.c:954 src/nm.c:270 src/objdump.c:186
-#: src/ranlib.c:133 src/readelf.c:465 src/size.c:216 src/strings.c:224
-#: src/strip.c:218 src/unstrip.c:231
+#: src/ranlib.c:133 src/readelf.c:505 src/size.c:216 src/strings.c:231
+#: src/strip.c:218 src/unstrip.c:238
#, c-format
msgid "Written by %s.\n"
msgstr "Автор — %s.\n"
-#: src/addr2line.c:405
+#: src/addr2line.c:474
#, c-format
msgid "Section syntax requires exactly one module"
msgstr "Синтаксис розділів вимагає точного одного модуля"
-#: src/addr2line.c:428
+#: src/addr2line.c:497
#, c-format
msgid "offset %#<PRIxMAX> lies outside section '%s'"
msgstr "зміщення %#<PRIxMAX> розташовано поза межами розділу «%s»"
-#: src/addr2line.c:469
+#: src/addr2line.c:563
#, c-format
msgid "cannot find symbol '%s'"
msgstr "не вдалося знайти символ «%s»"
-#: src/addr2line.c:474
+#: src/addr2line.c:568
#, c-format
msgid "offset %#<PRIxMAX> lies outside contents of '%s'"
msgstr "зміщення %#<PRIxMAX> розташовано поза межами вмісту «%s»"
#: src/elfcmp.c:722 src/findtextrel.c:221 src/ldgeneric.c:1757
#: src/ldgeneric.c:4247 src/nm.c:381 src/ranlib.c:161 src/size.c:293
-#: src/strings.c:175 src/strip.c:450 src/strip.c:487 src/unstrip.c:1903
-#: src/unstrip.c:1932
+#: src/strings.c:182 src/strip.c:451 src/strip.c:488 src/unstrip.c:1911
+#: src/unstrip.c:1940
#, c-format
msgid "cannot open '%s'"
msgstr "не вдалося відкрити «%s»"
msgstr ""
"Педантична перевірка файлів ELF на сумісність зі специфікаціями gABI/psABI."
-#: src/elflint.c:78 src/readelf.c:113
+#: src/elflint.c:78 src/readelf.c:123
msgid "FILE..."
msgstr "ФАЙЛ..."
-#: src/elflint.c:151 src/readelf.c:271
+#: src/elflint.c:155 src/readelf.c:292
#, c-format
msgid "cannot open input file"
msgstr "не вдалося відкрити вхідний файл."
-#: src/elflint.c:158
+#: src/elflint.c:162
#, c-format
msgid "cannot generate Elf descriptor: %s\n"
msgstr "не вдалося створити дескриптор Elf: %s\n"
-#: src/elflint.c:177
+#: src/elflint.c:181
#, c-format
msgid "error while closing Elf descriptor: %s\n"
msgstr "помилка під час спроби закриття дескриптора Elf: %s\n"
-#: src/elflint.c:181
+#: src/elflint.c:185
msgid "No errors"
msgstr "Без помилок"
-#: src/elflint.c:215 src/readelf.c:434
+#: src/elflint.c:219 src/readelf.c:468
msgid "Missing file name.\n"
msgstr "Не вказано назви файла.\n"
-#: src/elflint.c:294
+#: src/elflint.c:298
#, c-format
msgid " error while freeing sub-ELF descriptor: %s\n"
msgstr " помилка під час спроби вивільнення дескриптора суб-ELF: %s\n"
-#: src/elflint.c:302
+#: src/elflint.c:306
#, c-format
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr "Не є файлом ELF. Виявлено помилкові магічні байти на початку файла\n"
-#: src/elflint.c:363
+#: src/elflint.c:371
#, c-format
msgid "e_ident[%d] == %d is no known class\n"
msgstr "e_ident[%d] == %d не є відомим класом\n"
-#: src/elflint.c:368
+#: src/elflint.c:376
#, c-format
msgid "e_ident[%d] == %d is no known data encoding\n"
msgstr "e_ident[%d] == %d не є відомим кодуванням даних\n"
-#: src/elflint.c:372
+#: src/elflint.c:380
#, c-format
msgid "unknown ELF header version number e_ident[%d] == %d\n"
msgstr "невідомий номер версії заголовка ELF e_ident[%d] == %d\n"
-#: src/elflint.c:378
+#: src/elflint.c:386
#, c-format
msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
msgstr "непідтримуване ABI ОС e_ident[%d] == «%s»\n"
-#: src/elflint.c:384
+#: src/elflint.c:392
#, c-format
msgid "unsupport ABI version e_ident[%d] == %d\n"
msgstr "непідтримувана версія ABI e_ident[%d] == %d\n"
-#: src/elflint.c:389
+#: src/elflint.c:397
#, c-format
msgid "e_ident[%zu] is not zero\n"
msgstr "e_ident[%zu] не дорівнює нулеві\n"
-#: src/elflint.c:394
+#: src/elflint.c:402
#, c-format
msgid "unknown object file type %d\n"
msgstr "невідомий тип об’єктних файлів %d\n"
-#: src/elflint.c:401
+#: src/elflint.c:409
#, c-format
msgid "unknown machine type %d\n"
msgstr "невідомий тип архітектури %d\n"
-#: src/elflint.c:405
+#: src/elflint.c:413
#, c-format
msgid "unknown object file version\n"
msgstr "невідома версія об’єктних файлів\n"
-#: src/elflint.c:411
+#: src/elflint.c:419
#, c-format
msgid "invalid program header offset\n"
msgstr "некоректне зміщення заголовка програми\n"
-#: src/elflint.c:413
+#: src/elflint.c:421
#, c-format
msgid "executables and DSOs cannot have zero program header offset\n"
msgstr ""
"виконувані файли і DSO не можуть містити заголовка програми з нульовим "
"зміщенням\n"
-#: src/elflint.c:417
+#: src/elflint.c:425
#, c-format
msgid "invalid number of program header entries\n"
msgstr "некоректна кількість записів заголовків програми\n"
-#: src/elflint.c:425
+#: src/elflint.c:433
#, c-format
msgid "invalid section header table offset\n"
msgstr "некоректне зміщення таблиці заголовків розділів\n"
-#: src/elflint.c:428
+#: src/elflint.c:436
#, c-format
msgid "section header table must be present\n"
msgstr "має бути вказано таблицю заголовків розділів\n"
-#: src/elflint.c:442
+#: src/elflint.c:450
#, c-format
msgid "invalid number of section header table entries\n"
msgstr "некоректна кількість записів таблиці заголовків розділів\n"
-#: src/elflint.c:459
+#: src/elflint.c:467
#, c-format
msgid "invalid section header index\n"
msgstr "некоректний індекс заголовка розділу\n"
-#: src/elflint.c:473
+#: src/elflint.c:481
#, c-format
msgid "invalid number of program header table entries\n"
msgstr "некоректна кількість записів таблиці заголовків програми\n"
-#: src/elflint.c:482
+#: src/elflint.c:490
#, c-format
msgid "invalid machine flags: %s\n"
msgstr "некоректні прапорці архітектури: %s\n"
-#: src/elflint.c:489 src/elflint.c:506
+#: src/elflint.c:497 src/elflint.c:514
#, c-format
msgid "invalid ELF header size: %hd\n"
msgstr "некоректний розмір заголовка ELF: %hd\n"
-#: src/elflint.c:492 src/elflint.c:509
+#: src/elflint.c:500 src/elflint.c:517
#, c-format
msgid "invalid program header size: %hd\n"
msgstr "некоректний розмір заголовка програми: %hd\n"
-#: src/elflint.c:495 src/elflint.c:512
+#: src/elflint.c:503 src/elflint.c:520
#, c-format
msgid "invalid program header position or size\n"
msgstr "некоректне розташування або розмір заголовка програми\n"
-#: src/elflint.c:498 src/elflint.c:515
+#: src/elflint.c:506 src/elflint.c:523
#, c-format
msgid "invalid section header size: %hd\n"
msgstr "некоректний розмір заголовка розділу: %hd\n"
-#: src/elflint.c:501 src/elflint.c:518
+#: src/elflint.c:509 src/elflint.c:526
#, c-format
msgid "invalid section header position or size\n"
msgstr "некоректне розташування або розмір заголовка розділу\n"
-#: src/elflint.c:562
+#: src/elflint.c:570
#, c-format
msgid ""
"section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
"розділ [%2d] «%s»: розділ з встановленим прапорцем SHF_GROUP не є частиною "
"групи розділів\n"
-#: src/elflint.c:566
+#: src/elflint.c:574
#, c-format
msgid ""
"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
"розділ [%2d] «%s»: групу розділів [%2zu] «%s» мало бути визначено до розділу-"
"елемента цієї групи\n"
-#: src/elflint.c:582 src/elflint.c:1426 src/elflint.c:1476 src/elflint.c:1581
-#: src/elflint.c:2166 src/elflint.c:2680 src/elflint.c:2841 src/elflint.c:2971
-#: src/elflint.c:3143 src/elflint.c:4045
+#: src/elflint.c:590 src/elflint.c:1457 src/elflint.c:1508 src/elflint.c:1614
+#: src/elflint.c:1939 src/elflint.c:2228 src/elflint.c:2742 src/elflint.c:2904
+#: src/elflint.c:3034 src/elflint.c:3206 src/elflint.c:4108
#, c-format
msgid "section [%2d] '%s': cannot get section data\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати дані розділу\n"
-#: src/elflint.c:595 src/elflint.c:1588
+#: src/elflint.c:603 src/elflint.c:1621
#, c-format
msgid ""
"section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
"розділ [%2d] «%s»: надано посилання на таблицю рядків розділу [%2d] «%s», "
"але типом даних не є SHT_STRTAB\n"
-#: src/elflint.c:618
+#: src/elflint.c:626
#, c-format
msgid ""
"section [%2d] '%s': symbol table cannot have more than one extended index "
"розділ [%2d] «%s»: у таблиці символів не може бути більше одного розширеного "
"розділу покажчика\n"
-#: src/elflint.c:629
+#: src/elflint.c:638
#, c-format
msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
msgstr "розділ [%2u] «%s»: розмірність запису не відповідає ElfXX_Sym\n"
-#: src/elflint.c:638
+#: src/elflint.c:647
#, c-format
msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати символ %d: %s\n"
-#: src/elflint.c:643 src/elflint.c:646 src/elflint.c:649 src/elflint.c:652
-#: src/elflint.c:655 src/elflint.c:658
+#: src/elflint.c:652 src/elflint.c:655 src/elflint.c:658 src/elflint.c:661
+#: src/elflint.c:664 src/elflint.c:667
#, c-format
msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
msgstr "розділ [%2d] «%s»: «%s» у нульовому записі не є нулем\n"
-#: src/elflint.c:661
+#: src/elflint.c:670
#, c-format
msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
msgstr "розділ [%2d] «%s»: XINDEX для нульового запису не є нулем\n"
-#: src/elflint.c:671
+#: src/elflint.c:680
#, c-format
msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати символ %zu: %s\n"
-#: src/elflint.c:680
+#: src/elflint.c:689
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
msgstr "розділ [%2d] «%s»: символ %zu: некоректне значення назви\n"
-#: src/elflint.c:694
+#: src/elflint.c:704
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: too large section index but no extended "
"розділ [%2d] «%s»: символ %zu: занадто великий покажчик розділу за умови, що "
"не визначено розділу розширеного покажчика розділів\n"
-#: src/elflint.c:700
+#: src/elflint.c:710
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in "
"розділ [%2d] «%s»: символ %zu: XINDEX використано для індексування, яке не "
"відповідає st_shndx (%<PRIu32>)\n"
-#: src/elflint.c:712
+#: src/elflint.c:722
#, c-format
msgid "section [%2d] '%s': symbol %zu: invalid section index\n"
msgstr "розділ [%2d] «%s»: символ %zu: некоректний індекс розділу\n"
-#: src/elflint.c:720
+#: src/elflint.c:730
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown type\n"
msgstr "розділ [%2d] «%s»: символ %zu: невідомий тип\n"
-#: src/elflint.c:726
+#: src/elflint.c:736
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n"
msgstr "розділ [%2d] «%s»: символ %zu: невідома прив’язка символу\n"
-#: src/elflint.c:731
+#: src/elflint.c:741
#, c-format
msgid "section [%2d] '%s': symbol %zu: unique symbol not of object type\n"
msgstr ""
"розділ [%2d] «%s»: символ %zu: унікальний символ, що не належить до типу "
"об’єктів\n"
-#: src/elflint.c:739
+#: src/elflint.c:749
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"
"розділ [%2d] «%s»: символ %zu: COMMON можна використовувати лише у файлах, "
"придатних до пересування\n"
-#: src/elflint.c:743
+#: src/elflint.c:753
#, c-format
msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"
msgstr ""
"розділ [%2d] «%s»: символ %zu: використання локальних символів COMMON "
"позбавлене сенсу\n"
-#: src/elflint.c:747
+#: src/elflint.c:757
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"
"розділ [%2d] «%s»: символ %zu: використання функції у розділі COMMON "
"позбавлене сенсу\n"
-#: src/elflint.c:779
+#: src/elflint.c:804
#, c-format
msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: символ %zu: значення st_value поза можливим діапазоном\n"
-#: src/elflint.c:785 src/elflint.c:810 src/elflint.c:853
+#: src/elflint.c:810 src/elflint.c:835 src/elflint.c:878
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu does not fit completely in referenced section "
"розділ [%2d] «%s»: символ %zu не повністю відповідає розділу, на який "
"посилається, [%2d] «%s»\n"
-#: src/elflint.c:794
+#: src/elflint.c:819
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have "
"розділ [%2d] «%s»: символ %zu: для розділу посилання [%2d] «%s» не "
"встановлено прапорець SHF_TLS\n"
-#: src/elflint.c:804 src/elflint.c:846
+#: src/elflint.c:829 src/elflint.c:871
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section "
"розділ [%2d] «%s»: символ %zu: значення st_value поза межами розділу "
"посилання, [%2d] «%s»\n"
-#: src/elflint.c:831
+#: src/elflint.c:856
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"
msgstr ""
"розділ [%2d] «%s»: символ %zu: символ TLS без запису заголовка програми TLS\n"
-#: src/elflint.c:839
+#: src/elflint.c:864
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] "
"розділ [%2d] «%s»: символ %zu: значення st_value перед розділом посилання, "
"[%2d] «%s»\n"
-#: src/elflint.c:866
+#: src/elflint.c:891
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: local symbol outside range described in "
"розділ [%2d] «%s»: символ %zu: у sh_info описано локальний символ поза "
"діапазоном\n"
-#: src/elflint.c:873
+#: src/elflint.c:898
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: non-local symbol outside range described in "
"розділ [%2d] «%s»: символ %zu: у sh_info описано нелокальний символ поза "
"діапазоном\n"
-#: src/elflint.c:880
+#: src/elflint.c:905
#, c-format
msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n"
msgstr "розділ [%2d] «%s»: символ %zu: нелокальний символ розділу\n"
-#: src/elflint.c:930
+#: src/elflint.c:955
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
"розділ [%2d] «%s»: символ _GLOBAL_OFFSET_TABLE_ посилається на помилковий "
"розділ, [%2d]\n"
-#: src/elflint.c:937
+#: src/elflint.c:962
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
"розділ [%2d] «%s»: символ _GLOBAL_OFFSET_TABLE_ посилається на розділ [%2d] "
"'%s'\n"
-#: src/elflint.c:953
+#: src/elflint.c:978
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
"розділ [%2d] «%s»: значення символу _GLOBAL_OFFSET_TABLE_ %#<PRIx64> не "
"відповідає адресі розділу %s %#<PRIx64>\n"
-#: src/elflint.c:960
+#: src/elflint.c:985
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
"розділ [%2d] «%s»: розмір символу _GLOBAL_OFFSET_TABLE_ %<PRIu64> не "
"відповідає розміру розділу %s %<PRIu64>\n"
-#: src/elflint.c:968
+#: src/elflint.c:993
#, c-format
msgid ""
"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
"розділ [%2d] «%s»: виявлено символ _GLOBAL_OFFSET_TABLE_, але не виявлено "
"розділу .got\n"
-#: src/elflint.c:984
+#: src/elflint.c:1009
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
"розділ [%2d] «%s»: значення символу _DYNAMIC_ %#<PRIx64> не відповідає "
"адресі динамічного сегмента %#<PRIx64>\n"
-#: src/elflint.c:991
+#: src/elflint.c:1016
#, c-format
msgid ""
"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
"розділ [%2d] «%s»: розмір символу _DYNAMIC %<PRIu64> не відповідає розміру "
"динамічного сегмента %<PRIu64>\n"
-#: src/elflint.c:1004
+#: src/elflint.c:1029
#, c-format
msgid ""
"section [%2d] '%s': symbol %zu: symbol in dynamic symbol table with non-"
"розділ [%2d] «%s»: символ %zu: символ у динамічній таблиці символів з "
"нетиповою видимістю\n"
-#: src/elflint.c:1008
+#: src/elflint.c:1033
#, c-format
msgid "section [%2d] '%s': symbol %zu: unknown bit set in st_other\n"
msgstr "розділ [%2d] «%s»: символ %zu: невідомий набір бітів у st_other\n"
-#: src/elflint.c:1053
+#: src/elflint.c:1082
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
msgstr "розділ [%2d] «%s»: для цього розділу RELA використано DT_RELCOUNT\n"
-#: src/elflint.c:1062 src/elflint.c:1114
+#: src/elflint.c:1093 src/elflint.c:1145
#, c-format
msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
msgstr ""
"розділ [%2d] «%s»: значення DT_RELCOUNT %d є занадто високим для цього "
"розділу\n"
-#: src/elflint.c:1087 src/elflint.c:1139
+#: src/elflint.c:1118 src/elflint.c:1170
#, c-format
msgid ""
"section [%2d] '%s': relative relocations after index %d as specified by "
"розділ [%2d] «%s»: відносні пересування після позиції %d, вказаної за "
"допомогою DT_RELCOUNT\n"
-#: src/elflint.c:1093 src/elflint.c:1145
+#: src/elflint.c:1124 src/elflint.c:1176
#, c-format
msgid ""
"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
"розділ [%2d] «%s»: безвідносне пересування на позиції %zu; DT_RELCOUNT "
"визначено %d відносних пересування\n"
-#: src/elflint.c:1105
+#: src/elflint.c:1136
#, c-format
msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
msgstr "розділ [%2d] «%s»: для цього розділу REL використано DT_RELACOUNT\n"
-#: src/elflint.c:1187
+#: src/elflint.c:1218
#, c-format
msgid "section [%2d] '%s': invalid destination section index\n"
msgstr "розділ [%2d] «%s»: некоректний індекс розділу призначення\n"
-#: src/elflint.c:1200
+#: src/elflint.c:1230
#, c-format
msgid "section [%2d] '%s': invalid destination section type\n"
msgstr "розділ [%2d] «%s»: некоректний тип розділу призначення\n"
-#: src/elflint.c:1208
+#: src/elflint.c:1238
#, c-format
msgid "section [%2d] '%s': sh_info should be zero\n"
msgstr "розділ [%2d] «%s»: sh_info має бути нульовим\n"
-#: src/elflint.c:1215
+#: src/elflint.c:1245
#, c-format
msgid "section [%2d] '%s': no relocations for merge-able sections possible\n"
msgstr ""
"розділ [%2d] «%s»: пересування у придатних до об’єднання розділах неможливе\n"
-#: src/elflint.c:1222
+#: src/elflint.c:1253
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
msgstr ""
"розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Rela\n"
-#: src/elflint.c:1282
+#: src/elflint.c:1313
#, c-format
msgid "text relocation flag set but there is no read-only segment\n"
msgstr ""
"встановлено прапорець пересування тексту, але сегмент придатний лише до "
"читання\n"
-#: src/elflint.c:1309
+#: src/elflint.c:1340
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid type\n"
msgstr "розділ [%2d] «%s»: пересування %zu: некоректний тип\n"
-#: src/elflint.c:1317
+#: src/elflint.c:1348
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: relocation type invalid for the file "
"розділ [%2d] «%s»: пересування %zu: некоректний тип пересування для типу "
"файла\n"
-#: src/elflint.c:1325
+#: src/elflint.c:1356
#, c-format
msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
msgstr "розділ [%2d] «%s»: пересування %zu: некоректний індекс символу\n"
-#: src/elflint.c:1343
+#: src/elflint.c:1374
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
"розділ [%2d] «%s»: пересування %zu: з %s можна використовувати лише символ "
"«_GLOBAL_OFFSET_TABLE_»\n"
-#: src/elflint.c:1360
+#: src/elflint.c:1391
#, c-format
msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
msgstr "розділ [%2d] «%s»: пересування %zu: зміщення за межі діапазону\n"
-#: src/elflint.c:1375
+#: src/elflint.c:1406
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
"розділ [%2d] «%s»: пересування %zu: пересування копіювання для символу типу "
"%s\n"
-#: src/elflint.c:1396
+#: src/elflint.c:1427
#, c-format
msgid ""
"section [%2d] '%s': relocation %zu: read-only section modified but text "
"розділ [%2d] «%s»: пересування %zu: змінено придатний лише для читання "
"розділ, але не встановлено прапорець пересування тексту\n"
-#: src/elflint.c:1411
+#: src/elflint.c:1442
#, c-format
msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
msgstr "розділ [%2d] «%s»: пересування завантажених і незавантажених даних\n"
-#: src/elflint.c:1450 src/elflint.c:1500
+#: src/elflint.c:1482 src/elflint.c:1533
#, c-format
msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати зміщення %zu: %s\n"
-#: src/elflint.c:1576
+#: src/elflint.c:1609
#, c-format
msgid "more than one dynamic section present\n"
msgstr "вказано більше одного динамічного розділу\n"
-#: src/elflint.c:1594
+#: src/elflint.c:1628
#, c-format
msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
msgstr ""
"розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Dyn\n"
-#: src/elflint.c:1599 src/elflint.c:1882
+#: src/elflint.c:1633 src/elflint.c:1918
#, c-format
msgid "section [%2d] '%s': sh_info not zero\n"
msgstr "розділ [%2d] «%s»: sh_info не є нульовим\n"
-#: src/elflint.c:1609
+#: src/elflint.c:1643
#, c-format
msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
msgstr ""
"розділ [%2d] «%s»: не вдалося отримати запис динамічного розділу %zu: %s\n"
-#: src/elflint.c:1617
+#: src/elflint.c:1651
#, c-format
msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
msgstr ""
"розділ [%2d] «%s»: за записом DT_NULL вказано записи, що не належать до "
"DT_NULL\n"
-#: src/elflint.c:1624
+#: src/elflint.c:1658
#, c-format
msgid "section [%2d] '%s': entry %zu: unknown tag\n"
msgstr "розділ [%2d] «%s»: запис %zu: невідома мітка\n"
-#: src/elflint.c:1635
+#: src/elflint.c:1669
#, c-format
msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
msgstr "розділ [%2d] «%s»: запис %zu: декілька записів з міткою %s\n"
-#: src/elflint.c:1645
+#: src/elflint.c:1679
#, c-format
msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
msgstr "розділ [%2d] «%s»: запис %zu: використано мітку рівня 2 %s\n"
-#: src/elflint.c:1663
+#: src/elflint.c:1697
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
"розділ [%2d] «%s»: запис %zu: значенням DT_PLTREL має бути DT_REL або "
"DT_RELA\n"
-#: src/elflint.c:1676
+#: src/elflint.c:1710
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: pointer does not match address of section "
"розділ [%2d] «%s»: розділ %zu: вказівник не відповідає адресі розділу [%2d] "
"«%s», на яку посилається sh_link\n"
-#: src/elflint.c:1719
+#: src/elflint.c:1753
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
"розділ [%2d] «%s»: запис %zu: значення %s має вказувати на завантажений "
"сегмент\n"
-#: src/elflint.c:1734
+#: src/elflint.c:1768
#, c-format
msgid ""
"section [%2d] '%s': entry %zu: %s value must be valid offset in section "
"розділ [%2d] «%s»: запис %zu: значенням %s має бути коректне зміщення у "
"розділі [%2d] «%s»\n"
-#: src/elflint.c:1754 src/elflint.c:1782
+#: src/elflint.c:1788 src/elflint.c:1816
#, c-format
msgid "section [%2d] '%s': contains %s entry but not %s\n"
msgstr "розділ [%2d] «%s»: містить запис %s, але не %s\n"
-#: src/elflint.c:1766
+#: src/elflint.c:1800
#, c-format
msgid "section [%2d] '%s': mandatory tag %s not present\n"
msgstr "розділ [%2d] «%s»: немає обов’язкової мітки %s\n"
-#: src/elflint.c:1775
+#: src/elflint.c:1809
#, c-format
msgid "section [%2d] '%s': no hash section present\n"
msgstr "розділ [%2d] «%s»: не виявлено розділу хешів\n"
-#: src/elflint.c:1790 src/elflint.c:1797
+#: src/elflint.c:1824 src/elflint.c:1831
#, c-format
msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
msgstr "розділ [%2d] «%s»: вказано не всі зі значень %s, %s і %s\n"
-#: src/elflint.c:1807 src/elflint.c:1811
+#: src/elflint.c:1841 src/elflint.c:1845
#, c-format
msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
msgstr ""
"розділ [%2d] «%s»: у DSO, позначеному на кроці попереднього компонування, "
"немає мітки %s\n"
-#: src/elflint.c:1817
+#: src/elflint.c:1851
#, c-format
msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
msgstr ""
"розділ [%2d] «%s»: під час попереднього компонування як залежність позначено "
"файл, який не є файлом DSO\n"
-#: src/elflint.c:1828 src/elflint.c:1832 src/elflint.c:1836 src/elflint.c:1840
+#: src/elflint.c:1862 src/elflint.c:1866 src/elflint.c:1870 src/elflint.c:1874
#, c-format
msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
msgstr ""
"розділ [%2d] «%s»: у попередньо скомпонованому виконуваному файлі не "
"міститься мітки %s\n"
-#: src/elflint.c:1852
+#: src/elflint.c:1886
#, c-format
msgid ""
"section [%2d] '%s': only relocatable files can have extended section index\n"
"розділ [%2d] «%s»: розширений розділ покажчика можуть мати лише файли, "
"придатні до пересування\n"
-#: src/elflint.c:1862
+#: src/elflint.c:1896
#, c-format
msgid ""
"section [%2d] '%s': extended section index section not for symbol table\n"
"розділ [%2d] «%s»: розділ розширеного покажчика розділів не призначено для "
"таблиць символів\n"
-#: src/elflint.c:1867
+#: src/elflint.c:1901
#, c-format
msgid "cannot get data for symbol section\n"
msgstr "не вдалося отримати дані для розділу символів\n"
-#: src/elflint.c:1870
+#: src/elflint.c:1904
#, c-format
msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
msgstr "розділ [%2d] «%s»: розмірність запису не відповідає Elf32_Word\n"
-#: src/elflint.c:1877
+#: src/elflint.c:1913
#, c-format
msgid "section [%2d] '%s': extended index table too small for symbol table\n"
msgstr ""
"розділ [%2d] «%s»: розширена таблиця покажчика замала для таблиці символів\n"
-#: src/elflint.c:1892
+#: src/elflint.c:1928
#, c-format
msgid ""
"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
"розділ [%2d] «%s»: розширений покажчик розділів у розділі [%2zu] «%s» "
"посилається на ту саму таблицю розділів\n"
-#: src/elflint.c:1903
+#: src/elflint.c:1945
#, c-format
msgid "symbol 0 should have zero extended section index\n"
msgstr "символу 0 має відповідати нульовий індекс розширеного розділу\n"
-#: src/elflint.c:1915
+#: src/elflint.c:1957
#, c-format
msgid "cannot get data for symbol %zu\n"
msgstr "не вдалося отримати дані для символу %zu\n"
-#: src/elflint.c:1920
+#: src/elflint.c:1962
#, c-format
msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
msgstr ""
"індекс розширеного розділу дорівнює %<PRIu32>, але індекс символу не є "
"XINDEX\n"
-#: src/elflint.c:1936 src/elflint.c:1977
+#: src/elflint.c:1978 src/elflint.c:2029
#, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
"розділ [%2d] «%s»: розділ таблиці хешів занадто малий (розмір %ld, мало бути "
"— %ld)\n"
-#: src/elflint.c:1948 src/elflint.c:1989
+#: src/elflint.c:1990 src/elflint.c:2041
#, c-format
msgid "section [%2d] '%s': chain array too large\n"
msgstr "розділ [%2d] «%s»: масив ланцюжка занадто великий\n"
-#: src/elflint.c:1957 src/elflint.c:1998
+#: src/elflint.c:2004 src/elflint.c:2055
#, c-format
msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: посилання на хеш блоку %zu лежить поза межами діапазону\n"
-#: src/elflint.c:1963
+#: src/elflint.c:2014
#, c-format
msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: посилання ланцюжка хешів %zu лежить поза межами "
"діапазону\n"
-#: src/elflint.c:2004
+#: src/elflint.c:2065
#, c-format
msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: посилання ланцюжка хешів %<PRIu64> лежить поза межами "
"діапазону\n"
-#: src/elflint.c:2019
+#: src/elflint.c:2081
#, c-format
msgid "section [%2d] '%s': bitmask size not power of 2: %u\n"
msgstr "розділ [%2d] «%s»: розмір бітової маски не є степенем 2: %u\n"
-#: src/elflint.c:2030
-#, c-format
+#: src/elflint.c:2092
+#, fuzzy, c-format
msgid ""
"section [%2d] '%s': hash table section is too small (is %ld, expected at "
-"least%ld)\n"
+"least %ld)\n"
msgstr ""
"розділ [%2d] «%s»: розділ таблиці хешів занадто малий (розмір %ld, мало бути "
"не менше %ld)\n"
-#: src/elflint.c:2038
+#: src/elflint.c:2100
#, c-format
msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
msgstr "розділ [%2d] «%s»: зсув 2-ої функції хешування занадто великий: %u\n"
-#: src/elflint.c:2070
+#: src/elflint.c:2132
#, c-format
msgid ""
"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
"розділ [%2d] '%s': ланцюжок хешів для блоку %zu розташовано нижче за позицію "
"відхилення індексу символу\n"
-#: src/elflint.c:2091
+#: src/elflint.c:2153
#, c-format
msgid ""
"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
"розділ [%2d] «%s»: символ %u, на який посилається ланцюжок у блоці %zu не "
"визначено\n"
-#: src/elflint.c:2102
+#: src/elflint.c:2164
#, c-format
msgid ""
"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
"розділ [%2d] «%s»: значення хешу для символу %u у ланцюжку для блоку %zu є "
"помилковим\n"
-#: src/elflint.c:2133
+#: src/elflint.c:2195
#, c-format
msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
msgstr ""
"розділ [%2d] «%s»: ланцюжок хешів для блоку %zu лежить поза межами "
"діапазону\n"
-#: src/elflint.c:2138
+#: src/elflint.c:2200
#, c-format
msgid ""
"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
"розділ [%2d] «%s»: посилання на символ у ланцюжку для блоку %zu лежить поза "
"межами діапазону\n"
-#: src/elflint.c:2144
+#: src/elflint.c:2206
#, c-format
msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
msgstr "розділ [%2d] «%s»: бітова маска не відповідає назвам у таблиці хешів\n"
-#: src/elflint.c:2157
+#: src/elflint.c:2219
#, c-format
msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
msgstr ""
"розділ [%2d] «%s»: придатні до пересування файли не можуть містити таблиць "
"хешів\n"
-#: src/elflint.c:2175
+#: src/elflint.c:2237
#, c-format
msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
msgstr ""
"розділ [%2d] «%s»: таблицю хешів не призначено для зберігання таблиці "
"динамічних символів\n"
-#: src/elflint.c:2183
+#: src/elflint.c:2245
#, c-format
msgid "section [%2d] '%s': hash table entry size incorrect\n"
msgstr "розділ [%2d] «%s»: розмірність запису таблиці хешів є некоректною\n"
-#: src/elflint.c:2188
+#: src/elflint.c:2250
#, c-format
msgid "section [%2d] '%s': not marked to be allocated\n"
msgstr "розділ [%2d] «%s»: не позначено для пересування\n"
-#: src/elflint.c:2193
+#: src/elflint.c:2255
#, c-format
msgid ""
"section [%2d] '%s': hash table has not even room for initial administrative "
"розділ [%2d] «%s»: у таблиці хешів виявлено незвичайне розташування "
"початкових адміністративних записів\n"
-#: src/elflint.c:2241
+#: src/elflint.c:2303
#, c-format
msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
msgstr "sh_link у розділах хешів [%2zu] «%s» і [%2zu] «%s» не збігаються\n"
-#: src/elflint.c:2319 src/elflint.c:2323
+#: src/elflint.c:2381 src/elflint.c:2385
#, c-format
msgid "section [%2zu] '%s': reference to symbol index 0\n"
msgstr "розділ [%2zu] «%s»: посилання на індекс символів 0\n"
-#: src/elflint.c:2330
+#: src/elflint.c:2392
#, c-format
msgid ""
"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
"виявлено посилання на символ %d у новій таблиці хешів у [%2zu] «%s», але "
"його немає у старій таблиці хешів у [%2zu] «%s»\n"
-#: src/elflint.c:2342
+#: src/elflint.c:2404
#, c-format
msgid ""
"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
"виявлено посилання на символ %d у старій таблиці хешів у [%2zu] «%s», але "
"його немає у новій таблиці хешів у [%2zu] «%s»\n"
-#: src/elflint.c:2358
+#: src/elflint.c:2420
#, c-format
msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
msgstr "розділ [%2d] «%s»: ненульове значення sh_%s для розділу NULL\n"
-#: src/elflint.c:2378
+#: src/elflint.c:2440
#, c-format
msgid ""
"section [%2d] '%s': section groups only allowed in relocatable object files\n"
"розділ [%2d] «%s»: групи розділів передбачено лише для придатних до "
"пересування об’єктних файлах\n"
-#: src/elflint.c:2389
+#: src/elflint.c:2451
#, c-format
msgid "section [%2d] '%s': cannot get symbol table: %s\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати таблицю символів: %s\n"
-#: src/elflint.c:2394
+#: src/elflint.c:2456
#, c-format
msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
msgstr ""
"розділ [%2d] «%s»: посилання на розділ у sh_link не має таблиці символів\n"
-#: src/elflint.c:2400
+#: src/elflint.c:2462
#, c-format
msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
msgstr "розділ [%2d] «%s»: некоректний індекс символу у sh_info\n"
-#: src/elflint.c:2405
+#: src/elflint.c:2467
#, c-format
msgid "section [%2d] '%s': sh_flags not zero\n"
msgstr "розділ [%2d] «%s»: sh_flags не є нульовим\n"
-#: src/elflint.c:2412
+#: src/elflint.c:2474
#, c-format
msgid "section [%2d] '%s': cannot get symbol for signature\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати символ для підпису\n"
-#: src/elflint.c:2417
+#: src/elflint.c:2479
#, c-format
msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
msgstr "розділ [%2d] «%s»: символ підпису не може бути порожнім рядком\n"
-#: src/elflint.c:2423
+#: src/elflint.c:2485
#, c-format
msgid "section [%2d] '%s': sh_flags not set correctly\n"
msgstr "розділ [%2d] «%s»: для sh_flags встановлено помилкове значення\n"
-#: src/elflint.c:2429
+#: src/elflint.c:2491
#, c-format
msgid "section [%2d] '%s': cannot get data: %s\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати дані: %s\n"
-#: src/elflint.c:2438
+#: src/elflint.c:2500
#, c-format
msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
msgstr "розділ [%2d] «%s»: розмір розділу не є кратним до sizeof(Elf32_Word)\n"
-#: src/elflint.c:2443
+#: src/elflint.c:2505
#, c-format
msgid "section [%2d] '%s': section group without flags word\n"
msgstr "розділ [%2d] «%s»: група розділів без значення типу word прапорців\n"
-#: src/elflint.c:2449
+#: src/elflint.c:2511
#, c-format
msgid "section [%2d] '%s': section group without member\n"
msgstr "розділ [%2d] «%s»: група розділів без елементів\n"
-#: src/elflint.c:2453
+#: src/elflint.c:2515
#, c-format
msgid "section [%2d] '%s': section group with only one member\n"
msgstr "розділ [%2d] «%s»: група розділів, що містить лише один елемент\n"
-#: src/elflint.c:2464
+#: src/elflint.c:2526
#, c-format
msgid "section [%2d] '%s': unknown section group flags\n"
msgstr "розділ [%2d] «%s»: невідомі прапорці групи розділів\n"
-#: src/elflint.c:2476
+#: src/elflint.c:2538
#, c-format
msgid "section [%2d] '%s': section index %Zu out of range\n"
msgstr "розділ [%2d] «%s»: індекс розділу %Zu поза межами діапазону\n"
-#: src/elflint.c:2485
+#: src/elflint.c:2547
#, c-format
msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
msgstr ""
"розділ [%2d] «%s»: не вдалося отримати заголовок розділу для елемента %zu: "
"%s\n"
-#: src/elflint.c:2492
+#: src/elflint.c:2554
#, c-format
msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
msgstr "розділ [%2d] «%s»: група розділів містить іншу групу [%2d] «%s»\n"
-#: src/elflint.c:2498
+#: src/elflint.c:2560
#, c-format
msgid ""
"section [%2d] '%s': element %Zu references section [%2d] '%s' without "
"розділ [%2d] «%s»: елемент %Zu посилається на розділ [%2d] «%s» без "
"встановленого прапорця SHF_GROUP\n"
-#: src/elflint.c:2505
+#: src/elflint.c:2567
#, c-format
msgid "section [%2d] '%s' is contained in more than one section group\n"
msgstr "розділ [%2d] «%s» міститься у більше ніж одній групі розділів\n"
-#: src/elflint.c:2694
+#: src/elflint.c:2756
#, c-format
msgid ""
"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
"розділ [%2d] «%s» посилається у sh_link на розділ [%2d] «%s», який не має "
"динамічної таблиці символів\n"
-#: src/elflint.c:2705
+#: src/elflint.c:2768
#, c-format
msgid ""
"section [%2d] '%s' has different number of entries than symbol table [%2d] "
"кількість записів у розділі [%2d] «%s» відрізняється від кількості у таблиці "
"символів [%2d] «%s»\n"
-#: src/elflint.c:2721
+#: src/elflint.c:2784
#, c-format
msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
msgstr "розділ [%2d] «%s»: символ %d: не вдалося прочитати дані щодо версії\n"
-#: src/elflint.c:2737
+#: src/elflint.c:2800
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
msgstr ""
"розділ [%2d] «%s»: символ %d: локальний символ у загальному контексті\n"
-#: src/elflint.c:2745
+#: src/elflint.c:2808
#, c-format
msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
msgstr "розділ [%2d] «%s»: символ %d: локальний символ з версією\n"
-#: src/elflint.c:2759
+#: src/elflint.c:2822
#, c-format
msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
msgstr "розділ [%2d] «%s»: символ %d: некоректний індекс версії %d\n"
-#: src/elflint.c:2764
+#: src/elflint.c:2827
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for defined version\n"
"розділ [%2d] «%s»: символ %d: індекси версії %d призначено до визначеної "
"версії\n"
-#: src/elflint.c:2774
+#: src/elflint.c:2837
#, c-format
msgid ""
"section [%2d] '%s': symbol %d: version index %d is for requested version\n"
"розділ [%2d] «%s»: символ %d: індекс версії %d призначено для версії, на яку "
"надійшов запит\n"
-#: src/elflint.c:2826
+#: src/elflint.c:2889
#, c-format
msgid "more than one version reference section present\n"
msgstr "виявлено більше за один розділ посилань на версії\n"
-#: src/elflint.c:2834 src/elflint.c:2963
+#: src/elflint.c:2897 src/elflint.c:3026
#, c-format
msgid "section [%2d] '%s': sh_link does not link to string table\n"
msgstr "розділ [%2d] «%s»: sh_link не посилається на таблицю рядків\n"
-#: src/elflint.c:2857 src/elflint.c:3015
+#: src/elflint.c:2920 src/elflint.c:3078
#, c-format
msgid "section [%2d] '%s': entry %d has wrong version %d\n"
msgstr "розділ [%2d] «%s»: запис %d має помилкову версію %d\n"
-#: src/elflint.c:2863 src/elflint.c:3021
+#: src/elflint.c:2926 src/elflint.c:3084
#, c-format
msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
msgstr ""
"розділ [%2d] «%s»: запис %d містить помилкове зміщення у допоміжних даних\n"
-#: src/elflint.c:2871
+#: src/elflint.c:2934
#, c-format
msgid "section [%2d] '%s': entry %d has invalid file reference\n"
msgstr "розділ [%2d] «%s»: запис %d містить некоректне посилання на файл\n"
-#: src/elflint.c:2879
+#: src/elflint.c:2942
#, c-format
msgid "section [%2d] '%s': entry %d references unknown dependency\n"
msgstr "розділ [%2d] «%s»: запис %d посилається на невідому залежність\n"
-#: src/elflint.c:2891
+#: src/elflint.c:2954
#, c-format
msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
msgstr ""
"розділ [%2d] «%s»: допоміжний запис %d запису %d позначено невідомим "
"прапорцем\n"
-#: src/elflint.c:2898
+#: src/elflint.c:2961
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
"розділ [%2d] «%s»: допоміжний запис %d запису %d містить некоректне "
"посилання на назву\n"
-#: src/elflint.c:2905
+#: src/elflint.c:2968
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
"розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове значення "
"хешу: %#x, мало бути %#x\n"
-#: src/elflint.c:2915
+#: src/elflint.c:2978
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
"розділ [%2d] «%s»: допоміжний запис %d запису %d містить дублікати назви "
"версії «%s»\n"
-#: src/elflint.c:2926
+#: src/elflint.c:2989
#, c-format
msgid ""
"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
"розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове наступне "
"поле\n"
-#: src/elflint.c:2942 src/elflint.c:3100
+#: src/elflint.c:3005 src/elflint.c:3163
#, c-format
msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
msgstr ""
"розділ [%2d] «%s»: запис %d має некоректне зміщення щодо наступного запису\n"
-#: src/elflint.c:2955
+#: src/elflint.c:3018
#, c-format
msgid "more than one version definition section present\n"
msgstr "виявлено більше за один розділ визначення версій\n"
-#: src/elflint.c:3000
+#: src/elflint.c:3063
#, c-format
msgid "section [%2d] '%s': more than one BASE definition\n"
msgstr "розділ [%2d] «%s»: повторне визначення BASE\n"
-#: src/elflint.c:3004
+#: src/elflint.c:3067
#, c-format
msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
msgstr ""
"розділ [%2d] «%s»: визначення BASE повинно мати індекс VER_NDX_GLOBAL\n"
-#: src/elflint.c:3010
+#: src/elflint.c:3073
#, c-format
msgid "section [%2d] '%s': entry %d has unknown flag\n"
msgstr "розділ [%2d] «%s»: невідомий прапорець запису %d\n"
-#: src/elflint.c:3034
+#: src/elflint.c:3097
#, c-format
msgid "section [%2d] '%s': entry %d has invalid name reference\n"
msgstr "розділ [%2d] «%s»: запис %d містить некоректне посилання на назву\n"
-#: src/elflint.c:3041
+#: src/elflint.c:3104
#, c-format
msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
msgstr ""
"розділ [%2d] «%s»: запис %d має помилкове значення хешу: %#x, мало бути %#x\n"
-#: src/elflint.c:3050
+#: src/elflint.c:3113
#, c-format
msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
msgstr "розділ [%2d] «%s»: запис %d містить дублікати назви версії «%s»\n"
-#: src/elflint.c:3069
+#: src/elflint.c:3132
#, c-format
msgid ""
"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
"розділ [%2d] «%s»: запис %d містить некоректне посилання на назву у "
"допоміжних даних\n"
-#: src/elflint.c:3084
+#: src/elflint.c:3147
#, c-format
msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
msgstr ""
"розділ [%2d] «%s»: у допоміжних даних запису %d міститься помилкове поле "
"наступного запису\n"
-#: src/elflint.c:3106
+#: src/elflint.c:3169
#, c-format
msgid "section [%2d] '%s': no BASE definition\n"
msgstr "розділ [%2d] «%s»: немає визначення BASE\n"
-#: src/elflint.c:3122
+#: src/elflint.c:3185
#, c-format
msgid "section [%2d] '%s': unknown parent version '%s'\n"
msgstr "розділ [%2d] «%s»: невідома основна версія «%s»\n"
-#: src/elflint.c:3135
+#: src/elflint.c:3198
#, c-format
msgid "section [%2d] '%s': empty object attributes section\n"
msgstr "розділ [%2d] «%s»: порожній розділ атрибутів об’єкта\n"
-#: src/elflint.c:3156
+#: src/elflint.c:3219
#, c-format
msgid "section [%2d] '%s': unrecognized attribute format\n"
msgstr "розділ [%2d] «%s»: не вдалося визначити формат атрибутів\n"
-#: src/elflint.c:3172
+#: src/elflint.c:3235
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
msgstr ""
"розділ [%2d] «%s»: зміщення %zu: поле нульового розміру у розділі атрибутів\n"
-#: src/elflint.c:3181
+#: src/elflint.c:3244
#, c-format
msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
msgstr ""
"розділ [%2d] «%s»: зміщення %zu: некоректна довжина у розділі атрибутів\n"
-#: src/elflint.c:3193
+#: src/elflint.c:3256
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
msgstr ""
"розділ [%2d] «%s»: зміщення %zu: незавершений рядок назви постачальника\n"
-#: src/elflint.c:3210
+#: src/elflint.c:3273
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
"розділ [%2d] «%s»: зміщення %zu: незавершене поле ULEB128 у тезі підрозділу "
"атрибутів\n"
-#: src/elflint.c:3219
+#: src/elflint.c:3282
#, c-format
msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
msgstr "розділ [%2d] «%s»: зміщення %zu: обрізаний розділ атрибутів\n"
-#: src/elflint.c:3228
+#: src/elflint.c:3291
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
"розділ [%2d] «%s»: зміщення %zu: поле нульового розміру у підрозділі "
"атрибутів\n"
-#: src/elflint.c:3241
+#: src/elflint.c:3304
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
msgstr ""
"розділ [%2d] «%s»: зміщення %zu: некоректна довжина у підрозділі атрибутів\n"
-#: src/elflint.c:3252
+#: src/elflint.c:3315
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
"розділ [%2d] «%s»: зміщення %zu: підрозділ атрибутів містить неочікуваний "
"теґ %u\n"
-#: src/elflint.c:3270
+#: src/elflint.c:3333
#, c-format
msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
msgstr ""
"розділ [%2d] «%s»: зміщення %zu: незавершене поле ULEB128 у тезі атрибуту\n"
-#: src/elflint.c:3281
+#: src/elflint.c:3344
#, c-format
msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
msgstr "розділ [%2d] «%s»: зміщення %zu: незавершений рядок у атрибуті\n"
-#: src/elflint.c:3294
+#: src/elflint.c:3357
#, c-format
msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
msgstr "розділ [%2d] «%s»: зміщення %zu: незавершений теґ атрибуту %u\n"
-#: src/elflint.c:3298
+#: src/elflint.c:3361
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
msgstr ""
"розділ [%2d] «%s»: зміщення %zu: невідоме значення %s атрибуту %<PRIu64>\n"
-#: src/elflint.c:3308
+#: src/elflint.c:3371
#, c-format
msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
msgstr "розділ [%2d] «%s»: зміщення %zu: невідомий постачальник «%s»\n"
-#: src/elflint.c:3314
+#: src/elflint.c:3377
#, c-format
msgid ""
"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
"розділ [%2d] «%s»: зміщення %zu: зайві байти після останнього розділу "
"атрибутів\n"
-#: src/elflint.c:3403
+#: src/elflint.c:3466
#, c-format
msgid "cannot get section header of zeroth section\n"
msgstr "не вдалося отримати заголовок нульового розділу\n"
-#: src/elflint.c:3407
+#: src/elflint.c:3470
#, c-format
msgid "zeroth section has nonzero name\n"
msgstr "нульовий розділ має ненульову назву\n"
-#: src/elflint.c:3409
+#: src/elflint.c:3472
#, c-format
msgid "zeroth section has nonzero type\n"
msgstr "нульовий розділ має ненульовий тип\n"
-#: src/elflint.c:3411
+#: src/elflint.c:3474
#, c-format
msgid "zeroth section has nonzero flags\n"
msgstr "нульовий розділ має ненульові прапорці\n"
-#: src/elflint.c:3413
+#: src/elflint.c:3476
#, c-format
msgid "zeroth section has nonzero address\n"
msgstr "нульовий розділ має ненульову адресу\n"
-#: src/elflint.c:3415
+#: src/elflint.c:3478
#, c-format
msgid "zeroth section has nonzero offset\n"
msgstr "нульовий розділ має ненульове зміщення\n"
-#: src/elflint.c:3417
+#: src/elflint.c:3480
#, c-format
msgid "zeroth section has nonzero align value\n"
msgstr "нульовий розділ має ненульове значення вирівнювання\n"
-#: src/elflint.c:3419
+#: src/elflint.c:3482
#, c-format
msgid "zeroth section has nonzero entry size value\n"
msgstr "нульовий розділ має ненульове значення розміру запису\n"
-#: src/elflint.c:3422
+#: src/elflint.c:3485
#, c-format
msgid ""
"zeroth section has nonzero size value while ELF header has nonzero shnum "
"нульовий розділ має ненульове значення розміру, хоча заголовок ELF ман "
"ненульове значення shnum\n"
-#: src/elflint.c:3426
+#: src/elflint.c:3489
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"нульовий розділ має ненульове значення компонування, хоча у заголовку ELF "
"немає сигналу переповнення у shstrndx\n"
-#: src/elflint.c:3430
+#: src/elflint.c:3493
#, c-format
msgid ""
"zeroth section has nonzero link value while ELF header does not signal "
"нульовий розділ має ненульове значення компонування, хоча у заголовку ELF "
"немає сигналу переповнення у phnum\n"
-#: src/elflint.c:3447
+#: src/elflint.c:3510
#, c-format
msgid "cannot get section header for section [%2zu] '%s': %s\n"
msgstr "не вдалося отримати заголовок розділу [%2zu] «%s»: %s\n"
-#: src/elflint.c:3456
+#: src/elflint.c:3519
#, c-format
msgid "section [%2zu]: invalid name\n"
msgstr "розділ [%2zu]: некоректна назва\n"
-#: src/elflint.c:3483
+#: src/elflint.c:3546
#, c-format
msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
msgstr ""
"розділ [%2d] «%s» належить до помилкового типу: мав бути %s, маємо %s\n"
-#: src/elflint.c:3499
+#: src/elflint.c:3562
#, c-format
msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
msgstr "розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, маємо %s\n"
-#: src/elflint.c:3516
+#: src/elflint.c:3579
#, c-format
msgid ""
"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
"розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, можливо, %s, але "
"маємо %s\n"
-#: src/elflint.c:3534
+#: src/elflint.c:3597
#, c-format
msgid "section [%2zu] '%s' present in object file\n"
msgstr "у об’єктному файлі виявлено розділ [%2zu] «%s»\n"
-#: src/elflint.c:3540 src/elflint.c:3572
+#: src/elflint.c:3603 src/elflint.c:3635
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
"у розділ [%2zu] «%s» встановлено прапорець SHF_ALLOC, але немає придатного "
"до завантаження сегмента\n"
-#: src/elflint.c:3545 src/elflint.c:3577
+#: src/elflint.c:3608 src/elflint.c:3640
#, c-format
msgid ""
"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
"у розділі [%2zu] «%s» не встановлено прапорець SHF_ALLOC, але є придатні до "
"завантаження сегменти\n"
-#: src/elflint.c:3553
+#: src/elflint.c:3616
#, c-format
msgid ""
"section [%2zu] '%s' is extension section index table in non-object file\n"
"розділ [%2zu] «%s» є таблицею-покажчиком розділу розширень у файлі, який не "
"є об’єктним\n"
-#: src/elflint.c:3596
+#: src/elflint.c:3659
#, c-format
msgid "section [%2zu] '%s': size not multiple of entry size\n"
msgstr "розділ [%2zu] «%s»: розмір не є кратним до розміру запису\n"
-#: src/elflint.c:3601
+#: src/elflint.c:3664
#, c-format
msgid "cannot get section header\n"
msgstr "не вдалося отримати заголовок розділу\n"
-#: src/elflint.c:3611
+#: src/elflint.c:3674
#, c-format
msgid "section [%2zu] '%s' has unsupported type %d\n"
msgstr "розділ [%2zu] «%s» належить до непідтримуваного типу %d\n"
-#: src/elflint.c:3625
+#: src/elflint.c:3688
#, c-format
msgid ""
"section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
"розділ [%2zu] «%s» містить некоректні специфічні для процесора прапорці "
"%#<PRIx64>\n"
-#: src/elflint.c:3632
+#: src/elflint.c:3695
#, c-format
msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
msgstr "розділ [%2zu] «%s» містить невідомі прапорці %#<PRIx64>\n"
-#: src/elflint.c:3640
+#: src/elflint.c:3703
#, c-format
msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
msgstr ""
"розділ [%2zu] «%s»: адреса розділів локальних даних потоків не є нульовою\n"
-#: src/elflint.c:3648
+#: src/elflint.c:3711
#, c-format
msgid "section [%2zu] '%s': invalid section reference in link value\n"
msgstr ""
"розділ [%2zu] «%s»: некоректне посилання на розділ у значенні компонування\n"
-#: src/elflint.c:3653
+#: src/elflint.c:3716
#, c-format
msgid "section [%2zu] '%s': invalid section reference in info value\n"
msgstr ""
"розділ [%2zu] «%s»: некоректне посилання на розділ у значенні відомостей\n"
-#: src/elflint.c:3660
+#: src/elflint.c:3723
#, c-format
msgid "section [%2zu] '%s': strings flag set without merge flag\n"
msgstr "розділ [%2zu] «%s»: встановлено прапорець strings без прапорця merge\n"
-#: src/elflint.c:3665
+#: src/elflint.c:3728
#, c-format
msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
msgstr ""
"розділ [%2zu] «%s»: встановлено прапорець merge, але розмір запису є "
"нульовим\n"
-#: src/elflint.c:3683
+#: src/elflint.c:3746
#, c-format
msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
msgstr "розділ [%2zu] «%s» має неочікуваний тип %d для виконуваного розділу\n"
-#: src/elflint.c:3692
+#: src/elflint.c:3755
#, c-format
msgid "section [%2zu] '%s' is both executable and writable\n"
msgstr "розділ [%2zu] «%s» є одночасно виконуваним і придатним до запису\n"
-#: src/elflint.c:3721
+#: src/elflint.c:3784
#, c-format
msgid ""
"section [%2zu] '%s' not fully contained in segment of program header entry "
"розділ [%2zu] «%s» не повністю міститься у сегменті запису заголовка "
"програми %d\n"
-#: src/elflint.c:3729
+#: src/elflint.c:3792
#, c-format
msgid ""
"section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
"розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з "
"файла у сегментів запису заголовка програми %d\n"
-#: src/elflint.c:3738
+#: src/elflint.c:3801
#, c-format
msgid ""
"section [%2zu] '%s' has not type NOBITS but is not read from the file in "
"розділ [%2zu] «%s» не належить до типу NOBITS, але його читання не "
"виконується з файла у сегментів запису заголовка програми %d\n"
-#: src/elflint.c:3749
+#: src/elflint.c:3812
#, c-format
msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
msgstr "розділ [%2zu] «%s» є виконуваним у невиконуваному сегменті %d\n"
-#: src/elflint.c:3759
+#: src/elflint.c:3822
#, c-format
msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
msgstr ""
"розділ [%2zu] «%s» є придатним до запису у непридатному до запису сегменті "
"%d\n"
-#: src/elflint.c:3769
+#: src/elflint.c:3832
#, c-format
msgid ""
"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
"розділ [%2zu] «%s»: встановлено прапорець alloc, але розділ не перебуває у "
"жодному завантаженому сегменті\n"
-#: src/elflint.c:3775
+#: src/elflint.c:3838
#, c-format
msgid ""
"section [%2zu] '%s': ELF header says this is the section header string table "
"розділ [%2zu] «%s»: заголовок ELF повідомляє про те, що це таблиця рядків "
"заголовка розділу, але ця таблиця не належить до типу SHT_TYPE\n"
-#: src/elflint.c:3783
+#: src/elflint.c:3846
#, c-format
msgid ""
"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
"розділ [%2zu] «%s»: придатні до пересування файли не можуть містити "
"динамічних таблиць символів\n"
-#: src/elflint.c:3834
+#: src/elflint.c:3897
#, c-format
msgid "more than one version symbol table present\n"
msgstr "виявлено більше за одну таблицю символів версій\n"
-#: src/elflint.c:3857
+#: src/elflint.c:3920
#, c-format
msgid "INTERP program header entry but no .interp section\n"
msgstr "існує запис заголовка програми INTERP, але не розділ .interp\n"
-#: src/elflint.c:3868
+#: src/elflint.c:3931
#, c-format
msgid ""
"loadable segment [%u] is executable but contains no executable sections\n"
"придатний до завантаження сегмент [%u] є виконуваним, але не містить "
"виконуваних розділів\n"
-#: src/elflint.c:3874
+#: src/elflint.c:3937
#, c-format
msgid "loadable segment [%u] is writable but contains no writable sections\n"
msgstr ""
"придатний до завантаження розділ [%u] є придатним до запису, але не містить "
"придатних до запису розділів\n"
-#: src/elflint.c:3885
+#: src/elflint.c:3948
#, c-format
msgid ""
"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
"немає розділу .gnu.versym, хоча існує розділ .gnu.versym_d або .gnu."
"versym_r\n"
-#: src/elflint.c:3898
+#: src/elflint.c:3961
#, c-format
msgid "duplicate version index %d\n"
msgstr "дублікат індексу версії %d\n"
-#: src/elflint.c:3912
+#: src/elflint.c:3975
#, c-format
msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
msgstr ""
"існує розділ .gnu.versym, але немає розділу .gnu.versym_d або .gnu.versym_r\n"
-#: src/elflint.c:3961
+#: src/elflint.c:4024
#, c-format
msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
msgstr ""
"phdr[%d]: невідомий тип нотатки файла core %<PRIu32> за зміщенням %<PRIu64>\n"
-#: src/elflint.c:3965
+#: src/elflint.c:4028
#, c-format
msgid ""
"section [%2d] '%s': unknown core file note type %<PRIu32> at offset %Zu\n"
"розділ [%2d] «%s»: невідомий тип нотатки файла core %<PRIu32> за зміщенням "
"%Zu\n"
-#: src/elflint.c:3988
+#: src/elflint.c:4051
#, c-format
msgid "phdr[%d]: unknown object file note type %<PRIu32> at offset %Zu\n"
msgstr ""
"phdr[%d]: невідомий тип нотатки об’єктного файла %<PRIu32> за зміщенням %Zu\n"
-#: src/elflint.c:3992
+#: src/elflint.c:4055
#, c-format
msgid ""
"section [%2d] '%s': unknown object file note type %<PRIu32> at offset %Zu\n"
"розділ [%2d] «%s»: невідомий тип нотатки об’єктного файла %<PRIu32> за "
"зміщенням %Zu\n"
-#: src/elflint.c:4009
+#: src/elflint.c:4072
#, c-format
msgid "phdr[%d]: no note entries defined for the type of file\n"
msgstr "phdr[%d]: для цього типу файлів не визначено записів нотаток\n"
-#: src/elflint.c:4028
+#: src/elflint.c:4091
#, c-format
msgid "phdr[%d]: cannot get content of note section: %s\n"
msgstr "phdr[%d]: не вдалося отримати вміст розділу нотаток: %s\n"
-#: src/elflint.c:4031
+#: src/elflint.c:4094
#, c-format
msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
msgstr "phdr[%d]: зайві %<PRIu64> байтів після останнього запису нотатки\n"
-#: src/elflint.c:4052
+#: src/elflint.c:4115
#, c-format
msgid "section [%2d] '%s': no note entries defined for the type of file\n"
msgstr ""
"розділ [%2d] «%s»: для цього типу файлів не визначено записів нотаток\n"
-#: src/elflint.c:4059
+#: src/elflint.c:4122
#, c-format
msgid "section [%2d] '%s': cannot get content of note section\n"
msgstr "розділ [%2d] «%s»: не вдалося отримати вміст розділу нотаток\n"
-#: src/elflint.c:4062
+#: src/elflint.c:4125
#, c-format
msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
msgstr ""
"розділ [%2d] «%s»: додаткові %<PRIu64> байтів після останньої нотатки\n"
-#: src/elflint.c:4080
+#: src/elflint.c:4143
#, c-format
msgid ""
"only executables, shared objects, and core files can have program headers\n"
"заголовки програм можуть бути лише у виконуваних файлів, об’єктних файлів "
"спільного використання або файлів core\n"
-#: src/elflint.c:4095
+#: src/elflint.c:4158
#, c-format
msgid "cannot get program header entry %d: %s\n"
msgstr "не вдалося отримати запис заголовка програми %d: %s\n"
-#: src/elflint.c:4104
+#: src/elflint.c:4167
#, c-format
msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
msgstr ""
"запис заголовка програми %d: невідомий тип запису заголовка програми "
"%#<PRIx64>\n"
-#: src/elflint.c:4115
+#: src/elflint.c:4178
#, c-format
msgid "more than one INTERP entry in program header\n"
msgstr "більше за один запис INTERP у заголовку програми\n"
-#: src/elflint.c:4123
+#: src/elflint.c:4186
#, c-format
msgid "more than one TLS entry in program header\n"
msgstr "більше за один запис TLS у заголовку програми\n"
-#: src/elflint.c:4130
+#: src/elflint.c:4193
#, c-format
msgid "static executable cannot have dynamic sections\n"
msgstr "у статичному виконуваному файлі не може бути динамічних розділів\n"
-#: src/elflint.c:4144
+#: src/elflint.c:4207
#, c-format
msgid "dynamic section reference in program header has wrong offset\n"
msgstr ""
"посилання на динамічний розділ у заголовку програми має помилкове зміщення\n"
-#: src/elflint.c:4147
+#: src/elflint.c:4210
#, c-format
msgid "dynamic section size mismatch in program and section header\n"
msgstr ""
"розміри динамічного розділу у заголовку програми та у заголовку розділу не "
"збігаються\n"
-#: src/elflint.c:4157
+#: src/elflint.c:4220
#, c-format
msgid "more than one GNU_RELRO entry in program header\n"
msgstr "більше за один запис GNU_RELRO у заголовку програми\n"
-#: src/elflint.c:4178
+#: src/elflint.c:4241
#, c-format
msgid "loadable segment GNU_RELRO applies to is not writable\n"
msgstr ""
"придатний до завантаження сегмент, до якого звертається GNU_RELRO, "
"непридатний до запису\n"
-#: src/elflint.c:4181
+#: src/elflint.c:4244
#, c-format
msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
msgstr ""
"прапорці придатного до завантаження сегмента [%u] не відповідають прапорцям "
"GNU_RELRO [%u]\n"
-#: src/elflint.c:4189 src/elflint.c:4212
+#: src/elflint.c:4252 src/elflint.c:4275
#, c-format
msgid "%s segment not contained in a loaded segment\n"
msgstr "сегмент %s не міститься у завантаженому сегменті\n"
-#: src/elflint.c:4218
+#: src/elflint.c:4281
#, c-format
msgid "program header offset in ELF header and PHDR entry do not match"
msgstr "зміщення заголовка програми у заголовку ELF і запис PHDR не збігаються"
-#: src/elflint.c:4242
+#: src/elflint.c:4305
#, c-format
msgid "call frame search table reference in program header has wrong offset\n"
msgstr ""
"посилання на таблицю вікон викликів у заголовку програми має помилкове "
"зміщення\n"
-#: src/elflint.c:4245
+#: src/elflint.c:4308
#, c-format
msgid "call frame search table size mismatch in program and section header\n"
msgstr ""
"розміри таблиці пошуку вікон виклику у заголовку програми та у заголовку "
"розділу не збігаються\n"
-#: src/elflint.c:4258
+#: src/elflint.c:4321
#, c-format
msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
msgstr "існує PT_GNU_EH_FRAME, хоча немає розділу .eh_frame_hdr\n"
-#: src/elflint.c:4266
+#: src/elflint.c:4329
#, c-format
msgid "call frame search table must be allocated\n"
msgstr "таблицю пошуку вікон викликів має бути розміщено у пам’яті\n"
-#: src/elflint.c:4269
+#: src/elflint.c:4332
#, c-format
msgid "section [%2zu] '%s' must be allocated\n"
msgstr "розділ [%2zu] «%s» має бути розміщено у пам’яті\n"
-#: src/elflint.c:4273
+#: src/elflint.c:4336
#, c-format
msgid "call frame search table must not be writable\n"
msgstr "таблиця пошуку вікон викликів не повинна бути придатною до запису\n"
-#: src/elflint.c:4276
+#: src/elflint.c:4339
#, c-format
msgid "section [%2zu] '%s' must not be writable\n"
msgstr "розділ [%2zu] «%s» не повинен бути придатним до запису\n"
-#: src/elflint.c:4281
+#: src/elflint.c:4344
#, c-format
msgid "call frame search table must not be executable\n"
msgstr "таблиця пошуку вікон викликів не повинна бути придатною до виконання\n"
-#: src/elflint.c:4284
+#: src/elflint.c:4347
#, c-format
msgid "section [%2zu] '%s' must not be executable\n"
msgstr "розділ [%2zu] «%s» не повинен бути придатним до виконання\n"
-#: src/elflint.c:4295
+#: src/elflint.c:4358
#, c-format
msgid "program header entry %d: file size greater than memory size\n"
msgstr "запис заголовка програми %d: розмір файла перевищує об’єм пам’яті\n"
-#: src/elflint.c:4302
+#: src/elflint.c:4365
#, c-format
msgid "program header entry %d: alignment not a power of 2\n"
msgstr "запис заголовка програми %d: значення вирівнювання не є степенем 2\n"
-#: src/elflint.c:4305
+#: src/elflint.c:4368
#, c-format
msgid ""
"program header entry %d: file offset and virtual address not module of "
"запис заголовка програми %d: зміщення у файлі і віртуальна адреса не "
"співвідносяться з вирівнюванням\n"
-#: src/elflint.c:4318
+#: src/elflint.c:4381
#, c-format
msgid ""
"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
"виконуваний модуль/DSO з розділом .eh_frame_hdr не містить запису заголовка "
"програми PT_GNU_EH_FRAME"
-#: src/elflint.c:4352
+#: src/elflint.c:4415
#, c-format
msgid "cannot read ELF header: %s\n"
msgstr "не вдалося прочитати заголовок ELF: %s\n"
-#: src/elflint.c:4378
+#: src/elflint.c:4441
#, c-format
msgid "text relocation flag set but not needed\n"
msgstr ""
msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s"
msgstr "Попередження: розмір «%s» змінено з %<PRIu64> у %s на %<PRIu64> у %s"
-#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:640 src/strip.c:562
+#: src/ldgeneric.c:651 src/ldgeneric.c:1112 src/readelf.c:527
+#: src/readelf.c:829 src/strip.c:563
#, c-format
msgid "cannot determine number of sections: %s"
msgstr "не вдалося визначити кількість розділів: %s"
msgid "cannot get header of 0th section: %s"
msgstr "не вдалося отримати заголовок 0-го розділу: %s"
-#: src/ldgeneric.c:6930 src/unstrip.c:1810
+#: src/ldgeneric.c:6930 src/unstrip.c:1818
#, c-format
msgid "cannot update ELF header: %s"
msgstr "не вдалося оновити заголовок ELF: %s"
msgstr "%s: ВНУТРІШНЯ ПОМИЛКА %d (%s-%s): %s"
#: src/nm.c:398 src/nm.c:410 src/size.c:309 src/size.c:318 src/size.c:329
-#: src/strip.c:2124
+#: src/strip.c:2155
#, c-format
msgid "while closing '%s'"
msgstr "під час закриття «%s»"
msgid "cannot create search tree"
msgstr "не вдалося створити дерево пошуку"
-#: src/nm.c:757 src/nm.c:1156 src/objdump.c:787 src/readelf.c:896
-#: src/readelf.c:1039 src/readelf.c:1187 src/readelf.c:1369 src/readelf.c:1569
-#: src/readelf.c:1755 src/readelf.c:1965 src/readelf.c:2219 src/readelf.c:2285
-#: src/readelf.c:2363 src/readelf.c:2861 src/readelf.c:2897 src/readelf.c:2959
-#: src/readelf.c:7270 src/readelf.c:8176 src/readelf.c:8323 src/readelf.c:8391
-#: src/size.c:417 src/size.c:491 src/strip.c:502
+#: src/nm.c:757 src/nm.c:1163 src/objdump.c:787 src/readelf.c:536
+#: src/readelf.c:1085 src/readelf.c:1245 src/readelf.c:1393 src/readelf.c:1579
+#: src/readelf.c:1785 src/readelf.c:1972 src/readelf.c:2196 src/readelf.c:2454
+#: src/readelf.c:2524 src/readelf.c:2606 src/readelf.c:3117 src/readelf.c:3153
+#: src/readelf.c:3216 src/readelf.c:7920 src/readelf.c:9002 src/readelf.c:9149
+#: src/readelf.c:9217 src/size.c:417 src/size.c:487 src/strip.c:503
#, c-format
msgid "cannot get section header string table index"
msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків"
-#: src/nm.c:782
+#: src/nm.c:784
#, c-format
msgid ""
"\n"
"Символи з %s:\n"
"\n"
-#: src/nm.c:785
+#: src/nm.c:787
#, c-format
msgid ""
"%*s%-*s %-*s Class Type %-*s %*s Section\n"
"%*s%-*s %-*s Клас Тип %-*s %*s Розділ\n"
"\n"
-#: src/nm.c:1166
+#: src/nm.c:1173
#, c-format
msgid "%s: entry size in section `%s' is not what we expect"
msgstr "%s: розмір запису у розділі «%s» не є очікуваним"
-#: src/nm.c:1170
+#: src/nm.c:1177
#, c-format
msgid "%s: size of section `%s' is not multiple of entry size"
msgstr "%s: розмір розділу «%s» не є кратним до розміру запису"
-#: src/nm.c:1428
+#: src/nm.c:1435
#, c-format
msgid "%s%s%s%s: Invalid operation"
msgstr "%s%s%s%s: некоректна дія"
-#: src/nm.c:1485
+#: src/nm.c:1492
#, c-format
msgid "%s%s%s: no symbols"
msgstr "%s%s%s: немає символів"
msgid "Show information from FILEs (a.out by default)."
msgstr "Показати інформацію з ФАЙЛів (типово a.out)."
-#: src/objdump.c:236 src/readelf.c:439
+#: src/objdump.c:236 src/readelf.c:473
msgid "No operation specified.\n"
msgstr "Не вказано дії.\n"
msgid "while close `%s'"
msgstr "під час закриття «%s»"
-#: src/objdump.c:379 src/readelf.c:1664 src/readelf.c:1838
+#: src/objdump.c:379 src/readelf.c:1880 src/readelf.c:2069
msgid "INVALID SYMBOL"
msgstr "НЕКОРЕКТНИЙ СИМВОЛ"
-#: src/objdump.c:394 src/readelf.c:1695 src/readelf.c:1871
+#: src/objdump.c:394 src/readelf.c:1911 src/readelf.c:2102
msgid "INVALID SECTION"
msgstr "НЕКОРЕКТНИЙ РОЗДІЛ"
msgid "error while freeing sub-ELF descriptor: %s"
msgstr "помилка під час спроби вивільнення дескриптора під-ELF: %s"
-#: src/readelf.c:67
+#: src/readelf.c:71
+msgid "ELF input selection:"
+msgstr "Вибір вихідних даних ELF:"
+
+#: src/readelf.c:73
+msgid ""
+"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
+msgstr ""
+"Використовувати вказаний за іменем РОЗДІЛ (типово .gnu_debugdata) як "
+"(стиснені) вхідні дані ELF"
+
+#: src/readelf.c:75
msgid "ELF output selection:"
msgstr "Вибір виводу ELF:"
-#: src/readelf.c:69
+#: src/readelf.c:77
msgid "All these plus -p .strtab -p .dynstr -p .comment"
msgstr "Все це плюс -p .strtab -p .dynstr -p .comment"
-#: src/readelf.c:70
+#: src/readelf.c:78
msgid "Display the dynamic segment"
msgstr "Показувати динамічний сегмент"
-#: src/readelf.c:71
+#: src/readelf.c:79
msgid "Display the ELF file header"
msgstr "Показувати заголовок файла ELF"
-#: src/readelf.c:73
+#: src/readelf.c:81
msgid "Display histogram of bucket list lengths"
msgstr "Показати гістограму довжин списку блоків"
-#: src/readelf.c:74
+#: src/readelf.c:82
msgid "Display the program headers"
msgstr "Показувати заголовки програми"
-#: src/readelf.c:76
+#: src/readelf.c:84
msgid "Display relocations"
msgstr "Показувати пересування"
-#: src/readelf.c:77
+#: src/readelf.c:85
msgid "Display the sections' headers"
msgstr "Показувати заголовки розділів"
-#: src/readelf.c:79
+#: src/readelf.c:87
msgid "Display the symbol table"
msgstr "Показувати таблицю символів"
-#: src/readelf.c:80
+#: src/readelf.c:88
msgid "Display versioning information"
msgstr "Показувати відомості щодо версії"
-#: src/readelf.c:81
+#: src/readelf.c:89
msgid "Display the ELF notes"
msgstr "Показувати нотатки ELF"
-#: src/readelf.c:83
+#: src/readelf.c:91
msgid "Display architecture specific information, if any"
msgstr "Показувати специфічні для архітектури дані, якщо такі буде виявлено"
-#: src/readelf.c:85
+#: src/readelf.c:93
msgid "Display sections for exception handling"
msgstr "Показувати розділи для обробки виключень"
-#: src/readelf.c:87
+#: src/readelf.c:95
msgid "Additional output selection:"
msgstr "Додатковий вибір виводу:"
-#: src/readelf.c:89
+#: src/readelf.c:97
msgid ""
"Display DWARF section content. SECTION can be one of abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro or "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro or exception"
msgstr ""
"Показати вміст розділу DWARF. Значенням РОЗДІЛ може бути abbrev, aranges, "
-"frame, gdb_index, info, loc, line, ranges, pubnames, str, macinfo, macro або "
-"exception"
+"decodedaranges, frame, gdb_index, info, loc, line, decodedline, ranges, "
+"pubnames, str, macinfo, macro або exception"
-#: src/readelf.c:93
+#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
msgstr ""
"Створити дамп даних РОЗДІЛ, які не вдалося інтерпретувати, за номером або "
"назвами"
-#: src/readelf.c:95
+#: src/readelf.c:103
msgid "Print string contents of sections"
msgstr "Виводити вміст рядків розділів"
-#: src/readelf.c:98
+#: src/readelf.c:106
msgid "Display the symbol index of an archive"
msgstr "Показувати покажчик символів архіву"
-#: src/readelf.c:100
+#: src/readelf.c:108
msgid "Output control:"
msgstr "Керування виводом:"
-#: src/readelf.c:102
+#: src/readelf.c:110
msgid "Do not find symbol names for addresses in DWARF data"
-msgstr "Не шукати назви символів для адресу у даних DWARF"
+msgstr "Не шукати назви символів для адрес у даних DWARF"
-#: src/readelf.c:104
+#: src/readelf.c:112
+msgid ""
+"Display just offsets instead of resolving values to addresses in DWARF data"
+msgstr "Показати лише зміщення, а не визначені значення адреси у даних DWARF"
+
+#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
msgstr "Ігнорується з міркувань сумісності (рядки завжди широкі)"
-#: src/readelf.c:109
+#: src/readelf.c:119
msgid "Print information from ELF file in human-readable form."
msgstr "Виводити відомості з файла ELF у придатному для читання форматі."
-#: src/readelf.c:410
+#: src/readelf.c:441
#, c-format
msgid "Unknown DWARF debug section `%s'.\n"
msgstr "Невідомий діагностичний розділ DWARF «%s».\n"
-#: src/readelf.c:476
+#: src/readelf.c:520 src/readelf.c:631
#, c-format
msgid "cannot generate Elf descriptor: %s"
msgstr "не вдалося створити дескриптор Elf: %s"
-#: src/readelf.c:488
+#: src/readelf.c:545 src/readelf.c:1099 src/readelf.c:1269
#, c-format
-msgid "'%s' is not an archive, cannot print archive index"
-msgstr "«%s» не є архівом, виведення покажчика архіву неможливе"
+msgid "cannot get section: %s"
+msgstr "не вдалося отримати розділ: %s"
+
+#: src/readelf.c:554 src/readelf.c:1106 src/readelf.c:1277 src/readelf.c:9169
+#: src/unstrip.c:352 src/unstrip.c:383 src/unstrip.c:432 src/unstrip.c:540
+#: src/unstrip.c:557 src/unstrip.c:593 src/unstrip.c:791 src/unstrip.c:1059
+#: src/unstrip.c:1250 src/unstrip.c:1310 src/unstrip.c:1431 src/unstrip.c:1484
+#: src/unstrip.c:1591 src/unstrip.c:1780
+#, c-format
+msgid "cannot get section header: %s"
+msgstr "не вдалося отримати заголовок розділу: %s"
-#: src/readelf.c:493
+#: src/readelf.c:562
+#, c-format
+msgid "cannot get section name"
+msgstr "не вдалося отримати назву розділу"
+
+#: src/readelf.c:571 src/readelf.c:5221 src/readelf.c:7414 src/readelf.c:7516
+#: src/readelf.c:7674
+#, c-format
+msgid "cannot get %s content: %s"
+msgstr "не вдалося отримати дані %s: %s"
+
+#: src/readelf.c:587
+#, c-format
+msgid "cannot create temp file '%s'"
+msgstr "не вдалося створити файл тимчасових даних «%s»"
+
+#: src/readelf.c:596
+#, c-format
+msgid "cannot write section data"
+msgstr "не вдалося записати дані розділу"
+
+#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
msgid "error while closing Elf descriptor: %s"
msgstr "помилка під час спроби закриття дескриптора Elf: %s"
-#: src/readelf.c:585
+#: src/readelf.c:609
+#, c-format
+msgid "error while rewinding file descriptor"
+msgstr "помилка під час повернення до початкового значення дескриптора файла"
+
+#: src/readelf.c:643
+#, c-format
+msgid "'%s' is not an archive, cannot print archive index"
+msgstr "«%s» не є архівом, виведення покажчика архіву неможливе"
+
+#: src/readelf.c:742
+#, c-format
+msgid "No such section '%s' in '%s'"
+msgstr "У «%2$s» немає розділу «%1$s»"
+
+#: src/readelf.c:769
#, c-format
msgid "cannot stat input file"
msgstr "не вдалося отримати дані з вхідного файла за допомогою stat"
-#: src/readelf.c:587
+#: src/readelf.c:771
#, c-format
msgid "input file is empty"
msgstr "вхідний файл є порожнім"
-#: src/readelf.c:589
+#: src/readelf.c:773
#, c-format
msgid "failed reading '%s': %s"
msgstr "не вдалося прочитати «%s»: %s"
-#: src/readelf.c:625
+#: src/readelf.c:814
#, c-format
msgid "cannot read ELF header: %s"
msgstr "не вдалося прочитати заголовок ELF: %s"
-#: src/readelf.c:633
+#: src/readelf.c:822
#, c-format
msgid "cannot create EBL handle"
msgstr "не вдалося створити дескриптор EBL"
-#: src/readelf.c:646
+#: src/readelf.c:835
#, c-format
msgid "cannot determine number of program headers: %s"
msgstr "не вдалося визначити кількість заголовків програми: %s"
-#: src/readelf.c:732
+#: src/readelf.c:921
msgid "NONE (None)"
msgstr "NONE (Немає)"
-#: src/readelf.c:733
+#: src/readelf.c:922
msgid "REL (Relocatable file)"
msgstr "REL (Придатний до пересування файл)"
-#: src/readelf.c:734
+#: src/readelf.c:923
msgid "EXEC (Executable file)"
msgstr "EXEC (Виконуваний файл)"
-#: src/readelf.c:735
+#: src/readelf.c:924
msgid "DYN (Shared object file)"
msgstr "DYN (Файл об’єктів спільного використання)"
-#: src/readelf.c:736
+#: src/readelf.c:925
msgid "CORE (Core file)"
msgstr "CORE (Файл ядра)"
-#: src/readelf.c:741
+#: src/readelf.c:930
#, c-format
msgid "OS Specific: (%x)\n"
msgstr "ОС-специфічне: (%x)\n"
-#: src/readelf.c:743
+#: src/readelf.c:932
#, c-format
msgid "Processor Specific: (%x)\n"
msgstr "Специфічне для процесора: (%x)\n"
-#: src/readelf.c:753
+#: src/readelf.c:942
msgid ""
"ELF Header:\n"
" Magic: "
"Заголовок ELF:\n"
" Magic: "
-#: src/readelf.c:757
+#: src/readelf.c:946
#, c-format
msgid ""
"\n"
"\n"
" Клас: %s\n"
-#: src/readelf.c:762
+#: src/readelf.c:951
#, c-format
msgid " Data: %s\n"
msgstr " Дані: %s\n"
-#: src/readelf.c:768
+#: src/readelf.c:957
#, c-format
msgid " Ident Version: %hhd %s\n"
msgstr " Версія Ident: %hhd %s\n"
-#: src/readelf.c:770 src/readelf.c:787
+#: src/readelf.c:959 src/readelf.c:976
msgid "(current)"
msgstr "(поточний)"
-#: src/readelf.c:774
+#: src/readelf.c:963
#, c-format
msgid " OS/ABI: %s\n"
msgstr " ОС/ABI: %s\n"
-#: src/readelf.c:777
+#: src/readelf.c:966
#, c-format
msgid " ABI Version: %hhd\n"
msgstr " Версія ABI: %hhd\n"
-#: src/readelf.c:780
+#: src/readelf.c:969
msgid " Type: "
msgstr " Тип: "
-#: src/readelf.c:783
+#: src/readelf.c:972
#, c-format
msgid " Machine: %s\n"
msgstr " Архітектура: %s\n"
-#: src/readelf.c:785
+#: src/readelf.c:974
#, c-format
msgid " Version: %d %s\n"
msgstr " Версія: %d %s\n"
-#: src/readelf.c:789
+#: src/readelf.c:978
#, c-format
msgid " Entry point address: %#<PRIx64>\n"
msgstr " Адреса вхідної точки: %#<PRIx64>\n"
-#: src/readelf.c:792
+#: src/readelf.c:981
#, c-format
msgid " Start of program headers: %<PRId64> %s\n"
msgstr " Початок заголовків програм: %<PRId64> %s\n"
-#: src/readelf.c:793 src/readelf.c:796
+#: src/readelf.c:982 src/readelf.c:985
msgid "(bytes into file)"
msgstr "(байтів у файл)"
-#: src/readelf.c:795
+#: src/readelf.c:984
#, c-format
msgid " Start of section headers: %<PRId64> %s\n"
msgstr " Початок заголовків розділів: %<PRId64> %s\n"
-#: src/readelf.c:798
+#: src/readelf.c:987
#, c-format
msgid " Flags: %s\n"
msgstr " Прапорці: %s\n"
-#: src/readelf.c:801
+#: src/readelf.c:990
#, c-format
msgid " Size of this header: %<PRId16> %s\n"
msgstr " Розмір цього заголовка: %<PRId16> %s\n"
-#: src/readelf.c:802 src/readelf.c:805 src/readelf.c:822
+#: src/readelf.c:991 src/readelf.c:994 src/readelf.c:1011
msgid "(bytes)"
msgstr "(байтів)"
-#: src/readelf.c:804
+#: src/readelf.c:993
#, c-format
msgid " Size of program header entries: %<PRId16> %s\n"
msgstr " Розмір записів заголовка програми: %<PRId16> %s\n"
-#: src/readelf.c:807
+#: src/readelf.c:996
#, c-format
msgid " Number of program headers entries: %<PRId16>"
msgstr " Кількість записів заголовків програми: %<PRId16>"
-#: src/readelf.c:814
+#: src/readelf.c:1003
#, c-format
msgid " (%<PRIu32> in [0].sh_info)"
msgstr " (%<PRIu32> у [0].sh_info)"
-#: src/readelf.c:817 src/readelf.c:834 src/readelf.c:848
+#: src/readelf.c:1006 src/readelf.c:1023 src/readelf.c:1037
msgid " ([0] not available)"
msgstr " ([0] недоступний)"
-#: src/readelf.c:821
+#: src/readelf.c:1010
#, c-format
msgid " Size of section header entries: %<PRId16> %s\n"
msgstr " Розмір записів заголовків розділів: %<PRId16> %s\n"
-#: src/readelf.c:824
+#: src/readelf.c:1013
#, c-format
msgid " Number of section headers entries: %<PRId16>"
msgstr " Кількість записів заголовків розділів: %<PRId16>"
-#: src/readelf.c:831
+#: src/readelf.c:1020
#, c-format
msgid " (%<PRIu32> in [0].sh_size)"
msgstr " (%<PRIu32> у [0].sh_size)"
-#: src/readelf.c:844
+#: src/readelf.c:1033
#, c-format
msgid " (%<PRIu32> in [0].sh_link)"
msgstr " (%<PRIu32> у [0].sh_link)"
-#: src/readelf.c:852
+#: src/readelf.c:1041
#, c-format
msgid ""
" Section header string table index: XINDEX%s\n"
" Індекс заголовка розділу у таблиці рядків: XINDEX%s\n"
"\n"
-#: src/readelf.c:856
+#: src/readelf.c:1045
#, c-format
msgid ""
" Section header string table index: %<PRId16>\n"
" Індекс заголовка розділу у таблиці рядків: %<PRId16>\n"
"\n"
-#: src/readelf.c:888
+#: src/readelf.c:1077
#, c-format
msgid ""
"There are %d section headers, starting at offset %#<PRIx64>:\n"
"Виявлено %d заголовків розділів, зміщення початку — %#<PRIx64>:\n"
"\n"
-#: src/readelf.c:898
+#: src/readelf.c:1087
msgid "Section Headers:"
msgstr "Заголовки розділів:"
-#: src/readelf.c:901
+#: src/readelf.c:1090
msgid ""
"[Nr] Name Type Addr Off Size ES Flags Lk "
"Inf Al"
"[№ ] Назва Тип Адр Змі Розмір ES Прап Lk "
"Інф Al"
-#: src/readelf.c:903
+#: src/readelf.c:1092
msgid ""
"[Nr] Name Type Addr Off Size ES "
"Flags Lk Inf Al"
"[№ ] Назва Тип Адр Змі Розмір ES "
"Прап Lk Інф Al"
-#: src/readelf.c:910 src/readelf.c:1063
-#, c-format
-msgid "cannot get section: %s"
-msgstr "не вдалося отримати розділ: %s"
-
-#: src/readelf.c:917 src/readelf.c:1071 src/readelf.c:8343 src/unstrip.c:345
-#: src/unstrip.c:376 src/unstrip.c:425 src/unstrip.c:533 src/unstrip.c:550
-#: src/unstrip.c:586 src/unstrip.c:784 src/unstrip.c:1052 src/unstrip.c:1242
-#: src/unstrip.c:1302 src/unstrip.c:1423 src/unstrip.c:1476 src/unstrip.c:1583
-#: src/unstrip.c:1772
-#, c-format
-msgid "cannot get section header: %s"
-msgstr "не вдалося отримати заголовок розділу: %s"
-
-#: src/readelf.c:975
+#: src/readelf.c:1164
msgid "Program Headers:"
msgstr "Заголовки програми:"
-#: src/readelf.c:977
+#: src/readelf.c:1166
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align"
msgstr ""
" Тип Зміщен ВіртАдр ФізАдр РозмФайл РозмПам Пра Вирів"
-#: src/readelf.c:980
+#: src/readelf.c:1169
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz "
"MemSiz Flg Align"
" Тип Зміщен ВіртАдр ФізАдр "
"РозмФайлРозмПам Пра Вирів"
-#: src/readelf.c:1020
+#: src/readelf.c:1226
#, c-format
msgid "\t[Requesting program interpreter: %s]\n"
msgstr "\t[Запит щодо інтерпретатора програми: %s]\n"
-#: src/readelf.c:1041
+#: src/readelf.c:1247
msgid ""
"\n"
" Section to Segment mapping:\n"
" Відображення розділів на сегмент:\n"
" Розділи сегмента..."
-#: src/readelf.c:1052 src/unstrip.c:1827 src/unstrip.c:1866 src/unstrip.c:1873
+#: src/readelf.c:1258 src/unstrip.c:1835 src/unstrip.c:1874 src/unstrip.c:1881
#, c-format
msgid "cannot get program header: %s"
msgstr "не вдалося отримати заголовок програми: %s"
-#: src/readelf.c:1193
+#: src/readelf.c:1401
#, c-format
msgid ""
"\n"
"\n"
"Група розділів COMDAT [%2zu] «%s» з підписом «%s» містить %zu записів:\n"
-#: src/readelf.c:1198
+#: src/readelf.c:1406
#, c-format
msgid ""
"\n"
"\n"
"Група розділів [%2zu] «%s» з підписом «%s» містить %zu записів:\n"
-#: src/readelf.c:1206
+#: src/readelf.c:1414
msgid "<INVALID SYMBOL>"
msgstr "<НЕКОРЕКТНИЙ СИМВОЛ>"
-#: src/readelf.c:1220
+#: src/readelf.c:1428
msgid "<INVALID SECTION>"
msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>"
-#: src/readelf.c:1371
+#: src/readelf.c:1585 src/readelf.c:2202 src/readelf.c:2460 src/readelf.c:2530
+#: src/readelf.c:2812 src/readelf.c:2885 src/readelf.c:4488
+#, fuzzy, c-format
+msgid "invalid sh_link value in section %Zu"
+msgstr "некоректний розділ .debug_line"
+
+#: src/readelf.c:1588
#, c-format
msgid ""
"\n"
"Динамічний сегмент містить %lu записів:\n"
" Адр: %#0*<PRIx64> Зміщення: %#08<PRIx64> Пос. на розділ: [%2u] '%s'\n"
-#: src/readelf.c:1383
+#: src/readelf.c:1598
msgid " Type Value\n"
msgstr " Тип Значення\n"
-#: src/readelf.c:1407
+#: src/readelf.c:1622
#, c-format
msgid "Shared library: [%s]\n"
msgstr "Спільна бібліотека: [%s]\n"
-#: src/readelf.c:1412
+#: src/readelf.c:1627
#, c-format
msgid "Library soname: [%s]\n"
msgstr "Назва so бібліотеки: [%s]\n"
-#: src/readelf.c:1417
+#: src/readelf.c:1632
#, c-format
msgid "Library rpath: [%s]\n"
msgstr "Rpath бібліотеки: [%s]\n"
-#: src/readelf.c:1422
+#: src/readelf.c:1637
#, c-format
msgid "Library runpath: [%s]\n"
msgstr "Runpath бібліотеки: [%s]\n"
-#: src/readelf.c:1442
+#: src/readelf.c:1657
#, c-format
msgid "%<PRId64> (bytes)\n"
msgstr "%<PRId64> (байт)\n"
-#: src/readelf.c:1554 src/readelf.c:1740
+#: src/readelf.c:1770 src/readelf.c:1957
#, c-format
msgid ""
"\n"
"\n"
"Некоректна таблиця символів за зміщенням %#0<PRIx64>\n"
-#: src/readelf.c:1572 src/readelf.c:1757
+#: src/readelf.c:1788 src/readelf.c:1975
#, c-format
msgid ""
"\n"
"Розділ пересування [%2zu] «%s» для розділу [%2u] «%s» за зміщенням "
"%#0<PRIx64> містить %d записів:\n"
-#: src/readelf.c:1587
+#: src/readelf.c:1803 src/readelf.c:1990
#, c-format
msgid ""
"\n"
"\n"
"Розділ пересування [%2u] «%s» за зміщенням %#0<PRIx64> містить %d записів:\n"
-#: src/readelf.c:1597
+#: src/readelf.c:1813
msgid " Offset Type Value Name\n"
msgstr " Зміщення Тип Значення Назва\n"
-#: src/readelf.c:1599
+#: src/readelf.c:1815
msgid " Offset Type Value Name\n"
msgstr " Зміщення Тип Значення Назва\n"
-#: src/readelf.c:1652 src/readelf.c:1663 src/readelf.c:1676 src/readelf.c:1694
-#: src/readelf.c:1706 src/readelf.c:1825 src/readelf.c:1837 src/readelf.c:1851
-#: src/readelf.c:1870 src/readelf.c:1883
+#: src/readelf.c:1868 src/readelf.c:1879 src/readelf.c:1892 src/readelf.c:1910
+#: src/readelf.c:1922 src/readelf.c:2056 src/readelf.c:2068 src/readelf.c:2082
+#: src/readelf.c:2101 src/readelf.c:2114
msgid "<INVALID RELOC>"
msgstr "<НЕКОРЕКТНЕ ПЕРЕМІЩЕННЯ>"
-#: src/readelf.c:1769
+#: src/readelf.c:2000
msgid " Offset Type Value Addend Name\n"
msgstr " Зміщення Тип Значення Назва додатка\n"
-#: src/readelf.c:1771
+#: src/readelf.c:2002
msgid " Offset Type Value Addend Name\n"
msgstr ""
" Зміщення Тип Значення Назва додатка\n"
-#: src/readelf.c:1972
+#: src/readelf.c:2210
#, c-format
msgid ""
"\n"
"\n"
"Таблиця символів [%2u] «%s» містить %u записів:\n"
-#: src/readelf.c:1978
+#: src/readelf.c:2215
#, c-format
msgid " %lu local symbol String table: [%2u] '%s'\n"
msgid_plural " %lu local symbols String table: [%2u] '%s'\n"
msgstr[1] " %lu лок. символи Таблиця символів: [%2u] «%s»\n"
msgstr[2] " %lu лок. символів Таблиця символів: [%2u] «%s»\n"
-#: src/readelf.c:1988
+#: src/readelf.c:2223
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " №№ Знач. Роз. Тип Зв’яз Вид. Інд Назва\n"
-#: src/readelf.c:1990
+#: src/readelf.c:2225
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr " №№ Знач. Роз. Тип Зв’яз Вид. Інд Назва\n"
-#: src/readelf.c:2010
+#: src/readelf.c:2245
#, c-format
msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-#: src/readelf.c:2098
+#: src/readelf.c:2333
#, c-format
msgid "bad dynamic symbol"
msgstr "помилковий динамічний символ"
-#: src/readelf.c:2180
+#: src/readelf.c:2415
msgid "none"
msgstr "немає"
-#: src/readelf.c:2197
+#: src/readelf.c:2432
msgid "| <unknown>"
msgstr "| <невідомо>"
-#: src/readelf.c:2222
+#: src/readelf.c:2463
#, c-format
msgid ""
"\n"
"Розділ потреби у версіях [%2u] «%s», що містить %d записів:\n"
" Адр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> Посилання на розділ: [%2u] «%s»\n"
-#: src/readelf.c:2245
+#: src/readelf.c:2484
#, c-format
msgid " %#06x: Version: %hu File: %s Cnt: %hu\n"
msgstr " %#06x: Версія: %hu Файл: %s Кть: %hu\n"
-#: src/readelf.c:2258
+#: src/readelf.c:2497
#, c-format
msgid " %#06x: Name: %s Flags: %s Version: %hu\n"
msgstr " %#06x: Назва: %s Прап: %s Версія: %hu\n"
-#: src/readelf.c:2289
+#: src/readelf.c:2534
#, c-format
msgid ""
"\n"
"Розділ визначення версії [%2u] «%s», що містить %d записів:\n"
" Адр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> Посилання на розділ: [%2u] «%s»\n"
-#: src/readelf.c:2319
+#: src/readelf.c:2562
#, c-format
msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"
msgstr " %#06x: Версія: %hd Прап.: %s Індекс: %hd К-ть: %hd Назва: %s\n"
-#: src/readelf.c:2334
+#: src/readelf.c:2577
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr " %#06x: батьківський %d: %s\n"
-#: src/readelf.c:2566
+#: src/readelf.c:2816
#, c-format
msgid ""
"\n"
"Розділ символів версій [%2u] «%s», що містить %d записів:\n"
" Адр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> Посилання на розділ: [%2u] «%s»"
-#: src/readelf.c:2596
+#: src/readelf.c:2844
msgid " 0 *local* "
msgstr " 0 *локальний* "
-#: src/readelf.c:2601
+#: src/readelf.c:2849
msgid " 1 *global* "
msgstr " 1 *загальний* "
-#: src/readelf.c:2632
+#: src/readelf.c:2890
#, c-format
msgid ""
"\n"
"блоками):\n"
" Адр.: %#0*<PRIx64> Зміщ.: %#08<PRIx64> Посилання на розділ: [%2u] «%s»\n"
-#: src/readelf.c:2656
+#: src/readelf.c:2912
#, no-c-format
msgid " Length Number % of total Coverage\n"
msgstr " Довжина Номер % від загал. Покриття\n"
-#: src/readelf.c:2658
+#: src/readelf.c:2914
#, c-format
msgid " 0 %6<PRIu32> %5.1f%%\n"
msgstr " 0 %6<PRIu32> %5.1f%%\n"
-#: src/readelf.c:2665
+#: src/readelf.c:2921
#, c-format
msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
msgstr "%7d %6<PRIu32> %5.1f%% %5.1f%%\n"
-#: src/readelf.c:2678
+#: src/readelf.c:2934
#, c-format
msgid ""
" Average number of tests: successful lookup: %f\n"
" Середня кількість тестів: успішний пошук: %f\n"
"\t\t\t неуспішний пошук: %f\n"
-#: src/readelf.c:2696 src/readelf.c:2738 src/readelf.c:2779
+#: src/readelf.c:2952 src/readelf.c:2994 src/readelf.c:3035
#, c-format
msgid "cannot get data for section %d: %s"
msgstr "не вдалося отримати дані для розділу %d: %s"
-#: src/readelf.c:2833
+#: src/readelf.c:3089
#, c-format
msgid ""
" Symbol Bias: %u\n"
" Розмір бітової маски: %zu байтів %<PRIuFAST32>%% встановлених бітів зсув "
"2-го хешу: %u\n"
-#: src/readelf.c:2907
+#: src/readelf.c:3164
#, c-format
msgid ""
"\n"
"Розділ списку бібліотек [%2zu] «%s» за зміщенням %#0<PRIx64> містить %d "
"записів:\n"
-#: src/readelf.c:2921
+#: src/readelf.c:3178
msgid ""
" Library Time Stamp Checksum Version "
"Flags"
" Бібліотека Часовий штамп Версія суми "
"Прапорці"
-#: src/readelf.c:2971
+#: src/readelf.c:3228
#, c-format
msgid ""
"\n"
"Розділ атрибутів об’єктів [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
"%#0<PRIx64>:\n"
-#: src/readelf.c:2987
+#: src/readelf.c:3244
msgid " Owner Size\n"
msgstr " Власник Розмір\n"
-#: src/readelf.c:3013
+#: src/readelf.c:3270
#, c-format
msgid " %-13s %4<PRIu32>\n"
msgstr " %-13s %4<PRIu32>\n"
-#: src/readelf.c:3045
+#: src/readelf.c:3302
#, c-format
msgid " %-4u %12<PRIu32>\n"
msgstr " %-4u %12<PRIu32>\n"
-#: src/readelf.c:3050
+#: src/readelf.c:3307
#, c-format
msgid " File: %11<PRIu32>\n"
msgstr " Файл: %11<PRIu32>\n"
-#: src/readelf.c:3085
+#: src/readelf.c:3342
#, c-format
msgid " %s: %<PRId64>, %s\n"
msgstr " %s: %<PRId64>, %s\n"
-#: src/readelf.c:3088
+#: src/readelf.c:3345
#, c-format
msgid " %s: %<PRId64>\n"
msgstr " %s: %<PRId64>\n"
-#: src/readelf.c:3091
+#: src/readelf.c:3348
#, c-format
msgid " %s: %s\n"
msgstr " %s: %s\n"
-#: src/readelf.c:3098
+#: src/readelf.c:3355
#, c-format
msgid " %u: %<PRId64>\n"
msgstr " %u: %<PRId64>\n"
-#: src/readelf.c:3101
+#: src/readelf.c:3358
#, c-format
msgid " %u: %s\n"
msgstr " %u: %s\n"
-#: src/readelf.c:3137
+#: src/readelf.c:3403
#, c-format
msgid "%s+%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3140
+#: src/readelf.c:3406
#, c-format
msgid "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%s+%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3145
+#: src/readelf.c:3411
#, c-format
msgid "%#<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3148
+#: src/readelf.c:3414
#, c-format
msgid "%#0*<PRIx64> <%s+%#<PRIx64>>"
msgstr "%#0*<PRIx64> <%s+%#<PRIx64>>"
-#: src/readelf.c:3154
+#: src/readelf.c:3420
#, c-format
msgid "%s+%#<PRIx64> <%s>"
msgstr "%s+%#<PRIx64> <%s>"
-#: src/readelf.c:3157
+#: src/readelf.c:3423
#, c-format
msgid "%s+%#0*<PRIx64> <%s>"
msgstr "%s+%#0*<PRIx64> <%s>"
-#: src/readelf.c:3161
+#: src/readelf.c:3427
#, c-format
msgid "%#<PRIx64> <%s>"
msgstr "%#<PRIx64> <%s>"
-#: src/readelf.c:3164
+#: src/readelf.c:3430
#, c-format
msgid "%#0*<PRIx64> <%s>"
msgstr "%#0*<PRIx64> <%s>"
-#: src/readelf.c:3169
+#: src/readelf.c:3435
#, c-format
msgid "%s+%#<PRIx64>"
msgstr "%s+%#<PRIx64>"
-#: src/readelf.c:3172
+#: src/readelf.c:3438
#, c-format
msgid "%s+%#0*<PRIx64>"
msgstr "%s+%#0*<PRIx64>"
-#: src/readelf.c:3554
+#: src/readelf.c:3820
msgid "empty block"
msgstr "порожній блок"
-#: src/readelf.c:3557
+#: src/readelf.c:3823
#, c-format
msgid "%zu byte block:"
msgstr "%zu-байтовий блок:"
-#: src/readelf.c:3934
+#: src/readelf.c:4217
#, c-format
msgid "%*s[%4<PRIuMAX>] %s <TRUNCATED>\n"
msgstr "%*s[%4<PRIuMAX>] %s <ОБРІЗАНО>\n"
-#: src/readelf.c:3970
+#: src/readelf.c:4274
#, c-format
msgid "%s %#<PRIx64> used with different address sizes"
msgstr "%s %#<PRIx64> використано з різними розмірами адрес"
-#: src/readelf.c:3977
+#: src/readelf.c:4281
#, c-format
msgid "%s %#<PRIx64> used with different offset sizes"
msgstr "%s %#<PRIx64> використано з різними розмірами зміщень"
-#: src/readelf.c:4057
+#: src/readelf.c:4288
+#, c-format
+msgid "%s %#<PRIx64> used with different base addresses"
+msgstr "%s %#<PRIx64> використано з різними базовими адресами"
+
+#: src/readelf.c:4370
#, c-format
msgid " [%6tx] <UNUSED GARBAGE IN REST OF SECTION>\n"
msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ У РЕШТІ РОЗДІЛУ>\n"
-#: src/readelf.c:4065
+#: src/readelf.c:4378
#, c-format
msgid " [%6tx] <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ> ... %<PRIu64> байтів ...\n"
-#: src/readelf.c:4087
+#: src/readelf.c:4404
#, c-format
msgid ""
"\n"
"Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
" [ Код]\n"
-#: src/readelf.c:4095
+#: src/readelf.c:4412
#, c-format
msgid ""
"\n"
"\n"
"Розділ скорочень за зміщенням %<PRIu64>:\n"
-#: src/readelf.c:4108
+#: src/readelf.c:4425
#, c-format
msgid " *** error while reading abbreviation: %s\n"
msgstr " *** помилка під час читання скорочення: %s\n"
-#: src/readelf.c:4124
+#: src/readelf.c:4441
#, c-format
msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
msgstr " [%5u] зміщення: %<PRId64>, дочірній: %s, мітка: %s\n"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "yes"
msgstr "так"
-#: src/readelf.c:4127
+#: src/readelf.c:4444
msgid "no"
msgstr "ні"
-#: src/readelf.c:4162
+#: src/readelf.c:4478 src/readelf.c:4551
#, c-format
msgid "cannot get .debug_aranges content: %s"
msgstr "не вдалося отримати дані get .debug_aranges: %s"
-#: src/readelf.c:4167
+#: src/readelf.c:4493
#, c-format
msgid ""
"\n"
"\n"
"Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu записів:\n"
-#: src/readelf.c:4198
+#: src/readelf.c:4524
#, c-format
msgid " [%*zu] ???\n"
msgstr " [%*zu] ???\n"
-#: src/readelf.c:4200
+#: src/readelf.c:4526
#, c-format
msgid ""
" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
" [%*zu] початок: %0#*<PRIx64>, довжина: %5<PRIu64>, зміщення CU DIE: "
"%6<PRId64>\n"
-#: src/readelf.c:4219
-#, c-format
-msgid "cannot get .debug_ranges content: %s"
-msgstr "не вдалося отримати дані .debug_ranges: %s"
-
-#: src/readelf.c:4224 src/readelf.c:4728 src/readelf.c:5505 src/readelf.c:6006
-#: src/readelf.c:6121 src/readelf.c:6277 src/readelf.c:6699
+#: src/readelf.c:4556 src/readelf.c:4710 src/readelf.c:5231 src/readelf.c:6145
+#: src/readelf.c:6646 src/readelf.c:6766 src/readelf.c:6922 src/readelf.c:7345
#, c-format
msgid ""
"\n"
"\n"
"Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
-#: src/readelf.c:4248 src/readelf.c:6031
+#: src/readelf.c:4569 src/readelf.c:6171
+#, c-format
+msgid ""
+"\n"
+"Table at offset %Zu:\n"
+msgstr ""
+"\n"
+"Таблиця за зміщенням %Zu:\n"
+
+#: src/readelf.c:4573 src/readelf.c:5255 src/readelf.c:6180
+#, c-format
+msgid "invalid data in section [%zu] '%s'"
+msgstr "некоректні дані у розділі [%zu] «%s»"
+
+#: src/readelf.c:4589
+#, c-format
+msgid ""
+"\n"
+" Length: %6<PRIu64>\n"
+msgstr ""
+"\n"
+" Довжина: %6<PRIu64>\n"
+
+#: src/readelf.c:4601
+#, c-format
+msgid " DWARF version: %6<PRIuFAST16>\n"
+msgstr " версія DWARF: %6<PRIuFAST16>\n"
+
+#: src/readelf.c:4605
+#, c-format
+msgid "unsupported aranges version"
+msgstr "непідтримувана версія aranges"
+
+#: src/readelf.c:4616
+#, c-format
+msgid " CU offset: %6<PRIx64>\n"
+msgstr " зміщення CU: %6<PRIx64>\n"
+
+#: src/readelf.c:4622
+#, c-format
+msgid " Address size: %6<PRIu64>\n"
+msgstr " Розмір адреси: %6<PRIu64>\n"
+
+#: src/readelf.c:4626
+#, c-format
+msgid "unsupported address size"
+msgstr "непідтримуваний розмір адреси"
+
+#: src/readelf.c:4631
+#, c-format
+msgid ""
+" Segment size: %6<PRIu64>\n"
+"\n"
+msgstr ""
+" Розмір сегмента: %6<PRIu64>\n"
+"\n"
+
+#: src/readelf.c:4635
+#, c-format
+msgid "unsupported segment size"
+msgstr "непідтримуваний розмір сегмента"
+
+#: src/readelf.c:4675
+#, c-format
+msgid " %s..%s (%<PRIx64>)\n"
+msgstr " %s..%s (%<PRIx64>)\n"
+
+#: src/readelf.c:4678
+#, c-format
+msgid " %s..%s\n"
+msgstr " %s..%s\n"
+
+#: src/readelf.c:4687
+#, c-format
+msgid " %Zu padding bytes\n"
+msgstr " %Zu байтів доповнення\n"
+
+#: src/readelf.c:4705
+#, c-format
+msgid "cannot get .debug_ranges content: %s"
+msgstr "не вдалося отримати дані .debug_ranges: %s"
+
+#: src/readelf.c:4735 src/readelf.c:6673
#, c-format
msgid " [%6tx] <INVALID DATA>\n"
msgstr " [%6tx] <НЕКОРЕКТНІ ДАНІ>\n"
-#: src/readelf.c:4270 src/readelf.c:6053
+#: src/readelf.c:4757 src/readelf.c:6695
#, c-format
msgid " [%6tx] base address %s\n"
msgstr " [%6tx] базова адреса %s\n"
-#: src/readelf.c:4276 src/readelf.c:6059
+#: src/readelf.c:4764 src/readelf.c:6702
#, c-format
msgid " [%6tx] empty list\n"
msgstr " [%6tx] порожній список\n"
-#: src/readelf.c:4285
+#: src/readelf.c:4775
#, c-format
msgid " [%6tx] %s..%s\n"
msgstr " [%6tx] %s..%s\n"
-#: src/readelf.c:4287
+#: src/readelf.c:4777
#, c-format
msgid " %s..%s\n"
msgstr " %s..%s\n"
-#: src/readelf.c:4717 src/readelf.c:6768 src/readelf.c:6870 src/readelf.c:7028
+#: src/readelf.c:5210
#, c-format
-msgid "cannot get %s content: %s"
-msgstr "не вдалося отримати дані %s: %s"
+msgid "cannot get ELF: %s"
+msgstr "не вдалося отримати ELF: %s"
-#: src/readelf.c:4724
+#: src/readelf.c:5227
#, c-format
msgid ""
"\n"
"\n"
"Розділ відомостей щодо вікна викликів [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
-#: src/readelf.c:4752 src/readelf.c:5540
-#, c-format
-msgid "invalid data in section [%zu] '%s'"
-msgstr "некоректні дані у розділі [%zu] «%s»"
-
-#: src/readelf.c:4774
+#: src/readelf.c:5277
#, c-format
msgid ""
"\n"
"\n"
" [%6tx] нульовий переривач\n"
-#: src/readelf.c:4859
+#: src/readelf.c:5362
#, c-format
msgid "invalid augmentation length"
msgstr "некоректна довжина збільшення"
-#: src/readelf.c:4871
+#: src/readelf.c:5374
msgid "FDE address encoding: "
msgstr "Кодування адреси FDE: "
-#: src/readelf.c:4877
+#: src/readelf.c:5380
msgid "LSDA pointer encoding: "
msgstr "Кодування вказівника LSDA: "
-#: src/readelf.c:4975
+#: src/readelf.c:5491
#, c-format
msgid " (offset: %#<PRIx64>)"
msgstr " (зміщення: %#<PRIx64>)"
-#: src/readelf.c:4982
+#: src/readelf.c:5498
#, c-format
msgid " (end offset: %#<PRIx64>)"
msgstr " (зміщення від кінця: %#<PRIx64>)"
-#: src/readelf.c:5009
+#: src/readelf.c:5525
#, c-format
msgid " %-26sLSDA pointer: %#<PRIx64>\n"
msgstr " %-26sвказівник LSDA: %#<PRIx64>\n"
-#: src/readelf.c:5060
+#: src/readelf.c:5577
#, c-format
msgid "cannot get attribute code: %s"
msgstr "не вдалося отримати код атрибута: %s"
-#: src/readelf.c:5069
+#: src/readelf.c:5586
#, c-format
msgid "cannot get attribute form: %s"
msgstr "не вдалося отримати форму атрибута: %s"
-#: src/readelf.c:5084
+#: src/readelf.c:5601
#, c-format
msgid "cannot get attribute value: %s"
msgstr "не вдалося отримати значення атрибута: %s"
-#: src/readelf.c:5342
+#: src/readelf.c:5894
#, c-format
msgid ""
"\n"
"Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
" [Зміщення]\n"
-#: src/readelf.c:5374
+#: src/readelf.c:5926
#, c-format
msgid ""
" Type unit at offset %<PRIu64>:\n"
"Зміщення: %<PRIu8>\n"
" Підпис типу: %#<PRIx64>, Зміщення типу: %#<PRIx64>\n"
-#: src/readelf.c:5383
+#: src/readelf.c:5935
#, c-format
msgid ""
" Compilation unit at offset %<PRIu64>:\n"
" Версія: %<PRIu16>, Зміщення розділу скорочень: %<PRIu64>, Адреса: %<PRIu8>, "
"Зміщення: %<PRIu8>\n"
-#: src/readelf.c:5409
+#: src/readelf.c:5960
#, c-format
msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s"
msgstr "не вдалося отримати DIE за зміщенням %<PRIu64> у розділі «%s»: %s"
-#: src/readelf.c:5421
+#: src/readelf.c:5974
#, c-format
msgid "cannot get DIE offset: %s"
msgstr "не вдалося отримати зміщення DIE: %s"
-#: src/readelf.c:5430
+#: src/readelf.c:5983
#, c-format
msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s"
msgstr ""
"не вдалося отримати мітку DIE за зміщенням %<PRIu64> у розділі «%s»: %s"
-#: src/readelf.c:5461
+#: src/readelf.c:6015
#, c-format
msgid "cannot get next DIE: %s\n"
msgstr "не вдалося визначити наступний DIE: %s\n"
-#: src/readelf.c:5469
+#: src/readelf.c:6023
#, c-format
msgid "cannot get next DIE: %s"
msgstr "не вдалося визначити наступний DIE: %s"
-#: src/readelf.c:5518
-#, c-format
-msgid "cannot get line data section data: %s"
-msgstr "не вдалося отримати дані розділу лінійних даних: %s"
-
-#: src/readelf.c:5531
+#: src/readelf.c:6059
#, c-format
msgid ""
"\n"
-"Table at offset %Zu:\n"
+"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
+"\n"
msgstr ""
"\n"
-"Таблиця за зміщенням %Zu:\n"
+"Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
+"\n"
-#: src/readelf.c:5586
+#: src/readelf.c:6158
+#, c-format
+msgid "cannot get line data section data: %s"
+msgstr "не вдалося отримати дані розділу лінійних даних: %s"
+
+#: src/readelf.c:6226
#, c-format
msgid ""
"\n"
"\n"
"Коди операцій:\n"
-#: src/readelf.c:5607
+#: src/readelf.c:6247
#, c-format
msgid "invalid data at offset %tu in section [%zu] '%s'"
msgstr "некоректні дані зі зміщенням %tu у розділі [%zu] «%s»"
-#: src/readelf.c:5622
+#: src/readelf.c:6262
#, c-format
msgid " [%*<PRIuFAST8>] %hhu argument\n"
msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n"
msgstr[1] " [%*<PRIuFAST8>] %hhu аргументи\n"
msgstr[2] " [%*<PRIuFAST8>] %hhu аргументів\n"
-#: src/readelf.c:5630
+#: src/readelf.c:6270
msgid ""
"\n"
"Directory table:"
"\n"
"Таблиця каталогу:"
-#: src/readelf.c:5646
+#: src/readelf.c:6286
msgid ""
"\n"
"File name table:\n"
"Таблиця назв файлів:\n"
" Запис Кат Час Розмір Назва"
-#: src/readelf.c:5675
+#: src/readelf.c:6315
msgid ""
"\n"
"Line number statements:"
"\n"
"Оператори номерів рядків:"
-#: src/readelf.c:5751
+#: src/readelf.c:6391
#, c-format
msgid " special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"
msgstr ""
" спеціальний код операції %u: адреса+%u = %s, індекс_оп = %u, рядок%+d = "
"%zu\n"
-#: src/readelf.c:5756
+#: src/readelf.c:6396
#, c-format
msgid " special opcode %u: address+%u = %s, line%+d = %zu\n"
msgstr " спеціальний код операції %u: адреса+%u = %s, рядок%+d = %zu\n"
-#: src/readelf.c:5776
+#: src/readelf.c:6416
#, c-format
msgid " extended opcode %u: "
msgstr " розширений код операції %u: "
-#: src/readelf.c:5781
+#: src/readelf.c:6421
msgid " end of sequence"
msgstr " кінець послідовності"
-#: src/readelf.c:5798
+#: src/readelf.c:6438
#, c-format
msgid " set address to %s\n"
msgstr " встановити адресу у значення %s\n"
-#: src/readelf.c:5819
+#: src/readelf.c:6459
#, c-format
msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
msgstr ""
" визначення нового файла: dir=%u, mtime=%<PRIu64>, довжина=%<PRIu64>, назва="
"%s\n"
-#: src/readelf.c:5832
+#: src/readelf.c:6472
#, c-format
msgid " set discriminator to %u\n"
msgstr " встановити розрізнення для %u\n"
-#: src/readelf.c:5837
+#: src/readelf.c:6477
msgid " unknown opcode"
msgstr " невідомий код операції"
-#: src/readelf.c:5849
+#: src/readelf.c:6489
msgid " copy"
msgstr " копія"
-#: src/readelf.c:5860
+#: src/readelf.c:6500
#, c-format
msgid " advance address by %u to %s, op_index to %u\n"
msgstr " збільшення адреси на %u до %s, індекс_оп до %u\n"
-#: src/readelf.c:5864
+#: src/readelf.c:6504
#, c-format
msgid " advance address by %u to %s\n"
msgstr " збільшення адреси на %u до %s\n"
-#: src/readelf.c:5875
+#: src/readelf.c:6515
#, c-format
msgid " advance line by constant %d to %<PRId64>\n"
msgstr " просувати рядок на сталу %d до %<PRId64>\n"
-#: src/readelf.c:5883
+#: src/readelf.c:6523
#, c-format
msgid " set file to %<PRIu64>\n"
msgstr " встановити файл у %<PRIu64>\n"
-#: src/readelf.c:5893
+#: src/readelf.c:6533
#, c-format
msgid " set column to %<PRIu64>\n"
msgstr " встановити значення стовпчика %<PRIu64>\n"
-#: src/readelf.c:5900
+#: src/readelf.c:6540
#, c-format
msgid " set '%s' to %<PRIuFAST8>\n"
msgstr " встановити «%s» у %<PRIuFAST8>\n"
-#: src/readelf.c:5906
+#: src/readelf.c:6546
msgid " set basic block flag"
msgstr " встановити прапорець базового блоку"
-#: src/readelf.c:5915
+#: src/readelf.c:6555
#, c-format
msgid " advance address by constant %u to %s, op_index to %u\n"
msgstr " збільшити адресу на сталу величину %u до %s, індекс_оп до %u\n"
-#: src/readelf.c:5919
+#: src/readelf.c:6559
#, c-format
msgid " advance address by constant %u to %s\n"
msgstr " збільшити адресу на сталу величину %u до %s\n"
-#: src/readelf.c:5937
+#: src/readelf.c:6577
#, c-format
msgid " advance address by fixed value %u to %s\n"
msgstr " збільшити адресу на фіксовану величину %u до %s\n"
-#: src/readelf.c:5946
+#: src/readelf.c:6586
msgid " set prologue end flag"
msgstr " встановити прапорець кінця вступу"
-#: src/readelf.c:5951
+#: src/readelf.c:6591
msgid " set epilogue begin flag"
msgstr " встановити прапорець початку епілогу"
-#: src/readelf.c:5960
+#: src/readelf.c:6600
#, c-format
msgid " set isa to %u\n"
msgstr " встановити isa у %u\n"
-#: src/readelf.c:5969
+#: src/readelf.c:6609
#, c-format
msgid " unknown opcode with %<PRIu8> parameter:"
msgid_plural " unknown opcode with %<PRIu8> parameters:"
msgstr[1] " невідомий код операції з %<PRIu8> параметрами:"
msgstr[2] " невідомий код операції з %<PRIu8> параметрами:"
-#: src/readelf.c:6001
+#: src/readelf.c:6641
#, c-format
msgid "cannot get .debug_loc content: %s"
msgstr "не вдалося отримати вміст .debug_loc: %s"
-#: src/readelf.c:6071
+#: src/readelf.c:6716
#, c-format
msgid " [%6tx] %s..%s"
msgstr " [%6tx] %s..%s"
-#: src/readelf.c:6073
+#: src/readelf.c:6718
#, c-format
msgid " %s..%s"
msgstr " %s..%s"
-#: src/readelf.c:6080
+#: src/readelf.c:6725
msgid " <INVALID DATA>\n"
msgstr " <НЕКОРЕКТНІ ДАНІ>\n"
-#: src/readelf.c:6132 src/readelf.c:6286
+#: src/readelf.c:6777 src/readelf.c:6931
#, c-format
msgid "cannot get macro information section data: %s"
msgstr "не вдалося отримати дані розділу відомостей щодо макросів: %s"
-#: src/readelf.c:6211
+#: src/readelf.c:6856
#, c-format
msgid "%*s*** non-terminated string at end of section"
msgstr "%*s*** незавершений рядок наприкінці розділу"
-#: src/readelf.c:6327
-#, fuzzy, c-format
+#: src/readelf.c:6972
+#, c-format
msgid " Offset: 0x%<PRIx64>\n"
-msgstr " Зміщення: 0x%zx\n"
+msgstr " Зміщення: 0x%<PRIx64>\n"
-#: src/readelf.c:6339
+#: src/readelf.c:6984
#, c-format
msgid " Version: %<PRIu16>\n"
msgstr " Версія: %<PRIu16>\n"
-#: src/readelf.c:6345 src/readelf.c:7055
+#: src/readelf.c:6990 src/readelf.c:7703
#, c-format
msgid " unknown version, cannot parse section\n"
msgstr " невідома версія, не вдалося обробити розділ\n"
-#: src/readelf.c:6352
+#: src/readelf.c:6997
#, c-format
msgid " Flag: 0x%<PRIx8>\n"
msgstr " Прапорець: 0x%<PRIx8>\n"
-#: src/readelf.c:6355
+#: src/readelf.c:7000
#, c-format
msgid " Offset length: %<PRIu8>\n"
msgstr " Довжина зміщення: %<PRIu8>\n"
-#: src/readelf.c:6363
+#: src/readelf.c:7008
#, c-format
msgid " .debug_line offset: 0x%<PRIx64>\n"
msgstr " зміщення .debug_line: 0x%<PRIx64>\n"
-#: src/readelf.c:6375
+#: src/readelf.c:7021
#, c-format
msgid " extension opcode table, %<PRIu8> items:\n"
msgstr " таблиця кодів операцій розширень, записів — %<PRIu8>:\n"
-#: src/readelf.c:6382
+#: src/readelf.c:7028
#, c-format
msgid " [%<PRIx8>]"
msgstr " [%<PRIx8>]"
-#: src/readelf.c:6394
+#: src/readelf.c:7040
#, c-format
msgid " %<PRIu8> arguments:"
msgstr " %<PRIu8> аргументів:"
-#: src/readelf.c:6422
+#: src/readelf.c:7068
#, c-format
msgid " no arguments."
msgstr " немає аргументів."
-#: src/readelf.c:6657
+#: src/readelf.c:7303
#, c-format
msgid "vendor opcode not verified?"
msgstr "код операції постачальника не перевірено?"
-#: src/readelf.c:6685
+#: src/readelf.c:7331
#, c-format
msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
msgstr ""
" [%5d] зміщення DIE: %6<PRId64>, зміщення CU DIE: %6<PRId64>, назва: %s\n"
-#: src/readelf.c:6726
+#: src/readelf.c:7372
#, c-format
msgid ""
"\n"
"Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
" %*s Рядок\n"
-#: src/readelf.c:6740
+#: src/readelf.c:7386
#, c-format
msgid " *** error while reading strings: %s\n"
msgstr " *** помилка під час читання рядків: %s\n"
-#: src/readelf.c:6760
+#: src/readelf.c:7406
#, c-format
msgid ""
"\n"
"\n"
"Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n"
-#: src/readelf.c:6862
+#: src/readelf.c:7508
#, c-format
msgid ""
"\n"
"\n"
"Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n"
-#: src/readelf.c:6885
+#: src/readelf.c:7531
#, c-format
msgid " LPStart encoding: %#x "
msgstr " Кодування LPStart: %#x "
-#: src/readelf.c:6897
+#: src/readelf.c:7543
#, c-format
msgid " TType encoding: %#x "
msgstr " Кодування TType: %#x "
-#: src/readelf.c:6911
+#: src/readelf.c:7557
#, c-format
msgid " Call site encoding: %#x "
msgstr " Кодування місця виклику:%#x "
-#: src/readelf.c:6924
+#: src/readelf.c:7570
msgid ""
"\n"
" Call site table:"
"\n"
" Таблиця місця виклику:"
-#: src/readelf.c:6938
+#: src/readelf.c:7584
#, c-format
msgid ""
" [%4u] Call site start: %#<PRIx64>\n"
" Місце застосування: %#<PRIx64>\n"
" Дія: %u\n"
-#: src/readelf.c:6998
+#: src/readelf.c:7644
#, c-format
msgid "invalid TType encoding"
msgstr "некоректне кодування TType"
-#: src/readelf.c:7019
+#: src/readelf.c:7665
#, c-format
msgid ""
"\n"
"\n"
"Розділ GDB [%2zu] «%s» за зміщенням %#<PRIx64> містить %<PRId64> байтів:\n"
-#: src/readelf.c:7048
+#: src/readelf.c:7694
#, c-format
msgid " Version: %<PRId32>\n"
msgstr " Версія: %<PRId32>\n"
-#: src/readelf.c:7064
+#: src/readelf.c:7712
#, c-format
msgid " CU offset: %#<PRIx32>\n"
msgstr " зміщення CU: %#<PRIx32>\n"
-#: src/readelf.c:7071
+#: src/readelf.c:7719
#, c-format
msgid " TU offset: %#<PRIx32>\n"
msgstr " зміщення TU: %#<PRIx32>\n"
-#: src/readelf.c:7078
+#: src/readelf.c:7726
#, c-format
msgid " address offset: %#<PRIx32>\n"
msgstr " зміщення адреси: %#<PRIx32>\n"
-#: src/readelf.c:7085
+#: src/readelf.c:7733
#, c-format
msgid " symbol offset: %#<PRIx32>\n"
msgstr " зміщення символу: %#<PRIx32>\n"
-#: src/readelf.c:7092
+#: src/readelf.c:7740
#, c-format
msgid " constant offset: %#<PRIx32>\n"
msgstr " стале зміщення: %#<PRIx32>\n"
-#: src/readelf.c:7099
+#: src/readelf.c:7747
#, c-format
msgid ""
"\n"
"\n"
" Список CU зі зміщенням %#<PRIx32> містить %zu записів:\n"
-#: src/readelf.c:7121
+#: src/readelf.c:7769
#, c-format
msgid ""
"\n"
"\n"
" Список TU зі зміщенням %#<PRIx32> містить %zu записів:\n"
-#: src/readelf.c:7147
+#: src/readelf.c:7795
#, c-format
msgid ""
"\n"
"\n"
" Список адрес зі зміщенням %#<PRIx32> містить %zu записів:\n"
-#: src/readelf.c:7174
+#: src/readelf.c:7824
#, c-format
msgid ""
"\n"
"\n"
" Таблиця символів за зміщенням %#<PRIx32> містить %zu позицій:\n"
-#: src/readelf.c:7259
+#: src/readelf.c:7909
#, c-format
msgid "cannot get debug context descriptor: %s"
msgstr "не вдалося отримати дескриптор контексту зневаджування: %s"
-#: src/readelf.c:7409 src/readelf.c:8010
+#: src/readelf.c:8069 src/readelf.c:8675 src/readelf.c:8786 src/readelf.c:8844
#, c-format
msgid "cannot convert core note data: %s"
msgstr "не вдалося перетворити дані запису ядра: %s"
-#: src/readelf.c:7750
+#: src/readelf.c:8416
#, c-format
msgid ""
"\n"
"\n"
"%*s... <повторюється %u разів> ..."
-#: src/readelf.c:8109
+#: src/readelf.c:8919
msgid " Owner Data size Type\n"
msgstr " Власник Розм. даних Тип\n"
-#: src/readelf.c:8127
+#: src/readelf.c:8937
#, c-format
msgid " %-13.*s %9<PRId32> %s\n"
msgstr " %-13.*s %9<PRId32> %s\n"
-#: src/readelf.c:8161
+#: src/readelf.c:8987
#, c-format
msgid "cannot get content of note section: %s"
msgstr "не вдалося отримати вміст розділу записів: %s"
-#: src/readelf.c:8188
+#: src/readelf.c:9014
#, c-format
msgid ""
"\n"
"Розділ записів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
"%#0<PRIx64>:\n"
-#: src/readelf.c:8211
+#: src/readelf.c:9037
#, c-format
msgid ""
"\n"
"\n"
"Сегмент записів з %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
-#: src/readelf.c:8257
+#: src/readelf.c:9083
#, c-format
msgid ""
"\n"
"\n"
"У розділі [%Zu] «%s» не міститься даних для створення дампу.\n"
-#: src/readelf.c:8263 src/readelf.c:8286
+#: src/readelf.c:9089 src/readelf.c:9112
#, c-format
msgid "cannot get data for section [%Zu] '%s': %s"
msgstr "не вдалося отримати дані для розділу [%Zu] «%s»: %s"
-#: src/readelf.c:8267
+#: src/readelf.c:9093
#, c-format
msgid ""
"\n"
"\n"
"Шіст. дамп розділу [%Zu] «%s», %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
-#: src/readelf.c:8280
+#: src/readelf.c:9106
#, c-format
msgid ""
"\n"
"\n"
"У розділі [%Zu] «%s» не міститься рядків для створення дампу.\n"
-#: src/readelf.c:8290
+#: src/readelf.c:9116
#, c-format
msgid ""
"\n"
"\n"
"Розділ рядків [%Zu] «%s» містить %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
-#: src/readelf.c:8338
+#: src/readelf.c:9164
#, c-format
msgid ""
"\n"
"\n"
"розділу [%lu] не існує"
-#: src/readelf.c:8367
+#: src/readelf.c:9193
#, c-format
msgid ""
"\n"
"\n"
"розділу «%s» не існує"
-#: src/readelf.c:8424
+#: src/readelf.c:9250
#, c-format
msgid "cannot get symbol index of archive '%s': %s"
msgstr "не вдалося отримати покажчик символів архіву «%s»: %s"
-#: src/readelf.c:8427
+#: src/readelf.c:9253
#, c-format
msgid ""
"\n"
"\n"
"У архіві «%s» немає покажчика символів\n"
-#: src/readelf.c:8431
+#: src/readelf.c:9257
#, c-format
msgid ""
"\n"
"\n"
"Покажчик архіву «%s» містить %Zu записів:\n"
-#: src/readelf.c:8449
+#: src/readelf.c:9275
#, c-format
msgid "cannot extract member at offset %Zu in '%s': %s"
msgstr "не вдалося видобути елемент за зміщенням %Zu у «%s»: %s"
-#: src/readelf.c:8454
+#: src/readelf.c:9280
#, c-format
msgid "Archive member '%s' contains:\n"
msgstr "Елемент архіву «%s» містить:\n"
msgid "%s: file format not recognized"
msgstr "%s: не вдалося розпізнати формат файла"
-#: src/size.c:438 src/size.c:581
+#: src/size.c:438 src/size.c:571
#, c-format
msgid " (ex %s)"
msgstr " (прикл. %s)"
-#: src/size.c:606
+#: src/size.c:596
msgid "(TOTALS)\n"
msgstr "(ЗАГАЛОМ)\n"
msgid "Print the strings of printable characters in files."
msgstr "Вивести рядки файлів з символів, придатних для друку."
-#: src/strings.c:260 src/strings.c:295
+#: src/strings.c:267 src/strings.c:302
#, c-format
msgid "invalid value '%s' for %s parameter"
msgstr "некоректне значення «%s» параметра %s"
-#: src/strings.c:306
+#: src/strings.c:313
#, c-format
msgid "invalid minimum length of matched string size"
msgstr "некоректна мінімальна довжина розмірності рядка для порівняння"
-#: src/strings.c:591
+#: src/strings.c:596
#, c-format
msgid "lseek64 failed"
msgstr "помилка lseek64"
-#: src/strings.c:608 src/strings.c:672
+#: src/strings.c:613 src/strings.c:677
#, c-format
msgid "re-mmap failed"
msgstr "помилка повторного використання mmap"
-#: src/strings.c:645
+#: src/strings.c:650
#, c-format
msgid "mprotect failed"
msgstr "помилка mprotect"
msgid "-F option specified twice"
msgstr "параметр -F вказано двічі"
-#: src/strip.c:249 src/unstrip.c:117
+#: src/strip.c:249 src/unstrip.c:121
#, c-format
msgid "-o option specified twice"
msgstr "параметр -o вказано двічі"
"%s: не можна використовувати -o або -f під час вилучення додаткового вмісту "
"архіву"
-#: src/strip.c:467
+#: src/strip.c:468
#, c-format
msgid "cannot open EBL backend"
msgstr "не вдалося відкрити канал сервера EBL"
-#: src/strip.c:517 src/strip.c:541
+#: src/strip.c:518 src/strip.c:542
#, c-format
msgid "cannot create new file '%s': %s"
msgstr "не вдалося створити файл «%s»: %s"
-#: src/strip.c:601
+#: src/strip.c:608
#, c-format
msgid "illformed file '%s'"
msgstr "помилкове форматування файла «%s»"
-#: src/strip.c:905 src/strip.c:994
+#: src/strip.c:930 src/strip.c:1019
#, c-format
msgid "while generating output file: %s"
msgstr "під час спроби створення файла з виведеними даними: %s"
-#: src/strip.c:967 src/strip.c:1929
+#: src/strip.c:992 src/strip.c:1957
#, c-format
msgid "%s: error while creating ELF header: %s"
msgstr "%s: помилка під час створення заголовка ELF: %s"
-#: src/strip.c:981
+#: src/strip.c:1006
#, c-format
msgid "while preparing output for '%s'"
msgstr "під час приготування виведених даних для «%s»"
-#: src/strip.c:1032 src/strip.c:1088
+#: src/strip.c:1057 src/strip.c:1114
#, c-format
msgid "while create section header section: %s"
msgstr "під час створення розділу заголовка розділу: %s"
-#: src/strip.c:1038
+#: src/strip.c:1063
#, c-format
msgid "cannot allocate section data: %s"
msgstr "не вдалося розмістити дані розділу: %s"
-#: src/strip.c:1097
+#: src/strip.c:1123
#, c-format
msgid "while create section header string table: %s"
msgstr "під час створення таблиці рядків заголовка розділу: %s"
-#: src/strip.c:1724
+#: src/strip.c:1752
#, c-format
msgid "bad relocation"
msgstr "помилкове пересування"
-#: src/strip.c:1841 src/strip.c:1951
+#: src/strip.c:1869 src/strip.c:1979
#, c-format
msgid "while writing '%s': %s"
msgstr "під час запису «%s»: %s"
-#: src/strip.c:1852
+#: src/strip.c:1880
#, c-format
msgid "while creating '%s'"
msgstr "під час спроби створення «%s»"
-#: src/strip.c:1874
+#: src/strip.c:1902
#, c-format
msgid "while computing checksum for debug information"
msgstr "під час обчислення контрольної суми для діагностичних даних"
-#: src/strip.c:1937
+#: src/strip.c:1965
#, c-format
msgid "%s: error while reading the file: %s"
msgstr "%s: помилка під час читання файла: %s"
-#: src/strip.c:1976 src/strip.c:1996
+#: src/strip.c:2004 src/strip.c:2024
#, c-format
msgid "while writing '%s'"
msgstr "під час спроби запису «%s»"
-#: src/strip.c:2030 src/strip.c:2037
+#: src/strip.c:2061 src/strip.c:2068
#, c-format
msgid "error while finishing '%s': %s"
msgstr "помилка під час завершення «%s»: %s"
-#: src/strip.c:2060 src/strip.c:2117
+#: src/strip.c:2091 src/strip.c:2148
#, c-format
msgid "cannot set access and modification date of '%s'"
msgstr "не вдалося встановити права доступу та дату зміни «%s»"
msgid "Only list module and file names, build IDs"
msgstr "Вивести лише список назв модулів, файлів, побудувати ідентифікатори"
-#: src/unstrip.c:126
+#: src/unstrip.c:86
+msgid "Force combining files even if some ELF headers don't seem to match"
+msgstr ""
+
+#: src/unstrip.c:130
#, c-format
msgid "-d option specified twice"
msgstr "параметр -d вказано двічі"
-#: src/unstrip.c:158
+#: src/unstrip.c:165
#, c-format
msgid "only one of -o or -d allowed"
msgstr "можна використовувати лише один з параметрів: -o або -d"
-#: src/unstrip.c:167
+#: src/unstrip.c:174
#, c-format
msgid "-n cannot be used with explicit files or -o or -d"
msgstr ""
"-n не можна використовувати з файлами, заданими явно, або параметрами -o і -d"
-#: src/unstrip.c:182
+#: src/unstrip.c:189
#, c-format
msgid "output directory '%s'"
msgstr "каталог виведення даних «%s»"
-#: src/unstrip.c:191
+#: src/unstrip.c:198
#, c-format
msgid "exactly two file arguments are required"
msgstr "як аргументи має бути вказано точно два файла"
-#: src/unstrip.c:197
+#: src/unstrip.c:204
#, c-format
msgid "-m, -a, -R, and -i options not allowed with explicit files"
msgstr ""
"для файлів, заданих явно, не можна використовувати параметри -m, -a, -R і -i"
-#: src/unstrip.c:210
+#: src/unstrip.c:217
#, c-format
msgid "-o or -d is required when using implicit files"
msgstr ""
"якщо використовуються файли, задані неявно, слід додавати параметр -o або -d"
-#: src/unstrip.c:246
+#: src/unstrip.c:253
#, c-format
msgid "cannot create ELF header: %s"
msgstr "не вдалося створити заголовок ELF: %s"
-#: src/unstrip.c:251
+#: src/unstrip.c:258
#, c-format
msgid "cannot copy ELF header: %s"
msgstr "не вдалося скопіювати заголовок ELF: %s"
-#: src/unstrip.c:256 src/unstrip.c:1820
+#: src/unstrip.c:263 src/unstrip.c:1828
#, c-format
msgid "cannot create program headers: %s"
msgstr "не вдалося створити заголовки програми: %s"
-#: src/unstrip.c:262
+#: src/unstrip.c:269
#, c-format
msgid "cannot copy program header: %s"
msgstr "не вдалося скопіювати заголовок програми: %s"
-#: src/unstrip.c:272
+#: src/unstrip.c:279
#, c-format
msgid "cannot copy section header: %s"
msgstr "не вдалося скопіювати заголовок розділу: %s"
-#: src/unstrip.c:275 src/unstrip.c:1501
+#: src/unstrip.c:282 src/unstrip.c:1509
#, c-format
msgid "cannot get section data: %s"
msgstr "не вдалося отримати дані розділу: %s"
-#: src/unstrip.c:277 src/unstrip.c:1503
+#: src/unstrip.c:284 src/unstrip.c:1511
#, c-format
msgid "cannot copy section data: %s"
msgstr "не вдалося скопіювати дані розділу: %s"
-#: src/unstrip.c:301
+#: src/unstrip.c:308
#, c-format
msgid "cannot create directory '%s'"
msgstr "не вдалося створити каталог «%s»"
-#: src/unstrip.c:341 src/unstrip.c:758 src/unstrip.c:1535
+#: src/unstrip.c:348 src/unstrip.c:765 src/unstrip.c:1543
#, c-format
msgid "cannot get symbol table entry: %s"
msgstr "не вдалося отримати запис таблиці символів: %s"
-#: src/unstrip.c:357 src/unstrip.c:575 src/unstrip.c:596 src/unstrip.c:608
-#: src/unstrip.c:1556 src/unstrip.c:1686 src/unstrip.c:1710
+#: src/unstrip.c:364 src/unstrip.c:582 src/unstrip.c:603 src/unstrip.c:615
+#: src/unstrip.c:1564 src/unstrip.c:1694 src/unstrip.c:1718
#, c-format
msgid "cannot update symbol table: %s"
msgstr "не вдалося оновити таблицю символів: %s"
-#: src/unstrip.c:367
+#: src/unstrip.c:374
#, c-format
msgid "cannot update section header: %s"
msgstr "не вдалося оновити заголовок розділу: %s"
-#: src/unstrip.c:406 src/unstrip.c:417
+#: src/unstrip.c:413 src/unstrip.c:424
#, c-format
msgid "cannot update relocation: %s"
msgstr "не вдалося оновити пересування: %s"
-#: src/unstrip.c:504
+#: src/unstrip.c:511
#, c-format
msgid "cannot get symbol version: %s"
msgstr "не вдалося отримати версію символу: %s"
-#: src/unstrip.c:516
+#: src/unstrip.c:523
#, c-format
msgid "unexpected section type in [%Zu] with sh_link to symtab"
msgstr "неочікуваний тип розділу у [%Zu] з посиланням sh_link на symtab"
-#: src/unstrip.c:764
+#: src/unstrip.c:771
#, c-format
msgid "invalid string offset in symbol [%Zu]"
msgstr "некоректне зміщення рядка у символі [%Zu]"
-#: src/unstrip.c:906 src/unstrip.c:1246
+#: src/unstrip.c:913 src/unstrip.c:1254
#, c-format
msgid "cannot read section [%Zu] name: %s"
msgstr "не вдалося прочитати назву розділу [%Zu]: %s"
-#: src/unstrip.c:947 src/unstrip.c:966 src/unstrip.c:999
+#: src/unstrip.c:954 src/unstrip.c:973 src/unstrip.c:1006
#, c-format
msgid "cannot read '.gnu.prelink_undo' section: %s"
msgstr "не вдалося прочитати розділ «.gnu.prelink_undo»: %s"
-#: src/unstrip.c:987
+#: src/unstrip.c:994
#, c-format
msgid "invalid contents in '%s' section"
msgstr "некоректний вміст розділу «%s»"
-#: src/unstrip.c:1042 src/unstrip.c:1366
+#: src/unstrip.c:1049 src/unstrip.c:1374
#, c-format
msgid "cannot find matching section for [%Zu] '%s'"
msgstr "не вдалося знайти відповідний розділ для [%Zu] «%s»"
-#: src/unstrip.c:1166 src/unstrip.c:1181 src/unstrip.c:1447
+#: src/unstrip.c:1174 src/unstrip.c:1189 src/unstrip.c:1455
#, c-format
msgid "cannot add section name to string table: %s"
msgstr "не вдалося додати назву розділу до таблиці рядків: %s"
-#: src/unstrip.c:1190
+#: src/unstrip.c:1198
#, c-format
msgid "cannot update section header string table data: %s"
msgstr "не вдалося оновити дані заголовка розділу у таблиці рядків: %s"
-#: src/unstrip.c:1217 src/unstrip.c:1221
+#: src/unstrip.c:1225 src/unstrip.c:1229
#, c-format
msgid "cannot get section header string table section index: %s"
msgstr ""
"не вдалося визначити індекс розділу заголовка розділу у таблиці рядків: %s"
-#: src/unstrip.c:1225 src/unstrip.c:1229 src/unstrip.c:1462
+#: src/unstrip.c:1233 src/unstrip.c:1237 src/unstrip.c:1470
#, c-format
msgid "cannot get section count: %s"
msgstr "не вдалося отримати кількість розділів: %s"
-#: src/unstrip.c:1232
+#: src/unstrip.c:1240
#, c-format
msgid "more sections in stripped file than debug file -- arguments reversed?"
msgstr ""
"у очищеному файлі більше розділів ніж у файлі з даними для зневаджування — "
"помилковий порядок параметрів?"
-#: src/unstrip.c:1291 src/unstrip.c:1381
+#: src/unstrip.c:1299 src/unstrip.c:1389
#, c-format
msgid "cannot read section header string table: %s"
msgstr "не вдалося прочитати таблицю рядків заголовка розділу: %s"
-#: src/unstrip.c:1441
+#: src/unstrip.c:1449
#, c-format
msgid "cannot add new section: %s"
msgstr "не вдалося додати новий розділ: %s"
-#: src/unstrip.c:1543
+#: src/unstrip.c:1551
#, c-format
msgid "symbol [%Zu] has invalid section index"
msgstr "символ [%Zu] має некоректний індекс розділу"
-#: src/unstrip.c:1781
+#: src/unstrip.c:1789
#, c-format
msgid "cannot read section data: %s"
msgstr "не вдалося прочитати дані розділу: %s"
-#: src/unstrip.c:1802
+#: src/unstrip.c:1810
#, c-format
msgid "cannot get ELF header: %s"
msgstr "не вдалося отримати заголовок ELF: %s"
-#: src/unstrip.c:1830
+#: src/unstrip.c:1838
#, c-format
msgid "cannot update program header: %s"
msgstr "не вдалося оновити заголовок програми: %s"
-#: src/unstrip.c:1835 src/unstrip.c:1914
+#: src/unstrip.c:1843 src/unstrip.c:1922
#, c-format
msgid "cannot write output file: %s"
msgstr "не вдалося записати файл виведених даних: %s"
-#: src/unstrip.c:1883
+#: src/unstrip.c:1891
#, c-format
msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
msgstr ""
"Дані DWARF не скориговано відповідно до відхилення перед компонуванням; "
"спробуйте виправити це командою prelink -u"
-#: src/unstrip.c:1886
+#: src/unstrip.c:1894
#, c-format
msgid ""
"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
"Дані DWARF у «%s» не скориговано відповідно до відхилення перед "
"компонуванням; спробуйте виправити це командою prelink -u"
-#: src/unstrip.c:1905 src/unstrip.c:1945 src/unstrip.c:1957 src/unstrip.c:2037
+#: src/unstrip.c:1913 src/unstrip.c:1964 src/unstrip.c:1976 src/unstrip.c:2062
#, c-format
msgid "cannot create ELF descriptor: %s"
msgstr "не вдалося створити дескриптор ELF: %s"
-#: src/unstrip.c:1963
-#, c-format
-msgid "'%s' and '%s' do not seem to match"
-msgstr "«%s» і «%s» не відповідають одне одному"
+#: src/unstrip.c:1955
+msgid "WARNING: "
+msgstr ""
+
+#: src/unstrip.c:1957
+msgid ", use --force"
+msgstr ""
+
+#: src/unstrip.c:1980
+msgid "ELF header identification (e_ident) different"
+msgstr ""
-#: src/unstrip.c:1994
+#: src/unstrip.c:1983
+msgid "ELF header type (e_type) different"
+msgstr ""
+
+#: src/unstrip.c:1986
+msgid "ELF header machine type (e_machine) different"
+msgstr ""
+
+#: src/unstrip.c:1989
+msgid "stripped program header (e_phnum) smaller than unstripped"
+msgstr ""
+
+#: src/unstrip.c:2019
#, c-format
msgid "cannot find stripped file for module '%s': %s"
msgstr "не вдалося знайти очищений файл для модуля «%s»: %s"
-#: src/unstrip.c:1998
+#: src/unstrip.c:2023
#, c-format
msgid "cannot open stripped file '%s' for module '%s': %s"
msgstr "не вдалося відкрити очищений файл «%s» для модуля «%s»: %s"
-#: src/unstrip.c:2013
+#: src/unstrip.c:2038
#, c-format
msgid "cannot find debug file for module '%s': %s"
msgstr "не вдалося знайти файл діагностичних даних для модуля «%s»: %s"
-#: src/unstrip.c:2017
+#: src/unstrip.c:2042
#, c-format
msgid "cannot open debug file '%s' for module '%s': %s"
msgstr "не вдалося відкрити файл діагностичних даних «%s» для модуля «%s»: %s"
-#: src/unstrip.c:2030
+#: src/unstrip.c:2055
#, c-format
msgid "module '%s' file '%s' is not stripped"
msgstr "у модулі «%s» файл «%s» не очищено strip"
-#: src/unstrip.c:2061
+#: src/unstrip.c:2086
#, c-format
msgid "cannot cache section addresses for module '%s': %s"
msgstr "не вдалося кешувати адреси розділів для модуля «%s»: %s"
-#: src/unstrip.c:2194
+#: src/unstrip.c:2219
#, c-format
msgid "no matching modules found"
msgstr "відповідних модулів не виявлено"
-#: src/unstrip.c:2203
+#: src/unstrip.c:2228
#, c-format
msgid "matched more than one module"
msgstr "встановлено відповідність декількох модулів"
-#: src/unstrip.c:2250
+#: src/unstrip.c:2275
msgid ""
"STRIPPED-FILE DEBUG-FILE\n"
"[MODULE...]"
"ОЧИЩЕНИЙ-ФАЙЛ ФАЙЛ-DEBUG\n"
"[МОДУЛЬ...]"
-#: src/unstrip.c:2251
+#: src/unstrip.c:2276
msgid ""
"Combine stripped files with separate symbols and debug information.\vThe "
"first form puts the result in DEBUG-FILE if -o was not given.\n"
"окремого файла діагностичних даних або «-», якщо файла діагностичних даних "
"не вдалося знайти, і «.», якщо ФАЙЛ сам містить діагностичні дані."
+#, fuzzy
+#~ msgid "cannot attach to process"
+#~ msgstr "не вдалося створити дерево пошуку"
+
+#, fuzzy
+#~ msgid "cannot attach to core"
+#~ msgstr "не вдалося створити дерево пошуку"
+
+#~ msgid "'%s' and '%s' do not seem to match"
+#~ msgstr "«%s» і «%s» не відповідають одне одному"
+
#~ msgid "unknown tag %hx"
#~ msgstr "невідомий теґ %hx"
+2014-08-25 Josh Stone <jistone@redhat.com>
+
+ * Makefile.am: Prevent premature @AR@ replacement in a sed expression.
+
+2014-07-04 Menanteau Guy <menantea@linux.vnet.ibm.com>
+ Mark Wielaard <mjw@redhat.com>
+
+ * elflint (check_symtab): Add ".TOC." to the list of possibly
+ dangling symbols because of sourceware PR13621.
+
+2014-06-14 Mark Wielaard <mjw@redhat.com>
+
+ * elflint (check_symtab): Use ebl_func_addr_mask on st_value.
+
+2014-05-27 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_debug): Skip section if name is NULL.
+
+2014-05-26 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (handle_relocs_rela): Print header like handle_relocs_rel
+ does, when sh_info == 0.
+
+2014-05-26 Mark Wielaard <mjw@redhat.com>
+
+ * unstrip.c (find_alloc_sections_prelink): Allow non-split .bss
+ section when sh_size of the original and undo .bss section are equal.
+
+2014-05-26 Mark Wielaard <mjw@redhat.com>
+
+ * unstrip.c (options): Add --force, -F.
+ (struct arg_info): Add bool force.
+ (parse_opt): Handle 'F', set force.
+ (handle_explicit_files): Add force argument, add warn function,
+ separate check ehdr field checks, use warn.
+ (handle_dwfl_module): Add force argument, pass on to
+ handle_explicit_files.
+ (handle_output_dir_module): Add force argument, pass on to
+ handle_dwfl_module.
+ (handle_implicit_modules): Pass info->force to handle_dwfl_module and
+ handle_output_dir_module.
+ (main): Pass info.force to handle_explicit_files.
+
+2014-05-19 Mark Wielaard <mjw@redhat.com>
+
+ * elflint.c (check_reloc_shdr): Check ebl_check_reloc_target_type.
+
+2014-05-01 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (find_no_debuginfo): Call dwfl_standard_find_debuginfo
+ if looking for alternate debug file.
+
+2014-04-11 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (AM_CPPFLAGS): Add -I libdwelf.
+
+2014-04-22 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (handle_core_item): Make sure variable length array
+ contains at least enough space for terminating zero char.
+
+2014-04-22 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_gdb_index_section): Use unsigned int for 31 bits
+ left shift.
+
+2014-03-13 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Remove no_mudflap.os. Remove libmudflap from all
+ LDADD lines.
+ * strings.c (process_chunk): Remove _MUDFLAP condition.
+
+2014-04-09 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_debug_aranges_section): Don't get the raw section
+ data, use the possibly decompressed .[z]debug sectiondata.
+ (print_debug_ranges_section): Likewise.
+ (print_debug_frame_section): Likewise.
+ (print_debug_line_section): Likewise.
+ (print_debug_loc_section): Likewise.
+ (print_debug_macinfo_section): Likewise.
+ (print_debug_macro_section): Likewise.
+
+2014-04-10 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (buf_read_ulong): Pass actual long size to convert.
+
+2014-03-05 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (attr_callback): Print DW_FORM_sdata values as signed
+ numbers.
+
+2014-02-24 Mark Wielaard <mjw@redhat.com>
+
+ * readelf (print_phdr): Check there is a SHT_PROGBITS section at the
+ offset given by p_offsets for a PT_INTERP segment before trying to
+ display the interpreter string.
+
+2014-02-07 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_phdr): Check phdr->p_filesz and make sure
+ interpreter string is zero terminated before calling printf.
+
+2014-01-22 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (nm_no_Wformat): Removed.
+ (size_no_Wformat): Likewise.
+ (strings_no_Wformat): Likewise.
+ (addr2line_no_Wformat): Likewise.
+ * size.c (show_sysv): Use fmtstr directly as literal in printf.
+ (show_sysv_one_line): Likewise.
+ * strings.c (locfmt): Removed.
+ (radix): New static enum.
+ (parse_opt): Set radix, not locfmt.
+ (process_chunk_mb): Use fmtstr directly as literal in printf based
+ on radix.
+ (process_chunk): Likewise.
+ * nm.c (show_symbols_sysv): Use fmtstr directly as literal in printf.
+ (show_symbols_bsd): Likewise.
+ (show_symbols_posix): Likewise.
+
+2014-01-21 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (show_inlines): New static boolean.
+ (print_frame): New function split out from...
+ (print_frames): ..here. If show_inlines is true and we found a
+ DIE for the frame address, call print_inline_frames otherwise
+ call print_frame. Keep track of and track frame_nr.
+ (print_inline_frames): New function.
+ (parse_opt): Handle '-i'.
+ (main): Add 'i' to options.
+
+2014-01-27 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (maxframes): Initialize to 256.
+ (main): Document new default in options. Document magic number
+ used in frames.allocated initialization.
+
+2014-01-20 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (show_debugname): New static boolean.
+ (die_name): New function.
+ (print_frames): If show_debugname is true set symname to the
+ first function-like DIE with a name in scope for the address in
+ the debuginfo.
+ (parse_opt): Handle '-d'.
+ (main): Add 'd' to options.
+
+2014-01-20 Mark Wielaard <mjw@redhat.com>
+
+ * addr2line.c (handle_address): Initialize scopes to NULL.
+
+2014-01-17 Roland McGrath <roland@redhat.com>
+
+ * strip.c (handle_elf): Check for bogus values in sh_link, sh_info,
+ st_shndx, e_shstrndx, and SHT_GROUP or SHT_SYMTAB_SHNDX data.
+ Don't use assert on input values, instead bail with "illformed" error.
+
+2014-01-17 Roland McGrath <roland@redhat.com>
+
+ * readelf.c (handle_dynamic, handle_symtab): Check for bogus sh_link.
+ (handle_verneed, handle_verdef, handle_versym, handle_hash): Likewise.
+ (handle_scngrp): Check for bogus sh_info.
+
+2014-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ * elflint.c (section_name): Return "<invalid>" instead of
+ crashing on invalid section name.
+ (check_symtab, is_rel_dyn, check_rela, check_rel, check_dynamic,
+ check_symtab_shndx, check_hash, check_versym): Robustify.
+ (check_hash): Don't check entries beyond end of section.
+ (check_note): Don't crash if gelf_rawchunk fails.
+
+2014-01-17 Petr Machata <pmachata@redhat.com>
+
+ * readelf.c (handle_dynamic, handle_relocs_rel)
+ (handle_relocs_rela, handle_versym, print_liblist):
+ Use gelf_fsize instead of relying on shdr->sh_entsize.
+
+2014-01-14 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_debug_macro_section): Clear vendor array before
+ use.
+
+2014-01-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix corruption of non-C++ symbols by the demangler.
+ * nm.c (show_symbols_sysv, show_symbols_bsd, show_symbols_posix)
+ (show_symbols): Check for _Z.
+ * stack.c (print_frames) <USE_DEMANGLE>: Check for _Z.
+
+2014-01-02 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (show_raw): Declare unconditionally.
+ (parse_opt): Handle '-r' unconditionally.
+ (main): Show "raw" option even without USE_DEMANGLE.
+
+2014-01-02 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (print_frames): Print 0x before build-id hex-offset.
+
+2014-01-02 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (maxframes): Increase to 2048.
+ (struct frames): Add allocated field.
+ (frame_callback): If frames used is frames allocated, realloc.
+ (print_frames): Show an error if maxframes has been reached.
+ (parse_opt): Allow -n 0 for unlimited frames.
+ (main): Document -n 0 and new default 2048 frames. Allocate initial
+ number of frames with malloc.
+
+2013-12-30 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (parse_opt): Explicitly call dwfl_linux_proc_attach
+ or dwfl_core_file_attach and check for errors.
+
+2013-12-28 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (print_frames): Remove address width code and use...
+ (get_addr_width): ...this new function.
+ (show_modules): New static boolean.
+ (module_callback): New static function.
+ (parse_opt): Handle '-l'.
+ (main): Add 'l' to options. If show_modules then use dwfl_getmodules
+ with module_callback to show all detected modules and possible
+ build_id, elf and dwarf files.
+
+2013-12-27 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (frames_shown): New static boolean.
+ (EXIT_OK,EXIT_ERROR,EXIT_BAD,EXIT_USAGES): New defines.
+ (frame_callback): Return -1 on error. Don't print error.
+ (print_frames): Add arguments, tid, dwflerr and what. Print tid.
+ If there was an error report it with address and module if possible.
+ Record whether any frames were actually printed.
+ (thread_callback): Collect tid and err, pass it to print_frames.
+ (parse_opt): Use EXIT_BAD for errors. On ARGP_KEY_END print errno
+ if dwfl_linux_proc_report returned it. Check whether we are properly
+ attached with dwfl_pid.
+ (main): Document exit status. Don't report DWARF_CB_ABORT from
+ callbacks as error. Pass real errors to print_frames. Return
+ EXIT_BAD if no frames could be shown. Return EXIT_ERROR if there
+ were any non-fatal errors.
+
+2013-12-23 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (stack_LDADD): Add demanglelib.
+ * stack.c (show_quiet): New static boolean, default false.
+ (show_raw): Likewise.
+ (demangle_buffer_len): New static size_t.
+ (demangle_buffer): New static char *.
+ (print_frames): Don't resolve pc name if show_quiet. Demangle name
+ unless show_raw.
+ (parse_opt): Handle '-q' and '-r'.
+ (main): Add 'q' and 'r' to options. Free demangle_buffer.
+
+2013-12-23 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (OPT_DEBUGINFO): New define.
+ (OPT_COREFILE): Likewise.
+ (pid): New static.
+ (core_fd): Likewise.
+ (core): Likewise.
+ (exec): Likewise.
+ (debuginfo_path): Likewise.
+ (parse_opt): Handle '-p', '--core', '-e' and '--debuginfo-path'.
+ Do argument sanity checking. Setup Dwfl.
+ (main): Add 'p', 'core', 'e' and 'debuginfo-path' to options.
+ Remove argp_child children, simplify argp doc, remove custom
+ usage message and construction of dwfl with dwfl_standard_argp.
+ Use pid directly as tid. close core and core_fd if opened. Print
+ pid of process or core.
+
+2013-12-23 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (show_build_id): New static boolean.
+ (print_frames): Print module build-id, load address and pc offset
+ if show_build_id is true.
+ (parse_opt): Handle '-b'.
+ (main): Add -b to options.
+
+2013-12-22 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (maxframes): New static unsigned. Initialize to 64.
+ (struct frame): New struct.
+ (struct frames): Likewise.
+ (dwfl): New static Dwfl pointer.
+ (frame_callback): Use arg as struct frames and fill it next frame.
+ Return DWARF_CB_ABORT when maxframes has been reached. Move
+ printing of frame to...
+ (print_frames): ...here. New function.
+ (thread_callback): Use arg as struct frames and set frames to zero.
+ Call print_frames.
+ (parse_opt): Handle '-n'.
+ (main): Add -n to options. Allocate frames using maxframes. Pass
+ frames to frame_callback and thread_callback.
+
+2013-12-20 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (show_one_tid): New static boolean.
+ (parse_opt): Handle '-1'.
+ (main): Add -1 to options. Call dwfl_getthread_frames when
+ show_one_tid is true.
+
+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-12-17 Masatake YAMATO <yamato@redhat.com>
+ Mark Wielaard <mjw@redhat.com>
+
+ * stack.c (show_activation, show_module, show_source): New variables.
+ (parse_opt): Set show_activation if -a option is given.
+ Set show_module if -m option is given. Set show_source if -s option
+ is given. Set all show booleans when -v option is given.
+ (main): Added `-a', `-m', `-s', and `-v' to the help message.
+ (frame_callback): Print module and source file information.
+
+2013-11-25 Petr Machata <pmachata@redhat.com>
+
+ * elflint.c (valid_e_machine): Add EM_AARCH64.
+
+2013-11-14 Petr Machata <pmachata@redhat.com>
+
+ * readelf.c (handle_core_item) <'h'>: New branch for handling
+ fields that shouldn't be displayed.
+
+2013-11-10 Mark Wielaard <mjw@redhat.com>
+
+ * stack.c: Use ARGP_PROGRAM_VERSION_HOOK_DEF and
+ ARGP_PROGRAM_BUG_ADDRESS_DEF.
+ (print_version): New function.
+
+2013-11-09 Mark Wielaard <mjw@redhat.com>
+
+ * arlib.c (arlib_init): Call snprintf before using the result
+ with memcpy.
+ (arlib_finalize): Likewise.
+ * nm.c (show_symbols_sysv): Don't modify cnt inside assert.
+
+2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * Makefile.am (bin_PROGRAMS): Add stack.
+ (stack_LDADD): New.
+ * stack.c: New file.
+
+2013-11-05 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_debug_ranges_section): Cast address to size_t
+ before comparison.
+ (print_debug_loc_section): Likewise.
+
+2013-10-18 Mark Wielaard <mjw@redhat.com>
+
+ * ar.c (main): Correct operation check when instance_specifed is set.
+
+2013-09-26 Petr Machata <pmachata@redhat.com>
+
+ * readelf.c (handle_file_note): New function.
+ (handle_notes_data): Call it to handle NT_FILE notes.
+
+2013-09-26 Petr Machata <pmachata@redhat.com>
+
+ * readelf.c (handle_siginfo_note): New function.
+ (handle_notes_data): Call it to handle NT_SIGINFO notes.
+ (buf_read_int, buf_read_ulong, buf_has_data): New functions.
+
+2013-08-13 Mark Wielaard <mjw@redhat.com>
+
+ * addr2line.c (options): Add "inlines", 'i'.
+ (show_inlines): New bool.
+ (parse_opt): Handle 'i'.
+ (print_diesym): New static function.
+ (print_src): New function taking code from...
+ (handle_address): here. Call print_src. Print inlines.
+
+2013-08-12 Mark Wielaard <mjw@redhat.com>
+
+ * addr2line.c (main): If there is a newline char at end of buf,
+ then remove it.
+
+2013-07-05 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_ops): Take CU as argument, use it to print
+ parameter_ref DIE offset.
+ (struct listptr): Replace base field with cu.
+ (listptr_base): New function.
+ (compare_listptr): Use listptr_base.
+ (notice_listptr): Take CU as argument.
+ (skip_listptr_hole): Likewise.
+ (print_debug_ranges_section): Pass NULL as CU to skip_listptr_hole.
+ (print_cfa_program): Pass NULL as CU to print_ops.
+ (struct attrcb_args): Replace cu_base field with cu.
+ (attr_callback): Pass cu not cu_base to notice_listptr.
+ (print_debug_units): Don't calculate base, just set cu.
+ (print_debug_loc_section): Pass cu to skip_listptr_hole and
+ print_ops.
+
+2013-05-06 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_ops): Format first DW_OP_GNU_implicit_pointer
+ argument as DIE offset.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2013-03-25 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (argp_options): Add decodedline.
+ (decodedline): New boolean initialized to false.
+ (parse_opt): Set decodedline when arg is decodedline.
+ (print_decoded_line_section): New function.
+ (print_debug_line_section): Call print_decoded_line_section when
+ decodedline is true.
+
+2013-03-25 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (argp_option): Add decodedaranges.
+ (decodedaranges): New boolean initialized to false.
+ (parse_opt): Set decodedaranges when arg is decodedaranges.
+ (print_debug_aranges_section): Reimplemented and original
+ implementation renamed to...
+ (print_decoded_aranges_section): this.
+
+2013-03-25 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (attrcb_args): Add Dwarf_Die.
+ (attr_callback): When highpc is in constant form also print as
+ address.
+ (print_debug_units): Set args.die.
+
+2013-03-19 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_gdb_index_section): Free format_dwarf_addr results.
+
+2013-03-18 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_gdb_index_section): Accept version 8.
+
+2013-03-01 Mark Wielaard <mjw@redhat.com>
+
+ * findtextrel.c (process_file): Release ELF and close file when not
+ text relocations are found.
+ * strip.c (handle_elf): Track memory used for .debuglink section data
+ and free when done.
+
+2013-02-24 Mark Wielaard <mjw@redhat.com>
+
+ * elflint.c (check_symtab): Add __bss_start__ to the list of symbols
+ allowed to have out of section values because of GNU ld bugs.
+
+2013-02-06 Mark Wielaard <mjw@redhat.com>
+
+ * elflint.c (check_symtab): Add __bss_start and __TMC_END__ to the
+ list of symbols allowed to have out of section values because of
+ GNU ld bugs in either .symtab or .dynsym, but only when they are
+ zero sized.
+
+2013-01-24 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (argp_option): Add unresolved-address-offsets, U.
+ (print_unresolved_addresses): New static.
+ (parse_opt): Handle 'U', set print_unprocessed_values.
+ (format_dwarf_addr): Take and handle new raw argument.
+ (print_ops): Call format_dwarf_addr with raw offset values.
+ (print_debug_ranges_section): Likewise.
+ (print_debug_frame_section): Likewise.
+ (attr_callback): Likewise.
+ (print_debug_line_section): Likewise.
+ (print_debug_loc_section): Likewise.
+ (print_gdb_index_section): Likewise.
+
+2013-01-18 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (struct listptr): Add base Dwarf_Addr field.
+ (compare_listptr): Warn for same offset with different base.
+ (notice_listptr): Take base argument and set it.
+ (skip_listptr_hole): Likewise.
+ (struct attrcb_args): Removed unused cu_offset field.
+ Add cu_base Dwarf_Addr field.
+ (attr_callback): Call notice_listptr with cbargs->cu_base.
+ (print_debug_units): Set args.cu_base.
+ (print_debug_ranges_section): Get base and use for format_dwarf_addr.
+ (print_debug_loc_section): Likewise.
+
+2013-01-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * readelf.c (handle_core_items): Limit special repeated items handling
+ to single-item formats '\n', 'b' and 'B', assert OFFSET 0 there.
+
+2012-12-18 Mark Wielaard <mark@bordewijk.wildebeest.org>
+
+ * readelf.c (ELF_INPUT_SECTION): New argp key value.
+ (argp_option): Add elf-section.
+ (elf_input_section): New static.
+ (parse_opt): Handle ELF_INPUT_SECTION and set elf_input_section.
+ (open_input_section): New function.
+ (process_file): Call open_input_section if elf_input_section set.
+
+2013-01-13 David Abdurachmanov <David.Abdurachmanov@cern.ch>
+
+ ar.c (do_oper_delete): Fix num passed to memset.
+
+2012-12-21 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_debug_frame_section): Adjust FDE start address
+ if pcrel before feeding it to format_dwarf_addr.
+
+2012-12-21 Mark Wielaard <mjw@redhat.com>
+
+ * addr2line.c (main): Call dwfl_end.
+
+2012-12-11 Roland McGrath <roland@hack.frob.com>
+
+ * nm.c (show_symbols_sysv): Fix size passed to snprintf for invalid
+ sh_name case.
+ Reported by David Abdurachmanov <David.Abdurachmanov@cern.ch>.
+
+2012-10-16 Mark Wielaard <mjw@redhat.com>
+
+ * readelf.c (print_ops): DW_OP_skip and DW_OP_bra targets are
+ calculated beginning after the operand and 2-byte constant.
+
+2012-10-12 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * readelf.c (ITEM_WRAP_COLUMN, REGISTER_WRAP_COLUMN): Merge to ...
+ (WRAP_COLUMN): ... here.
+ (print_core_item): Remove parameter format_max. Update function
+ comment. Replace FORMAT_MAX by the real output width.
+ (handle_core_item): Remove the FORMAT_MAX values in TYPES, DO_TYPE,
+ calls of print_core_item, remove variable maxfmt, change
+ ITEM_WRAP_COLUMN to WRAP_COLUMN.
+ (handle_core_register): Remove the FORMAT_MAX values in TYPES, BITS,
+ calls of print_core_item, change REGISTER_WRAP_COLUMN to WRAP_COLUMN.
+
+2012-10-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * readelf.c (handle_core_item) <b>: Make run an outer block variable.
+ Increase run only if LASTBIT != 0. Print last element only if RUN > 0.
+
2012-08-27 Mark Wielaard <mjw@redhat.com>
* readelf.c (print_debug_macro_section): Print offset as PRIx64.
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 1996-2012 Red Hat, Inc.
+## Copyright (C) 1996-2014 Red Hat, Inc.
## This file is part of elfutils.
##
## This file is free software; you can redistribute it and/or modify
include $(top_srcdir)/config/eu.am
DEFS += $(YYDEBUG) -DDEBUGPRED=@DEBUGPRED@ \
-DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\"
-INCLUDES += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
- -I$(srcdir)/../libdw -I$(srcdir)/../libdwfl \
- -I$(srcdir)/../libasm
+AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
+ -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf \
+ -I$(srcdir)/../libdwfl -I$(srcdir)/../libasm
AM_LDFLAGS = -Wl,-rpath-link,../libelf:../libdw
-no_mudflap.os = -fmudflap
-
YACC = @YACC@ -d
AM_YFLAGS = -pld
AM_LFLAGS = -Pld -olex.yy.c
base_cpu = @base_cpu@
bin_PROGRAMS = readelf nm size strip ld elflint findtextrel addr2line \
- elfcmp objdump ranlib strings ar unstrip
+ elfcmp objdump ranlib strings ar unstrip stack
ld_dsos = libld_elf_i386_pic.a
demanglelib = -lstdc++
endif
-nm_no_Wformat = yes
-size_no_Wformat = yes
-strings_no_Wformat = yes
-addr2line_no_Wformat = yes
# XXX While the file is not finished, don't warn about this
ldgeneric_no_Wunused = yes
-readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
+readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl
+nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl \
$(demanglelib)
-size_LDADD = $(libelf) $(libeu) $(libmudflap)
-strip_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-ld_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
+size_LDADD = $(libelf) $(libeu)
+strip_LDADD = $(libebl) $(libelf) $(libeu) -ldl
+ld_LDADD = $(libebl) $(libelf) $(libeu) -ldl
if NATIVE_LD
# -ldl is always needed for libebl.
ld_LDADD += libld_elf.a
endif
ld_LDFLAGS = -rdynamic
-elflint_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-findtextrel_LDADD = $(libdw) $(libelf) $(libmudflap)
-addr2line_LDADD = $(libdw) $(libelf) $(libmudflap)
-elfcmp_LDADD = $(libebl) $(libelf) $(libmudflap) -ldl
-objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-ranlib_LDADD = libar.a $(libelf) $(libeu) $(libmudflap)
-strings_LDADD = $(libelf) $(libeu) $(libmudflap)
-ar_LDADD = libar.a $(libelf) $(libeu) $(libmudflap)
-unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(libmudflap) -ldl
+elflint_LDADD = $(libebl) $(libelf) $(libeu) -ldl
+findtextrel_LDADD = $(libdw) $(libelf)
+addr2line_LDADD = $(libdw) $(libelf)
+elfcmp_LDADD = $(libebl) $(libelf) -ldl
+objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) -ldl
+ranlib_LDADD = libar.a $(libelf) $(libeu)
+strings_LDADD = $(libelf) $(libeu)
+ar_LDADD = libar.a $(libelf) $(libeu)
+unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) -ldl
+stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) -ldl $(demanglelib)
ldlex.o: ldscript.c
ldlex_no_Werror = yes
make-debug-archive: $(srcdir)/make-debug-archive.in
UNSTRIP=$(bindir)/`echo unstrip | sed '$(transform)'`; \
AR=$(bindir)/`echo ar | sed '$(transform)'`; \
- sed -e "s,@UNSTRIP@,$$UNSTRIP,g" -e "s,@AR@,$$AR,g" \
+ sed -e "s,[@]UNSTRIP[@],$$UNSTRIP,g" -e "s,[@]AR[@],$$AR,g" \
-e "s%[@]PACKAGE_NAME[@]%$(PACKAGE_NAME)%g" \
-e "s%[@]PACKAGE_VERSION[@]%$(PACKAGE_VERSION)%g" \
$(srcdir)/make-debug-archive.in > $@.new
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/config/eu.am ChangeLog \
- ldlex.c ldscript.c
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am ldlex.c ldscript.c \
+ $(top_srcdir)/config/depcomp $(top_srcdir)/config/ylwrap \
+ $(noinst_HEADERS) ChangeLog
bin_PROGRAMS = readelf$(EXEEXT) nm$(EXEEXT) size$(EXEEXT) \
strip$(EXEEXT) ld$(EXEEXT) elflint$(EXEEXT) \
findtextrel$(EXEEXT) addr2line$(EXEEXT) elfcmp$(EXEEXT) \
objdump$(EXEEXT) ranlib$(EXEEXT) strings$(EXEEXT) ar$(EXEEXT) \
- unstrip$(EXEEXT)
+ unstrip$(EXEEXT) stack$(EXEEXT)
@NATIVE_LD_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1)
# We never build this library but we need to get the dependency files
# of all the linker backends that might be used in a non-generic linker.
-@NEVER_TRUE@am__append_2 = libdummy.a
+@NEVER_TRUE@am__append_1 = libdummy.a
# -ldl is always needed for libebl.
-@NATIVE_LD_TRUE@am__append_3 = libld_elf.a
+@NATIVE_LD_TRUE@am__append_2 = libld_elf.a
@NATIVE_LD_TRUE@am_libld_elf_i386_pic_a_OBJECTS =
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
libar_a_AR = $(AR) $(ARFLAGS)
libar_a_LIBADD =
am_libar_a_OBJECTS = arlib.$(OBJEXT) arlib2.$(OBJEXT) \
@BUILD_STATIC_FALSE@am__DEPENDENCIES_2 = ../libdw/libdw.so
@BUILD_STATIC_TRUE@am__DEPENDENCIES_2 = ../libdw/libdw.a \
@BUILD_STATIC_TRUE@ $(am__DEPENDENCIES_1) $(libelf) $(libebl)
-addr2line_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libelf) \
- $(am__DEPENDENCIES_1)
+addr2line_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libelf)
ar_SOURCES = ar.c
ar_OBJECTS = ar.$(OBJEXT)
-ar_DEPENDENCIES = libar.a $(libelf) $(libeu) $(am__DEPENDENCIES_1)
+ar_DEPENDENCIES = libar.a $(libelf) $(libeu)
elfcmp_SOURCES = elfcmp.c
elfcmp_OBJECTS = elfcmp.$(OBJEXT)
-elfcmp_DEPENDENCIES = $(libebl) $(libelf) $(am__DEPENDENCIES_1)
+elfcmp_DEPENDENCIES = $(libebl) $(libelf)
elflint_SOURCES = elflint.c
elflint_OBJECTS = elflint.$(OBJEXT)
-elflint_DEPENDENCIES = $(libebl) $(libelf) $(libeu) \
- $(am__DEPENDENCIES_1)
+elflint_DEPENDENCIES = $(libebl) $(libelf) $(libeu)
findtextrel_SOURCES = findtextrel.c
findtextrel_OBJECTS = findtextrel.$(OBJEXT)
-findtextrel_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libelf) \
- $(am__DEPENDENCIES_1)
+findtextrel_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libelf)
am_ld_OBJECTS = ld.$(OBJEXT) ldgeneric.$(OBJEXT) ldlex.$(OBJEXT) \
ldscript.$(OBJEXT) symbolhash.$(OBJEXT) sectionhash.$(OBJEXT) \
versionhash.$(OBJEXT)
ld_OBJECTS = $(am_ld_OBJECTS)
-ld_DEPENDENCIES = $(libebl) $(libelf) $(libeu) $(am__DEPENDENCIES_1) \
- $(am__append_3)
+ld_DEPENDENCIES = $(libebl) $(libelf) $(libeu) $(am__append_2)
ld_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ld_LDFLAGS) $(LDFLAGS) -o \
$@
am_libld_elf_i386_so_OBJECTS =
nm_SOURCES = nm.c
nm_OBJECTS = nm.$(OBJEXT)
nm_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libebl) $(libelf) $(libeu) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1)
objdump_SOURCES = objdump.c
objdump_OBJECTS = objdump.$(OBJEXT)
-objdump_DEPENDENCIES = $(libasm) $(libebl) $(libelf) $(libeu) \
- $(am__DEPENDENCIES_1)
+objdump_DEPENDENCIES = $(libasm) $(libebl) $(libelf) $(libeu)
ranlib_SOURCES = ranlib.c
ranlib_OBJECTS = ranlib.$(OBJEXT)
-ranlib_DEPENDENCIES = libar.a $(libelf) $(libeu) $(am__DEPENDENCIES_1)
+ranlib_DEPENDENCIES = libar.a $(libelf) $(libeu)
readelf_SOURCES = readelf.c
readelf_OBJECTS = readelf.$(OBJEXT)
readelf_DEPENDENCIES = $(am__DEPENDENCIES_2) $(libebl) $(libelf) \
- $(libeu) $(am__DEPENDENCIES_1)
+ $(libeu)
size_SOURCES = size.c
size_OBJECTS = size.$(OBJEXT)
-size_DEPENDENCIES = $(libelf) $(libeu) $(am__DEPENDENCIES_1)
+size_DEPENDENCIES = $(libelf) $(libeu)
+stack_SOURCES = stack.c
+stack_OBJECTS = stack.$(OBJEXT)
+stack_DEPENDENCIES = $(libebl) $(libelf) $(am__DEPENDENCIES_2) \
+ $(libeu) $(am__DEPENDENCIES_1)
strings_SOURCES = strings.c
strings_OBJECTS = strings.$(OBJEXT)
-strings_DEPENDENCIES = $(libelf) $(libeu) $(am__DEPENDENCIES_1)
+strings_DEPENDENCIES = $(libelf) $(libeu)
strip_SOURCES = strip.c
strip_OBJECTS = strip.$(OBJEXT)
-strip_DEPENDENCIES = $(libebl) $(libelf) $(libeu) \
- $(am__DEPENDENCIES_1)
+strip_DEPENDENCIES = $(libebl) $(libelf) $(libeu)
unstrip_SOURCES = unstrip.c
unstrip_OBJECTS = unstrip.$(OBJEXT)
unstrip_DEPENDENCIES = $(libebl) $(libelf) $(am__DEPENDENCIES_2) \
- $(libeu) $(am__DEPENDENCIES_1)
+ $(libeu)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
+AM_V_LEX = $(am__v_LEX_@AM_V@)
+am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
+am__v_LEX_0 = @echo " LEX " $@;
+am__v_LEX_1 =
YLWRAP = $(top_srcdir)/config/ylwrap
@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+ -e s/c++$$/h++/ -e s/c$$/h/
YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+AM_V_YACC = $(am__v_YACC_@AM_V@)
+am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
+am__v_YACC_0 = @echo " YACC " $@;
+am__v_YACC_1 =
SOURCES = $(libar_a_SOURCES) $(libdummy_a_SOURCES) \
$(libld_elf_a_SOURCES) $(libld_elf_i386_pic_a_SOURCES) \
addr2line.c ar.c elfcmp.c elflint.c findtextrel.c \
$(ld_SOURCES) $(libld_elf_i386_so_SOURCES) nm.c objdump.c \
- ranlib.c readelf.c size.c strings.c strip.c unstrip.c
+ ranlib.c readelf.c size.c stack.c strings.c strip.c unstrip.c
DIST_SOURCES = $(libar_a_SOURCES) $(am__libdummy_a_SOURCES_DIST) \
$(am__libld_elf_a_SOURCES_DIST) \
$(libld_elf_i386_pic_a_SOURCES) addr2line.c ar.c elfcmp.c \
elflint.c findtextrel.c $(ld_SOURCES) \
$(libld_elf_i386_so_SOURCES) nm.c objdump.c ranlib.c readelf.c \
- size.c strings.c strip.c unstrip.c
+ size.c stack.c strings.c strip.c unstrip.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
HEADERS = $(noinst_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf -I$(srcdir)/../libebl \
- -I$(srcdir)/../libdw -I$(srcdir)/../libdwfl \
- -I$(srcdir)/../libasm
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
- $($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1)
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
-
+ -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf \
+ -I$(srcdir)/../libdwfl -I$(srcdir)/../libasm
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ $(if $($(*F)_no_Werror),,-Werror) \
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+ $($(*F)_CFLAGS)
+
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda make-debug-archive none_ld.os \
$(ld_modules:.c=.os) *.gconv
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
AM_LDFLAGS = -Wl,-rpath-link,../libelf:../libdw
-no_mudflap.os = -fmudflap
AM_YFLAGS = -pld
AM_LFLAGS = -Pld -olex.yy.c
native_ld = @native_ld@
ld_dsos = libld_elf_i386_pic.a
@NATIVE_LD_FALSE@noinst_LIBRARIES = libld_elf.a libar.a $(ld_dsos) \
-@NATIVE_LD_FALSE@ $(am__append_2)
-@NATIVE_LD_TRUE@noinst_LIBRARIES = libld_elf.a libar.a $(am__append_2)
+@NATIVE_LD_FALSE@ $(am__append_1)
+@NATIVE_LD_TRUE@noinst_LIBRARIES = libld_elf.a libar.a $(am__append_1)
@NATIVE_LD_TRUE@native_ld_cflags = -DBASE_ELF_NAME=elf_$(base_cpu)
@NEVER_TRUE@libdummy_a_SOURCES = i386_ld.c
ld_SOURCES = ld.c ldgeneric.c ldlex.l ldscript.y symbolhash.c sectionhash.c \
libebl = ../libebl/libebl.a
libeu = ../lib/libeu.a
@DEMANGLE_TRUE@demanglelib = -lstdc++
-nm_no_Wformat = yes
-size_no_Wformat = yes
-strings_no_Wformat = yes
-addr2line_no_Wformat = yes
+
# XXX While the file is not finished, don't warn about this
ldgeneric_no_Wunused = yes
-readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
+readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl
+nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl \
$(demanglelib)
-size_LDADD = $(libelf) $(libeu) $(libmudflap)
-strip_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-ld_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
- $(am__append_3)
+size_LDADD = $(libelf) $(libeu)
+strip_LDADD = $(libebl) $(libelf) $(libeu) -ldl
+ld_LDADD = $(libebl) $(libelf) $(libeu) -ldl $(am__append_2)
ld_LDFLAGS = -rdynamic
-elflint_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-findtextrel_LDADD = $(libdw) $(libelf) $(libmudflap)
-addr2line_LDADD = $(libdw) $(libelf) $(libmudflap)
-elfcmp_LDADD = $(libebl) $(libelf) $(libmudflap) -ldl
-objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
-ranlib_LDADD = libar.a $(libelf) $(libeu) $(libmudflap)
-strings_LDADD = $(libelf) $(libeu) $(libmudflap)
-ar_LDADD = libar.a $(libelf) $(libeu) $(libmudflap)
-unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(libmudflap) -ldl
+elflint_LDADD = $(libebl) $(libelf) $(libeu) -ldl
+findtextrel_LDADD = $(libdw) $(libelf)
+addr2line_LDADD = $(libdw) $(libelf)
+elfcmp_LDADD = $(libebl) $(libelf) -ldl
+objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) -ldl
+ranlib_LDADD = libar.a $(libelf) $(libeu)
+strings_LDADD = $(libelf) $(libeu)
+ar_LDADD = libar.a $(libelf) $(libeu)
+unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) -ldl
+stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) -ldl $(demanglelib)
ldlex_no_Werror = yes
# Machine-specific linker code.
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
libar.a: $(libar_a_OBJECTS) $(libar_a_DEPENDENCIES) $(EXTRA_libar_a_DEPENDENCIES)
- -rm -f libar.a
- $(libar_a_AR) libar.a $(libar_a_OBJECTS) $(libar_a_LIBADD)
- $(RANLIB) libar.a
+ $(AM_V_at)-rm -f libar.a
+ $(AM_V_AR)$(libar_a_AR) libar.a $(libar_a_OBJECTS) $(libar_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libar.a
+
libdummy.a: $(libdummy_a_OBJECTS) $(libdummy_a_DEPENDENCIES) $(EXTRA_libdummy_a_DEPENDENCIES)
- -rm -f libdummy.a
- $(libdummy_a_AR) libdummy.a $(libdummy_a_OBJECTS) $(libdummy_a_LIBADD)
- $(RANLIB) libdummy.a
+ $(AM_V_at)-rm -f libdummy.a
+ $(AM_V_AR)$(libdummy_a_AR) libdummy.a $(libdummy_a_OBJECTS) $(libdummy_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libdummy.a
+
libld_elf.a: $(libld_elf_a_OBJECTS) $(libld_elf_a_DEPENDENCIES) $(EXTRA_libld_elf_a_DEPENDENCIES)
- -rm -f libld_elf.a
- $(libld_elf_a_AR) libld_elf.a $(libld_elf_a_OBJECTS) $(libld_elf_a_LIBADD)
- $(RANLIB) libld_elf.a
+ $(AM_V_at)-rm -f libld_elf.a
+ $(AM_V_AR)$(libld_elf_a_AR) libld_elf.a $(libld_elf_a_OBJECTS) $(libld_elf_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libld_elf.a
+
libld_elf_i386_pic.a: $(libld_elf_i386_pic_a_OBJECTS) $(libld_elf_i386_pic_a_DEPENDENCIES) $(EXTRA_libld_elf_i386_pic_a_DEPENDENCIES)
- -rm -f libld_elf_i386_pic.a
- $(libld_elf_i386_pic_a_AR) libld_elf_i386_pic.a $(libld_elf_i386_pic_a_OBJECTS) $(libld_elf_i386_pic_a_LIBADD)
- $(RANLIB) libld_elf_i386_pic.a
+ $(AM_V_at)-rm -f libld_elf_i386_pic.a
+ $(AM_V_AR)$(libld_elf_i386_pic_a_AR) libld_elf_i386_pic.a $(libld_elf_i386_pic_a_OBJECTS) $(libld_elf_i386_pic_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libld_elf_i386_pic.a
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p; \
- then echo "$$p"; echo "$$p"; else :; fi; \
+ while read p p1; do if test -f $$p \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
addr2line$(EXEEXT): $(addr2line_OBJECTS) $(addr2line_DEPENDENCIES) $(EXTRA_addr2line_DEPENDENCIES)
@rm -f addr2line$(EXEEXT)
- $(LINK) $(addr2line_OBJECTS) $(addr2line_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(addr2line_OBJECTS) $(addr2line_LDADD) $(LIBS)
+
ar$(EXEEXT): $(ar_OBJECTS) $(ar_DEPENDENCIES) $(EXTRA_ar_DEPENDENCIES)
@rm -f ar$(EXEEXT)
- $(LINK) $(ar_OBJECTS) $(ar_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(ar_OBJECTS) $(ar_LDADD) $(LIBS)
+
elfcmp$(EXEEXT): $(elfcmp_OBJECTS) $(elfcmp_DEPENDENCIES) $(EXTRA_elfcmp_DEPENDENCIES)
@rm -f elfcmp$(EXEEXT)
- $(LINK) $(elfcmp_OBJECTS) $(elfcmp_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(elfcmp_OBJECTS) $(elfcmp_LDADD) $(LIBS)
+
elflint$(EXEEXT): $(elflint_OBJECTS) $(elflint_DEPENDENCIES) $(EXTRA_elflint_DEPENDENCIES)
@rm -f elflint$(EXEEXT)
- $(LINK) $(elflint_OBJECTS) $(elflint_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(elflint_OBJECTS) $(elflint_LDADD) $(LIBS)
+
findtextrel$(EXEEXT): $(findtextrel_OBJECTS) $(findtextrel_DEPENDENCIES) $(EXTRA_findtextrel_DEPENDENCIES)
@rm -f findtextrel$(EXEEXT)
- $(LINK) $(findtextrel_OBJECTS) $(findtextrel_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(findtextrel_OBJECTS) $(findtextrel_LDADD) $(LIBS)
+
ld$(EXEEXT): $(ld_OBJECTS) $(ld_DEPENDENCIES) $(EXTRA_ld_DEPENDENCIES)
@rm -f ld$(EXEEXT)
- $(ld_LINK) $(ld_OBJECTS) $(ld_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(ld_LINK) $(ld_OBJECTS) $(ld_LDADD) $(LIBS)
+
@NATIVE_LD_TRUE@libld_elf_i386.so$(EXEEXT): $(libld_elf_i386_so_OBJECTS) $(libld_elf_i386_so_DEPENDENCIES) $(EXTRA_libld_elf_i386_so_DEPENDENCIES)
@NATIVE_LD_TRUE@ @rm -f libld_elf_i386.so$(EXEEXT)
-@NATIVE_LD_TRUE@ $(LINK) $(libld_elf_i386_so_OBJECTS) $(libld_elf_i386_so_LDADD) $(LIBS)
+@NATIVE_LD_TRUE@ $(AM_V_CCLD)$(LINK) $(libld_elf_i386_so_OBJECTS) $(libld_elf_i386_so_LDADD) $(LIBS)
+
nm$(EXEEXT): $(nm_OBJECTS) $(nm_DEPENDENCIES) $(EXTRA_nm_DEPENDENCIES)
@rm -f nm$(EXEEXT)
- $(LINK) $(nm_OBJECTS) $(nm_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(nm_OBJECTS) $(nm_LDADD) $(LIBS)
+
objdump$(EXEEXT): $(objdump_OBJECTS) $(objdump_DEPENDENCIES) $(EXTRA_objdump_DEPENDENCIES)
@rm -f objdump$(EXEEXT)
- $(LINK) $(objdump_OBJECTS) $(objdump_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(objdump_OBJECTS) $(objdump_LDADD) $(LIBS)
+
ranlib$(EXEEXT): $(ranlib_OBJECTS) $(ranlib_DEPENDENCIES) $(EXTRA_ranlib_DEPENDENCIES)
@rm -f ranlib$(EXEEXT)
- $(LINK) $(ranlib_OBJECTS) $(ranlib_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(ranlib_OBJECTS) $(ranlib_LDADD) $(LIBS)
+
readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES) $(EXTRA_readelf_DEPENDENCIES)
@rm -f readelf$(EXEEXT)
- $(LINK) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS)
+
size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) $(EXTRA_size_DEPENDENCIES)
@rm -f size$(EXEEXT)
- $(LINK) $(size_OBJECTS) $(size_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(size_OBJECTS) $(size_LDADD) $(LIBS)
+
+stack$(EXEEXT): $(stack_OBJECTS) $(stack_DEPENDENCIES) $(EXTRA_stack_DEPENDENCIES)
+ @rm -f stack$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(stack_OBJECTS) $(stack_LDADD) $(LIBS)
+
strings$(EXEEXT): $(strings_OBJECTS) $(strings_DEPENDENCIES) $(EXTRA_strings_DEPENDENCIES)
@rm -f strings$(EXEEXT)
- $(LINK) $(strings_OBJECTS) $(strings_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(strings_OBJECTS) $(strings_LDADD) $(LIBS)
+
strip$(EXEEXT): $(strip_OBJECTS) $(strip_DEPENDENCIES) $(EXTRA_strip_DEPENDENCIES)
@rm -f strip$(EXEEXT)
- $(LINK) $(strip_OBJECTS) $(strip_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(strip_OBJECTS) $(strip_LDADD) $(LIBS)
+
unstrip$(EXEEXT): $(unstrip_OBJECTS) $(unstrip_DEPENDENCIES) $(EXTRA_unstrip_DEPENDENCIES)
@rm -f unstrip$(EXEEXT)
- $(LINK) $(unstrip_OBJECTS) $(unstrip_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(unstrip_OBJECTS) $(unstrip_LDADD) $(LIBS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readelf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sectionhash.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strings.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symbolhash.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/versionhash.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.l.c:
- $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+ $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
.y.c:
- $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \
- distclean distclean-compile distclean-generic distclean-tags \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-binPROGRAMS install-binSCRIPTS install-data \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+ clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-binSCRIPTS install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
installcheck-am installcheck-binPROGRAMS \
installcheck-binSCRIPTS installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS
make-debug-archive: $(srcdir)/make-debug-archive.in
UNSTRIP=$(bindir)/`echo unstrip | sed '$(transform)'`; \
AR=$(bindir)/`echo ar | sed '$(transform)'`; \
- sed -e "s,@UNSTRIP@,$$UNSTRIP,g" -e "s,@AR@,$$AR,g" \
+ sed -e "s,[@]UNSTRIP[@],$$UNSTRIP,g" -e "s,[@]AR[@],$$AR,g" \
-e "s%[@]PACKAGE_NAME[@]%$(PACKAGE_NAME)%g" \
-e "s%[@]PACKAGE_VERSION[@]%$(PACKAGE_VERSION)%g" \
$(srcdir)/make-debug-archive.in > $@.new
/* Locate source files and line information for given addresses
- Copyright (C) 2005-2010, 2012 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2012, 2013 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2005.
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 },
+ { "inlines", 'i', NULL, 0,
+ N_("Show all source locations that caused inline expansion of subroutines at the address."),
+ 0 },
{ NULL, 0, NULL, 0, N_("Miscellaneous:"), 0 },
/* Unsupported options. */
/* 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;
+/* True if all inlined subroutines of the current address should be shown. */
+static bool show_inlines;
+
int
main (int argc, char *argv[])
char *buf = NULL;
size_t len = 0;
+ ssize_t chars;
while (!feof_unlocked (stdin))
{
- if (getline (&buf, &len, stdin) < 0)
+ if ((chars = getline (&buf, &len, stdin)) < 0)
break;
+ if (buf[chars - 1] == '\n')
+ buf[chars - 1] = '\0';
+
result = handle_address (buf, dwfl);
}
while (++remaining < argc);
}
+ dwfl_end (dwfl);
return result;
}
show_symbols = true;
break;
+ case 'x':
+ show_symbols = true;
+ show_symbol_sections = true;
+ break;
+
case 'j':
just_section = arg;
break;
+ case 'i':
+ show_inlines = true;
+ break;
+
default:
return ARGP_ERR_UNKNOWN;
}
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. */
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
+print_diesym (Dwarf_Die *die)
+{
+ Dwarf_Attribute attr;
+ const char *name;
+
+ name = dwarf_formstring (dwarf_attr_integrate (die, DW_AT_MIPS_linkage_name,
+ &attr)
+ ?: dwarf_attr_integrate (die, DW_AT_linkage_name,
+ &attr));
+
+ if (name == NULL)
+ name = dwarf_diename (die) ?: "??";
+
+ puts (name);
}
static int
{
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))
return false;
}
+static void
+print_src (const char *src, int lineno, int linecol, Dwarf_Die *cu)
+{
+ const char *comp_dir = "";
+ const char *comp_dir_sep = "";
+
+ if (only_basenames)
+ src = basename (src);
+ else if (use_comp_dir && src[0] != '/')
+ {
+ Dwarf_Attribute attr;
+ comp_dir = dwarf_formstring (dwarf_attr (cu, DW_AT_comp_dir, &attr));
+ if (comp_dir != NULL)
+ comp_dir_sep = "/";
+ }
+
+ if (linecol != 0)
+ printf ("%s%s%s:%d:%d",
+ comp_dir, comp_dir_sep, src, lineno, linecol);
+ else
+ printf ("%s%s%s:%d",
+ comp_dir, comp_dir_sep, src, lineno);
+}
+
static int
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);
gettext ("offset %#" PRIxMAX " lies outside"
" contents of '%s'"),
addr, name);
- addr += sym.st_value;
+ addr += value;
parsed = true;
}
break;
const char *src;
int lineno, linecol;
+
if (line != NULL && (src = dwfl_lineinfo (line, &addr, &lineno, &linecol,
NULL, NULL)) != NULL)
{
- const char *comp_dir = "";
- const char *comp_dir_sep = "";
-
- if (only_basenames)
- src = basename (src);
- else if (use_comp_dir && src[0] != '/')
- {
- comp_dir = dwfl_line_comp_dir (line);
- if (comp_dir != NULL)
- comp_dir_sep = "/";
- }
-
- if (linecol != 0)
- printf ("%s%s%s:%d:%d",
- comp_dir, comp_dir_sep, src, lineno, linecol);
- else
- printf ("%s%s%s:%d",
- comp_dir, comp_dir_sep, src, lineno);
-
+ print_src (src, lineno, linecol, dwfl_linecu (line));
if (show_flags)
{
Dwarf_Addr bias;
else
puts ("??:0");
+ if (show_inlines)
+ {
+ Dwarf_Addr bias = 0;
+ Dwarf_Die *cudie = dwfl_module_addrdie (mod, addr, &bias);
+
+ Dwarf_Die *scopes = NULL;
+ int nscopes = dwarf_getscopes (cudie, addr - bias, &scopes);
+ if (nscopes < 0)
+ return 1;
+
+ if (nscopes > 0)
+ {
+ Dwarf_Die subroutine;
+ Dwarf_Off dieoff = dwarf_dieoffset (&scopes[0]);
+ dwarf_offdie (dwfl_module_getdwarf (mod, &bias),
+ dieoff, &subroutine);
+ free (scopes);
+
+ nscopes = dwarf_getscopes_die (&subroutine, &scopes);
+ if (nscopes > 1)
+ {
+ Dwarf_Die cu;
+ Dwarf_Files *files;
+ if (dwarf_diecu (&scopes[0], &cu, NULL, NULL) != NULL
+ && dwarf_getsrcfiles (cudie, &files, NULL) == 0)
+ {
+ for (int i = 0; i < nscopes - 1; i++)
+ {
+ Dwarf_Word val;
+ Dwarf_Attribute attr;
+ Dwarf_Die *die = &scopes[i];
+ if (dwarf_tag (die) != DW_TAG_inlined_subroutine)
+ continue;
+
+ if (show_functions)
+ print_diesym (&scopes[i + 1]);
+
+ src = NULL;
+ lineno = 0;
+ linecol = 0;
+ if (dwarf_formudata (dwarf_attr (die, DW_AT_call_file,
+ &attr), &val) == 0)
+ src = dwarf_filesrc (files, val, NULL, NULL);
+
+ if (dwarf_formudata (dwarf_attr (die, DW_AT_call_line,
+ &attr), &val) == 0)
+ lineno = val;
+
+ if (dwarf_formudata (dwarf_attr (die, DW_AT_call_column,
+ &attr), &val) == 0)
+ linecol = val;
+
+ if (src != NULL)
+ {
+ print_src (src, lineno, linecol, &cu);
+ putchar ('\n');
+ }
+ else
+ puts ("??:0");
+ }
+ }
+ }
+ }
+ free (scopes);
+ }
+
return 0;
}
if (instance_specifed)
{
/* Only valid for certain operations. */
- if (operation == oper_extract && operation == oper_delete)
+ if (operation != oper_extract && operation != oper_delete)
error (1, 0, gettext ("\
'N' is only meaningful with the 'x' and 'd' options"));
long int instance)
{
bool *found = alloca (sizeof (bool) * argc);
- memset (found, '\0', sizeof (found));
+ memset (found, '\0', sizeof (bool) * argc);
/* List of the files we keep. */
struct armem *to_copy = NULL;
_FORTIFY_SOURCE=2 would not let us play these games. Therefore
we play it safe. */
char tmpbuf[sizeof (ar_hdr.ar_date) + 1];
- memcpy (ar_hdr.ar_date, tmpbuf,
- snprintf (tmpbuf, sizeof (tmpbuf), "%-*lld",
+ int s = snprintf (tmpbuf, sizeof (tmpbuf), "%-*lld",
(int) sizeof (ar_hdr.ar_date),
(arlib_deterministic_output ? 0
- : (long long int) time (NULL))));
+ : (long long int) time (NULL)));
+ memcpy (ar_hdr.ar_date, tmpbuf, s);
assert ((sizeof (struct ar_hdr) % sizeof (uint32_t)) == 0);
/* Note the string for the ar_uid and ar_gid cases is longer than
symtab.longnames = obstack_finish (&symtab.longnamesob);
- memcpy (&((struct ar_hdr *) symtab.longnames)->ar_size, tmpbuf,
- snprintf (tmpbuf, sizeof (tmpbuf), "%-*zu",
+ int s = snprintf (tmpbuf, sizeof (tmpbuf), "%-*zu",
(int) sizeof (((struct ar_hdr *) NULL)->ar_size),
- symtab.longnameslen - sizeof (struct ar_hdr)));
+ symtab.longnameslen - sizeof (struct ar_hdr));
+ memcpy (&((struct ar_hdr *) symtab.longnames)->ar_size, tmpbuf, s);
}
symtab.symsofflen = obstack_object_size (&symtab.symsoffob);
/* Pedantic checking of ELF files compliance with gABI/psABI spec.
- Copyright (C) 2001-2012 Red Hat, Inc.
+ Copyright (C) 2001-2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2001.
/* Array to count references in section groups. */
static int *scnref;
+/* Numbers of sections and program headers. */
+static unsigned int shnum;
+static unsigned int phnum;
+
int
main (int argc, char *argv[])
{
GElf_Shdr shdr_mem;
GElf_Shdr *shdr;
+ const char *ret;
+
+ if ((unsigned int) idx > shnum)
+ return "<invalid>";
shdr = gelf_getshdr (elf_getscn (ebl->elf, idx), &shdr_mem);
+ if (shdr == NULL)
+ return "<invalid>";
- return elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
+ ret = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
+ if (ret == NULL)
+ return "<invalid>";
+ return ret;
}
EM_CRIS, EM_JAVELIN, EM_FIREPATH, EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM,
EM_AVR, EM_FR30, EM_D10V, EM_D30V, EM_V850, EM_M32R, EM_MN10300,
EM_MN10200, EM_PJ, EM_OPENRISC, EM_ARC_A5, EM_XTENSA, EM_ALPHA,
- EM_TILEGX, EM_TILEPRO
+ EM_TILEGX, EM_TILEPRO, EM_AARCH64
};
#define nvalid_e_machine \
(sizeof (valid_e_machine) / sizeof (valid_e_machine[0]))
-/* Numbers of sections and program headers. */
-static unsigned int shnum;
-static unsigned int phnum;
-
-
static void
check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
{
}
}
- if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT))
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT);
+ if (shdr->sh_entsize != sh_entsize)
ERROR (gettext ("\
section [%2u] '%s': entry size is does not match ElfXX_Sym\n"),
idx, section_name (ebl, idx));
xndxscnidx, section_name (ebl, xndxscnidx));
}
- for (size_t cnt = 1; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
+ for (size_t cnt = 1; cnt < shdr->sh_size / sh_entsize; ++cnt)
{
sym = gelf_getsymshndx (data, xndxdata, cnt, &sym_mem, &xndx);
if (sym == NULL)
else
{
name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name);
- assert (name != NULL);
+ assert (name != NULL
+ || strshdr->sh_type != SHT_STRTAB);
}
if (sym->st_shndx == SHN_XINDEX)
{
GElf_Addr sh_addr = (ehdr->e_type == ET_REL ? 0
: destshdr->sh_addr);
+ GElf_Addr st_value;
+ if (GELF_ST_TYPE (sym->st_info) == STT_FUNC
+ || (GELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC))
+ st_value = sym->st_value & ebl_func_addr_mask (ebl);
+ else
+ st_value = sym->st_value;
if (GELF_ST_TYPE (sym->st_info) != STT_TLS)
{
if (! ebl_check_special_symbol (ebl, ehdr, sym, name,
destshdr))
{
- if (sym->st_value - sh_addr > destshdr->sh_size)
+ if (st_value - sh_addr > destshdr->sh_size)
{
/* GNU ld has severe bugs. When it decides to remove
empty sections it leaves symbols referencing them
- behind. These are symbols in .symtab. */
+ behind. These are symbols in .symtab or .dynsym
+ and for the named symbols have zero size. See
+ sourceware PR13621. */
if (!gnuld
- || strcmp (section_name (ebl, idx), ".symtab")
+ || (strcmp (section_name (ebl, idx), ".symtab")
+ && strcmp (section_name (ebl, idx),
+ ".dynsym"))
+ || sym->st_size != 0
|| (strcmp (name, "__preinit_array_start") != 0
&& strcmp (name, "__preinit_array_end") != 0
&& strcmp (name, "__init_array_start") != 0
&& strcmp (name, "__init_array_end") != 0
&& strcmp (name, "__fini_array_start") != 0
- && strcmp (name, "__fini_array_end") != 0))
+ && strcmp (name, "__fini_array_end") != 0
+ && strcmp (name, "__bss_start") != 0
+ && strcmp (name, "__bss_start__") != 0
+ && strcmp (name, "__TMC_END__") != 0
+ && strcmp (name, ".TOC.") != 0))
ERROR (gettext ("\
section [%2d] '%s': symbol %zu: st_value out of bounds\n"),
idx, section_name (ebl, idx), cnt);
}
- else if ((sym->st_value - sh_addr
+ else if ((st_value - sh_addr
+ sym->st_size) > destshdr->sh_size)
ERROR (gettext ("\
section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"),
{
/* For object files the symbol value must fall
into the section. */
- if (sym->st_value > destshdr->sh_size)
+ if (st_value > destshdr->sh_size)
ERROR (gettext ("\
section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section [%2d] '%s'\n"),
idx, section_name (ebl, idx), cnt,
(int) xndx, section_name (ebl, xndx));
- else if (sym->st_value + sym->st_size
+ else if (st_value + sym->st_size
> destshdr->sh_size)
ERROR (gettext ("\
section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"),
}
else
{
- if (sym->st_value
+ if (st_value
< destshdr->sh_offset - phdr->p_offset)
ERROR (gettext ("\
section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%s'\n"),
idx, section_name (ebl, idx), cnt,
(int) xndx, section_name (ebl, xndx));
- else if (sym->st_value
+ else if (st_value
> (destshdr->sh_offset - phdr->p_offset
+ destshdr->sh_size))
ERROR (gettext ("\
section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section [%2d] '%s'\n"),
idx, section_name (ebl, idx), cnt,
(int) xndx, section_name (ebl, xndx));
- else if (sym->st_value + sym->st_size
+ else if (st_value + sym->st_size
> (destshdr->sh_offset - phdr->p_offset
+ destshdr->sh_size))
ERROR (gettext ("\
{
GElf_Shdr rcshdr_mem;
const GElf_Shdr *rcshdr = gelf_getshdr (scn, &rcshdr_mem);
- assert (rcshdr != NULL);
- if (rcshdr->sh_type == SHT_DYNAMIC)
+ if (rcshdr == NULL)
+ break;
+
+ if (rcshdr->sh_type == SHT_DYNAMIC && rcshdr->sh_entsize)
{
/* Found the dynamic section. Look through it. */
Elf_Data *d = elf_getdata (scn, NULL);
{
GElf_Dyn dyn_mem;
GElf_Dyn *dyn = gelf_getdyn (d, cnt, &dyn_mem);
- assert (dyn != NULL);
+
+ if (dyn == NULL)
+ break;
if (dyn->d_tag == DT_RELCOUNT)
{
/* Does the number specified number of relative
relocations exceed the total number of
relocations? */
- if (dyn->d_un.d_val > shdr->sh_size / shdr->sh_entsize)
+ if (shdr->sh_entsize != 0
+ && dyn->d_un.d_val > (shdr->sh_size
+ / shdr->sh_entsize))
ERROR (gettext ("\
section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
idx, section_name (ebl, idx),
destshdr_memp);
if (*destshdrp != NULL)
{
- if((*destshdrp)->sh_type != SHT_PROGBITS
- && (*destshdrp)->sh_type != SHT_NOBITS)
+ if(! ebl_check_reloc_target_type (ebl, (*destshdrp)->sh_type))
{
reldyn = is_rel_dyn (ebl, ehdr, idx, shdr, true);
if (!reldyn)
}
}
- if (shdr->sh_entsize != gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT))
+ size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT);
+ if (shdr->sh_entsize != sh_entsize)
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"),
Elf_Data *symdata = elf_getdata (symscn, NULL);
enum load_state state = state_undecided;
- for (size_t cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELA, 1, EV_CURRENT);
+ for (size_t cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
{
GElf_Rela rela_mem;
GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem);
Elf_Data *symdata = elf_getdata (symscn, NULL);
enum load_state state = state_undecided;
- for (size_t cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_REL, 1, EV_CURRENT);
+ for (size_t cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
{
GElf_Rel rel_mem;
GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem);
shdr->sh_link, section_name (ebl, shdr->sh_link),
idx, section_name (ebl, idx));
- if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT))
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
+ if (shdr->sh_entsize != sh_entsize)
ERROR (gettext ("\
section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"),
idx, section_name (ebl, idx));
idx, section_name (ebl, idx));
bool non_null_warned = false;
- for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
+ for (cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
{
GElf_Dyn dyn_mem;
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dyn_mem);
idx, section_name (ebl, idx));
if (symshdr != NULL
+ && shdr->sh_entsize
+ && symshdr->sh_entsize
&& (shdr->sh_size / shdr->sh_entsize
< symshdr->sh_size / symshdr->sh_entsize))
ERROR (gettext ("\
}
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
+ if (data == NULL)
+ {
+ ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
+ idx, section_name (ebl, idx));
+ return;
+ }
if (*((Elf32_Word *) data->d_buf) != 0)
ERROR (gettext ("symbol 0 should have zero extended section index\n"));
size_t maxidx = nchain;
- if (symshdr != NULL)
+ if (symshdr != NULL && symshdr->sh_entsize != 0)
{
size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
maxidx = symsize;
}
+ Elf32_Word *buf = (Elf32_Word *) data->d_buf;
+ Elf32_Word *end = (Elf32_Word *) ((char *) data->d_buf + shdr->sh_size);
size_t cnt;
for (cnt = 2; cnt < 2 + nbucket; ++cnt)
- if (((Elf32_Word *) data->d_buf)[cnt] >= maxidx)
+ {
+ if (buf + cnt >= end)
+ break;
+ else if (buf[cnt] >= maxidx)
ERROR (gettext ("\
section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - 2);
+ }
for (; cnt < 2 + nbucket + nchain; ++cnt)
- if (((Elf32_Word *) data->d_buf)[cnt] >= maxidx)
+ {
+ if (buf + cnt >= end)
+ break;
+ else if (buf[cnt] >= maxidx)
ERROR (gettext ("\
section [%2d] '%s': hash chain reference %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - 2 - nbucket);
+ }
}
maxidx = symsize;
}
+ Elf64_Xword *buf = (Elf64_Xword *) data->d_buf;
+ Elf64_Xword *end = (Elf64_Xword *) ((char *) data->d_buf + shdr->sh_size);
size_t cnt;
for (cnt = 2; cnt < 2 + nbucket; ++cnt)
- if (((Elf64_Xword *) data->d_buf)[cnt] >= maxidx)
+ {
+ if (buf + cnt >= end)
+ break;
+ else if (buf[cnt] >= maxidx)
ERROR (gettext ("\
section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
idx, section_name (ebl, idx), cnt - 2);
+ }
for (; cnt < 2 + nbucket + nchain; ++cnt)
- if (((Elf64_Xword *) data->d_buf)[cnt] >= maxidx)
+ {
+ if (buf + cnt >= end)
+ break;
+ else if (buf[cnt] >= maxidx)
ERROR (gettext ("\
section [%2d] '%s': hash chain reference %" PRIu64 " out of bounds\n"),
- idx, section_name (ebl, idx), (uint64_t) (cnt - 2 - nbucket));
+ idx, section_name (ebl, idx), (uint64_t) cnt - 2 - nbucket);
+ }
}
if (shdr->sh_size < (4 + bitmask_words + nbuckets) * sizeof (Elf32_Word))
{
ERROR (gettext ("\
-section [%2d] '%s': hash table section is too small (is %ld, expected at least%ld)\n"),
+section [%2d] '%s': hash table section is too small (is %ld, expected at least %ld)\n"),
idx, section_name (ebl, idx), (long int) shdr->sh_size,
(long int) ((4 + bitmask_words + nbuckets) * sizeof (Elf32_Word)));
return;
/* The number of elements in the version symbol table must be the
same as the number of symbols. */
- if (shdr->sh_size / shdr->sh_entsize
- != symshdr->sh_size / symshdr->sh_entsize)
+ if (shdr->sh_entsize && symshdr->sh_entsize
+ && (shdr->sh_size / shdr->sh_entsize
+ != symshdr->sh_size / symshdr->sh_entsize))
ERROR (gettext ("\
section [%2d] '%s' has different number of entries than symbol table [%2d] '%s'\n"),
idx, section_name (ebl, idx),
if (!have_textrel)
{
error (0, 0, gettext ("no text relocations reported in '%s'"), fname);
- return 1;
+ goto err_elf_close;
}
int fd2 = -1;
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 37
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
#define UINT32_MAX (4294967295U)
#endif
+#endif /* ! C99 */
+
#endif /* ! FLEXINT_H */
#ifdef __cplusplus
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif
-extern int ldleng;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t ldleng;
extern FILE *ldin, *ldout;
#define unput(c) yyunput( c, (yytext_ptr) )
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
/* Number of characters read into yy_ch_buf, not including EOB
* characters.
*/
- int yy_n_chars;
+ yy_size_t yy_n_chars;
/* Whether we "own" the buffer - i.e., we know we created it,
* and can realloc() it to grow it, and should free() it to
/* yy_hold_char holds the character lost when ldtext is formed. */
static char yy_hold_char;
-static int yy_n_chars; /* number of characters read into yy_ch_buf */
-int ldleng;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t ldleng;
/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
YY_BUFFER_STATE ld_scan_buffer (char *base,yy_size_t size );
YY_BUFFER_STATE ld_scan_string (yyconst char *yy_str );
-YY_BUFFER_STATE ld_scan_bytes (yyconst char *bytes,int len );
+YY_BUFFER_STATE ld_scan_bytes (yyconst char *bytes,yy_size_t len );
void *ldalloc (yy_size_t );
void *ldrealloc (void *,yy_size_t );
/* Begin user sect3 */
-#define ldwrap(n) 1
+#define ldwrap() 1
#define YY_SKIP_YYWRAP
typedef unsigned char YY_CHAR;
static int handle_ifdef (void);
static void invalid_char (int ch);
-#line 1149 "ldlex.c"
+#line 1150 "ldlex.c"
#define INITIAL 0
#define IGNORE 1
void ldset_out (FILE * out_str );
-int ldget_leng (void );
+yy_size_t ldget_leng (void );
char *ldget_text (void );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- unsigned n; \
+ size_t n; \
for ( n = 0; n < max_size && \
(c = getc( ldin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
return kVERSION_SCRIPT;
}
-#line 1343 "ldlex.c"
+#line 1344 "ldlex.c"
if ( !(yy_init) )
{
if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
{
- int yyl;
+ yy_size_t yyl;
for ( yyl = 0; yyl < ldleng; ++yyl )
if ( ldtext[yyl] == '\n' )
#line 198 "ldlex.l"
ECHO;
YY_BREAK
-#line 1758 "ldlex.c"
+#line 1759 "ldlex.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(IGNORE):
yyterminate();
else
{
- int num_to_read =
+ yy_size_t num_to_read =
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
{ /* Not enough room in the buffer - grow it. */
/* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
int yy_c_buf_p_offset =
(int) ((yy_c_buf_p) - b->yy_ch_buf);
if ( b->yy_is_our_buffer )
{
- int new_size = b->yy_buf_size * 2;
+ yy_size_t new_size = b->yy_buf_size * 2;
if ( new_size <= 0 )
b->yy_buf_size += b->yy_buf_size / 8;
/* Read in more data. */
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- (yy_n_chars), (size_t) num_to_read );
+ (yy_n_chars), num_to_read );
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 218);
- return yy_is_jam ? 0 : yy_current_state;
+ return yy_is_jam ? 0 : yy_current_state;
}
static void yyunput (int c, register char * yy_bp )
if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
{ /* need to shift things up to make room */
/* +2 for EOB chars. */
- register int number_to_move = (yy_n_chars) + 2;
+ register yy_size_t number_to_move = (yy_n_chars) + 2;
register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
register char *source =
else
{ /* need more input */
- int offset = (yy_c_buf_p) - (yytext_ptr);
+ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
++(yy_c_buf_p);
switch ( yy_get_next_buffer( ) )
*/
static void ldensure_buffer_stack (void)
{
- int num_to_alloc;
+ yy_size_t num_to_alloc;
if (!(yy_buffer_stack)) {
/** Setup the input buffer state to scan the given bytes. The next call to ldlex() will
* scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
*
* @return the newly allocated buffer state object.
*/
-YY_BUFFER_STATE ld_scan_bytes (yyconst char * yybytes, int _yybytes_len )
+YY_BUFFER_STATE ld_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
{
YY_BUFFER_STATE b;
char *buf;
yy_size_t n;
- int i;
+ yy_size_t i;
/* Get memory for full buffer, including space for trailing EOB's. */
n = _yybytes_len + 2;
/** Get the length of the current token.
*
*/
-int ldget_leng (void)
+yy_size_t ldget_leng (void)
{
return ldleng;
}
-/* A Bison parser, made by GNU Bison 2.5. */
+/* A Bison parser, made by GNU Bison 2.7. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.7"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
/* Pull parsers. */
#define YYPULL 1
-/* Using locations. */
-#define YYLSP_NEEDED 0
/* Substitute the variable and function names. */
#define yyparse ldparse
#define yydebug lddebug
#define yynerrs ldnerrs
-
/* Copy the first part of user declarations. */
-
-/* Line 268 of yacc.c */
+/* Line 371 of yacc.c */
#line 1 "ldscript.y"
/* Parser for linker scripts.
extern int yylex (void);
+/* Line 371 of yacc.c */
+#line 137 "ldscript.c"
-/* Line 268 of yacc.c */
-#line 142 "ldscript.c"
-
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+# ifndef YY_NULL
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULL nullptr
+# else
+# define YY_NULL 0
+# endif
+# endif
/* Enabling verbose error messages. */
#ifdef YYERROR_VERBOSE
# define YYERROR_VERBOSE 0
#endif
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+ by #include "y.tab.h". */
+#ifndef YY_LD_LDSCRIPT_H_INCLUDED
+# define YY_LD_LDSCRIPT_H_INCLUDED
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int lddebug;
#endif
-
/* Tokens. */
#ifndef YYTOKENTYPE
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
-
-/* Line 293 of yacc.c */
+/* Line 387 of yacc.c */
#line 63 "ldscript.y"
uintmax_t num;
struct id_list *id_list;
-
-/* Line 293 of yacc.c */
-#line 253 "ldscript.c"
+/* Line 387 of yacc.c */
+#line 254 "ldscript.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
+extern YYSTYPE ldlval;
-/* Copy the second part of user declarations. */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int ldparse (void *YYPARSE_PARAM);
+#else
+int ldparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int ldparse (void);
+#else
+int ldparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_LD_LDSCRIPT_H_INCLUDED */
+/* Copy the second part of user declarations. */
-/* Line 343 of yacc.c */
-#line 265 "ldscript.c"
+/* Line 390 of yacc.c */
+#line 282 "ldscript.c"
#ifdef short
# undef short
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
# endif
# endif
# ifndef YY_
-# define YY_(msgid) msgid
+# define YY_(Msgid) Msgid
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
#else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
#endif
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
#else
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
# endif
#endif
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO. The source and destination do
+/* Copy COUNT objects from SRC to DST. The source and destination do
not overlap. */
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
while (YYID (0))
# endif
# endif
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
"inputsection", "sectionname", "sort_opt_name", "exclude_opt", "expr",
"filename_id_list", "comma_opt", "filename_id_listelem", "versionlist",
"version", "version_stmt_list", "version_stmt", "filename_id_star_list",
- "filename_id", "filename_id_star", 0
+ "filename_id", "filename_id_star", YY_NULL
};
#endif
0, 0, 0, 0, 81, 0, 78
};
-#define yypact_value_is_default(yystate) \
- ((yystate) == (-86))
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-86)))
-#define yytable_value_is_error(yytable_value) \
+#define yytable_value_is_error(Yytable_value) \
YYID (0)
static const yytype_int16 yycheck[] =
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
yyerror (YY_("syntax error: cannot back up")); \
YYERROR; \
} \
while (YYID (0))
-
+/* Error token number */
#define YYTERROR 1
#define YYERRCODE 256
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (YYID (N)) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
- while (YYID (0))
-#endif
-
-
/* This macro is provided for backward compatibility. */
-
#ifndef YY_LOCATION_PRINT
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
/* YYLEX -- calling `yylex' with the right arguments. */
-
#ifdef YYLEX_PARAM
# define YYLEX yylex (YYLEX_PARAM)
#else
YYSTYPE const * const yyvaluep;
#endif
{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
if (!yyvaluep)
return;
# ifdef YYPRINT
switch (yytype)
{
default:
- break;
+ break;
}
}
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
yytype_int16 *yyssp, int yytoken)
{
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
- const char *yyformat = 0;
+ const char *yyformat = YY_NULL;
/* Arguments of yyformat. */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Number of reported tokens (one for the "unexpected", one per
break;
}
yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
+ {
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
}
}
}
# undef YYCASE_
}
- yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
if (*yymsg_alloc < yysize)
{
{
default:
- break;
+ break;
}
}
-/* Prevent warnings from -Wmissing-prototypes. */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
/* The lookahead symbol. */
int yychar;
+
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
/* Number of syntax errors so far. */
int yynerrs;
`yyss': related to states.
`yyvs': related to semantic values.
- Refer to the stacks thru separate pointers, to allow yyoverflow
+ Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
/* The state stack. */
int yyn;
int yyresult;
/* Lookahead token as an internal (translated) token number. */
- int yytoken;
+ int yytoken = 0;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
Keep to zero when no symbol should be popped. */
int yylen = 0;
- yytoken = 0;
- yyss = yyssa;
- yyvs = yyvsa;
+ yyssp = yyss = yyssa;
+ yyvsp = yyvs = yyvsa;
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
yyerrstatus = 0;
yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
- yyssp = yyss;
- yyvsp = yyvs;
-
goto yysetstate;
/*------------------------------------------------------------.
yychar = YYEMPTY;
yystate = yyn;
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
goto yynewstate;
switch (yyn)
{
case 3:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 137 "ldscript.y"
{ add_versions ((yyvsp[(2) - (2)].version)); }
break;
case 6:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 145 "ldscript.y"
{
if (likely (ld_state.entry == NULL))
break;
case 7:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 150 "ldscript.y"
{
ld_new_searchdir ((yyvsp[(3) - (5)].str));
break;
case 8:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 154 "ldscript.y"
{
if (likely (ld_state.pagesize == 0))
break;
case 9:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 159 "ldscript.y"
{
if (likely (ld_state.interp == NULL)
break;
case 10:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 165 "ldscript.y"
{
new_segment ((yyvsp[(2) - (5)].num), (yyvsp[(4) - (5)].output_rule));
break;
case 11:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 169 "ldscript.y"
{
fputs_unlocked (gettext ("mode for segment invalid\n"),
break;
case 12:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 175 "ldscript.y"
{
/* First little optimization. If there is only one
break;
case 13:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 186 "ldscript.y"
{ add_inputfiles ((yyvsp[(3) - (4)].filename_list)); }
break;
case 14:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 188 "ldscript.y"
{ add_inputfiles (mark_as_needed ((yyvsp[(3) - (4)].filename_list))); }
break;
case 15:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 190 "ldscript.y"
{ add_versions ((yyvsp[(3) - (4)].version)); }
break;
case 16:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 192 "ldscript.y"
{ /* XXX TODO */ }
break;
case 17:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 196 "ldscript.y"
{
(yyvsp[(2) - (2)].output_rule)->next = (yyvsp[(1) - (2)].output_rule)->next;
break;
case 18:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 201 "ldscript.y"
{ (yyval.output_rule) = (yyvsp[(1) - (1)].output_rule); }
break;
case 19:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 205 "ldscript.y"
{
(yyval.output_rule) = new_output_rule (output_assignment);
break;
case 20:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 210 "ldscript.y"
{
(yyval.output_rule) = new_output_rule (output_section);
break;
case 21:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 222 "ldscript.y"
{
/* This is a short cut for "ID { *(ID) }". */
break;
case 22:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 246 "ldscript.y"
{ (yyval.assignment) = new_assignment ((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].expr), false); }
break;
case 23:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 248 "ldscript.y"
{ (yyval.assignment) = new_assignment ((yyvsp[(3) - (6)].str), (yyvsp[(5) - (6)].expr), true); }
break;
case 24:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 252 "ldscript.y"
{
(yyvsp[(2) - (2)].input_rule)->next = (yyvsp[(1) - (2)].input_rule)->next;
break;
case 25:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 257 "ldscript.y"
{ (yyval.input_rule) = (yyvsp[(1) - (1)].input_rule); }
break;
case 26:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 261 "ldscript.y"
{
(yyval.input_rule) = new_input_rule (input_section);
break;
case 27:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 266 "ldscript.y"
{
(yyvsp[(3) - (4)].filemask_section_name)->keep_flag = true;
break;
case 28:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 273 "ldscript.y"
{
(yyval.input_rule) = new_input_rule (input_assignment);
break;
case 29:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 280 "ldscript.y"
{
(yyval.filemask_section_name) = (struct filemask_section_name *)
break;
case 30:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 291 "ldscript.y"
{ (yyval.sectionname) = new_input_section_name ((yyvsp[(1) - (1)].str), false); }
break;
case 31:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 293 "ldscript.y"
{ (yyval.sectionname) = new_input_section_name ((yyvsp[(3) - (4)].str), true); }
break;
case 32:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 297 "ldscript.y"
{ (yyval.str) = (yyvsp[(3) - (4)].str); }
break;
case 33:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 299 "ldscript.y"
{ (yyval.str) = NULL; }
break;
case 34:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 303 "ldscript.y"
{
(yyval.expr) = new_expr (exp_align);
break;
case 35:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 308 "ldscript.y"
{ (yyval.expr) = (yyvsp[(2) - (3)].expr); }
break;
case 36:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 310 "ldscript.y"
{
(yyval.expr) = new_expr (exp_mult);
break;
case 37:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 316 "ldscript.y"
{
(yyval.expr) = new_expr ((yyvsp[(2) - (3)].op));
break;
case 38:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 322 "ldscript.y"
{
(yyval.expr) = new_expr ((yyvsp[(2) - (3)].op));
break;
case 39:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 328 "ldscript.y"
{
(yyval.expr) = new_expr (exp_and);
break;
case 40:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 334 "ldscript.y"
{
(yyval.expr) = new_expr (exp_or);
break;
case 41:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 340 "ldscript.y"
{
(yyval.expr) = new_expr (exp_num);
break;
case 42:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 345 "ldscript.y"
{
(yyval.expr) = new_expr (exp_id);
break;
case 43:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 350 "ldscript.y"
{ (yyval.expr) = new_expr (exp_sizeof_headers); }
break;
case 44:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 352 "ldscript.y"
{ (yyval.expr) = new_expr (exp_pagesize); }
break;
case 45:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 356 "ldscript.y"
{
(yyvsp[(3) - (3)].filename_list)->next = (yyvsp[(1) - (3)].filename_list)->next;
break;
case 46:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 361 "ldscript.y"
{ (yyval.filename_list) = (yyvsp[(1) - (1)].filename_list); }
break;
case 49:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 369 "ldscript.y"
{
/* First little optimization. If there is only one
break;
case 50:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 380 "ldscript.y"
{ (yyval.filename_list) = mark_as_needed ((yyvsp[(3) - (4)].filename_list)); }
break;
case 51:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 382 "ldscript.y"
{ (yyval.filename_list) = new_filename_listelem ((yyvsp[(1) - (1)].str)); }
break;
case 52:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 387 "ldscript.y"
{
(yyvsp[(2) - (2)].version)->next = (yyvsp[(1) - (2)].version)->next;
break;
case 53:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 392 "ldscript.y"
{ (yyval.version) = (yyvsp[(1) - (1)].version); }
break;
case 54:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 396 "ldscript.y"
{
(yyvsp[(2) - (4)].version)->versionname = "";
break;
case 55:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 402 "ldscript.y"
{
(yyvsp[(3) - (5)].version)->versionname = (yyvsp[(1) - (5)].str);
break;
case 56:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 408 "ldscript.y"
{
(yyvsp[(3) - (6)].version)->versionname = (yyvsp[(1) - (6)].str);
break;
case 57:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 417 "ldscript.y"
{ (yyval.version) = merge_versions ((yyvsp[(1) - (2)].version), (yyvsp[(2) - (2)].version)); }
break;
case 58:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 419 "ldscript.y"
{ (yyval.version) = (yyvsp[(1) - (1)].version); }
break;
case 59:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 423 "ldscript.y"
{ (yyval.version) = new_version (NULL, (yyvsp[(2) - (2)].id_list)); }
break;
case 60:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 425 "ldscript.y"
{ (yyval.version) = new_version ((yyvsp[(2) - (2)].id_list), NULL); }
break;
case 61:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 430 "ldscript.y"
{
struct id_list *newp = new_id_listelem ((yyvsp[(2) - (3)].str));
break;
case 62:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 436 "ldscript.y"
{ (yyval.id_list) = new_id_listelem ((yyvsp[(1) - (2)].str)); }
break;
case 63:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 440 "ldscript.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); }
break;
case 64:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 442 "ldscript.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); }
break;
case 65:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 446 "ldscript.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); }
break;
case 66:
-
-/* Line 1806 of yacc.c */
+/* Line 1792 of yacc.c */
#line 448 "ldscript.y"
{ (yyval.str) = NULL; }
break;
-
-/* Line 1806 of yacc.c */
-#line 2195 "ldscript.c"
+/* Line 1792 of yacc.c */
+#line 2118 "ldscript.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
YY_STACK_PRINT (yyss, yyssp);
}
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
/* Shift the error token. */
yyresult = 1;
goto yyreturn;
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
}
-
-/* Line 2067 of yacc.c */
+/* Line 2055 of yacc.c */
#line 451 "ldscript.y"
}
while (versions != NULL);
}
-
-/* A Bison parser, made by GNU Bison 2.5. */
+/* A Bison parser, made by GNU Bison 2.7. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+#ifndef YY_LD_LDSCRIPT_H_INCLUDED
+# define YY_LD_LDSCRIPT_H_INCLUDED
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int lddebug;
+#endif
/* Tokens. */
#ifndef YYTOKENTYPE
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
-
-/* Line 2068 of yacc.c */
+/* Line 2058 of yacc.c */
#line 63 "ldscript.y"
uintmax_t num;
struct id_list *id_list;
-
-/* Line 2068 of yacc.c */
-#line 125 "ldscript.h"
+/* Line 2058 of yacc.c */
+#line 131 "ldscript.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
extern YYSTYPE ldlval;
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int ldparse (void *YYPARSE_PARAM);
+#else
+int ldparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int ldparse (void);
+#else
+int ldparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+#endif /* !YY_LD_LDSCRIPT_H_INCLUDED */
/* Print symbol information from ELF file in human-readable form.
- Copyright (C) 2000-2008, 2009, 2011, 2012 Red Hat, Inc.
+ Copyright (C) 2000-2008, 2009, 2011, 2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
{
GElf_Shdr shdr_mem;
- assert (elf_ndxscn (scn) == cnt++);
+ assert (elf_ndxscn (scn) == cnt);
+ cnt++;
char *name = elf_strptr (ebl->elf, shstrndx,
gelf_getshdr (scn, &shdr_mem)->sh_name);
if (unlikely (name == NULL))
{
- name = alloca (sizeof "[invalid sh_name 0x12345678]");
- snprintf (name, sizeof name, "[invalid sh_name %#" PRIx32 "]",
+ const size_t bufsz = sizeof "[invalid sh_name 0x12345678]";
+ name = alloca (bufsz);
+ snprintf (name, bufsz, "[invalid sh_name %#" PRIx32 "]",
gelf_getshdr (scn, &shdr_mem)->sh_name);
}
scnnames[elf_ndxscn (scn)] = name;
/* TRANS: the "sysv|" parts makes the string unique. */
longest_where, sgettext ("sysv|Line"));
- /* Which format string to use (different radix for numbers). */
- const char *number_fmtstr;
- if (radix == radix_hex)
- number_fmtstr = "%0*" PRIx64;
- else if (radix == radix_decimal)
- number_fmtstr = "%0*" PRId64;
- else
- number_fmtstr = "%0*" PRIo64;
-
#ifdef USE_DEMANGLE
size_t demangle_buffer_len = 0;
char *demangle_buffer = NULL;
symstrbuf, sizeof symstrbuf);
#ifdef USE_DEMANGLE
- /* Demangle if necessary. */
- if (demangle)
+ /* Demangle if necessary. Require GNU v3 ABI by the "_Z" prefix. */
+ if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
{
int status = -1;
char *dmsymstr = __cxa_demangle (symstr, demangle_buffer,
addressbuf[0] = sizebuf[0] = '\0';
else
{
- snprintf (addressbuf, sizeof (addressbuf), number_fmtstr,
+ snprintf (addressbuf, sizeof (addressbuf),
+ (radix == radix_hex ? "%0*" PRIx64
+ : (radix == radix_decimal ? "%0*" PRId64
+ : "%0*" PRIo64)),
digits, syms[cnt].sym.st_value);
- snprintf (sizebuf, sizeof (sizebuf), number_fmtstr,
+ snprintf (sizebuf, sizeof (sizebuf),
+ (radix == radix_hex ? "%0*" PRIx64
+ : (radix == radix_decimal ? "%0*" PRId64
+ : "%0*" PRIo64)),
digits, syms[cnt].sym.st_size);
}
if (prefix != NULL && ! print_file_name)
printf ("\n%s:\n", fname);
- static const char *const fmtstrs[] =
- {
- [radix_hex] = "%6$s%2$0*1$" PRIx64 "%8$s %7$s%3$c%4$s %5$s",
- [radix_decimal] = "%6$s%*" PRId64 "%8$s %7$s%3$c%4$s %5$s",
- [radix_octal] = "%6$s%2$0*1$" PRIo64 "%8$s %7$s%3$c%4$s %5$s"
- };
- static const char *const sfmtstrs[] =
- {
- [radix_hex] = "%6$s%2$0*1$" PRIx64 "%8$s %10$0*9$" PRIx64 " %7$s%3$c%4$s %5$s",
- [radix_decimal] = "%6$s%2$*1$" PRId64 "%8$s %10$*9$" PRId64 " %7$s%3$c%4$s %5$s",
- [radix_octal] = "%6$s%2$0*1$" PRIo64 "%8$s %10$0*9$" PRIo64 " %7$s%3$c%4$s %5$s"
- };
-
#ifdef USE_DEMANGLE
size_t demangle_buffer_len = 0;
char *demangle_buffer = NULL;
continue;
#ifdef USE_DEMANGLE
- /* Demangle if necessary. */
- if (demangle)
+ /* Demangle if necessary. Require GNU v3 ABI by the "_Z" prefix. */
+ if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
{
int status = -1;
char *dmsymstr = __cxa_demangle (symstr, demangle_buffer,
else
color = color_symbol;
}
-
- printf (print_size && syms[cnt].sym.st_size != 0
- ? sfmtstrs[radix] : fmtstrs[radix],
- digits, syms[cnt].sym.st_value,
- class_type_char (elf, ehdr, &syms[cnt].sym), marker,
- symstr,
- color_mode ? color_address : "",
- color,
- color_mode ? color_off : "",
- digits, (uint64_t) syms[cnt].sym.st_size);
+ if (print_size && syms[cnt].sym.st_size != 0)
+ {
+#define HEXFMT "%6$s%2$0*1$" PRIx64 "%8$s %10$0*9$" PRIx64 " %7$s%3$c%4$s %5$s"
+#define DECFMT "%6$s%2$*1$" PRId64 "%8$s %10$*9$" PRId64 " %7$s%3$c%4$s %5$s"
+#define OCTFMT "%6$s%2$0*1$" PRIo64 "%8$s %10$0*9$" PRIo64 " %7$s%3$c%4$s %5$s"
+ printf ((radix == radix_hex ? HEXFMT
+ : (radix == radix_decimal ? DECFMT : OCTFMT)),
+ digits, syms[cnt].sym.st_value,
+ class_type_char (elf, ehdr, &syms[cnt].sym), marker,
+ symstr,
+ color_mode ? color_address : "",
+ color,
+ color_mode ? color_off : "",
+ digits, (uint64_t) syms[cnt].sym.st_size);
+#undef HEXFMT
+#undef DECFMT
+#undef OCTFMT
+ }
+ else
+ {
+#define HEXFMT "%6$s%2$0*1$" PRIx64 "%8$s %7$s%3$c%4$s %5$s"
+#define DECFMT "%6$s%2$*1$" PRId64 "%8$s %7$s%3$c%4$s %5$s"
+#define OCTFMT "%6$s%2$0*1$" PRIo64 "%8$s %7$s%3$c%4$s %5$s"
+ printf ((radix == radix_hex ? HEXFMT
+ : (radix == radix_decimal ? DECFMT : OCTFMT)),
+ digits, syms[cnt].sym.st_value,
+ class_type_char (elf, ehdr, &syms[cnt].sym), marker,
+ symstr,
+ color_mode ? color_address : "",
+ color,
+ color_mode ? color_off : "");
+#undef HEXFMT
+#undef DECFMT
+#undef OCTFMT
+ }
}
if (color_mode)
if (prefix != NULL && ! print_file_name)
printf ("%s:\n", fullname);
- const char *fmtstr;
- if (radix == radix_hex)
- fmtstr = "%s %c%s %0*" PRIx64 " %0*" PRIx64 "\n";
- else if (radix == radix_decimal)
- fmtstr = "%s %c%s %*" PRId64 " %*" PRId64 "\n";
- else
- fmtstr = "%s %c%s %0*" PRIo64 " %0*" PRIo64 "\n";
-
int digits = length_map[gelf_getclass (elf) - 1][radix];
#ifdef USE_DEMANGLE
continue;
#ifdef USE_DEMANGLE
- /* Demangle if necessary. */
- if (demangle)
+ /* Demangle if necessary. Require GNU v3 ABI by the "_Z" prefix. */
+ if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
{
int status = -1;
char *dmsymstr = __cxa_demangle (symstr, demangle_buffer,
putchar_unlocked (' ');
}
- printf (fmtstr,
+ printf ((radix == radix_hex
+ ? "%s %c%s %0*" PRIx64 " %0*" PRIx64 "\n"
+ : (radix == radix_decimal
+ ? "%s %c%s %*" PRId64 " %*" PRId64 "\n"
+ : "%s %c%s %0*" PRIo64 " %0*" PRIo64 "\n")),
symstr,
class_type_char (elf, ehdr, &syms[cnt].sym),
mark_special
continue;
#ifdef USE_DEMANGLE
- /* Demangle if necessary. */
- if (demangle)
+ /* Demangle if necessary. Require GNU v3 ABI by the "_Z" prefix. */
+ if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
{
int status = -1;
char *dmsymstr = __cxa_demangle (symstr, demangle_buffer,
/* Print information from ELF file in human-readable form.
- Copyright (C) 1999-2012 Red Hat, Inc.
+ Copyright (C) 1999-2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1999.
#include <unistd.h>
#include <sys/param.h>
#include <sys/stat.h>
+#include <signal.h>
#include <system.h>
#include "../libelf/libelfP.h"
/* Bug report address. */
ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
+/* argp key value for --elf-section, non-ascii. */
+#define ELF_INPUT_SECTION 256
+
/* Definitions of arguments for argp functions. */
static const struct argp_option options[] =
{
+ { NULL, 0, NULL, 0, N_("ELF input selection:"), 0 },
+ { "elf-section", ELF_INPUT_SECTION, "SECTION", OPTION_ARG_OPTIONAL,
+ N_("Use the named SECTION (default .gnu_debugdata) as (compressed) ELF "
+ "input data"), 0 },
{ NULL, 0, NULL, 0, N_("ELF output selection:"), 0 },
{ "all", 'a', NULL, 0,
N_("All these plus -p .strtab -p .dynstr -p .comment"), 0 },
{ NULL, 0, NULL, 0, N_("Additional output selection:"), 0 },
{ "debug-dump", 'w', "SECTION", OPTION_ARG_OPTIONAL,
N_("Display DWARF section content. SECTION can be one of abbrev, "
- "aranges, frame, gdb_index, info, loc, line, ranges, pubnames, str, "
- "macinfo, macro or exception"), 0 },
+ "aranges, decodedaranges, frame, gdb_index, info, loc, line, "
+ "decodedline, ranges, pubnames, str, macinfo, macro or exception"), 0 },
{ "hex-dump", 'x', "SECTION", 0,
N_("Dump the uninterpreted contents of SECTION, by number or name"), 0 },
{ "strings", 'p', "SECTION", OPTION_ARG_OPTIONAL,
{ NULL, 0, NULL, 0, N_("Output control:"), 0 },
{ "numeric-addresses", 'N', NULL, 0,
N_("Do not find symbol names for addresses in DWARF data"), 0 },
+ { "unresolved-address-offsets", 'U', NULL, 0,
+ N_("Display just offsets instead of resolving values to addresses in DWARF data"), 0 },
{ "wide", 'W', NULL, 0,
N_("Ignored for compatibility (lines always wide)"), 0 },
{ NULL, 0, NULL, 0, NULL, 0 }
options, parse_opt, args_doc, doc, NULL, NULL, NULL
};
+/* If non-null, the section from which we should read to (compressed) ELF. */
+static const char *elf_input_section = NULL;
/* Flags set by the option controlling the output. */
/* True if we should print addresses from DWARF in symbolic form. */
static bool print_address_names = true;
+/* True if we should print raw values instead of relativized addresses. */
+static bool print_unresolved_addresses = false;
+
+/* True if we should print the .debug_aranges section using libdw. */
+static bool decodedaranges = false;
+
+/* True if we should print the .debug_aranges section using libdw. */
+static bool decodedline = false;
+
/* Select printing of debugging sections. */
static enum section_e
{
print_debug_sections |= section_abbrev;
else if (strcmp (arg, "aranges") == 0)
print_debug_sections |= section_aranges;
+ else if (strcmp (arg, "decodedaranges") == 0)
+ {
+ print_debug_sections |= section_aranges;
+ decodedaranges = true;
+ }
else if (strcmp (arg, "ranges") == 0)
{
print_debug_sections |= section_ranges;
}
else if (strcmp (arg, "line") == 0)
print_debug_sections |= section_line;
+ else if (strcmp (arg, "decodedline") == 0)
+ {
+ print_debug_sections |= section_line;
+ decodedline = true;
+ }
else if (strcmp (arg, "pubnames") == 0)
print_debug_sections |= section_pubnames;
else if (strcmp (arg, "str") == 0)
case 'N':
print_address_names = false;
break;
+ case 'U':
+ print_unresolved_addresses = true;
+ break;
case ARGP_KEY_NO_ARGS:
fputs (gettext ("Missing file name.\n"), stderr);
goto do_argp_help;
break;
case 'W': /* Ignored. */
break;
+ case ELF_INPUT_SECTION:
+ if (arg == NULL)
+ elf_input_section = ".gnu_debugdata";
+ else
+ elf_input_section = arg;
+ break;
default:
return ARGP_ERR_UNKNOWN;
}
}
+/* Create a file descriptor to read the data from the
+ elf_input_section given a file descriptor to an ELF file. */
+static int
+open_input_section (int fd)
+{
+ size_t shnums;
+ size_t cnt;
+ size_t shstrndx;
+ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
+ if (elf == NULL)
+ {
+ error (0, 0, gettext ("cannot generate Elf descriptor: %s"),
+ elf_errmsg (-1));
+ return -1;
+ }
+
+ if (elf_getshdrnum (elf, &shnums) < 0)
+ {
+ error (0, 0, gettext ("cannot determine number of sections: %s"),
+ elf_errmsg (-1));
+ open_error:
+ elf_end (elf);
+ return -1;
+ }
+
+ if (elf_getshdrstrndx (elf, &shstrndx) < 0)
+ {
+ error (0, 0, gettext ("cannot get section header string table index"));
+ goto open_error;
+ }
+
+ for (cnt = 0; cnt < shnums; ++cnt)
+ {
+ Elf_Scn *scn = elf_getscn (elf, cnt);
+ if (scn == NULL)
+ {
+ error (0, 0, gettext ("cannot get section: %s"),
+ elf_errmsg (-1));
+ goto open_error;
+ }
+
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+ if (unlikely (shdr == NULL))
+ {
+ error (0, 0, gettext ("cannot get section header: %s"),
+ elf_errmsg (-1));
+ goto open_error;
+ }
+
+ const char *sname = elf_strptr (elf, shstrndx, shdr->sh_name);
+ if (sname == NULL)
+ {
+ error (0, 0, gettext ("cannot get section name"));
+ goto open_error;
+ }
+
+ if (strcmp (sname, elf_input_section) == 0)
+ {
+ Elf_Data *data = elf_rawdata (scn, NULL);
+ if (data == NULL)
+ {
+ error (0, 0, gettext ("cannot get %s content: %s"),
+ sname, elf_errmsg (-1));
+ goto open_error;
+ }
+
+ /* Create (and immediately unlink) a temporary file to store
+ section data in to create a file descriptor for it. */
+ const char *tmpdir = getenv ("TMPDIR") ?: P_tmpdir;
+ static const char suffix[] = "/readelfXXXXXX";
+ int tmplen = strlen (tmpdir) + sizeof (suffix);
+ char *tempname = alloca (tmplen);
+ sprintf (tempname, "%s%s", tmpdir, suffix);
+
+ int sfd = mkstemp (tempname);
+ if (sfd == -1)
+ {
+ error (0, 0, gettext ("cannot create temp file '%s'"),
+ tempname);
+ goto open_error;
+ }
+ unlink (tempname);
+
+ ssize_t size = data->d_size;
+ if (write_retry (sfd, data->d_buf, size) != size)
+ {
+ error (0, 0, gettext ("cannot write section data"));
+ goto open_error;
+ }
+
+ if (elf_end (elf) != 0)
+ {
+ error (0, 0, gettext ("error while closing Elf descriptor: %s"),
+ elf_errmsg (-1));
+ return -1;
+ }
+
+ if (lseek (sfd, 0, SEEK_SET) == -1)
+ {
+ error (0, 0, gettext ("error while rewinding file descriptor"));
+ return -1;
+ }
+
+ return sfd;
+ }
+ }
+
+ /* Named section not found. */
+ if (elf_end (elf) != 0)
+ error (0, 0, gettext ("error while closing Elf descriptor: %s"),
+ elf_errmsg (-1));
+ return -1;
+}
+
/* Check if the file is an archive, and if so dump its index. */
static void
check_archive_index (int fd, const char *fname, bool only_one)
return DWARF_CB_OK;
}
-/* Stub libdwfl callback, only the ELF handle already open is ever used. */
+/* Stub libdwfl callback, only the ELF handle already open is ever used.
+ Only used for finding the alternate debug file if the Dwarf comes from
+ the main file. We are not interested in separate debuginfo. */
static int
-find_no_debuginfo (Dwfl_Module *mod __attribute__ ((unused)),
- void **userdata __attribute__ ((unused)),
- const char *modname __attribute__ ((unused)),
- Dwarf_Addr base __attribute__ ((unused)),
- const char *file_name __attribute__ ((unused)),
- const char *debuglink_file __attribute__ ((unused)),
- GElf_Word debuglink_crc __attribute__ ((unused)),
- char **debuginfo_file_name __attribute__ ((unused)))
+find_no_debuginfo (Dwfl_Module *mod,
+ void **userdata,
+ const char *modname,
+ Dwarf_Addr base,
+ const char *file_name,
+ const char *debuglink_file,
+ GElf_Word debuglink_crc,
+ char **debuginfo_file_name)
{
- return -1;
+ Dwarf_Addr dwbias;
+ dwfl_module_info (mod, NULL, NULL, NULL, &dwbias, NULL, NULL, NULL);
+
+ /* We are only interested if the Dwarf has been setup on the main
+ elf file but is only missing the alternate debug link. If dwbias
+ hasn't even been setup, this is searching for separate debuginfo
+ for the main elf. We don't care in that case. */
+ if (dwbias == (Dwarf_Addr) -1)
+ return -1;
+
+ return dwfl_standard_find_debuginfo (mod, userdata, modname, base,
+ file_name, debuglink_file,
+ debuglink_crc, debuginfo_file_name);
}
/* Process one input file. */
if (!any_control_option)
return;
+ if (elf_input_section != NULL)
+ {
+ /* Replace fname and fd with section content. */
+ char *fnname = alloca (strlen (fname) + strlen (elf_input_section) + 2);
+ sprintf (fnname, "%s:%s", fname, elf_input_section);
+ fd = open_input_section (fd);
+ if (fd == -1)
+ {
+ error (0, 0, gettext ("No such section '%s' in '%s'"),
+ elf_input_section, fname);
+ return;
+ }
+ fname = fnname;
+ }
+
/* Duplicate an fd for dwfl_report_offline to swallow. */
int dwfl_fd = dup (fd);
if (unlikely (dwfl_fd < 0))
dwfl_getmodules (dwfl, &process_dwflmod, &a, 0);
}
dwfl_end (dwfl);
+
+ /* Need to close the replaced fd if we created it. Caller takes
+ care of original. */
+ if (elf_input_section != NULL)
+ close (fd);
}
if (phdr->p_type == PT_INTERP)
{
- /* We can show the user the name of the interpreter. */
+ /* If we are sure the file offset is valid then we can show
+ the user the name of the interpreter. We check whether
+ there is a section at the file offset. Normally there
+ would be a section called ".interp". But in separate
+ .debug files it is a NOBITS section (and so doesn't match
+ with gelf_offscn). Which probably means the offset is
+ not valid another reason could be because the ELF file
+ just doesn't contain any section headers, in that case
+ just play it safe and don't display anything. */
+
+ Elf_Scn *scn = gelf_offscn (ebl->elf, phdr->p_offset);
+ GElf_Shdr shdr_mem;
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+
size_t maxsize;
char *filedata = elf_rawfile (ebl->elf, &maxsize);
- if (filedata != NULL && phdr->p_offset < maxsize)
+ if (shdr != NULL && shdr->sh_type == SHT_PROGBITS
+ && filedata != NULL && phdr->p_offset < maxsize
+ && phdr->p_filesz <= maxsize - phdr->p_offset
+ && memchr (filedata + phdr->p_offset, '\0',
+ phdr->p_filesz) != NULL)
printf (gettext ("\t[Requesting program interpreter: %s]\n"),
filedata + phdr->p_offset);
}
Elf32_Word *grpref = (Elf32_Word *) data->d_buf;
GElf_Sym sym_mem;
+ GElf_Sym *sym = gelf_getsym (symdata, shdr->sh_info, &sym_mem);
+
printf ((grpref[0] & GRP_COMDAT)
? ngettext ("\
\nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n",
data->d_size / sizeof (Elf32_Word) - 1),
elf_ndxscn (scn),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
- elf_strptr (ebl->elf, symshdr->sh_link,
- gelf_getsym (symdata, shdr->sh_info, &sym_mem)->st_name)
+ (sym == NULL ? NULL
+ : elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name))
?: gettext ("<INVALID SYMBOL>"),
data->d_size / sizeof (Elf32_Word) - 1);
handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
{
int class = gelf_getclass (ebl->elf);
- GElf_Shdr glink;
+ GElf_Shdr glink_mem;
+ GElf_Shdr *glink;
Elf_Data *data;
size_t cnt;
size_t shstrndx;
+ size_t sh_entsize;
/* Get the data of the section. */
data = elf_getdata (scn, NULL);
error (EXIT_FAILURE, 0,
gettext ("cannot get section header string table index"));
+ sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
+
+ glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &glink_mem);
+ if (glink == NULL)
+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
+ elf_ndxscn (scn));
+
printf (ngettext ("\
\nDynamic segment contains %lu entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
"\
\nDynamic segment contains %lu entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
- shdr->sh_size / shdr->sh_entsize),
- (unsigned long int) (shdr->sh_size / shdr->sh_entsize),
+ shdr->sh_size / sh_entsize),
+ (unsigned long int) (shdr->sh_size / sh_entsize),
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
shdr->sh_offset,
(int) shdr->sh_link,
- elf_strptr (ebl->elf, shstrndx,
- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
- &glink)->sh_name));
+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
fputs_unlocked (gettext (" Type Value\n"), stdout);
- for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
+ for (cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
{
GElf_Dyn dynmem;
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dynmem);
handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
{
int class = gelf_getclass (ebl->elf);
- int nentries = shdr->sh_size / shdr->sh_entsize;
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_REL, 1, EV_CURRENT);
+ int nentries = shdr->sh_size / sh_entsize;
/* Get the data of the section. */
Elf_Data *data = elf_getdata (scn, NULL);
handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
{
int class = gelf_getclass (ebl->elf);
- int nentries = shdr->sh_size / shdr->sh_entsize;
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELA, 1, EV_CURRENT);
+ int nentries = shdr->sh_size / sh_entsize;
/* Get the data of the section. */
Elf_Data *data = elf_getdata (scn, NULL);
error (EXIT_FAILURE, 0,
gettext ("cannot get section header string table index"));
- printf (ngettext ("\
+ if (shdr->sh_info != 0)
+ printf (ngettext ("\
\nRelocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
"\
\nRelocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n",
elf_strptr (ebl->elf, shstrndx, destshdr->sh_name),
shdr->sh_offset,
nentries);
+ else
+ /* The .rela.dyn section does not refer to a specific section but
+ instead of section index zero. Do not try to print a section
+ name. */
+ printf (ngettext ("\
+\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
+ "\
+\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n",
+ nentries),
+ (unsigned int) elf_ndxscn (scn),
+ elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
+ shdr->sh_offset,
+ nentries);
fputs_unlocked (class == ELFCLASS32
? gettext ("\
Offset Type Value Addend Name\n")
error (EXIT_FAILURE, 0,
gettext ("cannot get section header string table index"));
+ GElf_Shdr glink_mem;
+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
+ &glink_mem);
+ if (glink == NULL)
+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
+ elf_ndxscn (scn));
+
/* Now we can compute the number of entries in the section. */
unsigned int nsyms = data->d_size / (class == ELFCLASS32
? sizeof (Elf32_Sym)
nsyms),
(unsigned int) elf_ndxscn (scn),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms);
- GElf_Shdr glink;
printf (ngettext (" %lu local symbol String table: [%2u] '%s'\n",
" %lu local symbols String table: [%2u] '%s'\n",
shdr->sh_info),
(unsigned long int) shdr->sh_info,
(unsigned int) shdr->sh_link,
- elf_strptr (ebl->elf, shstrndx,
- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
- &glink)->sh_name));
+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
fputs_unlocked (class == ELFCLASS32
? gettext ("\
error (EXIT_FAILURE, 0,
gettext ("cannot get section header string table index"));
- GElf_Shdr glink;
+ GElf_Shdr glink_mem;
+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
+ &glink_mem);
+ if (glink == NULL)
+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
+ elf_ndxscn (scn));
+
printf (ngettext ("\
\nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
"\
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
shdr->sh_offset,
(unsigned int) shdr->sh_link,
- elf_strptr (ebl->elf, shstrndx,
- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
- &glink)->sh_name));
+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
unsigned int offset = 0;
for (int cnt = shdr->sh_info; --cnt >= 0; )
error (EXIT_FAILURE, 0,
gettext ("cannot get section header string table index"));
+ GElf_Shdr glink_mem;
+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
+ &glink_mem);
+ if (glink == NULL)
+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
+ elf_ndxscn (scn));
+
int class = gelf_getclass (ebl->elf);
- GElf_Shdr glink;
printf (ngettext ("\
\nVersion definition section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
"\
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
shdr->sh_offset,
(unsigned int) shdr->sh_link,
- elf_strptr (ebl->elf, shstrndx,
- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
- &glink)->sh_name));
+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
unsigned int offset = 0;
for (int cnt = shdr->sh_info; --cnt >= 0; )
filename = NULL;
}
+ GElf_Shdr glink_mem;
+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
+ &glink_mem);
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_HALF, 1, EV_CURRENT);
+ if (glink == NULL)
+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
+ elf_ndxscn (scn));
+
/* Print the header. */
- GElf_Shdr glink;
printf (ngettext ("\
\nVersion symbols section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'",
"\
\nVersion symbols section [%2u] '%s' contains %d entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'",
- shdr->sh_size / shdr->sh_entsize),
+ shdr->sh_size / sh_entsize),
(unsigned int) elf_ndxscn (scn),
elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
- (int) (shdr->sh_size / shdr->sh_entsize),
+ (int) (shdr->sh_size / sh_entsize),
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
shdr->sh_offset,
(unsigned int) shdr->sh_link,
- elf_strptr (ebl->elf, shstrndx,
- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
- &glink)->sh_name));
+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
/* 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)
+ for (unsigned int cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
{
if (cnt % 2 == 0)
printf ("\n %4d:", cnt);
for (Elf32_Word cnt = 0; cnt < nbucket; ++cnt)
++counts[lengths[cnt]];
- GElf_Shdr glink;
+ GElf_Shdr glink_mem;
+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf,
+ shdr->sh_link),
+ &glink_mem);
+ if (glink == NULL)
+ {
+ error (0, 0, gettext ("invalid sh_link value in section %Zu"),
+ elf_ndxscn (scn));
+ return;
+ }
+
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",
"\
shdr->sh_addr,
shdr->sh_offset,
(unsigned int) shdr->sh_link,
- elf_strptr (ebl->elf, shstrndx,
- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
- &glink)->sh_name));
+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
if (extrastr != NULL)
fputs (extrastr, stdout);
if (shdr != NULL && shdr->sh_type == SHT_GNU_LIBLIST)
{
- int nentries = shdr->sh_size / shdr->sh_entsize;
+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_LIB, 1, EV_CURRENT);
+ int nentries = shdr->sh_size / sh_entsize;
printf (ngettext ("\
\nLibrary list section [%2zu] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
"\
static char *
format_dwarf_addr (Dwfl_Module *dwflmod,
- int address_size, Dwarf_Addr address)
+ int address_size, Dwarf_Addr address, Dwarf_Addr raw)
{
/* See if there is a name we can give for this address. */
GElf_Sym sym;
- const char *name = print_address_names
- ? dwfl_module_addrsym (dwflmod, address, &sym, NULL) : NULL;
- if (name != NULL)
- sym.st_value = address - sym.st_value;
+ GElf_Off off = 0;
+ const char *name = (print_address_names && ! print_unresolved_addresses)
+ ? dwfl_module_addrinfo (dwflmod, address, &off, &sym, NULL, NULL, NULL)
+ : NULL;
- /* Relativize the address. */
- int n = dwfl_module_relocations (dwflmod);
- int i = n < 1 ? -1 : dwfl_module_relocate_address (dwflmod, &address);
+ const char *scn;
+ if (print_unresolved_addresses)
+ {
+ address = raw;
+ scn = NULL;
+ }
+ else
+ {
+ /* Relativize the address. */
+ int n = dwfl_module_relocations (dwflmod);
+ int i = n < 1 ? -1 : dwfl_module_relocate_address (dwflmod, &address);
- /* In an ET_REL file there is a section name to refer to. */
- const char *scn = (i < 0 ? NULL
- : dwfl_module_relocation_info (dwflmod, i, NULL));
+ /* In an ET_REL file there is a section name to refer to. */
+ scn = (i < 0 ? NULL
+ : dwfl_module_relocation_info (dwflmod, i, NULL));
+ }
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,
static void
print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
unsigned int vers, unsigned int addrsize, unsigned int offset_size,
- Dwarf_Word len, const unsigned char *data)
+ struct Dwarf_CU *cu, Dwarf_Word len, const unsigned char *data)
{
const unsigned int ref_size = vers < 3 ? addrsize : offset_size;
data += addrsize;
CONSUME (addrsize);
- char *a = format_dwarf_addr (dwflmod, 0, addr);
+ char *a = format_dwarf_addr (dwflmod, 0, addr, addr);
printf ("%*s[%4" PRIuMAX "] %s %s\n",
indent, "", (uintmax_t) offset, op_name, a);
free (a);
NEED (2);
printf ("%*s[%4" PRIuMAX "] %s %" PRIuMAX "\n",
indent, "", (uintmax_t) offset, op_name,
- (uintmax_t) (offset + read_2sbyte_unaligned (dbg, data)));
+ (uintmax_t) (offset + read_2sbyte_unaligned (dbg, data) + 3));
CONSUME (2);
data += 2;
offset += 3;
/* Byte offset operand. */
get_sleb128 (sleb, data); /* XXX check overrun */
- printf ("%*s[%4" PRIuMAX "] %s %#" PRIxMAX ", %+" PRId64 "\n",
+ printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "] %+" PRId64 "\n",
indent, "", (intmax_t) offset,
op_name, (uintmax_t) addr, sleb);
CONSUME (data - start);
indent, "", (uintmax_t) offset, op_name);
NEED (uleb);
print_ops (dwflmod, dbg, indent + 6, indent + 6, vers,
- addrsize, offset_size, uleb, data);
+ addrsize, offset_size, cu, uleb, data);
data += uleb;
CONSUME (data - start);
offset += 1 + (data - start);
break;
case DW_OP_GNU_const_type:
- /* DIE offset, size plus block. */
+ /* uleb128 CU relative DW_TAG_base_type DIE offset, 1-byte
+ unsigned size plus block. */
start = data;
NEED (2);
get_uleb128 (uleb, data); /* XXX check overrun */
+ if (! print_unresolved_addresses && cu != NULL)
+ uleb += cu->start;
uint8_t usize = *(uint8_t *) data++;
NEED (usize);
printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "] ",
break;
case DW_OP_GNU_regval_type:
+ /* uleb128 register number, uleb128 CU relative
+ DW_TAG_base_type DIE offset. */
start = data;
NEED (2);
get_uleb128 (uleb, data); /* XXX check overrun */
get_uleb128 (uleb2, data); /* XXX check overrun */
- printf ("%*s[%4" PRIuMAX "] %s %" PRIu64 " %#" PRIx64 "\n",
+ if (! print_unresolved_addresses && cu != NULL)
+ uleb2 += cu->start;
+ printf ("%*s[%4" PRIuMAX "] %s %" PRIu64 " [%6" PRIx64 "]\n",
indent, "", (uintmax_t) offset, op_name, uleb, uleb2);
CONSUME (data - start);
offset += 1 + (data - start);
break;
case DW_OP_GNU_deref_type:
+ /* 1-byte unsigned size of value, uleb128 CU relative
+ DW_TAG_base_type DIE offset. */
start = data;
NEED (2);
usize = *(uint8_t *) data++;
get_uleb128 (uleb, data); /* XXX check overrun */
+ if (! print_unresolved_addresses && cu != NULL)
+ uleb += cu->start;
printf ("%*s[%4" PRIuMAX "] %s %" PRIu8 " [%6" PRIxMAX "]\n",
indent, "", (uintmax_t) offset,
op_name, usize, uleb);
case DW_OP_GNU_convert:
case DW_OP_GNU_reinterpret:
+ /* uleb128 CU relative offset to DW_TAG_base_type, or zero
+ for conversion to untyped. */
start = data;
NEED (1);
get_uleb128 (uleb, data); /* XXX check overrun */
+ if (uleb != 0 && ! print_unresolved_addresses && cu != NULL)
+ uleb += cu->start;
printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "]\n",
indent, "", (uintmax_t) offset, op_name, uleb);
CONSUME (data - start);
/* 4 byte CU relative reference to the abstract optimized away
DW_TAG_formal_parameter. */
NEED (4);
+ uintmax_t param_off = (uintmax_t) read_4ubyte_unaligned (dbg, data);
+ if (! print_unresolved_addresses && cu != NULL)
+ param_off += cu->start;
printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "]\n",
- indent, "", (uintmax_t) offset, op_name,
- (uintmax_t) read_4ubyte_unaligned (dbg, data));
+ indent, "", (uintmax_t) offset, op_name, param_off);
CONSUME (4);
data += 4;
offset += 5;
bool addr64:1;
bool dwarf64:1;
bool warned:1;
+ struct Dwarf_CU *cu;
};
#define listptr_offset_size(p) ((p)->dwarf64 ? 8 : 4)
#define listptr_address_size(p) ((p)->addr64 ? 8 : 4)
+static Dwarf_Addr
+listptr_base (struct listptr *p)
+{
+ Dwarf_Addr base;
+ Dwarf_Die cu = CUDIE (p->cu);
+ /* Find the base address of the compilation unit. It will normally
+ be specified by DW_AT_low_pc. In DWARF-3 draft 4, the base
+ address could be overridden by DW_AT_entry_pc. It's been
+ removed, but GCC emits DW_AT_entry_pc and not DW_AT_lowpc for
+ compilation units with discontinuous ranges. */
+ if (unlikely (dwarf_lowpc (&cu, &base) != 0))
+ {
+ Dwarf_Attribute attr_mem;
+ if (dwarf_formaddr (dwarf_attr (&cu, DW_AT_entry_pc, &attr_mem),
+ &base) != 0)
+ base = 0;
+ }
+ return base;
+}
+
static int
compare_listptr (const void *a, const void *b, void *arg)
{
gettext ("%s %#" PRIx64 " used with different offset sizes"),
name, (uint64_t) p1->offset);
}
+ if (listptr_base (p1) != listptr_base (p2))
+ {
+ p1->warned = p2->warned = true;
+ error (0, 0,
+ gettext ("%s %#" PRIx64 " used with different base addresses"),
+ name, (uint64_t) p1->offset);
+ }
}
return 0;
static void
notice_listptr (enum section_e section, struct listptr_table *table,
uint_fast8_t address_size, uint_fast8_t offset_size,
- Dwarf_Off offset)
+ struct Dwarf_CU *cu, Dwarf_Off offset)
{
if (print_debug_sections & section)
{
{
.addr64 = address_size == 8,
.dwarf64 = offset_size == 8,
- .offset = offset
+ .offset = offset,
+ .cu = cu
};
assert (p->offset == offset);
}
static bool
skip_listptr_hole (struct listptr_table *table, size_t *idxp,
uint_fast8_t *address_sizep, uint_fast8_t *offset_sizep,
- ptrdiff_t offset, unsigned char **readp, unsigned char *endp)
+ Dwarf_Addr *base, struct Dwarf_CU **cu, ptrdiff_t offset,
+ unsigned char **readp, unsigned char *endp)
{
if (table->n == 0)
return false;
*address_sizep = listptr_address_size (p);
if (offset_sizep != NULL)
*offset_sizep = listptr_offset_size (p);
+ if (base != NULL)
+ *base = listptr_base (p);
+ if (cu != NULL)
+ *cu = p->cu;
return false;
}
not have to know a bit about the structure of the section, libdwarf
takes care of it. */
static void
-print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
- Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
- GElf_Shdr *shdr, Dwarf *dbg)
+print_decoded_aranges_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
+ GElf_Shdr *shdr, Dwarf *dbg)
{
Dwarf_Aranges *aranges;
size_t cnt;
return;
}
+ GElf_Shdr glink_mem;
+ GElf_Shdr *glink;
+ glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &glink_mem);
+ if (glink == NULL)
+ {
+ error (0, 0, gettext ("invalid sh_link value in section %Zu"),
+ elf_ndxscn (scn));
+ return;
+ }
+
printf (ngettext ("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 " contains %zu entry:\n",
"\
}
}
+
+/* Print content of DWARF .debug_aranges section. */
+static void
+print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
+ Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
+ GElf_Shdr *shdr, Dwarf *dbg)
+{
+ if (decodedaranges)
+ {
+ print_decoded_aranges_section (ebl, ehdr, scn, shdr, dbg);
+ return;
+ }
+
+ Elf_Data *data = dbg->sectiondata[IDX_debug_aranges];
+
+ if (unlikely (data == NULL))
+ {
+ error (0, 0, gettext ("cannot get .debug_aranges content: %s"),
+ elf_errmsg (-1));
+ return;
+ }
+
+ printf (gettext ("\
+\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
+ elf_ndxscn (scn), section_name (ebl, ehdr, shdr),
+ (uint64_t) shdr->sh_offset);
+
+ const unsigned char *readp = data->d_buf;
+ const unsigned char *readendp = readp + data->d_size;
+
+ while (readp < readendp)
+ {
+ const unsigned char *hdrstart = readp;
+ size_t start_offset = hdrstart - (const unsigned char *) data->d_buf;
+
+ printf (gettext ("\nTable at offset %Zu:\n"), start_offset);
+ if (readp + 4 > readendp)
+ {
+ invalid_data:
+ error (0, 0, gettext ("invalid data in section [%zu] '%s'"),
+ elf_ndxscn (scn), section_name (ebl, ehdr, shdr));
+ return;
+ }
+
+ Dwarf_Word length = read_4ubyte_unaligned_inc (dbg, readp);
+ unsigned int length_bytes = 4;
+ if (length == DWARF3_LENGTH_64_BIT)
+ {
+ if (readp + 8 > readendp)
+ goto invalid_data;
+ length = read_8ubyte_unaligned_inc (dbg, readp);
+ length_bytes = 8;
+ }
+
+ const unsigned char *nexthdr = readp + length;
+ printf (gettext ("\n Length: %6" PRIu64 "\n"),
+ (uint64_t) length);
+
+ if (nexthdr > readendp)
+ goto invalid_data;
+
+ if (length == 0)
+ continue;
+
+ if (readp + 2 > readendp)
+ goto invalid_data;
+ uint_fast16_t version = read_2ubyte_unaligned_inc (dbg, readp);
+ printf (gettext (" DWARF version: %6" PRIuFAST16 "\n"),
+ version);
+ if (version != 2)
+ {
+ error (0, 0, gettext ("unsupported aranges version"));
+ goto next_table;
+ }
+
+ Dwarf_Word offset;
+ if (readp + length_bytes > readendp)
+ goto invalid_data;
+ if (length_bytes == 8)
+ offset = read_8ubyte_unaligned_inc (dbg, readp);
+ else
+ offset = read_4ubyte_unaligned_inc (dbg, readp);
+ printf (gettext (" CU offset: %6" PRIx64 "\n"),
+ (uint64_t) offset);
+
+ if (readp + 1 > readendp)
+ goto invalid_data;
+ unsigned int address_size = *readp++;
+ printf (gettext (" Address size: %6" PRIu64 "\n"),
+ (uint64_t) address_size);
+ if (address_size != 4 && address_size != 8)
+ {
+ error (0, 0, gettext ("unsupported address size"));
+ goto next_table;
+ }
+
+ unsigned int segment_size = *readp++;
+ printf (gettext (" Segment size: %6" PRIu64 "\n\n"),
+ (uint64_t) segment_size);
+ if (segment_size != 0 && segment_size != 4 && segment_size != 8)
+ {
+ error (0, 0, gettext ("unsupported segment size"));
+ goto next_table;
+ }
+
+ /* Round the address to the next multiple of 2*address_size. */
+ readp += ((2 * address_size - ((readp - hdrstart) % (2 * address_size)))
+ % (2 * address_size));
+
+ while (readp < nexthdr)
+ {
+ Dwarf_Word range_address;
+ Dwarf_Word range_length;
+ Dwarf_Word segment = 0;
+ if (readp + 2 * address_size + segment_size > readendp)
+ goto invalid_data;
+ if (address_size == 4)
+ {
+ range_address = read_4ubyte_unaligned_inc (dbg, readp);
+ range_length = read_4ubyte_unaligned_inc (dbg, readp);
+ }
+ else
+ {
+ range_address = read_8ubyte_unaligned_inc (dbg, readp);
+ range_length = read_8ubyte_unaligned_inc (dbg, readp);
+ }
+
+ if (segment_size == 4)
+ segment = read_4ubyte_unaligned_inc (dbg, readp);
+ else if (segment_size == 8)
+ segment = read_8ubyte_unaligned_inc (dbg, readp);
+
+ if (range_address == 0 && range_length == 0 && segment == 0)
+ break;
+
+ char *b = format_dwarf_addr (dwflmod, address_size, range_address,
+ range_address);
+ char *e = format_dwarf_addr (dwflmod, address_size,
+ range_address + range_length - 1,
+ range_length);
+ if (segment_size != 0)
+ printf (gettext (" %s..%s (%" PRIx64 ")\n"), b, e,
+ (uint64_t) segment);
+ else
+ printf (gettext (" %s..%s\n"), b, e);
+ free (b);
+ free (e);
+ }
+
+ next_table:
+ if (readp != nexthdr)
+ {
+ size_t padding = nexthdr - readp;
+ printf (gettext (" %Zu padding bytes\n"), padding);
+ readp = nexthdr;
+ }
+ }
+}
+
+
/* Print content of DWARF .debug_ranges section. */
static void
print_debug_ranges_section (Dwfl_Module *dwflmod,
Elf_Scn *scn, GElf_Shdr *shdr,
Dwarf *dbg)
{
- Elf_Data *data = elf_rawdata (scn, NULL);
+ Elf_Data *data = dbg->sectiondata[IDX_debug_ranges];
if (unlikely (data == NULL))
{
uint_fast8_t address_size = ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 4 : 8;
bool first = true;
+ Dwarf_Addr base = 0;
unsigned char *const endp = (unsigned char *) data->d_buf + data->d_size;
unsigned char *readp = data->d_buf;
while (readp < endp)
ptrdiff_t offset = readp - (unsigned char *) data->d_buf;
if (first && skip_listptr_hole (&known_rangelistptr, &listptr_idx,
- &address_size, NULL,
+ &address_size, NULL, &base, NULL,
offset, &readp, endp))
continue;
- if (unlikely (data->d_size - offset < address_size * 2))
+ if (unlikely (data->d_size - offset < (size_t) address_size * 2))
{
printf (gettext (" [%6tx] <INVALID DATA>\n"), offset);
break;
if (begin == (Dwarf_Addr) -1l) /* Base address entry. */
{
- char *b = format_dwarf_addr (dwflmod, address_size, end);
+ char *b = format_dwarf_addr (dwflmod, address_size, end, end);
printf (gettext (" [%6tx] base address %s\n"), offset, b);
free (b);
+ base = end;
}
else if (begin == 0 && end == 0) /* End of list entry. */
{
}
else
{
- char *b = format_dwarf_addr (dwflmod, address_size, begin);
- char *e = format_dwarf_addr (dwflmod, address_size, end);
+ char *b = format_dwarf_addr (dwflmod, address_size, base + begin,
+ begin);
+ char *e = format_dwarf_addr (dwflmod, address_size, base + end,
+ end);
/* We have an address range entry. */
if (first) /* First address range entry in a list. */
printf (gettext (" [%6tx] %s..%s\n"), offset, b, e);
// XXX overflow check
get_uleb128 (op1, readp); /* Length of DW_FORM_block. */
printf (" def_cfa_expression %" PRIu64 "\n", op1);
- print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, op1, readp);
+ print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, NULL,
+ op1, readp);
readp += op1;
break;
case DW_CFA_expression:
get_uleb128 (op2, readp); /* Length of DW_FORM_block. */
printf (" expression r%" PRIu64 " (%s) \n",
op1, regname (op1));
- print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, op2, readp);
+ print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, NULL,
+ op2, readp);
readp += op2;
break;
case DW_CFA_offset_extended_sf:
get_uleb128 (op2, readp); /* Length of DW_FORM_block. */
printf (" val_expression r%" PRIu64 " (%s)\n",
op1, regname (op1));
- print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0, op2, readp);
+ print_ops (dwflmod, dbg, 10, 10, version, ptr_size, 0,
+ NULL, op2, readp);
readp += op2;
break;
case DW_CFA_MIPS_advance_loc8:
(void) elf_getshdrstrndx (ebl->elf, &shstrndx);
const char *scnname = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
- Elf_Data *data = elf_rawdata (scn, NULL);
+ /* Needed if we find PC-relative addresses. */
+ GElf_Addr bias;
+ if (dwfl_module_getelf (dwflmod, &bias) == NULL)
+ {
+ error (0, 0, gettext ("cannot get ELF: %s"), dwfl_errmsg (-1));
+ return;
+ }
+
+ bool is_eh_frame = strcmp (scnname, ".eh_frame") == 0;
+ Elf_Data *data = (is_eh_frame
+ ? elf_rawdata (scn, NULL)
+ : dbg->sectiondata[IDX_debug_frame]);
if (unlikely (data == NULL))
{
scnname, elf_errmsg (-1));
return;
}
- bool is_eh_frame = strcmp (scnname, ".eh_frame") == 0;
if (is_eh_frame)
printf (gettext ("\
Dwarf_Word address_range
= read_ubyte_unaligned_inc (ptr_size, dbg, readp);
+ /* pcrel for an FDE address is relative to the runtime
+ address of the start_address field itself. Sign extend
+ if necessary to make sure the calculation is done on the
+ full 64 bit address even when initial_location only holds
+ the lower 32 bits. */
+ Dwarf_Addr pc_start = initial_location;
+ if (ptr_size == 4)
+ pc_start = (uint64_t) (int32_t) pc_start;
+ if ((fde_encoding & 0x70) == DW_EH_PE_pcrel)
+ pc_start += ((uint64_t) shdr->sh_addr
+ + (base - (const unsigned char *) data->d_buf)
+ - bias);
+
char *a = format_dwarf_addr (dwflmod, cie->address_size,
- initial_location);
+ pc_start, initial_location);
printf ("\n [%6tx] FDE length=%" PRIu64 " cie=[%6tx]\n"
" CIE_pointer: %" PRIu64 "\n"
" initial_location: %s",
{
Dwfl_Module *dwflmod;
Dwarf *dbg;
+ Dwarf_Die *die;
int level;
bool silent;
unsigned int version;
unsigned int addrsize;
unsigned int offset_size;
- Dwarf_Off cu_offset;
+ struct Dwarf_CU *cu;
};
dwarf_errmsg (-1));
return DWARF_CB_ABORT;
}
- char *a = format_dwarf_addr (cbargs->dwflmod, cbargs->addrsize, addr);
+ char *a = format_dwarf_addr (cbargs->dwflmod, cbargs->addrsize,
+ addr, addr);
printf (" %*s%-20s (%s) %s\n",
(int) (level * 2), "", dwarf_attr_name (attr),
dwarf_form_name (form), a);
case DW_AT_GNU_call_site_target:
case DW_AT_GNU_call_site_target_clobbered:
notice_listptr (section_loc, &known_loclistptr,
- cbargs->addrsize, cbargs->offset_size, num);
+ cbargs->addrsize, cbargs->offset_size,
+ cbargs->cu, num);
if (!cbargs->silent)
printf (" %*s%-20s (%s) location list [%6" PRIxMAX "]\n",
(int) (level * 2), "", dwarf_attr_name (attr),
case DW_AT_ranges:
notice_listptr (section_ranges, &known_rangelistptr,
- cbargs->addrsize, cbargs->offset_size, num);
+ cbargs->addrsize, cbargs->offset_size,
+ cbargs->cu, num);
if (!cbargs->silent)
printf (" %*s%-20s (%s) range list [%6" PRIxMAX "]\n",
(int) (level * 2), "", dwarf_attr_name (attr),
if (cbargs->silent)
break;
- if (valuestr == NULL)
- printf (" %*s%-20s (%s) %" PRIuMAX "\n",
- (int) (level * 2), "", dwarf_attr_name (attr),
- dwarf_form_name (form), (uintmax_t) num);
+ /* When highpc is in constant form it is relative to lowpc.
+ In that case also show the address. */
+ Dwarf_Addr highpc;
+ if (attr == DW_AT_high_pc && dwarf_highpc (cbargs->die, &highpc) == 0)
+ {
+ char *a = format_dwarf_addr (cbargs->dwflmod, cbargs->addrsize,
+ highpc, highpc);
+ printf (" %*s%-20s (%s) %" PRIuMAX " (%s)\n",
+ (int) (level * 2), "", dwarf_attr_name (attr),
+ dwarf_form_name (form), (uintmax_t) num, a);
+ free (a);
+ }
else
- printf (" %*s%-20s (%s) %s (%" PRIuMAX ")\n",
- (int) (level * 2), "", dwarf_attr_name (attr),
- dwarf_form_name (form), valuestr, (uintmax_t) num);
+ {
+ Dwarf_Sword snum = 0;
+ if (form == DW_FORM_sdata)
+ if (unlikely (dwarf_formsdata (attrp, &snum) != 0))
+ goto attrval_out;
+
+ if (valuestr == NULL)
+ {
+ printf (" %*s%-20s (%s)",
+ (int) (level * 2), "", dwarf_attr_name (attr),
+ dwarf_form_name (form));
+ if (form == DW_FORM_sdata)
+ printf (" %" PRIdMAX "\n", (intmax_t) snum);
+ else
+ printf (" %" PRIuMAX "\n", (uintmax_t) num);
+ }
+ else
+ {
+ printf (" %*s%-20s (%s) %s",
+ (int) (level * 2), "", dwarf_attr_name (attr),
+ dwarf_form_name (form), valuestr);
+ if (form == DW_FORM_sdata)
+ printf (" (%" PRIdMAX ")\n", (intmax_t) snum);
+ else
+ printf (" (%" PRIuMAX ")\n", (uintmax_t) num);
+ }
+ }
break;
case DW_FORM_flag:
print_ops (cbargs->dwflmod, cbargs->dbg,
12 + level * 2, 12 + level * 2,
cbargs->version, cbargs->addrsize, cbargs->offset_size,
- block.length, block.data);
+ attrp->cu, block.length, block.data);
break;
}
break;
.silent = silent,
.version = version,
.addrsize = addrsize,
- .offset_size = offsize,
- .cu_offset = offset
+ .offset_size = offsize
};
offset += cuhl;
goto do_return;
}
+ args.cu = dies[0].cu;
+
do
{
offset = dwarf_dieoffset (&dies[level]);
/* Print the attribute values. */
args.level = level;
+ args.die = &dies[level];
(void) dwarf_getattrs (&dies[level], attr_callback, &args, 0);
/* Make room for the next level's DIE. */
static void
+print_decoded_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
+ Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
+{
+ printf (gettext ("\
+\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n\n"),
+ elf_ndxscn (scn), section_name (ebl, ehdr, shdr),
+ (uint64_t) shdr->sh_offset);
+
+ size_t address_size
+ = elf_getident (ebl->elf, NULL)[EI_CLASS] == ELFCLASS32 ? 4 : 8;
+
+ Dwarf_Off cuoffset;
+ Dwarf_Off ncuoffset = 0;
+ size_t hsize;
+ while (dwarf_nextcu (dbg, cuoffset = ncuoffset, &ncuoffset, &hsize,
+ NULL, NULL, NULL) == 0)
+ {
+ Dwarf_Die cudie;
+ if (dwarf_offdie (dbg, cuoffset + hsize, &cudie) == NULL)
+ continue;
+
+ size_t nlines;
+ Dwarf_Lines *lines;
+ if (dwarf_getsrclines (&cudie, &lines, &nlines) != 0)
+ continue;
+
+ printf (" CU [%" PRIx64 "] %s\n",
+ dwarf_dieoffset (&cudie), dwarf_diename (&cudie));
+ printf (" line:col SBPE* disc isa op address"
+ " (Statement Block Prologue Epilogue *End)\n");
+ const char *last_file = "";
+ for (size_t n = 0; n < nlines; n++)
+ {
+ Dwarf_Line *line = dwarf_onesrcline (lines, n);
+ Dwarf_Word mtime, length;
+ const char *file = dwarf_linesrc (line, &mtime, &length);
+ if (strcmp (last_file, file) != 0)
+ {
+ printf (" %s (mtime: %" PRIu64 ", length: %" PRIu64 ")\n",
+ file, mtime, length);
+ last_file = file;
+ }
+
+ int lineno, colno;
+ bool statement, endseq, block, prologue_end, epilogue_begin;
+ unsigned int lineop, isa, disc;
+ Dwarf_Addr address;
+ dwarf_lineaddr (line, &address);
+ dwarf_lineno (line, &lineno);
+ dwarf_linecol (line, &colno);
+ dwarf_lineop_index (line, &lineop);
+ dwarf_linebeginstatement (line, &statement);
+ dwarf_lineendsequence (line, &endseq);
+ dwarf_lineblock (line, &block);
+ dwarf_lineprologueend (line, &prologue_end);
+ dwarf_lineepiloguebegin (line, &epilogue_begin);
+ dwarf_lineisa (line, &isa);
+ dwarf_linediscriminator (line, &disc);
+
+ /* End sequence is special, it is one byte past. */
+ char *a = format_dwarf_addr (dwflmod, address_size,
+ address - (endseq ? 1 : 0), address);
+ printf (" %4d:%-3d %c%c%c%c%c %4d %3d %2d %s\n",
+ lineno, colno,
+ (statement ? 'S' : ' '),
+ (block ? 'B' : ' '),
+ (prologue_end ? 'P' : ' '),
+ (epilogue_begin ? 'E' : ' '),
+ (endseq ? '*' : ' '),
+ disc, isa, lineop, a);
+ free (a);
+
+ if (endseq)
+ printf("\n");
+ }
+ }
+}
+
+
+static void
print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
+ if (decodedline)
+ {
+ print_decoded_line_section (dwflmod, ebl, ehdr, scn, shdr, dbg);
+ return;
+ }
+
printf (gettext ("\
\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"),
elf_ndxscn (scn), section_name (ebl, ehdr, shdr),
/* There is no functionality in libdw to read the information in the
way it is represented here. Hardcode the decoder. */
- Elf_Data *data = elf_getdata (scn, NULL);
+ Elf_Data *data = dbg->sectiondata[IDX_debug_line];
if (unlikely (data == NULL || data->d_buf == NULL))
{
error (0, 0, gettext ("cannot get line data section data: %s"),
line += line_increment;
advance_pc ((opcode - opcode_base) / line_range);
- char *a = format_dwarf_addr (dwflmod, 0, address);
+ char *a = format_dwarf_addr (dwflmod, 0, address, address);
if (show_op_index)
printf (gettext ("\
special opcode %u: address+%u = %s, op_index = %u, line%+d = %zu\n"),
else
address = read_8ubyte_unaligned_inc (dbg, linep);
{
- char *a = format_dwarf_addr (dwflmod, 0, address);
+ char *a = format_dwarf_addr (dwflmod, 0, address, address);
printf (gettext (" set address to %s\n"), a);
free (a);
}
get_uleb128 (u128, linep);
advance_pc (u128);
{
- char *a = format_dwarf_addr (dwflmod, 0, address);
+ char *a = format_dwarf_addr (dwflmod, 0, address, address);
if (show_op_index)
printf (gettext ("\
advance address by %u to %s, op_index to %u\n"),
/* Takes no argument. */
advance_pc ((255 - opcode_base) / line_range);
{
- char *a = format_dwarf_addr (dwflmod, 0, address);
+ char *a = format_dwarf_addr (dwflmod, 0, address, address);
if (show_op_index)
printf (gettext ("\
advance address by constant %u to %s, op_index to %u\n"),
address += u128;
op_index = 0;
{
- char *a = format_dwarf_addr (dwflmod, 0, address);
+ char *a = format_dwarf_addr (dwflmod, 0, address, address);
printf (gettext ("\
advance address by fixed value %u to %s\n"),
u128, a);
Ebl *ebl, GElf_Ehdr *ehdr,
Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
{
- Elf_Data *data = elf_rawdata (scn, NULL);
+ Elf_Data *data = dbg->sectiondata[IDX_debug_loc];
if (unlikely (data == NULL))
{
uint_fast8_t offset_size = 4;
bool first = true;
+ struct Dwarf_CU *cu = NULL;
+ Dwarf_Addr base = 0;
unsigned char *readp = data->d_buf;
unsigned char *const endp = (unsigned char *) data->d_buf + data->d_size;
while (readp < endp)
ptrdiff_t offset = readp - (unsigned char *) data->d_buf;
if (first && skip_listptr_hole (&known_loclistptr, &listptr_idx,
- &address_size, &offset_size,
- offset, &readp, endp))
+ &address_size, &offset_size, &base,
+ &cu, offset, &readp, endp))
continue;
- if (unlikely (data->d_size - offset < address_size * 2))
+ if (unlikely (data->d_size - offset < (size_t) address_size * 2))
{
printf (gettext (" [%6tx] <INVALID DATA>\n"), offset);
break;
if (begin == (Dwarf_Addr) -1l) /* Base address entry. */
{
- char *b = format_dwarf_addr (dwflmod, address_size, end);
+ char *b = format_dwarf_addr (dwflmod, address_size, end, end);
printf (gettext (" [%6tx] base address %s\n"), offset, b);
free (b);
+ base = end;
}
else if (begin == 0 && end == 0) /* End of list entry. */
{
/* We have a location expression entry. */
uint_fast16_t len = read_2ubyte_unaligned_inc (dbg, readp);
- char *b = format_dwarf_addr (dwflmod, address_size, begin);
- char *e = format_dwarf_addr (dwflmod, address_size, end);
+ char *b = format_dwarf_addr (dwflmod, address_size, base + begin,
+ begin);
+ char *e = format_dwarf_addr (dwflmod, address_size, base + end,
+ end);
if (first) /* First entry in a list. */
printf (gettext (" [%6tx] %s..%s"), offset, b, e);
}
print_ops (dwflmod, dbg, 1, 18 + (address_size * 4),
- 3 /*XXX*/, address_size, offset_size, len, readp);
+ 3 /*XXX*/, address_size, offset_size, cu, len, readp);
first = false;
readp += len;
/* There is no function in libdw to iterate over the raw content of
the section but it is easy enough to do. */
- Elf_Data *data = elf_getdata (scn, NULL);
+ Elf_Data *data = dbg->sectiondata[IDX_debug_macinfo];
if (unlikely (data == NULL || data->d_buf == NULL))
{
error (0, 0, gettext ("cannot get macro information section data: %s"),
(uint64_t) shdr->sh_offset);
putc_unlocked ('\n', stdout);
- Elf_Data *data = elf_getdata (scn, NULL);
+ Elf_Data *data = dbg->sectiondata[IDX_debug_macro];
if (unlikely (data == NULL || data->d_buf == NULL))
{
error (0, 0, gettext ("cannot get macro information section data: %s"),
}
const unsigned char *vendor[DW_MACRO_GNU_hi_user - DW_MACRO_GNU_lo_user];
+ memset (vendor, 0, sizeof vendor);
if (flag & 0x04)
{
// 1 byte length, for each item, 1 byte opcode, uleb128 number
// The only difference between version 4 and version 5 is the
// hash used for generating the table. Version 6 contains symbols
- // for inlined functions, older versions didn't.
- if (vers < 4 || vers > 7)
+ // for inlined functions, older versions didn't. Version 7 adds
+ // symbol kinds. Version 8 just indicates that it correctly includes
+ // TUs for symbols.
+ if (vers < 4 || vers > 8)
{
printf (gettext (" unknown version, cannot parse section\n"));
return;
uint32_t idx = read_4ubyte_unaligned (dbg, readp);
readp += 4;
- char *l = format_dwarf_addr (dwflmod, 8, low);
- char *h = format_dwarf_addr (dwflmod, 8, high - 1);
+ char *l = format_dwarf_addr (dwflmod, 8, low, low);
+ char *h = format_dwarf_addr (dwflmod, 8, high - 1, high);
printf (" [%4zu] %s..%s, CU index: %5" PRId32 "\n",
n, l, h, idx);
+ free (l);
+ free (h);
n++;
}
cu_kind = read_4ubyte_unaligned (dbg, readcus);
cu = cu_kind & ((1 << 24) - 1);
kind = (cu_kind >> 28) & 7;
- is_static = cu_kind & (1 << 31);
+ is_static = cu_kind & (1U << 31);
if (cu > cu_nr - 1)
printf ("%" PRId32 "T", cu - (uint32_t) cu_nr);
else
/ sizeof (debug_sections[0]));
const char *name = elf_strptr (ebl->elf, shstrndx,
shdr->sh_name);
- int n;
+ if (name == NULL)
+ continue;
+ int n;
for (n = 0; n < ndebug_sections; ++n)
if (strcmp (name, debug_sections[n].name) == 0
#if USE_ZLIB
#define ITEM_INDENT 4
-#define ITEM_WRAP_COLUMN 150
-#define REGISTER_WRAP_COLUMN 75
+#define WRAP_COLUMN 75
+
+/* Print "NAME: FORMAT", wrapping when output text would make the line
+ exceed WRAP_COLUMN. Unpadded numbers look better for the core items
+ but this function is also used for registers which should be printed
+ aligned. Fortunately registers output uses fixed fields width (such
+ as %11d) for the alignment.
+
+ Line breaks should not depend on the particular values although that
+ may happen in some cases of the core items. */
-/* Print "NAME: FORMAT", wrapping when FORMAT_MAX chars of FORMAT would
- make the line exceed ITEM_WRAP_COLUMN. Unpadded numbers look better
- for the core items. But we do not want the line breaks to depend on
- the particular values. */
static unsigned int
-__attribute__ ((format (printf, 7, 8)))
+__attribute__ ((format (printf, 6, 7)))
print_core_item (unsigned int colno, char sep, unsigned int wrap,
- size_t name_width, const char *name,
- size_t format_max, const char *format, ...)
+ size_t name_width, const char *name, const char *format, ...)
{
size_t len = strlen (name);
if (name_width < len)
name_width = len;
- size_t n = name_width + sizeof ": " - 1 + format_max;
+ char *out;
+ va_list ap;
+ va_start (ap, format);
+ int out_len = vasprintf (&out, format, ap);
+ va_end (ap);
+ if (out_len == -1)
+ error (EXIT_FAILURE, 0, _("memory exhausted"));
+
+ size_t n = name_width + sizeof ": " - 1 + out_len;
if (colno == 0)
{
colno = ITEM_INDENT + n;
}
- printf ("%s: %*s", name, (int) (name_width - len), "");
+ printf ("%s: %*s%s", name, (int) (name_width - len), "", out);
- va_list ap;
- va_start (ap, format);
- vprintf (format, ap);
- va_end (ap);
+ free (out);
return colno;
}
uint_fast16_t count = item->count ?: 1;
#define TYPES \
- DO_TYPE (BYTE, Byte, "0x%.2" PRIx8, "%" PRId8, 4); \
- DO_TYPE (HALF, Half, "0x%.4" PRIx16, "%" PRId16, 6); \
- DO_TYPE (WORD, Word, "0x%.8" PRIx32, "%" PRId32, 11); \
- DO_TYPE (SWORD, Sword, "%" PRId32, "%" PRId32, 11); \
- DO_TYPE (XWORD, Xword, "0x%.16" PRIx64, "%" PRId64, 20); \
- DO_TYPE (SXWORD, Sxword, "%" PRId64, "%" PRId64, 20)
-
-#define DO_TYPE(NAME, Name, hex, dec, max) GElf_##Name Name[count]
+ DO_TYPE (BYTE, Byte, "0x%.2" PRIx8, "%" PRId8); \
+ DO_TYPE (HALF, Half, "0x%.4" PRIx16, "%" PRId16); \
+ DO_TYPE (WORD, Word, "0x%.8" PRIx32, "%" PRId32); \
+ DO_TYPE (SWORD, Sword, "%" PRId32, "%" PRId32); \
+ DO_TYPE (XWORD, Xword, "0x%.16" PRIx64, "%" PRId64); \
+ DO_TYPE (SXWORD, Sxword, "%" PRId64, "%" PRId64)
+
+#define DO_TYPE(NAME, Name, hex, dec) GElf_##Name Name[count]
union { TYPES; } value;
#undef DO_TYPE
assert (count == 1);
switch (type)
{
-#define DO_TYPE(NAME, Name, hex, dec, max) \
+#define DO_TYPE(NAME, Name, hex, dec) \
case ELF_T_##NAME: \
- colno = print_core_item (colno, ',', ITEM_WRAP_COLUMN, \
- 0, item->name, max, dec, value.Name[0]); \
+ colno = print_core_item (colno, ',', WRAP_COLUMN, \
+ 0, item->name, dec, value.Name[0]); \
break
TYPES;
#undef DO_TYPE
assert (count == 1);
switch (type)
{
-#define DO_TYPE(NAME, Name, hex, dec, max) \
+#define DO_TYPE(NAME, Name, hex, dec) \
case ELF_T_##NAME: \
- colno = print_core_item (colno, ',', ITEM_WRAP_COLUMN, \
- 0, item->name, max, hex, value.Name[0]); \
+ colno = print_core_item (colno, ',', WRAP_COLUMN, \
+ 0, item->name, hex, value.Name[0]); \
break
TYPES;
#undef DO_TYPE
const unsigned int bias = item->format == 'b';
{
- char printed[(negate ? nbits - pop : pop) * 16];
+ char printed[(negate ? nbits - pop : pop) * 16 + 1];
char *p = printed;
*p = '\0';
}
unsigned int lastbit = 0;
+ unsigned int run = 0;
for (const unsigned int *i = data;
(void *) i < data + count * size; ++i)
{
unsigned int bit = ((void *) i - data) * 8;
unsigned int w = negate ? ~*i : *i;
- unsigned int run = 0;
while (w != 0)
{
int n = ffs (w);
w >>= n;
bit += n;
- if (lastbit + 1 == bit)
+ if (lastbit != 0 && lastbit + 1 == bit)
++run;
else
{
lastbit = bit;
}
}
- if (lastbit > 0 && lastbit + 1 != nbits)
- p += sprintf (p, "-%u", nbits - bias);
+ if (lastbit > 0 && run > 0 && lastbit + 1 != nbits)
+ p += sprintf (p, "-%u", lastbit - bias);
- colno = print_core_item (colno, ',', ITEM_WRAP_COLUMN, 0, item->name,
- 4 + nbits * 4,
+ colno = print_core_item (colno, ',', WRAP_COLUMN, 0, item->name,
negate ? "~<%s>" : "<%s>", printed);
}
break;
assert (count == 2);
Dwarf_Word sec;
Dwarf_Word usec;
- size_t maxfmt = 7;
switch (type)
{
-#define DO_TYPE(NAME, Name, hex, dec, max) \
+#define DO_TYPE(NAME, Name, hex, dec) \
case ELF_T_##NAME: \
sec = value.Name[0]; \
usec = value.Name[1]; \
- maxfmt += max; \
break
TYPES;
#undef DO_TYPE
else
usec &= UINT32_MAX;
}
- colno = print_core_item (colno, ',', ITEM_WRAP_COLUMN, 0, item->name,
- maxfmt, "%" PRIu64 ".%.6" PRIu64, sec, usec);
+ colno = print_core_item (colno, ',', WRAP_COLUMN, 0, item->name,
+ "%" PRIu64 ".%.6" PRIu64, sec, usec);
break;
case 'c':
assert (count == 1);
- colno = print_core_item (colno, ',', ITEM_WRAP_COLUMN, 0, item->name,
- 1, "%c", value.Byte[0]);
+ colno = print_core_item (colno, ',', WRAP_COLUMN, 0, item->name,
+ "%c", value.Byte[0]);
break;
case 's':
- colno = print_core_item (colno, ',', ITEM_WRAP_COLUMN, 0, item->name,
- count, "%.*s", (int) count, value.Byte);
+ colno = print_core_item (colno, ',', WRAP_COLUMN, 0, item->name,
+ "%.*s", (int) count, value.Byte);
break;
case '\n':
s = eol + 1;
}
- colno = ITEM_WRAP_COLUMN;
+ colno = WRAP_COLUMN;
+ break;
+
+ case 'h':
break;
default:
{
if (nitems == 0)
return 0;
+ unsigned int colno = 0;
+
+ /* FORMAT '\n' makes sense to be present only as a single item as it
+ processes all the data of a note. FORMATs 'b' and 'B' have a special case
+ if present as a single item but they can be also processed with other
+ items below. */
+ if (nitems == 1 && (items[0].format == '\n' || items[0].format == 'b'
+ || items[0].format == 'B'))
+ {
+ assert (items[0].offset == 0);
+ size_t size = descsz;
+ colno = handle_core_item (core, items, desc, colno, &size);
+ /* If SIZE is not zero here there is some remaining data. But we do not
+ know how to process it anyway. */
+ return colno;
+ }
+ for (size_t i = 0; i < nitems; ++i)
+ assert (items[i].format != '\n');
/* Sort to collect the groups together. */
const Ebl_Core_Item *sorted_items[nitems];
qsort (groups, ngroups, sizeof groups[0], &compare_core_item_groups);
/* Write out all the groups. */
- unsigned int colno = 0;
-
const void *last = desc;
- if (nitems == 1)
- {
- size_t size = descsz;
- colno = handle_core_item (core, sorted_items[0], desc, colno, &size);
- if (size == 0)
- return colno;
- desc += descsz - size;
- descsz = size;
- }
-
do
{
for (size_t i = 0; i < ngroups; ++i)
colno = handle_core_item (core, *item, desc, colno, NULL);
/* Force a line break at the end of the group. */
- colno = ITEM_WRAP_COLUMN;
+ colno = WRAP_COLUMN;
}
if (descsz == 0)
register_info (ebl, reg, regloc, name, &bits, &type);
#define TYPES \
- BITS (8, BYTE, "%4" PRId8, "0x%.2" PRIx8, 4); \
- BITS (16, HALF, "%6" PRId16, "0x%.4" PRIx16, 6); \
- BITS (32, WORD, "%11" PRId32, " 0x%.8" PRIx32, 11); \
- BITS (64, XWORD, "%20" PRId64, " 0x%.16" PRIx64, 20)
+ BITS (8, BYTE, "%4" PRId8, "0x%.2" PRIx8); \
+ BITS (16, HALF, "%6" PRId16, "0x%.4" PRIx16); \
+ BITS (32, WORD, "%11" PRId32, " 0x%.8" PRIx32); \
+ BITS (64, XWORD, "%20" PRId64, " 0x%.16" PRIx64)
-#define BITS(bits, xtype, sfmt, ufmt, max) \
+#define BITS(bits, xtype, sfmt, ufmt) \
uint##bits##_t b##bits; int##bits##_t b##bits##s
union { TYPES; uint64_t b128[2]; } value;
#undef BITS
case DW_ATE_address:
switch (bits)
{
-#define BITS(bits, xtype, sfmt, ufmt, max) \
+#define BITS(bits, xtype, sfmt, ufmt) \
case bits: \
desc = convert (core, ELF_T_##xtype, 1, &value, desc, 0); \
if (type == DW_ATE_signed) \
- colno = print_core_item (colno, ' ', REGISTER_WRAP_COLUMN, \
+ colno = print_core_item (colno, ' ', WRAP_COLUMN, \
maxregname, name, \
- max, sfmt, value.b##bits##s); \
+ sfmt, value.b##bits##s); \
else \
- colno = print_core_item (colno, ' ', REGISTER_WRAP_COLUMN, \
+ colno = print_core_item (colno, ' ', WRAP_COLUMN, \
maxregname, name, \
- max, ufmt, value.b##bits); \
+ ufmt, value.b##bits); \
break
TYPES;
assert (type == DW_ATE_unsigned);
desc = convert (core, ELF_T_XWORD, 2, &value, desc, 0);
int be = elf_getident (core, NULL)[EI_DATA] == ELFDATA2MSB;
- colno = print_core_item (colno, ' ', REGISTER_WRAP_COLUMN,
+ colno = print_core_item (colno, ' ', WRAP_COLUMN,
maxregname, name,
- 34, "0x%.16" PRIx64 "%.16" PRIx64,
+ "0x%.16" PRIx64 "%.16" PRIx64,
value.b128[!be], value.b128[be]);
break;
*h++ = "0123456789abcdef"[bytes[idx] >> 4];
*h++ = "0123456789abcdef"[bytes[idx] & 0xf];
}
- colno = print_core_item (colno, ' ', REGISTER_WRAP_COLUMN,
- maxregname, name,
- 2 + sizeof hex - 1, "0x%s", hex);
+ colno = print_core_item (colno, ' ', WRAP_COLUMN,
+ maxregname, name, "0x%s", hex);
break;
}
desc += regloc->pad;
reg->regloc, desc, colno);
/* Force a line break at the end of the group. */
- colno = REGISTER_WRAP_COLUMN;
+ colno = WRAP_COLUMN;
}
return colno;
}
}
+static bool
+buf_has_data (unsigned char const *ptr, unsigned char const *end, size_t sz)
+{
+ return ptr < end && (size_t) (end - ptr) >= sz;
+}
+
+static bool
+buf_read_int (Elf *core, unsigned char const **ptrp, unsigned char const *end,
+ int *retp)
+{
+ if (! buf_has_data (*ptrp, end, 4))
+ return false;
+
+ *ptrp = convert (core, ELF_T_WORD, 1, retp, *ptrp, 4);
+ return true;
+}
+
+static bool
+buf_read_ulong (Elf *core, unsigned char const **ptrp, unsigned char const *end,
+ uint64_t *retp)
+{
+ size_t sz = gelf_fsize (core, ELF_T_ADDR, 1, EV_CURRENT);
+ if (! buf_has_data (*ptrp, end, sz))
+ return false;
+
+ union
+ {
+ uint64_t u64;
+ uint32_t u32;
+ } u;
+
+ *ptrp = convert (core, ELF_T_ADDR, 1, &u, *ptrp, sz);
+
+ if (sz == 4)
+ *retp = u.u32;
+ else
+ *retp = u.u64;
+ return true;
+}
+
+static void
+handle_siginfo_note (Elf *core, GElf_Word descsz, GElf_Off desc_pos)
+{
+ Elf_Data *data = elf_getdata_rawchunk (core, desc_pos, descsz, ELF_T_BYTE);
+ if (data == NULL)
+ error (EXIT_FAILURE, 0,
+ gettext ("cannot convert core note data: %s"), elf_errmsg (-1));
+
+ unsigned char const *ptr = data->d_buf;
+ unsigned char const *const end = data->d_buf + data->d_size;
+
+ /* Siginfo head is three ints: signal number, error number, origin
+ code. */
+ int si_signo, si_errno, si_code;
+ if (! buf_read_int (core, &ptr, end, &si_signo)
+ || ! buf_read_int (core, &ptr, end, &si_errno)
+ || ! buf_read_int (core, &ptr, end, &si_code))
+ {
+ fail:
+ printf (" Not enough data in NT_SIGINFO note.\n");
+ return;
+ }
+
+ /* Next is a pointer-aligned union of structures. On 64-bit
+ machines, that implies a word of padding. */
+ if (gelf_getclass (core) == ELFCLASS64)
+ ptr += 4;
+
+ printf (" si_signo: %d, si_errno: %d, si_code: %d\n",
+ si_signo, si_errno, si_code);
+
+ if (si_code > 0)
+ switch (si_signo)
+ {
+ case SIGILL:
+ case SIGFPE:
+ case SIGSEGV:
+ case SIGBUS:
+ {
+ uint64_t addr;
+ if (! buf_read_ulong (core, &ptr, end, &addr))
+ goto fail;
+ printf (" fault address: %#" PRIx64 "\n", addr);
+ break;
+ }
+ default:
+ ;
+ }
+ else if (si_code == SI_USER)
+ {
+ int pid, uid;
+ if (! buf_read_int (core, &ptr, end, &pid)
+ || ! buf_read_int (core, &ptr, end, &uid))
+ goto fail;
+ printf (" sender PID: %d, sender UID: %d\n", pid, uid);
+ }
+}
+
+static void
+handle_file_note (Elf *core, GElf_Word descsz, GElf_Off desc_pos)
+{
+ Elf_Data *data = elf_getdata_rawchunk (core, desc_pos, descsz, ELF_T_BYTE);
+ if (data == NULL)
+ error (EXIT_FAILURE, 0,
+ gettext ("cannot convert core note data: %s"), elf_errmsg (-1));
+
+ unsigned char const *ptr = data->d_buf;
+ unsigned char const *const end = data->d_buf + data->d_size;
+
+ uint64_t count, page_size;
+ if (! buf_read_ulong (core, &ptr, end, &count)
+ || ! buf_read_ulong (core, &ptr, end, &page_size))
+ {
+ fail:
+ printf (" Not enough data in NT_FILE note.\n");
+ return;
+ }
+
+ /* Where file names are stored. */
+ unsigned char const *const fstart
+ = ptr + 3 * count * gelf_fsize (core, ELF_T_ADDR, 1, EV_CURRENT);
+ char const *fptr = (char *) fstart;
+
+ printf (" %" PRId64 " files:\n", count);
+ for (uint64_t i = 0; i < count; ++i)
+ {
+ uint64_t mstart, mend, moffset;
+ if (! buf_read_ulong (core, &ptr, fstart, &mstart)
+ || ! buf_read_ulong (core, &ptr, fstart, &mend)
+ || ! buf_read_ulong (core, &ptr, fstart, &moffset))
+ goto fail;
+
+ const char *fnext = memchr (fptr, '\0', (char *) end - fptr);
+ if (fnext == NULL)
+ goto fail;
+
+ int ct = printf (" %08" PRIx64 "-%08" PRIx64
+ " %08" PRIx64 " %" PRId64,
+ mstart, mend, moffset * page_size, mend - mstart);
+ printf ("%*s%s\n", ct > 50 ? 3 : 53 - ct, "", fptr);
+
+ fptr = fnext + 1;
+ }
+}
+
static void
handle_core_note (Ebl *ebl, const GElf_Nhdr *nhdr,
const char *name, const void *desc)
&& !memcmp (name, "CORE", 4))
handle_auxv_note (ebl, ebl->elf, nhdr.n_descsz,
start + desc_offset);
+ else if (nhdr.n_namesz == 5 && strcmp (name, "CORE") == 0)
+ switch (nhdr.n_type)
+ {
+ case NT_SIGINFO:
+ handle_siginfo_note (ebl->elf, nhdr.n_descsz,
+ start + desc_offset);
+ break;
+
+ case NT_FILE:
+ handle_file_note (ebl->elf, nhdr.n_descsz,
+ start + desc_offset);
+ break;
+
+ default:
+ handle_core_note (ebl, &nhdr, name, desc);
+ }
else
handle_core_note (ebl, &nhdr, name, desc);
}
/* Print size information from ELF file.
- Copyright (C) 2000-2007,2009,2012 Red Hat, Inc.
+ Copyright (C) 2000-2007,2009,2012,2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
digits - 2, sgettext ("sysv|size"),
digits, sgettext ("sysv|addr"));
- const char *fmtstr;
- if (radix == radix_hex)
- fmtstr = "%-*s %*" PRIx64 " %*" PRIx64 "\n";
- else if (radix == radix_decimal)
- fmtstr = "%-*s %*" PRId64 " %*" PRId64 "\n";
- else
- fmtstr = "%-*s %*" PRIo64 " %*" PRIo64 "\n";
-
/* Iterate over all sections. */
GElf_Off total = 0;
while ((scn = elf_nextscn (elf, scn)) != NULL)
/* Ignore all sections which are not used at runtime. */
if ((shdr->sh_flags & SHF_ALLOC) != 0)
{
- printf (fmtstr,
+ printf ((radix == radix_hex
+ ? "%-*s %*" PRIx64 " %*" PRIx64 "\n"
+ : (radix == radix_decimal
+ ? "%-*s %*" PRId64 " %*" PRId64 "\n"
+ : "%-*s %*" PRIo64 " %*" PRIo64 "\n")),
maxlen, elf_strptr (elf, shstrndx, shdr->sh_name),
digits - 2, shdr->sh_size,
digits, shdr->sh_addr);
error (EXIT_FAILURE, 0,
gettext ("cannot get section header string table index"));
- const char *fmtstr;
- if (radix == radix_hex)
- fmtstr = "%" PRIx64 "(%s)";
- else if (radix == radix_decimal)
- fmtstr = "%" PRId64 "(%s)";
- else
- fmtstr = "%" PRIo64 "(%s)";
-
/* Iterate over all sections. */
GElf_Off total = 0;
bool first = true;
fputs_unlocked (" + ", stdout);
first = false;
- printf (fmtstr, shdr->sh_size,
- elf_strptr (elf, shstrndx, shdr->sh_name));
+ printf ((radix == radix_hex ? "%" PRIx64 "(%s)"
+ : (radix == radix_decimal ? "%" PRId64 "(%s)"
+ : "%" PRIo64 "(%s)")),
+ shdr->sh_size, elf_strptr (elf, shstrndx, shdr->sh_name));
total += shdr->sh_size;
}
--- /dev/null
+/* Unwinding of frames like gstack/pstack.
+ Copyright (C) 2013-2014 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <argp.h>
+#include <error.h>
+#include <stdlib.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <string.h>
+#include <locale.h>
+#include <fcntl.h>
+#include ELFUTILS_HEADER(dwfl)
+
+#include <dwarf.h>
+#include <system.h>
+
+/* Name and version of program. */
+static void print_version (FILE *stream, struct argp_state *state);
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+
+/* Bug report address. */
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
+
+/* non-printable argp options. */
+#define OPT_DEBUGINFO 0x100
+#define OPT_COREFILE 0x101
+
+static bool show_activation = false;
+static bool show_module = false;
+static bool show_build_id = false;
+static bool show_source = false;
+static bool show_one_tid = false;
+static bool show_quiet = false;
+static bool show_raw = false;
+static bool show_modules = false;
+static bool show_debugname = false;
+static bool show_inlines = false;
+
+static int maxframes = 256;
+
+struct frame
+{
+ Dwarf_Addr pc;
+ bool isactivation;
+};
+
+struct frames
+{
+ int frames;
+ int allocated;
+ struct frame *frame;
+};
+
+static Dwfl *dwfl = NULL;
+static pid_t pid = 0;
+static int core_fd = -1;
+static Elf *core = NULL;
+static const char *exec = NULL;
+static char *debuginfo_path = NULL;
+
+static const Dwfl_Callbacks proc_callbacks =
+ {
+ .find_elf = dwfl_linux_proc_find_elf,
+ .find_debuginfo = dwfl_standard_find_debuginfo,
+ .debuginfo_path = &debuginfo_path,
+ };
+
+static const Dwfl_Callbacks core_callbacks =
+ {
+ .find_elf = dwfl_build_id_find_elf,
+ .find_debuginfo = dwfl_standard_find_debuginfo,
+ .debuginfo_path = &debuginfo_path,
+ };
+
+#ifdef USE_DEMANGLE
+static size_t demangle_buffer_len = 0;
+static char *demangle_buffer = NULL;
+#endif
+
+/* Whether any frames have been shown at all. Determines exit status. */
+static bool frames_shown = false;
+
+/* Program exit codes. All frames shown without any errors is GOOD.
+ Some frames shown with some non-fatal errors is an ERROR. A fatal
+ error or no frames shown at all is BAD. A command line USAGE exit
+ is generated by argp_error. */
+#define EXIT_OK 0
+#define EXIT_ERROR 1
+#define EXIT_BAD 2
+#define EXIT_USAGE 64
+
+static int
+get_addr_width (Dwfl_Module *mod)
+{
+ // Try to find the address wide if possible.
+ static int width = 0;
+ if (width == 0 && mod)
+ {
+ Dwarf_Addr bias;
+ Elf *elf = dwfl_module_getelf (mod, &bias);
+ if (elf)
+ {
+ GElf_Ehdr ehdr_mem;
+ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem);
+ if (ehdr)
+ width = ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 8 : 16;
+ }
+ }
+ if (width == 0)
+ width = 16;
+
+ return width;
+}
+
+static int
+module_callback (Dwfl_Module *mod, void **userdata __attribute__((unused)),
+ const char *name, Dwarf_Addr start,
+ void *arg __attribute__((unused)))
+{
+ /* Forces resolving of main elf and debug files. */
+ Dwarf_Addr bias;
+ Elf *elf = dwfl_module_getelf (mod, &bias);
+ Dwarf *dwarf = dwfl_module_getdwarf (mod, &bias);
+
+ Dwarf_Addr end;
+ const char *mainfile;
+ const char *debugfile;
+ const char *modname = dwfl_module_info (mod, NULL, NULL, &end, NULL,
+ NULL, &mainfile, &debugfile);
+ assert (strcmp (modname, name) == 0);
+
+ int width = get_addr_width (mod);
+ printf ("0x%0*" PRIx64 "-0x%0*" PRIx64 " %s\n",
+ width, start, width, end, basename (name));
+
+ const unsigned char *id;
+ GElf_Addr id_vaddr;
+ int id_len = dwfl_module_build_id (mod, &id, &id_vaddr);
+ if (id_len > 0)
+ {
+ printf (" [");
+ do
+ printf ("%02" PRIx8, *id++);
+ while (--id_len > 0);
+ printf ("]\n");
+ }
+
+ if (elf != NULL)
+ printf (" %s\n", mainfile != NULL ? mainfile : "-");
+ if (dwarf != NULL)
+ printf (" %s\n", debugfile != NULL ? debugfile : "-");
+
+ return DWARF_CB_OK;
+}
+
+static int
+frame_callback (Dwfl_Frame *state, void *arg)
+{
+ struct frames *frames = (struct frames *) arg;
+ int nr = frames->frames;
+ if (! dwfl_frame_pc (state, &frames->frame[nr].pc,
+ &frames->frame[nr].isactivation))
+ return -1;
+
+ frames->frames++;
+ if (frames->frames == maxframes)
+ return DWARF_CB_ABORT;
+
+ if (frames->frames == frames->allocated)
+ {
+ frames->allocated *= 2;
+ frames->frame = realloc (frames->frame,
+ sizeof (struct frame) * frames->allocated);
+ if (frames->frame == NULL)
+ error (EXIT_BAD, errno, "realloc frames.frame");
+ }
+
+ return DWARF_CB_OK;
+}
+
+static const char*
+die_name (Dwarf_Die *die)
+{
+ Dwarf_Attribute attr;
+ const char *name;
+ name = dwarf_formstring (dwarf_attr_integrate (die,
+ DW_AT_MIPS_linkage_name,
+ &attr)
+ ?: dwarf_attr_integrate (die,
+ DW_AT_linkage_name,
+ &attr));
+ if (name == NULL)
+ name = dwarf_diename (die);
+
+ return name;
+}
+
+static void
+print_frame (int nr, Dwarf_Addr pc, bool isactivation,
+ Dwarf_Addr pc_adjusted, Dwfl_Module *mod,
+ const char *symname, Dwarf_Die *cudie,
+ Dwarf_Die *die)
+{
+ int width = get_addr_width (mod);
+ printf ("#%-2u 0x%0*" PRIx64, nr, width, (uint64_t) pc);
+
+ if (show_activation)
+ printf ("%4s", ! isactivation ? "- 1" : "");
+
+ if (symname != NULL)
+ {
+#ifdef USE_DEMANGLE
+ // Require GNU v3 ABI by the "_Z" prefix.
+ if (! show_raw && symname[0] == '_' && symname[1] == 'Z')
+ {
+ int status = -1;
+ char *dsymname = __cxa_demangle (symname, demangle_buffer,
+ &demangle_buffer_len, &status);
+ if (status == 0)
+ symname = demangle_buffer = dsymname;
+ }
+#endif
+ printf (" %s", symname);
+ }
+
+ const char* fname;
+ Dwarf_Addr start;
+ fname = dwfl_module_info(mod, NULL, &start,
+ NULL, NULL, NULL, NULL, NULL);
+ if (show_module)
+ {
+ if (fname != NULL)
+ printf (" - %s", fname);
+ }
+
+ if (show_build_id)
+ {
+ const unsigned char *id;
+ GElf_Addr id_vaddr;
+ int id_len = dwfl_module_build_id (mod, &id, &id_vaddr);
+ if (id_len > 0)
+ {
+ printf ("\n [");
+ do
+ printf ("%02" PRIx8, *id++);
+ while (--id_len > 0);
+ printf ("]@0x%0" PRIx64 "+0x%" PRIx64,
+ start, pc_adjusted - start);
+ }
+ }
+
+ if (show_source)
+ {
+ int line, col;
+ const char* sname;
+ line = col = -1;
+ sname = NULL;
+ if (die != NULL)
+ {
+ Dwarf_Files *files;
+ if (dwarf_getsrcfiles (cudie, &files, NULL) == 0)
+ {
+ Dwarf_Attribute attr;
+ Dwarf_Word val;
+ if (dwarf_formudata (dwarf_attr (die, DW_AT_call_file, &attr),
+ &val) == 0)
+ {
+ sname = dwarf_filesrc (files, val, NULL, NULL);
+ if (dwarf_formudata (dwarf_attr (die, DW_AT_call_line,
+ &attr), &val) == 0)
+ {
+ line = val;
+ if (dwarf_formudata (dwarf_attr (die, DW_AT_call_column,
+ &attr), &val) == 0)
+ col = val;
+ }
+ }
+ }
+ }
+ else
+ {
+ Dwfl_Line *lineobj = dwfl_module_getsrc(mod, pc_adjusted);
+ if (lineobj)
+ sname = dwfl_lineinfo (lineobj, NULL, &line, &col, NULL, NULL);
+ }
+
+ if (sname != NULL)
+ {
+ printf ("\n %s", sname);
+ if (line > 0)
+ {
+ printf (":%d", line);
+ if (col > 0)
+ printf (":%d", col);
+ }
+ }
+ }
+ printf ("\n");
+}
+
+static void
+print_inline_frames (int *nr, Dwarf_Addr pc, bool isactivation,
+ Dwarf_Addr pc_adjusted, Dwfl_Module *mod,
+ const char *symname, Dwarf_Die *cudie, Dwarf_Die *die)
+{
+ Dwarf_Die *scopes = NULL;
+ int nscopes = dwarf_getscopes_die (die, &scopes);
+ if (nscopes > 0)
+ {
+ /* scopes[0] == die, the lowest level, for which we already have
+ the name. This is the actual source location where it
+ happened. */
+ print_frame ((*nr)++, pc, isactivation, pc_adjusted, mod, symname,
+ NULL, NULL);
+
+ /* last_scope is the source location where the next frame/function
+ call was done. */
+ Dwarf_Die *last_scope = &scopes[0];
+ for (int i = 1; i < nscopes && (maxframes == 0 || *nr < maxframes); i++)
+ {
+ Dwarf_Die *scope = &scopes[i];
+ int tag = dwarf_tag (scope);
+ if (tag != DW_TAG_inlined_subroutine
+ && tag != DW_TAG_entry_point
+ && tag != DW_TAG_subprogram)
+ continue;
+
+ symname = die_name (scope);
+ print_frame ((*nr)++, pc, isactivation, pc_adjusted, mod, symname,
+ cudie, last_scope);
+
+ /* Found the "top-level" in which everything was inlined? */
+ if (tag == DW_TAG_subprogram)
+ break;
+
+ last_scope = scope;
+ }
+ }
+ free (scopes);
+}
+
+static void
+print_frames (struct frames *frames, pid_t tid, int dwflerr, const char *what)
+{
+ if (frames->frames > 0)
+ frames_shown = true;
+
+ printf ("TID %d:\n", tid);
+ int frame_nr = 0;
+ for (int nr = 0; nr < frames->frames && (maxframes == 0
+ || frame_nr < maxframes); nr++)
+ {
+ Dwarf_Addr pc = frames->frame[nr].pc;
+ bool isactivation = frames->frame[nr].isactivation;
+ Dwarf_Addr pc_adjusted = pc - (isactivation ? 0 : 1);
+
+ /* Get PC->SYMNAME. */
+ Dwfl_Module *mod = dwfl_addrmodule (dwfl, pc_adjusted);
+ const char *symname = NULL;
+ Dwarf_Die die_mem;
+ Dwarf_Die *die = NULL;
+ Dwarf_Die *cudie = NULL;
+ if (mod && ! show_quiet)
+ {
+ if (show_debugname)
+ {
+ Dwarf_Addr bias = 0;
+ Dwarf_Die *scopes = NULL;
+ cudie = dwfl_module_addrdie (mod, pc_adjusted, &bias);
+ int nscopes = dwarf_getscopes (cudie, pc_adjusted - bias,
+ &scopes);
+
+ /* Find the first function-like DIE with a name in scope. */
+ for (int i = 0; symname == NULL && i < nscopes; i++)
+ {
+ Dwarf_Die *scope = &scopes[i];
+ int tag = dwarf_tag (scope);
+ if (tag == DW_TAG_subprogram
+ || tag == DW_TAG_inlined_subroutine
+ || tag == DW_TAG_entry_point)
+ symname = die_name (scope);
+
+ if (symname != NULL)
+ {
+ die_mem = *scope;
+ die = &die_mem;
+ }
+ }
+ free (scopes);
+ }
+
+ if (symname == NULL)
+ symname = dwfl_module_addrname (mod, pc_adjusted);
+ }
+
+ if (show_inlines && die != NULL)
+ print_inline_frames (&frame_nr, pc, isactivation, pc_adjusted, mod,
+ symname, cudie, die);
+ else
+ print_frame (frame_nr++, pc, isactivation, pc_adjusted, mod, symname,
+ NULL, NULL);
+ }
+
+ if (frames->frames > 0 && frame_nr == maxframes)
+ error (0, 0, "tid %d: shown max number of frames "
+ "(%d, use -n 0 for unlimited)", tid, maxframes);
+ else if (dwflerr != 0)
+ {
+ if (frames->frames > 0)
+ {
+ unsigned nr = frames->frames - 1;
+ Dwarf_Addr pc = frames->frame[nr].pc;
+ bool isactivation = frames->frame[nr].isactivation;
+ Dwarf_Addr pc_adjusted = pc - (isactivation ? 0 : 1);
+ Dwfl_Module *mod = dwfl_addrmodule (dwfl, pc_adjusted);
+ const char *mainfile = NULL;
+ const char *modname = dwfl_module_info (mod, NULL, NULL, NULL, NULL,
+ NULL, &mainfile, NULL);
+ if (modname == NULL || modname[0] == '\0')
+ {
+ if (mainfile != NULL)
+ modname = mainfile;
+ else
+ modname = "<unknown>";
+ }
+ error (0, 0, "%s tid %d at 0x%" PRIx64 " in %s: %s", what, tid,
+ pc_adjusted, modname, dwfl_errmsg (dwflerr));
+ }
+ else
+ error (0, 0, "%s tid %d: %s", what, tid, dwfl_errmsg (dwflerr));
+ }
+}
+
+static int
+thread_callback (Dwfl_Thread *thread, void *thread_arg)
+{
+ struct frames *frames = (struct frames *) thread_arg;
+ pid_t tid = dwfl_thread_tid (thread);
+ int err = 0;
+ frames->frames = 0;
+ switch (dwfl_thread_getframes (thread, frame_callback, thread_arg))
+ {
+ case DWARF_CB_OK:
+ case DWARF_CB_ABORT:
+ break;
+ case -1:
+ err = dwfl_errno ();
+ break;
+ default:
+ abort ();
+ }
+ print_frames (frames, tid, err, "dwfl_thread_getframes");
+ return DWARF_CB_OK;
+}
+
+static void
+print_version (FILE *stream, struct argp_state *state __attribute__ ((unused)))
+{
+ fprintf (stream, "stack (%s) %s\n", PACKAGE_NAME, PACKAGE_VERSION);
+}
+
+static error_t
+parse_opt (int key, char *arg __attribute__ ((unused)),
+ struct argp_state *state)
+{
+ switch (key)
+ {
+ case 'p':
+ pid = atoi (arg);
+ if (pid == 0)
+ argp_error (state, N_("-p PID should be a positive process id."));
+ break;
+
+ case OPT_COREFILE:
+ core_fd = open (arg, O_RDONLY);
+ if (core_fd < 0)
+ error (EXIT_BAD, errno, N_("Cannot open core file '%s'"), arg);
+ elf_version (EV_CURRENT);
+ core = elf_begin (core_fd, ELF_C_READ_MMAP, NULL);
+ if (core == NULL)
+ error (EXIT_BAD, 0, "core '%s' elf_begin: %s", arg, elf_errmsg(-1));
+ break;
+
+ case 'e':
+ exec = arg;
+ break;
+
+ case OPT_DEBUGINFO:
+ debuginfo_path = arg;
+ break;
+
+ case 'm':
+ show_module = true;
+ break;
+
+ case 's':
+ show_source = true;
+ break;
+
+ case 'a':
+ show_activation = true;
+ break;
+
+ case 'd':
+ show_debugname = true;
+ break;
+
+ case 'i':
+ show_inlines = show_debugname = true;
+ break;
+
+ case 'v':
+ show_activation = show_source = show_module = show_debugname = true;
+ show_inlines = true;
+ break;
+
+ case 'b':
+ show_build_id = true;
+ break;
+
+ case 'q':
+ show_quiet = true;
+ break;
+
+ case 'r':
+ show_raw = true;
+ break;
+
+ case '1':
+ show_one_tid = true;
+ break;
+
+ case 'n':
+ maxframes = atoi (arg);
+ if (maxframes < 0)
+ {
+ argp_error (state, N_("-n MAXFRAMES should be 0 or higher."));
+ return EINVAL;
+ }
+ break;
+
+ case 'l':
+ show_modules = true;
+ break;
+
+ case ARGP_KEY_END:
+ if (core == NULL && exec != NULL)
+ argp_error (state,
+ N_("-e EXEC needs a core given by --core."));
+
+ if (pid == 0 && show_one_tid == true)
+ argp_error (state,
+ N_("-1 needs a thread id given by -p."));
+
+ if ((pid == 0 && core == NULL) || (pid != 0 && core != NULL))
+ argp_error (state,
+ N_("One of -p PID or --core COREFILE should be given."));
+
+ if (pid != 0)
+ {
+ dwfl = dwfl_begin (&proc_callbacks);
+ if (dwfl == NULL)
+ error (EXIT_BAD, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
+
+ int err = dwfl_linux_proc_report (dwfl, pid);
+ if (err < 0)
+ error (EXIT_BAD, 0, "dwfl_linux_proc_report pid %d: %s", pid,
+ dwfl_errmsg (-1));
+ else if (err > 0)
+ error (EXIT_BAD, err, "dwfl_linux_proc_report pid %d", pid);
+ }
+
+ if (core != NULL)
+ {
+ dwfl = dwfl_begin (&core_callbacks);
+ if (dwfl == NULL)
+ error (EXIT_BAD, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
+ if (dwfl_core_file_report (dwfl, core, exec) < 0)
+ error (EXIT_BAD, 0, "dwfl_core_file_report: %s", dwfl_errmsg (-1));
+ }
+
+ if (dwfl_report_end (dwfl, NULL, NULL) != 0)
+ error (EXIT_BAD, 0, "dwfl_report_end: %s", dwfl_errmsg (-1));
+
+ if (pid != 0)
+ {
+ int err = dwfl_linux_proc_attach (dwfl, pid, false);
+ if (err < 0)
+ error (EXIT_BAD, 0, "dwfl_linux_proc_attach pid %d: %s", pid,
+ dwfl_errmsg (-1));
+ else if (err > 0)
+ error (EXIT_BAD, err, "dwfl_linux_proc_attach pid %d", pid);
+ }
+
+ if (core != NULL)
+ {
+ if (dwfl_core_file_attach (dwfl, core) < 0)
+ error (EXIT_BAD, 0, "dwfl_core_file_report: %s", dwfl_errmsg (-1));
+ }
+
+ /* Makes sure we are properly attached. */
+ if (dwfl_pid (dwfl) < 0)
+ error (EXIT_BAD, 0, "dwfl_pid: %s\n", dwfl_errmsg (-1));
+ break;
+
+ default:
+ return ARGP_ERR_UNKNOWN;
+ }
+ return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+ /* We use no threads here which can interfere with handling a stream. */
+ __fsetlocking (stdin, FSETLOCKING_BYCALLER);
+ __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+ __fsetlocking (stderr, FSETLOCKING_BYCALLER);
+
+ /* Set locale. */
+ (void) setlocale (LC_ALL, "");
+
+ const struct argp_option options[] =
+ {
+ { NULL, 0, NULL, 0, N_("Input selection options:"), 0 },
+ { "pid", 'p', "PID", 0,
+ N_("Show stack of process PID"), 0 },
+ { "core", OPT_COREFILE, "COREFILE", 0,
+ N_("Show stack found in COREFILE"), 0 },
+ { "executable", 'e', "EXEC", 0, N_("(optional) EXECUTABLE that produced COREFILE"), 0 },
+ { "debuginfo-path", OPT_DEBUGINFO, "PATH", 0,
+ N_("Search path for separate debuginfo files"), 0 },
+
+ { NULL, 0, NULL, 0, N_("Output selection options:"), 0 },
+ { "activation", 'a', NULL, 0,
+ N_("Additionally show frame activation"), 0 },
+ { "debugname", 'd', NULL, 0,
+ N_("Additionally try to lookup DWARF debuginfo name for frame address"),
+ 0 },
+ { "inlines", 'i', NULL, 0,
+ N_("Additionally show inlined function frames using DWARF debuginfo if available (implies -d)"), 0 },
+ { "module", 'm', NULL, 0,
+ N_("Additionally show module file information"), 0 },
+ { "source", 's', NULL, 0,
+ N_("Additionally show source file information"), 0 },
+ { "verbose", 'v', NULL, 0,
+ N_("Show all additional information (activation, debugname, inlines, module and source)"), 0 },
+ { "quiet", 'q', NULL, 0,
+ N_("Do not resolve address to function symbol name"), 0 },
+ { "raw", 'r', NULL, 0,
+ N_("Show raw function symbol names, do not try to demangle names"), 0 },
+ { "build-id", 'b', NULL, 0,
+ N_("Show module build-id, load address and pc offset"), 0 },
+ { NULL, '1', NULL, 0,
+ N_("Show the backtrace of only one thread"), 0 },
+ { NULL, 'n', "MAXFRAMES", 0,
+ N_("Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)"), 0 },
+ { "list-modules", 'l', NULL, 0,
+ N_("Show module memory map with build-id, elf and debug files detected"), 0 },
+ { NULL, 0, NULL, 0, NULL, 0 }
+ };
+
+ const struct argp argp =
+ {
+ .options = options,
+ .parser = parse_opt,
+ .doc = N_("Print a stack for each thread in a process or core file.\v\
+Program exits with return code 0 if all frames were shown without \
+any errors. If some frames were shown, but there were some non-fatal \
+errors, possibly causing an incomplete backtrace, the program exits \
+with return code 1. If no frames could be shown, or a fatal error \
+occured the program exits with return code 2. If the program was \
+invoked with bad or missing arguments it will exit with return code 64.")
+ };
+
+ argp_parse (&argp, argc, argv, 0, NULL, NULL);
+
+ if (show_modules)
+ {
+ printf ("PID %d - %s module memory map\n", dwfl_pid (dwfl),
+ pid != 0 ? "process" : "core");
+ if (dwfl_getmodules (dwfl, module_callback, NULL, 0) != 0)
+ error (EXIT_BAD, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
+ }
+
+ struct frames frames;
+ /* When maxframes is zero, then 2048 is just the initial allocation
+ that will be increased using realloc in framecallback (). */
+ frames.allocated = maxframes == 0 ? 2048 : maxframes;
+ frames.frames = 0;
+ frames.frame = malloc (sizeof (struct frame) * frames.allocated);
+ if (frames.frame == NULL)
+ error (EXIT_BAD, errno, "malloc frames.frame");
+
+ if (show_one_tid)
+ {
+ int err = 0;
+ switch (dwfl_getthread_frames (dwfl, pid, frame_callback, &frames))
+ {
+ case DWARF_CB_OK:
+ case DWARF_CB_ABORT:
+ break;
+ case -1:
+ err = dwfl_errno ();
+ break;
+ default:
+ abort ();
+ }
+ print_frames (&frames, pid, err, "dwfl_getthread_frames");
+ }
+ else
+ {
+ printf ("PID %d - %s\n", dwfl_pid (dwfl), pid != 0 ? "process" : "core");
+ switch (dwfl_getthreads (dwfl, thread_callback, &frames))
+ {
+ case DWARF_CB_OK:
+ case DWARF_CB_ABORT:
+ break;
+ case -1:
+ error (0, 0, "dwfl_getthreads: %s", dwfl_errmsg (-1));
+ break;
+ default:
+ abort ();
+ }
+ }
+ free (frames.frame);
+ dwfl_end (dwfl);
+
+ if (core != NULL)
+ elf_end (core);
+
+ if (core_fd != -1)
+ close (core_fd);
+
+#ifdef USE_DEMANGLE
+ free (demangle_buffer);
+#endif
+
+ if (! frames_shown)
+ error (EXIT_BAD, 0, N_("Couldn't show any frames."));
+
+ return error_message_count != 0 ? EXIT_ERROR : EXIT_OK;
+}
/* Print the strings of printable characters in files.
- Copyright (C) 2005-2010, 2012 Red Hat, Inc.
+ Copyright (C) 2005-2010, 2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2005.
/* True if file names should be printed before strings. */
static bool print_file_name;
-/* Location print format string. */
-static const char *locfmt;
+/* Radix for printed numbers. */
+static enum
+{
+ radix_none = 0,
+ radix_decimal,
+ radix_hex,
+ radix_octal
+} radix = radix_none;
+
/* Page size in use. */
static size_t ps;
switch (arg[0])
{
case 'd':
- locfmt = "%7" PRId64 " ";
+ radix = radix_decimal;
break;
case 'o':
octfmt:
- locfmt = "%7" PRIo64 " ";
+ radix = radix_octal;
break;
case 'x':
- locfmt = "%7" PRIx64 " ";
+ radix = radix_hex;
break;
default:
fputs_unlocked (": ", stdout);
}
- if (unlikely (locfmt != NULL))
- printf (locfmt, (int64_t) to - len - (buf - start));
+ if (unlikely (radix != radix_none))
+ printf ((radix == radix_octal ? "%7" PRIo64 " "
+ : (radix == radix_decimal ? "%7" PRId64 " "
+ : "%7" PRIx64 " ")),
+ (int64_t) to - len - (buf - start));
if (unlikely (*unprinted != NULL))
{
fputs_unlocked (": ", stdout);
}
- if (likely (locfmt != NULL))
- printf (locfmt, (int64_t) to - len - (buf - start));
+ if (likely (radix != radix_none))
+ printf ((radix == radix_octal ? "%7" PRIo64 " "
+ : (radix == radix_decimal ? "%7" PRId64 " "
+ : "%7" PRIx64 " ")),
+ (int64_t) to - len - (buf - start));
if (unlikely (*unprinted != NULL))
{
static void *
map_file (int fd, off64_t start_off, off64_t fdlen, size_t *map_sizep)
{
-#if _MUDFLAP
- (void) fd;
- (void) start_off;
- (void) fdlen;
- (void) map_sizep;
- return MAP_FAILED;
-#else
/* Maximum size we mmap. We use an #ifdef to avoid overflows on
32-bit machines. 64-bit machines these days do not have usable
address spaces larger than about 43 bits. Not that any file
*map_sizep = map_size;
return mem;
-#endif
}
/* Discard section not used at runtime from object files.
- Copyright (C) 2000-2012 Red Hat, Inc.
+ Copyright (C) 2000-2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2000.
Elf_Data debuglink_crc_data;
bool any_symtab_changes = false;
Elf_Data *shstrtab_data = NULL;
+ void *debuglink_buf = NULL;
/* Create the full name of the file. */
if (prefix != NULL)
goto fail_close;
}
+ if (shstrndx >= shnum)
+ goto illformed;
+
+#define elf_assert(test) do { if (!(test)) goto illformed; } while (0)
+
/* 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.
{
/* This should always be true (i.e., there should not be any
holes in the numbering). */
- assert (elf_ndxscn (scn) == cnt);
+ elf_assert (elf_ndxscn (scn) == cnt);
shdr_info[cnt].scn = scn;
shdr_info[cnt].shdr.sh_name);
if (shdr_info[cnt].name == NULL)
{
+ illformed:
error (0, 0, gettext ("illformed file '%s'"), fname);
goto fail_close;
}
/* Remember the shdr.sh_link value. */
shdr_info[cnt].old_sh_link = shdr_info[cnt].shdr.sh_link;
+ if (shdr_info[cnt].old_sh_link >= shnum)
+ goto illformed;
/* Sections in files other than relocatable object files which
are not loaded can be freely moved by us. In relocatable
appropriate reference. */
if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB_SHNDX))
{
- assert (shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx == 0);
+ elf_assert (shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx == 0);
shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx = cnt;
}
else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GROUP))
for (inner = 1;
inner < shdr_info[cnt].data->d_size / sizeof (Elf32_Word);
++inner)
- shdr_info[grpref[inner]].group_idx = cnt;
+ {
+ if (grpref[inner] < shnum)
+ shdr_info[grpref[inner]].group_idx = cnt;
+ else
+ goto illformed;
+ }
if (inner == 1 || (inner == 2 && (grpref[0] & GRP_COMDAT) == 0))
/* If the section group contains only one element and this
}
else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GNU_versym))
{
- assert (shdr_info[shdr_info[cnt].shdr.sh_link].version_idx == 0);
+ elf_assert (shdr_info[shdr_info[cnt].shdr.sh_link].version_idx == 0);
shdr_info[shdr_info[cnt].shdr.sh_link].version_idx = cnt;
}
discarded right away. */
if ((shdr_info[cnt].shdr.sh_flags & SHF_GROUP) != 0)
{
- assert (shdr_info[cnt].group_idx != 0);
+ elf_assert (shdr_info[cnt].group_idx != 0);
if (shdr_info[shdr_info[cnt].group_idx].idx == 0)
{
{
/* If a relocation section is marked as being removed make
sure the section it is relocating is removed, too. */
- if ((shdr_info[cnt].shdr.sh_type == SHT_REL
+ if (shdr_info[cnt].shdr.sh_type == SHT_REL
|| shdr_info[cnt].shdr.sh_type == SHT_RELA)
- && shdr_info[shdr_info[cnt].shdr.sh_info].idx != 0)
- shdr_info[cnt].idx = 1;
+ {
+ if (shdr_info[cnt].shdr.sh_info >= shnum)
+ goto illformed;
+ else if (shdr_info[shdr_info[cnt].shdr.sh_info].idx != 0)
+ shdr_info[cnt].idx = 1;
+ }
/* If a group section is marked as being removed make
sure all the sections it contains are being removed, too. */
if (shdr_info[cnt].symtab_idx != 0
&& shdr_info[shdr_info[cnt].symtab_idx].data == NULL)
{
- assert (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB);
+ elf_assert (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB);
shdr_info[shdr_info[cnt].symtab_idx].data
= elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn,
else if (scnidx == SHN_XINDEX)
scnidx = xndx;
+ if (scnidx >= shnum)
+ goto illformed;
+
if (shdr_info[scnidx].idx == 0)
/* This symbol table has a real symbol in
a discarded section. So preserve the
}
/* Handle references through sh_info. */
- if (SH_INFO_LINK_P (&shdr_info[cnt].shdr)
- && shdr_info[shdr_info[cnt].shdr.sh_info].idx == 0)
+ if (SH_INFO_LINK_P (&shdr_info[cnt].shdr))
{
- shdr_info[shdr_info[cnt].shdr.sh_info].idx = 1;
- changes |= shdr_info[cnt].shdr.sh_info < cnt;
+ if (shdr_info[cnt].shdr.sh_info >= shnum)
+ goto illformed;
+ else if ( shdr_info[shdr_info[cnt].shdr.sh_info].idx == 0)
+ {
+ shdr_info[shdr_info[cnt].shdr.sh_info].idx = 1;
+ changes |= shdr_info[cnt].shdr.sh_info < cnt;
+ }
}
/* Mark the section as investigated. */
error (EXIT_FAILURE, 0, gettext ("while generating output file: %s"),
elf_errmsg (-1));
- assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
+ elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
/* Add this name to the section header string table. */
shdr_info[cnt].se = ebl_strtabadd (shst, shdr_info[cnt].name, 0);
error (EXIT_FAILURE, 0,
gettext ("while create section header section: %s"),
elf_errmsg (-1));
- assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
+ elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
shdr_info[cnt].data = elf_newdata (shdr_info[cnt].newscn);
if (shdr_info[cnt].data == NULL)
shdr_info[cnt].data->d_align = 4;
shdr_info[cnt].shdr.sh_size = shdr_info[cnt].data->d_size
= crc_offset + 4;
- shdr_info[cnt].data->d_buf = xcalloc (1, shdr_info[cnt].data->d_size);
+ debuglink_buf = xcalloc (1, shdr_info[cnt].data->d_size);
+ shdr_info[cnt].data->d_buf = debuglink_buf;
strcpy (shdr_info[cnt].data->d_buf, debug_basename);
error (EXIT_FAILURE, 0,
gettext ("while create section header section: %s"),
elf_errmsg (-1));
- assert (elf_ndxscn (shdr_info[cnt].newscn) == idx);
+ elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == idx);
/* Finalize the string table and fill in the correct indices in the
section headers. */
shndxdata = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn,
NULL);
- assert ((versiondata->d_size / sizeof (Elf32_Word))
+ elf_assert ((versiondata->d_size / sizeof (Elf32_Word))
>= shdr_info[cnt].data->d_size / elsize);
}
if (shdr_info[cnt].version_idx != 0)
{
- assert (shdr_info[cnt].shdr.sh_type == SHT_DYNSYM);
+ elf_assert (shdr_info[cnt].shdr.sh_type == SHT_DYNSYM);
/* This section has associated version
information. We have to modify that
information, too. */
versiondata = elf_getdata (shdr_info[shdr_info[cnt].version_idx].scn,
NULL);
- assert ((versiondata->d_size / sizeof (GElf_Versym))
+ elf_assert ((versiondata->d_size / sizeof (GElf_Versym))
>= shdr_info[cnt].data->d_size / elsize);
}
sec = shdr_info[sym->st_shndx].idx;
else
{
- assert (shndxdata != NULL);
+ elf_assert (shndxdata != NULL);
sec = shdr_info[xshndx].idx;
}
nxshndx = sec;
}
- assert (sec < SHN_LORESERVE || shndxdata != NULL);
+ elf_assert (sec < SHN_LORESERVE || shndxdata != NULL);
if ((inner != destidx || nshndx != sym->st_shndx
|| (shndxdata != NULL && nxshndx != xshndx))
{
size_t sidx = (sym->st_shndx != SHN_XINDEX
? sym->st_shndx : xshndx);
- assert (GELF_ST_TYPE (sym->st_info) == STT_SECTION
- || (shdr_info[sidx].shdr.sh_type == SHT_GROUP
- && shdr_info[sidx].shdr.sh_info == inner));
+ elf_assert (GELF_ST_TYPE (sym->st_info) == STT_SECTION
+ || ((shdr_info[sidx].shdr.sh_type
+ == SHT_GROUP)
+ && (shdr_info[sidx].shdr.sh_info
+ == inner)));
}
}
{
GElf_Sym sym_mem;
GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem);
- assert (sym != NULL);
+ elf_assert (sym != NULL);
const char *name = elf_strptr (elf, strshndx,
sym->st_name);
- assert (name != NULL);
+ elf_assert (name != NULL);
size_t hidx = elf_hash (name) % nbucket;
if (bucket[hidx] == 0)
else
{
/* Alpha and S390 64-bit use 64-bit SHT_HASH entries. */
- assert (shdr_info[cnt].shdr.sh_entsize
- == sizeof (Elf64_Xword));
+ elf_assert (shdr_info[cnt].shdr.sh_entsize
+ == sizeof (Elf64_Xword));
Elf64_Xword *bucket = (Elf64_Xword *) hashd->d_buf;
{
GElf_Sym sym_mem;
GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem);
- assert (sym != NULL);
+ elf_assert (sym != NULL);
const char *name = elf_strptr (elf, strshndx,
sym->st_name);
- assert (name != NULL);
+ elf_assert (name != NULL);
size_t hidx = elf_hash (name) % nbucket;
if (bucket[hidx] == 0)
free (shdr_info[cnt].debug_data->d_buf);
}
+ /* Free data we allocated for the .gnu_debuglink section. */
+ free (debuglink_buf);
+
/* Free the memory. */
if ((shnum + 2) * sizeof (struct shdr_info) > MAX_STACK_ALLOC)
free (shdr_info);
/* Combine stripped files with separate symbols and debug information.
- Copyright (C) 2007-2012 Red Hat, Inc.
+ Copyright (C) 2007-2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Roland McGrath <roland@redhat.com>, 2007.
N_("Apply relocations to section contents in ET_REL files"), 0 },
{ "list-only", 'n', NULL, 0,
N_("Only list module and file names, build IDs"), 0 },
+ { "force", 'F', NULL, 0,
+ N_("Force combining files even if some ELF headers don't seem to match"),
+ 0 },
{ NULL, 0, NULL, 0, NULL, 0 }
};
bool modnames;
bool match_files;
bool relocate;
+ bool force;
};
/* Handle program arguments. */
case 'R':
info->relocate = true;
break;
+ case 'F':
+ info->force = true;
+ break;
case ARGP_KEY_ARGS:
case ARGP_KEY_NO_ARGS:
&& (sec->shdr.sh_type == undo_sec->shdr.sh_type
|| (sec->shdr.sh_type == SHT_PROGBITS
&& undo_sec->shdr.sh_type == SHT_NOBITS))
- && sec->shdr.sh_size < undo_sec->shdr.sh_size
+ && sec->shdr.sh_size <= undo_sec->shdr.sh_size
&& (!strcmp (sec->name, ".bss")
|| !strcmp (sec->name, ".sbss"))
- && (split_bss = sec) > sections)))
+ && (sec->shdr.sh_size == undo_sec->shdr.sh_size
+ || (split_bss = sec) > sections))))
{
sec->outscn = undo_sec->outscn;
undo_sec = NULL;
/* Handle a pair of files we need to open by name. */
static void
-handle_explicit_files (const char *output_file, bool create_dirs,
+handle_explicit_files (const char *output_file, bool create_dirs, bool force,
const char *stripped_file, const char *unstripped_file)
{
+
+ /* Warn, and exit if not forced to continue, if some ELF header
+ sanity check for the stripped and unstripped files failed. */
+ void warn (const char *msg)
+ {
+ error (force ? 0 : EXIT_FAILURE, 0, "%s'%s' and '%s' %s%s.",
+ force ? _("WARNING: ") : "",
+ stripped_file, unstripped_file, msg,
+ force ? "" : _(", use --force"));
+ }
+
int stripped_fd = open_file (stripped_file, false);
Elf *stripped = elf_begin (stripped_fd, ELF_C_READ, NULL);
GElf_Ehdr stripped_ehdr;
ELF_CHECK (gelf_getehdr (unstripped, &unstripped_ehdr),
_("cannot create ELF descriptor: %s"));
- if (memcmp (stripped_ehdr.e_ident, unstripped_ehdr.e_ident, EI_NIDENT)
- || stripped_ehdr.e_type != unstripped_ehdr.e_type
- || stripped_ehdr.e_machine != unstripped_ehdr.e_machine
- || stripped_ehdr.e_phnum != unstripped_ehdr.e_phnum)
- error (EXIT_FAILURE, 0, _("'%s' and '%s' do not seem to match"),
- stripped_file, unstripped_file);
+ if (memcmp (stripped_ehdr.e_ident,
+ unstripped_ehdr.e_ident, EI_NIDENT) != 0)
+ warn (_("ELF header identification (e_ident) different"));
+
+ if (stripped_ehdr.e_type != unstripped_ehdr.e_type)
+ warn (_("ELF header type (e_type) different"));
+
+ if (stripped_ehdr.e_machine != unstripped_ehdr.e_machine)
+ warn (_("ELF header machine type (e_machine) different"));
+
+ if (stripped_ehdr.e_phnum < unstripped_ehdr.e_phnum)
+ warn (_("stripped program header (e_phnum) smaller than unstripped"));
}
handle_file (output_file, create_dirs, stripped, &stripped_ehdr, unstripped);
/* Handle a pair of files opened implicitly by libdwfl for one module. */
static void
-handle_dwfl_module (const char *output_file, bool create_dirs,
+handle_dwfl_module (const char *output_file, bool create_dirs, bool force,
Dwfl_Module *mod, bool all, bool ignore, bool relocate)
{
GElf_Addr bias;
(void) dwfl_module_info (mod, NULL, NULL, NULL, NULL, NULL,
&stripped_file, &unstripped_file);
- handle_explicit_files (output_file, create_dirs,
+ handle_explicit_files (output_file, create_dirs, force,
stripped_file, unstripped_file);
return;
}
/* Handle one module being written to the output directory. */
static void
-handle_output_dir_module (const char *output_dir, Dwfl_Module *mod,
+handle_output_dir_module (const char *output_dir, Dwfl_Module *mod, bool force,
bool all, bool ignore, bool modnames, bool relocate)
{
if (! modnames)
if (asprintf (&output_file, "%s/%s", output_dir, modnames ? name : file) < 0)
error (EXIT_FAILURE, 0, _("memory exhausted"));
- handle_dwfl_module (output_file, true, mod, all, ignore, relocate);
+ handle_dwfl_module (output_file, true, force, mod, all, ignore, relocate);
}
{
if (next (offset) != 0)
error (EXIT_FAILURE, 0, _("matched more than one module"));
- handle_dwfl_module (info->output_file, false, mmi.found,
+ handle_dwfl_module (info->output_file, false, info->force, mmi.found,
info->all, info->ignore, info->relocate);
}
else
do
- handle_output_dir_module (info->output_dir, mmi.found,
+ handle_output_dir_module (info->output_dir, mmi.found, info->force,
info->all, info->ignore,
info->modnames, info->relocate);
while ((offset = next (offset)) > 0);
char *file;
if (asprintf (&file, "%s/%s", info.output_dir, info.args[0]) < 0)
error (EXIT_FAILURE, 0, _("memory exhausted"));
- handle_explicit_files (file, true, info.args[0], info.args[1]);
+ handle_explicit_files (file, true, info.force,
+ info.args[0], info.args[1]);
free (file);
}
else
- handle_explicit_files (info.output_file, false,
+ handle_explicit_files (info.output_file, false, info.force,
info.args[0], info.args[1]);
}
else
+2014-06-15 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace.c (frame_callback): Error on seeing more than 16 frames.
+
+2014-06-13 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace.c (callback_verify): Accept "__libc_do_syscall" as first
+ frame symname.
+
+2014-06-13 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace-subr.sh (check_native_unsupported): New function.
+ (check_native): Call it.
+ (check_native_core): Likewise.
+ * run-backtrace-dwarf.sh: Likewise.
+
+2014-06-11 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace.c (main): Check that Dwfl was attached by calling
+ dwfl_pid and printing the error when it is not.
+
+2014-05-18 Mark Wielaard <mjw@redhat.com>
+
+ * testfile-backtrace-demangle.cc (cxxfunc): Make non-static.
+ (f): Likewise.
+ * testfile-backtrace-demangle.bz2: Regenerate.
+ * testfile-backtrace-demangle.core.bz2: Likewise.
+
+2014-05-02 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (TESTS): run-readelf-dwz-multi.sh and
+ run-allfcts-multi.sh are now added unconditionally.
+
+2014-05-01 Mark Wielaard <mjw@redhat.com>
+
+ * run-readelf-dwz-multi.sh: Add tests with alt debug files in .dwz
+ subdir.
+
+2014-04-30 Mark Wielaard <mjw@redhat.com>
+
+ * buildid.c, buildid.sh, testfile42_noshdrs.bz2: New files.
+ * Makefile.am (check_PROGRAMS): Add buildid.
+ (TESTS): Add run-buildid.sh.
+ (EXTRA_DISTS): Add run-buildid.sh and testfile42_noshdrs.bz2.
+ (buildid_LDADD): New variable.
+
+2014-04-24 Florian Weimer <fweimer@redhat.com>
+
+ * allfcts.c (setup_alt): New function.
+ (main): Call it. Implementation additional error checking and
+ reporting.
+
+2014-04-24 Florian Weimer <fweimer@redhat.com>
+
+ * debugaltlink.c, run-debugaltlink.sh: New files.
+ * Makefile.am (check_PROGRAMS): Add debugaltlink.
+ (TESTS): Add run-debugaltlink.sh.
+ (debugaltlink_LDADD): New variable.
+
+2014-04-11 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (AM_CPPFLAGS): Add -I libdwelf.
+ (check_PROGRAMS): Add debuglink.
+ (TESTS): Add run-debuglink.sh
+ (EXTRA_DIST): Likewise.
+ (debuglink_LDADD): New.
+ * debuglink.c: New file.
+ * run-debuglink.sh: Likewise.
+
+2014-03-23 Mark Wielaard <mjw@redhat.com>
+
+ * run-nm-self.sh: Use test = not == for string comparisons.
+
+2014-04-22 Kurt Roeckx <kurt@roeckx.be>
+
+ * backtrace.c: Make Linux only.
+ * backtrace-child.c: Make Linux only.
+ * backtrace-data.c: Make Linux only.
+ * backtrace-dwarf.c: Make Linux only.
+ * backtrace-subr.sh: Skip core file unwinding tests when not supported.
+
+2014-03-14 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Remove MUDFLAP conditions. Remove libmudflap from all
+ LDADD lines.
+ * configure.ac: Remove MUDFLAP conditional.
+
+2014-04-09 Mark Wielaard <mjw@redhat.com>
+
+ * run-readelf-zdebug.sh: New test.
+ * testfile-debug.bz2: New testfile.
+ * testfile-zdebug.bz2: New testfile.
+ * Makefile.am (TESTS): Add run-readelf-zdebug.sh if ZLIB.
+ (EXTRA_DIST): Add run-readelf-zdebug.sh, testfile-debug.bz2 and
+ testfile-zdebug.bz2.
+
+2014-04-10 Mark Wielaard <mjw@redhat.com>
+
+ * testfile_i686_core.bz2: New test file.
+ * run-readelf-mixed-corenote.sh: Add testfile_i686_core test.
+ * Makefile.am (EXTRA_DIST): Add testfile_i686_core.bz2
+
+2014-04-09 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (TESTS): Add run-backtrace-core-aarch64.sh.
+ (EXTRA_DIST): Add run-backtrace-core-aarch64.sh,
+ backtrace.aarch64.core.bz2 and backtrace.aarch64.exec.bz2.
+ * run-backtrace-core-aarch64.sh: New test.
+
+2014-03-11 Josh Stone <jistone@redhat.com>
+
+ * testfilebaxmin.bz2: New testfile.
+ * Makefile.am (EXTRA_DIST): Add testfilebaxmin.bz2.
+ * run-readelf-s.sh: Test testfilebaxmin.
+ * run-dwflsyms.sh: Likewise.
+
+2014-01-26 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace-subr.sh (check_unsupported): Special case arm*.
+
+2014-01-25 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh (EM_ARM): Change reg13 (sp) from undefined to
+ location expression: call_frame_cfa stack_value.
+
+2014-01-22 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (line2addr_no_Wformat): Removed.
+
+2014-01-21 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (TESTS): Add run-stack-i-test.sh.
+ (EXTRA_DIST): Likewise.
+ * run-stack-i-test.sh: New test.
+
+2014-01-20 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (TESTS): Add run-stack-d-test.sh.
+ (EXTRA_DIST): Add run-stack-d-test.sh, testfiledwarfinlines.bz2
+ testfiledwarfinlines.core.bz2.
+ * run-stack-d-test.sh: New test.
+ * testfiledwarfinlines.bz2: New test file.
+ * testfiledwarfinlines.core.bz2: Likewise.
+
+2014-01-16 Mark Wielaard <mjw@redhat.com>
+
+ * run-nm-self.sh: Don't use testrun_on_self_quiet but just testrun
+ on one ET_REL, one ET_EXEC and one ET_DYN file.
+ * test-subr.sh (self_test_files): Add two ET_REL files, only add
+ two libebl ET_DYN backend files.
+
+2014-01-16 Mark Wielaard <mjw@redhat.com>
+
+ * run-backtrace-demangle.sh: Check exitcode and max number of frames.
+
+2014-01-18 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix false FAILs on testsuite with ulimit -c unlimited.
+ * backtrace-child.c (sigusr2): Call pthread_exit.
+ (main): Return, do not call abort.
+
+2014-01-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix corruption of non-C++ symbols by the demangler.
+ * Makefile.am (TESTS): Add run-backtrace-demangle.sh.
+ <!DEMANGLE>: Add ELFUTILS_DISABLE_DEMANGLE export.
+ (EXTRA_DIST): Add run-backtrace-demangle.sh,
+ testfile-backtrace-demangle.bz2, testfile-backtrace-demangle.cc,
+ testfile-backtrace-demangle.core.bz2.
+ * backtrace-demangle.cc: New file.
+ * run-backtrace-demangle.sh: New file.
+ * testfile-backtrace-demangle.bz2: New file.
+ * testfile-backtrace-demangle.cc: New file.
+ * testfile-backtrace-demangle.core.bz2: New file.
+
+2014-01-07 Matthias Klose <doko@ubuntu.com>
+
+ * backtrace-subr.sh (check_native_core): Check to see if core file
+ was created without ".PID" extension, if so mv core to core.PID.
+ Skip test if no core file was created or could be found.
+
+2014-01-04 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace-data.c (main): Don't assert if raise returns.
+ * backtrace-dwarf.c (report_pid): Call dwfl_linux_proc_attach with
+ assume_ptrace_attached true.
+ (ptrace_detach_stopped): Removed function.
+ (main): Don't call ptrace_detach_stopped.
+ * backtrace.c (ptrace_detach_stopped): Removed function.
+ (report_pid): Call dwfl_linux_proc_attach with assume_ptrace_attached
+ true.
+ (exec_dump): Don't call ptrace_detach_stopped.
+
+2014-01-04 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace-subr.sh (check_native_core): Skip, exit 77, the test
+ if we cannot adjust core ulimit.
+
+2014-01-04 Mark Wielaard <mjw@redhat.com>
+
+ * cleanup-13.c (force_unwind_stop): Removed.
+ (force_unwind): Just call abort. Don't setup _Unwind_Exception and
+ don't call _Unwind_ForcedUnwind.
+
+2014-01-03 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh: Add case for EM_AARCH64.
+ * testfileaarch64.bz2: New testfile.
+ * Makefile.am (EXTRA_DIST): Add testfilesaarch64.bz2.
+
+2013-12-30 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace-dwarf.c (report_pid): Explicitly call
+ dwfl_linux_proc_attach and check for errors.
+ * backtrace.c (report_pid): Likewise.
+
+2013-12-21 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace.c (callback_verify): Only assert that case 5 is the last
+ instruction of backtracegen on x86_64 native.
+
+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-18 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: s390 and s390x
+ * Makefile.am (TESTS): Add run-backtrace-core-s390x.sh and
+ run-backtrace-core-s390.sh.
+ (EXTRA_DIST): Add backtrace.s390x.core.bz2, backtrace.s390x.exec.bz2,
+ backtrace.s390.core.bz2, backtrace.s390.exec.bz2,
+ run-backtrace-core-s390x.sh and run-backtrace-core-s390.sh.
+ * backtrace.s390.core.bz2: New file.
+ * backtrace.s390.exec.bz2: New file.
+ * backtrace.s390x.core.bz2: New file.
+ * backtrace.s390x.exec.bz2: New file.
+ * run-backtrace-core-s390.sh: New file.
+ * run-backtrace-core-s390x.sh: New file.
+
+2013-12-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * backtrace-dwarf.c (executable, find_elf, dwfl_offline): Remove unused
+ code.
+
+2013-12-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ unwinder: ppc
+ * Makefile.am (TESTS): Add run-backtrace-core-ppc.sh.
+ (EXTRA_DIST): Add backtrace.ppc.core.bz2,
+ backtrace.ppc.exec.bz2 and run-backtrace-core-ppc.sh.
+ * backtrace.ppc.core.bz2: New file.
+ * backtrace.ppc.exec.bz2: New file.
+ * run-backtrace-core-ppc.sh: New file.
+
+2013-12-10 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (backtrace_child_biarch_SOURCES): New backtrace-child.c.
+
+2013-12-10 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (valgrind_cmd): Remove --trace-children=yes.
+ * backtrace-subr.sh (check_native_core): Disable valgrind while
+ dumping core.
+ * run-backtrace-data.sh: Disable valgrind.
+ * run-backtrace-dwarf.sh: Likewise.
+
+2013-12-09 Mark Wielaard <mjw@redhat.com>
+
+ * varlocs.c (print_expr): Update comment to explain empty location
+ associated with DW_OP_GNU_implicit_pointer.
+
+2013-12-05 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix test FAIL with -O2.
+ * backtrace-child.c (sigusr2): Add NOINLINE_NOCLONE and final asm stub.
+
+2013-12-05 Mark Wielaard <mjw@redhat.com>
+
+ * backtrace-data.c (main): If unsupported also print to stderr.
+ * run-backtrace-dwarf.sh: Add check_unsupported and check_main.
+
+2013-12-04 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (backtrace-child-biarch): Add $(EXEEXT).
+
+2013-12-02 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * Makefile.am (check_PROGRAMS): Add backtrace, backtrace-child,
+ backtrace-data and backtrace-dwarf.
+ (BUILT_SOURCES, clean-local, backtrace-child-biarch): New.
+ (TESTS): Add run-backtrace-native.sh, run-backtrace-data.sh,
+ run-backtrace-dwarf.sh, run-backtrace-native-biarch.sh,
+ run-backtrace-native-core.sh, run-backtrace-native-core-biarch.sh,
+ run-backtrace-core-x86_64.sh and run-backtrace-core-i386.sh.
+ <!BIARCH> Add export of ELFUTILS_DISABLE_BIARCH.
+ (EXTRA_DIST): Add run-backtrace-data.sh, run-backtrace-dwarf.sh,
+ cleanup-13.c, run-backtrace-native.sh, run-backtrace-native-biarch.sh,
+ run-backtrace-native-core.sh, run-backtrace-native-core-biarch.sh,
+ run-backtrace-core-x86_64.sh, run-backtrace-core-i386.sh,
+ backtrace-subr.sh, backtrace.i386.core.bz2, backtrace.i386.exec.bz2,
+ backtrace.x86_64.core.bz2, backtrace.x86_64.exec.bz2.
+ (backtrace_LDADD, backtrace_child_CFLAGS, backtrace_child_LDFLAGS)
+ (backtrace_data_LDADD, backtrace_dwarf_CFLAGS, backtrace_dwarf_LDADD):
+ New.
+ * backtrace-child.c: New file.
+ * backtrace-data.c: New file.
+ * backtrace-dwarf.c: New file.
+ * backtrace-subr.sh: New file.
+ * backtrace.c: New file.
+ * cleanup-13.c: New file.
+ * backtrace.i386.core.bz2: New file.
+ * backtrace.i386.exec.bz2: New file.
+ * backtrace.x86_64.core.bz2: New file.
+ * backtrace.x86_64.exec.bz2: New file.
+ * run-backtrace-core-i386.sh: New file.
+ * run-backtrace-core-x86_64.sh: New file.
+ * run-backtrace-native-biarch.sh: New file.
+ * run-backtrace-native-core-biarch.sh: New file.
+ * run-backtrace-native-core.sh: New file.
+ * run-backtrace-native.sh: New file.
+ * run-backtrace-data.sh: New file.
+ * run-backtrace-dwarf.sh: New file.
+
+2013-11-27 Mark Wielaard <mjw@redhat.com>
+
+ * dwflsyms.c (gelf_bind_order): New function.
+ (elf_section_name): Likewise.
+ (addr_in_section): Likewise.
+ (list_syms): Use dwfl_module_getsym_elf and dwfl_module_addrsym_elf.
+ Refine assert using gelf_bind_order. Print elf_section_name. Check
+ bias with addr_in_section.
+ * run-dwflsyms.sh: Add section names to expected output.
+
+2013-11-26 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (EXTRA_DIST): Add run-funcretval.sh.
+
+2013-11-25 Petr Machata <pmachata@redhat.com>
+
+ * testfile_aarch64_core.bz2, hello_aarch64.ko.bz2: New files.
+ * funcretval_test.c, funcretval_test_aarch64.bz2: Likewise.
+ * Makefile.am (EXTRA_DIST): Add these.
+ (TESTS): Add run-funcretval.sh.
+ * run-allregs.sh: Use testfile_aarch64_core.bz2 for a regs_test.
+ * run-readelf-mixed-corenote.sh: ... and for a readelf -n test.
+ * run-strip-reloc.sh: Add a test on hello_aarch64.ko.bz2.
+ * run-funcretval.sh: New file.
+
+2013-11-18 Josh Stone <jistone@redhat.com>
+
+ * testfilebazdbg_plr.bz2: New testfile.
+ * testfilebazmin_plr.bz2: Likewise.
+ * Makefile.am (EXTRA_DIST): Add the above files.
+ * run-dwflsyms.sh: Add prelink -r tests.
+
+2013-11-15 Mark Wielaard <mjw@redhat.com>
+
+ * testfilebazmdb.bz2: Regenerated.
+ * testfilebazmin.bz2: Likewise.
+ * testfilebazdbg_pl.bz2: New testfile.
+ * testfilebazmin_pl.bz2: Likewise.
+ * Makefile.am (EXTRA_DIST): Add testfilebazdbg_pl.bz2 and
+ testfilebazmin_pl.bz2.
+ * dwflsyms.c (list_syms): Call dwfl_module_relocate_address and
+ print relative address of function symbols.
+ * run-dwflsyms.sh: Add prelink tests and adjust expected output.
+
+2013-11-01 Michael Forney <mforney@mforney.org>
+
+ * Makefile.am (TESTS_ENVIRONMENT): Use and export NM.
+ * run-arsymtest.sh: Use NM.
+
+2013-11-05 Mark Wielaard <mjw@redhat.com>
+
+ * allfcts.c (main): Correct dwarf_getfuncs return value check.
+
+2013-10-10 Mark Wielaard <mjw@redhat.com>
+ Josh Stone <jistone@redhat.com>
+
+ * run-allfcts-multi.sh: New test.
+ * test-offset-loop.bz2: New testfile.
+ * test-offset-loop.alt.bz2: New testfile.
+ * Makefile.am (TESTS): Add run-allcft-multi.sh if ENABLE_DWZ.
+ (EXTRA_DIST): Add run-allfcts-multi.sh, test-offset-loop.bz2 and
+ test-offset-loop.alt.bz2.
+
+2013-10-15 Mark Wielaard <mjw@redhat.com>
+
+ * run-unstrip-M.sh: New test.
+ * Makefile.am (TESTS): Add run-unstrip-M.sh.
+ (EXTRA_DIST): Likewise.
+
+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh: Remove nop from expected ppc and ppc64
+ location expression.
+
+2013-10-03 Josh Stone <jistone@redhat.com>
+
+ * typeiter2.c: New file, reversing typeiter.c.
+ * run-typeiter.sh: Also run typeiter2.
+ * Makefile.am (check_PROGRAMS): Add typeiter2.
+ (typeiter2_LDADD): New variable.
+
+2013-09-26 Petr Machata <pmachata@redhat.com>
+
+ * run-readelf-mixed-corenote.sh: Update output of testfile71
+ dump--readelf can newly decode the NT_FILE note.
+
+2013-09-26 Petr Machata <pmachata@redhat.com>
+
+ * Makefile.am (EXTRA_DIST): Add testfile71.bz2.
+ * run-readelf-mixed-corenote.sh: New test for this file.
+ * testfile71.bz2: New file.
+
+2013-09-20 Mark Wielaard <mjw@redhat.com>
+
+ * allfcts.c (cb): Return DWARF_CB_ABORT.
+ (main): Iterate over all offsets returned by dwarf_getfuncs.
+ * run-allfcts.sh: Add nested_funcs and class_func testcases.
+ * testfile_nested_funcs.bz2: New test file.
+ * testfile_class_func.bz2: Likewise.
+ * Makefile.am (EXTRA_DIST): Add testfile_class_func.bz2 and
+ testfile_nested_funcs.bz2.
+
+2013-08-30 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (check_PROGRAMS): Add varlocs.
+ (TESTS): Add run-varlocs.sh.
+ (EXTRA_DIST): Add run-varlocs.sh, testfile_const_type.c,
+ testfile_const_type.bz2, testfile_implicit_pointer.c,
+ testfile_implicit_pointer.bz2, testfile_parameter_ref.c,
+ testfile_entry_value.c, testfile_entry_value.bz2,
+ testfile_implicit_value.c and testfile_implicit_value.bz2.
+ (varlocs_LDADD): New.
+ * run-varlocs: New test.
+ * testfile_const_type.c: New test source file.
+ * testfile_entry_value.c: Likewise.
+ * testfile_implicit_pointer.c: Likewise.
+ * testfile_implicit_value.c: Likewise.
+ * testfile_parameter_ref.c: Likewise.
+ * testfile_const_type.bz2: New test file.
+ * testfile_entry_value.bz2: Likewise.
+ * testfile_implicit_pointer.bz2: Likewise.
+ * testfile_implicit_value.bz2: Likewise.
+ * testfile_parameter_ref.bz2: Likewise.
+ * varlocs.c: New test source.
+
+2013-08-29 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh: Add case for EM_ARM.
+ * testfilearm.bz2: New testfile.
+ * Makefile.am (EXTRA_DIST): Add testfilesarm.bz2.
+
+2013-08-28 Mark Wielaard <mjw@redhat.com>
+
+ * addrcfi.c (handle_cfi): Handle .debug_frame or .eh_frame
+ completely missing.
+ * run-addrcfi.sh: Add case for EM_S390 ELFCLASS32 and ELFCLASS64.
+ * testfiles390.bz2: New testfile.
+ * testfiles390x.bz2: Likewise.
+ * Makefile.am (EXTRA_DIST): Add testfiles390.bz2 and
+ testfiles390x.bz2.
+
+2013-08-28 Mark Wielaard <mjw@redhat.com>
+
+ * addrcfi.c (handle_cfi): Use printf not error.
+ * run-addrcfi.sh: Add case for EM_PPC and EM_PPC64.
+ * testfileppc32.bz2: New testfile.
+ * testfileppc64.bz2: Likewise.
+ * Makefile.am (EXTRA_DIST): Add testfileppc32.bz2 and
+ testfileppc64.bz2.
+
+2013-08-27 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh: New test.
+ * Makefile.am (TESTS): Add run-addrcfi.sh.
+ (EXTRA_DIST): Likewise.
+ * addrcfi.c (op_name): New function.
+ (print_detail): Call and print op_name. Check ops, not result
+ to check if this is "same value" or "undefined".
+ (handle_cfi): Make sure cfa_ops doesn't point to NULL.
+
+2013-08-13 Mark Wielaard <mjw@redhat.com>
+
+ * run-addr2line-i-test.sh: New test.
+ * testfile-inlines.bz2: New testfile.
+ * Makefile.am (EXTRA_DIST): Add run-addr2line-i-test.sh and
+ testfile-inlines.bz2.
+ (TESTS): Add run-addr2line-i-test.sh.
+
+2013-08-12 Mark Wielaard <mjw@redhat.com>
+
+ * run-addr2line-test.sh: New test.
+ * Makefile.am (EXTRA_DIST): Add run-addr2line-test.sh.
+ (TESTS): Likewise.
+
+2013-07-23 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * run-unstrip-n.sh (test-core.*): Ignore libc.so.6 entry and order of
+ the entries.
+
+2013-07-02 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (EXTRA_DIST): Fix typo, forgot extension in
+ testfilenolines.bz2.
+
+2013-05-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * Makefile.am (EXTRA_DIST): Add test-core-lib.so.bz2,
+ test-core.core.bz2 and test-core.exec.bz2.
+ * run-addrname-test.sh: New test for these files.
+ * run-unstrip-n.sh: Update expected output. New test for these files.
+ * test-core-lib.so.bz2: New file.
+ * test-core.core.bz2: New file.
+ * test-core.exec.bz2: New file.
+
+2013-05-03 Mark Wielaard <mjw@redhat.com>
+
+ * testfilenolines.bz2: New test file.
+ * Makefile.am (EXTRA_DIST): Add testfilenolines.bz2.
+ * run-get-lines.sh: Run testrun_compare on testfilenolines.
+
+2013-04-30 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwfl-report-elf-align.c: Use false add_p_vaddr for dwfl_report_elf.
+
+2013-04-29 Mark Wielaard <mjw@redhat.com>
+
+ * test-subr.sh: Don't use pushd, just cd into test-dir.
+ (exit_cleanup): Don't use popd, just cd .. to get out.
+
+2013-04-27 Mark Wielaard <mjw@redhat.com>
+
+ * test-subr.sh (exit_cleanup): New function.
+ (trap): Use exit_cleanup as argument.
+ * run-native-test.sh (native_exit): New function.
+ (trap): For EXIT (0) use native_exit as argument.
+
+2013-04-27 Mark Wielaard <mjw@redhat.com>
+
+ * update1.c (main): Use unique tempfile name and unlink file.
+ * update2.c (main): Likewise.
+ * update3.c (main): Likewise.
+ * update4.c (main): Use unique tempfile name.
+
+2013-04-27 Mark Wielaard <mjw@redhat.com>
+
+ * run-alldts.sh: Add testfile-alldts to tempfiles.
+ * run-elf_cntl_gelf_getshdr.sh: Add test_shdr.out to tempfiles.
+ * run-macro-test.sh: Add readelf.macros.out to tempfiles.
+ * run-strip-reloc.sh: Add readelf.out, readelf.out1, readelf.out2
+ and out.stripped1, out.debug1, out.stripped2, out.debug2 to tempfiles.
+
+2013-04-26 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (installed_TESTS_ENVIRONMENT): Export environment,
+ remove wrapper.
+ (TESTS_ENVIRONMENT): Likewise.
+ (installed_LOG_COMPILER): New variable defining wrapper.
+ (LOG_COMPILER): Likewise.
+ * run-*.sh: Fixup location of input and output files.
+ * test-subr.sh: Create test_dir, pushd to execute test in.
+ (trap): Remove test_dir.
+ (testfiles): Use abs_srcdir.
+ (installed_testrun): Match on abs_builddir or abs_top_builddir.
+ (self_test_files): Adjust path.
+
+2013-04-24 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
+
+2013-03-25 Mark Wielaard <mjw@redhat.com>
+
+ * run-readelf-aranges.sh: New test.
+ * testfilefoobarbaz.bz2: New test file.
+ * Makefile.am (TESTS): Add run-readelf-aranges.sh.
+ (EXTRA_DIST): Add run-readelf-aranges.sh and testfilefoobarbaz.bz2.
+
+2013-03-25 Mark Wielaard <mjw@redhat.com>
+
+ * run-readelf-dwz-multi.sh: Expect high_pc also as address.
+
+2013-03-20 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * Makefile.am (check_PROGRAMS): Add dwfl-report-elf-align.
+ (TESTS): Add run-dwfl-report-elf-align.sh.
+ (EXTRA_DIST): Add run-dwfl-report-elf-align.sh and
+ testfile-dwfl-report-elf-align-shlib.so.bz2 .
+ (dwfl_report_elf_align_LDADD): New.
+ * dwfl-report-elf-align.c: New file.
+ * run-dwfl-report-elf-align.sh: New file.
+ * testfile-dwfl-report-elf-align-shlib.so.bz2: New file.
+
+2013-03-12 Mark Wielaard <mjw@redhat.com>
+
+ * run-dwfllines.sh: New test.
+ * dwfllines.c: New test program.
+ * Makefile.am (TESTS): Add run-dwfllines.sh.
+ (EXTRA_DIST): Likewise.
+ (dwfllines_LDADD): New variable.
+
+2013-02-22 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (TESTS): Remove run-readelf-s.sh and run-dwflsyms.sh.
+ (LZMA): Add run-readelf-s.sh and run-dwflsyms.sh to TESTS.
+
+2013-02-15 Mark Wielaard <mjw@redhat.com>
+
+ * testfile-dwzstr.bz2: New testfile.
+ * testfile-dwzstr.multi.bz2: Likewise.
+ * run-readelf-dwz-multi.sh: Add readelf testfile-dwzstr test.
+ * Makefile.am (EXTRA_DIST): Add testfile-dwzstr.bz2 and
+ testfile-dwzstr.multi.bz2.
+
+2013-01-30 Mark Wielaard <mjw@redhat.com>
+
+ * testfileloc.bz2: New testfile.
+ * run-readelf-loc.sh: New test.
+ * Makefile.am (TESTS): Add run-readelf-loc.sh.
+ (EXTRA_DIST): Add run-readelf-loc.sh and testfileloc.bz2.
+
+2013-01-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * run-readelf-mixed-corenote.sh: New testcase for readelf -n of s390
+ and s390x core notes.
+ * testfile67.bz2: New file.
+ * testfile68.bz2: New file.
+ * Makefile.am (EXTRA_DIST): Add testfile67.bz2 and testfile68.bz2 .
+
+2013-01-23 Mark Wielaard <mjw@redhat.com>
+
+ * testfilebasmin.bz2: New testfile.
+ * Makefile.am (EXTRA_DIST): Add testfilebasmin.bz2.
+ * run-readelf-s.sh: Test testfilebasmin.
+ * run-dwflsyms.sh: Likewise.
+
+2013-01-16 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (check_PROGRAMS): Add dwflsyms.
+ (TESTS): Add run-readelf-s.sh and run-dwflsyms.sh.
+ (EXTRA_DIST): Add run-readelf-s.sh, testfilebazdbg.bz2,
+ testfilebazdyn.bz2, testfilebazmin.bz2, testfilebazdbg.debug.bz2,
+ testfilebazmdb.bz2, testfilebaztab.bz2 and run-dwflsyms.sh.
+ (dwflsyms_LDADD): New variable.
+
+2013-01-07 Roland McGrath <roland@hack.frob.com>
+
+ * run-prelink-addr-test.sh: Use ln -snf.
+
+2012-12-03 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (valgrind_cmd): Add --run-libc-freeres=no.
+
+2012-11-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * run-addrname-test.sh: New test for PIE relocation.
+ * testfile70.core.bz2: New file.
+ * testfile70.exec.bz2: New file.
+ * Makefile.am (EXTRA_DIST): Add testfile70.core.bz2 and
+ testfile70.exec.bz2 .
+
+2012-10-27 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * Makefile.am (EXTRA_DIST): Add testfile64.bz2, testfile65.bz2,
+ testfile69.core.bz2 and testfile69.so.bz2 .
+
+2012-10-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * run-addrname-test.sh: New test for DSO with build-id bias.
+ * testfile69.core.bz2: New file.
+ * testfile69.so.bz2: New file.
+
+2012-10-10 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * run-addrname-test.sh: New test for core vDSO bias.
+ * testfile65.bz2: New file.
+
+2012-10-10 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * run-addrname-test.sh: New test for symbol preferences.
+ * testfile64.bz2: New file.
+
+2012-10-01 Mark Wielaard <mjw@redhat.com>
+
+ * Makefile.am (TESTS_ENVIRONMENT): Define valgrind_cmd if USE_VALGRIND.
+ * test-wrapper.sh: Export VALGRIND_CMD if available.
+ * test-subr.sh (built_testrun): Use VALGRIND_CMD to invoke test prog.
+ (installed_testrun): Likewise.
+
+2012-09-24 Petr Machata <pmachata@redhat.com>
+
+ * testfile63.bz2: New testfile.
+ * run-readelf-mixed-corenote.sh: New test.
+ * Makefile.am (TEST): Add run-readelf-mixed-corenote.sh.
+ (EXTRA_DIST): Add testfile63.bz2 and run-readelf-mixed-corenote.sh.
+
+2012-09-24 Petr Machata <pmachata@redhat.com>
+
+ * testfile62.bz2: New testfile.
+ * run-readelf-vmcoreinfo.sh: New test.
+ * Makefile.am (TEST): Add run-readelf-vmcoreinfo.sh.
+ (EXTRA_DIST): Add testfile62.bz2 and run-readelf-vmcoreinfo.sh.
+
+2012-09-18 Petr Machata <pmachata@redhat.com>
+
+ * testfile61.bz2: New testfile.
+ * run-allregs.sh: Run reg_test testfile61.
+ * Makefile.am (EXTRA_DIST): Add testfile61.bz2.
+
2012-08-24 Mark Wielaard <mjw@redhat.com>
* Makefile.am (EXTRA_DIST): Add testfile60.bz2.
## Process this file with automake to create Makefile.in
##
-## Copyright (C) 1996-2012 Red Hat, Inc.
+## Copyright (C) 1996-2014 Red Hat, Inc.
## This file is part of elfutils.
##
## This file is free software; you can redistribute it and/or modify
## along with this program. If not, see <http://www.gnu.org/licenses/>.
##
include $(top_srcdir)/config/eu.am
-if MUDFLAP
-BUILD_RPATH = \$$ORIGIN/../backends
-else
BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
-endif
AM_LDFLAGS =
if !STANDALONE
-INCLUDES += -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
- -I$(top_srcdir)/libdwfl \
+AM_CPPFLAGS += -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
+ -I$(top_srcdir)/libdwfl -I$(top_srcdir)/libdwelf \
-I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \
-I$(top_srcdir)/lib -I..
AM_LDFLAGS += -Wl,-rpath-link,../libasm:../libdw:../libelf
dwfl-addr-sect dwfl-bug-report early-offscn \
dwfl-bug-getmodules dwarf-getmacros addrcfi \
test-flag-nobits dwarf-getstring rerequest_tag \
- alldts md5-sha1-test typeiter low_high_pc \
- test-elf_cntl_gelf_getshdr
+ alldts md5-sha1-test typeiter typeiter2 low_high_pc \
+ test-elf_cntl_gelf_getshdr dwflsyms dwfllines \
+ dwfl-report-elf-align varlocs backtrace backtrace-child \
+ backtrace-data backtrace-dwarf debuglink debugaltlink \
+ buildid
+
asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
asm-tst6 asm-tst7 asm-tst8 asm-tst9
+if BIARCH
+check_PROGRAMS += backtrace-child-biarch
+endif
+
+# Substitute $(COMPILE).
+backtrace-child-biarch$(EXEEXT): backtrace-child.c
+ $(CC_BIARCH) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS) $(backtrace_child_CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) $(backtrace_child_LDFLAGS) \
+ -o $@ $<
+
TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \
update1 update2 update3 update4 \
run-show-die-info.sh run-get-files.sh run-get-lines.sh \
run-strip-test3.sh run-strip-test4.sh run-strip-test5.sh \
run-strip-test6.sh run-strip-test7.sh run-strip-test8.sh \
run-strip-groups.sh run-strip-reloc.sh \
- run-unstrip-test.sh run-unstrip-test2.sh \
+ run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-M.sh \
run-ecp-test.sh run-ecp-test2.sh run-alldts.sh \
run-elflint-test.sh run-elflint-self.sh run-ranlib-test.sh \
run-ranlib-test2.sh run-ranlib-test3.sh run-ranlib-test4.sh \
run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
- run-find-prologues.sh run-allregs.sh \
+ run-find-prologues.sh run-allregs.sh run-addrcfi.sh \
run-nm-self.sh run-readelf-self.sh \
run-readelf-test1.sh run-readelf-test2.sh run-readelf-test3.sh \
run-readelf-test4.sh run-readelf-twofiles.sh \
- run-readelf-macro.sh \
+ run-readelf-macro.sh run-readelf-loc.sh \
+ run-readelf-aranges.sh run-readelf-line.sh \
run-native-test.sh run-bug1-test.sh \
+ run-debuglink.sh run-debugaltlink.sh run-buildid.sh \
dwfl-bug-addr-overflow run-addrname-test.sh \
dwfl-bug-fd-leak dwfl-bug-report \
run-dwfl-bug-offline-rel.sh run-dwfl-addr-sect.sh \
run-dwarf-getstring.sh run-rerequest_tag.sh run-typeiter.sh \
run-readelf-d.sh run-readelf-gdb_index.sh run-unstrip-n.sh \
run-low_high_pc.sh run-macro-test.sh run-elf_cntl_gelf_getshdr.sh \
- run-test-archive64.sh
+ run-test-archive64.sh run-readelf-vmcoreinfo.sh \
+ run-readelf-mixed-corenote.sh run-dwfllines.sh \
+ run-dwfl-report-elf-align.sh run-addr2line-test.sh \
+ run-addr2line-i-test.sh run-varlocs.sh run-funcretval.sh \
+ run-backtrace-native.sh run-backtrace-data.sh run-backtrace-dwarf.sh \
+ run-backtrace-native-biarch.sh run-backtrace-native-core.sh \
+ run-backtrace-native-core-biarch.sh run-backtrace-core-x86_64.sh \
+ run-backtrace-core-i386.sh run-backtrace-core-ppc.sh \
+ run-backtrace-core-s390x.sh run-backtrace-core-s390.sh \
+ run-backtrace-core-aarch64.sh \
+ run-backtrace-demangle.sh run-stack-d-test.sh run-stack-i-test.sh \
+ run-readelf-dwz-multi.sh run-allfcts-multi.sh
+
+if !BIARCH
+export ELFUTILS_DISABLE_BIARCH = 1
+endif
+
+if !DEMANGLE
+export ELFUTILS_DISABLE_DEMANGLE = 1
+endif
if !STANDALONE
check_PROGRAMS += msg_tst md5-sha1-test
TESTS += msg_tst md5-sha1-test
endif
-if HAVE_LIBASM
-check_PROGRAMS += $(asm_TESTS)
-TESTS += $(asm_TESTS)
+if LZMA
+TESTS += run-readelf-s.sh run-dwflsyms.sh
endif
-if ENABLE_DWZ
-TESTS += run-readelf-dwz-multi.sh
+if ZLIB
+TESTS += run-readelf-zdebug.sh
endif
+if HAVE_LIBASM
+check_PROGRAMS += $(asm_TESTS)
+TESTS += $(asm_TESTS)
+endif
EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
run-show-die-info.sh run-get-files.sh run-get-lines.sh \
testfile5.bz2 testfile6.bz2 testfile7.bz2 testfile8.bz2 \
testfile9.bz2 testfile10.bz2 testfile11.bz2 testfile12.bz2 \
testfile13.bz2 run-strip-test3.sh run-allfcts.sh \
+ testfile_class_func.bz2 testfile_nested_funcs.bz2 \
run-line2addr.sh run-elflint-test.sh testfile14.bz2 \
run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \
run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \
run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \
- hello_ppc64.ko.bz2 hello_s390.ko.bz2 \
- run-unstrip-test.sh run-unstrip-test2.sh \
+ hello_ppc64.ko.bz2 hello_s390.ko.bz2 hello_aarch64.ko.bz2 \
+ run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-M.sh\
run-elflint-self.sh run-ranlib-test.sh run-ranlib-test2.sh \
run-ranlib-test3.sh run-ranlib-test4.sh \
run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
- run-nm-self.sh run-readelf-self.sh \
+ run-nm-self.sh run-readelf-self.sh run-addrcfi.sh \
run-find-prologues.sh run-allregs.sh run-native-test.sh \
run-addrname-test.sh run-dwfl-bug-offline-rel.sh \
run-dwfl-addr-sect.sh run-early-offscn.sh \
run-readelf-test1.sh run-readelf-test2.sh run-readelf-test3.sh \
run-readelf-test4.sh run-readelf-twofiles.sh \
run-bug1-test.sh testfile28.bz2 testfile28.rdwr.bz2 \
+ run-debuglink.sh run-debugaltlink.sh run-buildid.sh \
testfile29.bz2 testfile29.rdwr.bz2 \
testfile30.bz2 testfile31.bz2 testfile32.bz2 testfile33.bz2 \
testfile34.bz2 testfile35.bz2 testfile35.debug.bz2 \
testfile36.bz2 testfile36.debug.bz2 \
testfile37.bz2 testfile37.debug.bz2 \
testfile38.bz2 testfile39.bz2 testfile40.bz2 testfile40.debug.bz2 \
- testfile41.bz2 testfile42.bz2 testfile43.bz2 \
+ testfile41.bz2 testfile42.bz2 testfile42_noshdrs.bz2 \
+ testfile43.bz2 \
testfile44.S.bz2 testfile44.expect.bz2 run-disasm-x86.sh \
testfile45.S.bz2 testfile45.expect.bz2 run-disasm-x86-64.sh \
testfile46.bz2 testfile47.bz2 testfile48.bz2 testfile48.debug.bz2 \
testfile49.bz2 testfile50.bz2 testfile51.bz2 \
run-readelf-macro.sh testfilemacro.bz2 \
+ run-readelf-loc.sh testfileloc.bz2 \
+ run-readelf-aranges.sh run-readelf-line.sh testfilefoobarbaz.bz2 \
run-readelf-dwz-multi.sh libtestfile_multi_shared.so.bz2 \
testfile_multi.dwz.bz2 testfile_multi_main.bz2 \
+ testfile-dwzstr.bz2 testfile-dwzstr.multi.bz2 \
+ run-allfcts-multi.sh \
+ test-offset-loop.bz2 test-offset-loop.alt.bz2 \
run-prelink-addr-test.sh \
testfile52-32.so.bz2 testfile52-32.so.debug.bz2 \
testfile52-32.prelink.so.bz2 testfile52-32.noshdrs.so.bz2 \
run-readelf-d.sh testlib_dynseg.so.bz2 \
run-readelf-gdb_index.sh testfilegdbindex5.bz2 \
testfilegdbindex7.bz2 \
+ run-readelf-s.sh testfilebazdbg.bz2 testfilebazdyn.bz2 \
+ testfilebazmin.bz2 testfilebazdbg.debug.bz2 testfilebazmdb.bz2 \
+ testfilebaztab.bz2 testfilebasmin.bz2 testfilebaxmin.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 \
run-macro-test.sh testfile-macinfo.bz2 testfile-macros.bz2 \
run-elf_cntl_gelf_getshdr.sh \
run-test-archive64.sh testarchive64.a.bz2 \
- testfile60.bz2
+ testfile60.bz2 testfile61.bz2 \
+ run-readelf-vmcoreinfo.sh testfile62.bz2 \
+ run-readelf-mixed-corenote.sh testfile63.bz2 testfile64.bz2 \
+ testfile65.bz2 testfile67.bz2 testfile68.bz2 \
+ testfile69.core.bz2 testfile69.so.bz2 \
+ testfile70.core.bz2 testfile70.exec.bz2 testfile71.bz2 \
+ run-dwfllines.sh run-dwfl-report-elf-align.sh \
+ testfile-dwfl-report-elf-align-shlib.so.bz2 \
+ testfilenolines.bz2 test-core-lib.so.bz2 test-core.core.bz2 \
+ test-core.exec.bz2 run-addr2line-test.sh \
+ run-addr2line-i-test.sh testfile-inlines.bz2 \
+ testfileppc32.bz2 testfileppc64.bz2 \
+ testfiles390.bz2 testfiles390x.bz2 \
+ testfilearm.bz2 testfileaarch64.bz2 \
+ run-varlocs.sh \
+ testfile_const_type.c testfile_const_type.bz2 \
+ testfile_implicit_pointer.c testfile_implicit_pointer.bz2 \
+ testfile_parameter_ref.c testfile_parameter_ref.bz2 \
+ testfile_entry_value.c testfile_entry_value.bz2 \
+ testfile_implicit_value.c testfile_implicit_value.bz2 \
+ testfile_aarch64_core.bz2 testfile_i686_core.bz2 \
+ run-funcretval.sh funcretval_test.c funcretval_test_aarch64.bz2 \
+ run-backtrace-data.sh run-backtrace-dwarf.sh cleanup-13.c \
+ run-backtrace-native.sh run-backtrace-native-biarch.sh \
+ run-backtrace-native-core.sh run-backtrace-native-core-biarch.sh \
+ run-backtrace-core-x86_64.sh run-backtrace-core-i386.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 testfile66.bz2 testfile66.core.bz2 \
+ backtrace.s390x.core.bz2 backtrace.s390x.exec.bz2 \
+ backtrace.s390.core.bz2 backtrace.s390.exec.bz2 \
+ run-backtrace-core-s390x.sh run-backtrace-core-s390.sh \
+ run-backtrace-core-aarch64.sh \
+ backtrace.aarch64.core.bz2 backtrace.aarch64.exec.bz2 \
+ run-backtrace-demangle.sh testfile-backtrace-demangle.bz2 \
+ testfile-backtrace-demangle.cc \
+ testfile-backtrace-demangle.core.bz2 \
+ run-stack-d-test.sh run-stack-i-test.sh \
+ testfiledwarfinlines.bz2 testfiledwarfinlines.core.bz2 \
+ run-readelf-zdebug.sh testfile-debug.bz2 testfile-zdebug.bz2
-installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \
- bindir=$(DESTDIR)$(bindir) \
- LC_ALL=C LANG=C \
- $(srcdir)/test-wrapper.sh \
- installed $(tests_rpath) \
- $(program_transform_name)
+if USE_VALGRIND
+valgrind_cmd='valgrind -q --error-exitcode=1 --run-libc-freeres=no'
+endif
+
+
+installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir); \
+ bindir=$(DESTDIR)$(bindir); \
+ LC_ALL=C; LANG=C; \
+ VALGRIND_CMD=$(valgrind_cmd); \
+ abs_srcdir=$(abs_srcdir); \
+ abs_builddir=$(abs_builddir); \
+ abs_top_builddir=$(abs_top_builddir); \
+ export abs_srcdir; export abs_builddir; \
+ export abs_top_builddir; \
+ export libdir; export bindir; \
+ export LC_ALL; export LANG; export VALGRIND_CMD; \
+ NM=$(NM); export NM;
+installed_LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
+ installed $(tests_rpath) \
+ '$(program_transform_name)'
if STANDALONE
TESTS_ENVIRONMENT = $(installed_TESTS_ENVIRONMENT)
+LOG_COMPILER = $(installed_LOG_COMPILER)
else !STANDALONE
-TESTS_ENVIRONMENT = LC_ALL=C LANG=C $(srcdir)/test-wrapper.sh \
- ../libdw:../backends:../libelf:../libasm
+TESTS_ENVIRONMENT = LC_ALL=C; LANG=C; VALGRIND_CMD=$(valgrind_cmd); \
+ abs_srcdir=$(abs_srcdir); abs_builddir=$(abs_builddir); \
+ abs_top_builddir=$(abs_top_builddir); \
+ export abs_srcdir; export abs_builddir; \
+ export abs_top_builddir; \
+ export LC_ALL; export LANG; export VALGRIND_CMD; \
+ NM=$(NM); export NM;
+LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
+ $(abs_top_builddir)/libdw:$(abs_top_builddir)/backends:$(abs_top_builddir)/libelf:$(abs_top_builddir)/libasm
installcheck-local:
$(MAKE) $(AM_MAKEFLAGS) \
- TESTS_ENVIRONMENT='$(installed_TESTS_ENVIRONMENT)' check-TESTS
+ TESTS_ENVIRONMENT="$(installed_TESTS_ENVIRONMENT)" \
+ LOG_COMPILER="$(installed_LOG_COMPILER)" check-TESTS
endif !STANDALONE
-if MUDFLAP
-static_build = yes
-endif
-
if STANDALONE
libdw = -ldw
libelf = -lelf
libeu = ../lib/libeu.a
endif !STANDALONE
-arextract_LDADD = $(libelf) $(libmudflap)
-arsymtest_LDADD = $(libelf) $(libmudflap)
-newfile_LDADD = $(libelf) $(libmudflap)
-saridx_LDADD = $(libelf) $(libmudflap)
-scnnames_LDADD = $(libelf) $(libmudflap)
-sectiondump_LDADD = $(libelf) $(libmudflap)
-showptable_LDADD = $(libelf) $(libmudflap)
-hash_LDADD = $(libelf) $(libmudflap)
-test_nlist_LDADD = $(libelf) $(libmudflap)
-msg_tst_LDADD = $(libelf) $(libmudflap)
-newscn_LDADD = $(libelf) $(libmudflap)
-early_offscn_LDADD = $(libelf) $(libmudflap)
-ecp_LDADD = $(libelf) $(libmudflap)
-update1_LDADD = $(libelf) $(libmudflap)
-update2_LDADD = $(libelf) $(libmudflap)
-update3_LDADD = $(libebl) $(libelf) $(libmudflap)
-update4_LDADD = $(libebl) $(libelf) $(libmudflap)
-show_die_info_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_pubnames_LDADD = $(libdw) $(libelf) $(libmudflap)
-show_abbrev_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_lines_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_files_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_aranges_LDADD = $(libdw) $(libelf) $(libmudflap)
-allfcts_LDADD = $(libdw) $(libelf) $(libmudflap)
-line2addr_no_Wformat = yes
-line2addr_LDADD = $(libdw) $(libmudflap)
-addrscopes_LDADD = $(libdw) $(libmudflap)
-funcscopes_LDADD = $(libdw) $(libmudflap)
-funcretval_LDADD = $(libdw) $(libmudflap)
-allregs_LDADD = $(libdw) $(libmudflap)
-find_prologues_LDADD = $(libdw) $(libmudflap)
-#show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf) $(libmudflap)
-asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst2_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst3_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst4_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst5_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst6_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst7_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst8_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst9_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-dwflmodtest_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-rdwrmmap_LDADD = $(libelf) $(libmudflap)
-dwfl_bug_addr_overflow_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-arls_LDADD = $(libelf) $(libmudflap)
-dwfl_bug_fd_leak_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwfl_bug_report_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwfl_bug_getmodules_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwfl_addr_sect_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwarf_getmacros_LDADD = $(libdw) $(libmudflap)
-dwarf_getstring_LDADD = $(libdw) $(libmudflap)
-addrcfi_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-test_flag_nobits_LDADD = $(libelf) $(libmudflap)
-rerequest_tag_LDADD = $(libdw) $(libmudflap)
-alldts_LDADD = $(libebl) $(libelf) $(libmudflap)
+arextract_LDADD = $(libelf)
+arsymtest_LDADD = $(libelf)
+newfile_LDADD = $(libelf)
+saridx_LDADD = $(libelf)
+scnnames_LDADD = $(libelf)
+sectiondump_LDADD = $(libelf)
+showptable_LDADD = $(libelf)
+hash_LDADD = $(libelf)
+test_nlist_LDADD = $(libelf)
+msg_tst_LDADD = $(libelf)
+newscn_LDADD = $(libelf)
+early_offscn_LDADD = $(libelf)
+ecp_LDADD = $(libelf)
+update1_LDADD = $(libelf)
+update2_LDADD = $(libelf)
+update3_LDADD = $(libebl) $(libelf)
+update4_LDADD = $(libebl) $(libelf)
+show_die_info_LDADD = $(libdw) $(libelf)
+get_pubnames_LDADD = $(libdw) $(libelf)
+show_abbrev_LDADD = $(libdw) $(libelf)
+get_lines_LDADD = $(libdw) $(libelf)
+get_files_LDADD = $(libdw) $(libelf)
+get_aranges_LDADD = $(libdw) $(libelf)
+allfcts_LDADD = $(libdw) $(libelf)
+line2addr_LDADD = $(libdw)
+addrscopes_LDADD = $(libdw)
+funcscopes_LDADD = $(libdw)
+funcretval_LDADD = $(libdw)
+allregs_LDADD = $(libdw)
+find_prologues_LDADD = $(libdw)
+#show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf)
+asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst2_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst3_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst4_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst5_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst6_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst7_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst8_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst9_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+dwflmodtest_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+rdwrmmap_LDADD = $(libelf)
+dwfl_bug_addr_overflow_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+arls_LDADD = $(libelf)
+dwfl_bug_fd_leak_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwfl_bug_report_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwfl_bug_getmodules_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwfl_addr_sect_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwarf_getmacros_LDADD = $(libdw)
+dwarf_getstring_LDADD = $(libdw)
+addrcfi_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+test_flag_nobits_LDADD = $(libelf)
+rerequest_tag_LDADD = $(libdw)
+alldts_LDADD = $(libebl) $(libelf)
md5_sha1_test_LDADD = $(libeu)
-typeiter_LDADD = $(libdw) $(libelf) $(libmudflap)
-low_high_pc_LDADD = $(libdw) $(libelf) $(libmudflap)
-test_elf_cntl_gelf_getshdr_LDADD = $(libelf) $(libmudflap)
+typeiter_LDADD = $(libdw) $(libelf)
+typeiter2_LDADD = $(libdw) $(libelf)
+low_high_pc_LDADD = $(libdw) $(libelf)
+test_elf_cntl_gelf_getshdr_LDADD = $(libelf)
+dwflsyms_LDADD = $(libdw) $(libelf)
+dwfllines_LDADD = $(libdw) $(libelf)
+dwfl_report_elf_align_LDADD = $(libdw)
+varlocs_LDADD = $(libdw) $(libelf)
+backtrace_LDADD = $(libdw) $(libelf)
+# backtrace-child-biarch also uses those *_CFLAGS and *_LDLAGS variables:
+backtrace_child_CFLAGS = -fPIE
+backtrace_child_LDFLAGS = -pie -pthread
+backtrace_child_biarch_SOURCES = backtrace-child.c
+backtrace_data_LDADD = $(libdw) $(libelf)
+backtrace_dwarf_CFLAGS = -Wno-unused-parameter
+backtrace_dwarf_LDADD = $(libdw) $(libelf)
+debuglink_LDADD = $(libdw) $(libelf)
+debugaltlink_LDADD = $(libdw) $(libelf)
+buildid_LDADD = $(libdw) $(libelf)
if GCOV
check: check-am coverage
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/eu.am ChangeLog
-@MUDFLAP_TRUE@am__append_1 = -fmudflap
-@STANDALONE_FALSE@am__append_2 = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
-@STANDALONE_FALSE@ -I$(top_srcdir)/libdwfl \
+DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(top_srcdir)/config/test-driver ChangeLog
+@STANDALONE_FALSE@am__append_1 = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
+@STANDALONE_FALSE@ -I$(top_srcdir)/libdwfl -I$(top_srcdir)/libdwelf \
@STANDALONE_FALSE@ -I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \
@STANDALONE_FALSE@ -I$(top_srcdir)/lib -I..
-@STANDALONE_FALSE@am__append_3 = -Wl,-rpath-link,../libasm:../libdw:../libelf
-@TESTS_RPATH_TRUE@am__append_4 = -Wl,-rpath,$(BUILD_RPATH)
+@STANDALONE_FALSE@am__append_2 = -Wl,-rpath-link,../libasm:../libdw:../libelf
+@TESTS_RPATH_TRUE@am__append_3 = -Wl,-rpath,$(BUILD_RPATH)
check_PROGRAMS = arextract$(EXEEXT) arsymtest$(EXEEXT) \
newfile$(EXEEXT) saridx$(EXEEXT) scnnames$(EXEEXT) \
sectiondump$(EXEEXT) showptable$(EXEEXT) update1$(EXEEXT) \
dwarf-getmacros$(EXEEXT) addrcfi$(EXEEXT) \
test-flag-nobits$(EXEEXT) dwarf-getstring$(EXEEXT) \
rerequest_tag$(EXEEXT) alldts$(EXEEXT) md5-sha1-test$(EXEEXT) \
- typeiter$(EXEEXT) low_high_pc$(EXEEXT) \
- test-elf_cntl_gelf_getshdr$(EXEEXT) $(am__EXEEXT_1) \
- $(am__EXEEXT_3)
+ typeiter$(EXEEXT) typeiter2$(EXEEXT) low_high_pc$(EXEEXT) \
+ test-elf_cntl_gelf_getshdr$(EXEEXT) dwflsyms$(EXEEXT) \
+ dwfllines$(EXEEXT) dwfl-report-elf-align$(EXEEXT) \
+ varlocs$(EXEEXT) backtrace$(EXEEXT) backtrace-child$(EXEEXT) \
+ backtrace-data$(EXEEXT) backtrace-dwarf$(EXEEXT) \
+ debuglink$(EXEEXT) debugaltlink$(EXEEXT) buildid$(EXEEXT) \
+ $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_4)
+@BIARCH_TRUE@am__append_4 = backtrace-child-biarch
TESTS = run-arextract.sh run-arsymtest.sh newfile$(EXEEXT) \
test-nlist$(EXEEXT) update1$(EXEEXT) update2$(EXEEXT) \
update3$(EXEEXT) update4$(EXEEXT) run-show-die-info.sh \
run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \
run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \
run-strip-reloc.sh run-unstrip-test.sh run-unstrip-test2.sh \
- run-ecp-test.sh run-ecp-test2.sh run-alldts.sh \
- run-elflint-test.sh run-elflint-self.sh run-ranlib-test.sh \
- run-ranlib-test2.sh run-ranlib-test3.sh run-ranlib-test4.sh \
- run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
- run-find-prologues.sh run-allregs.sh run-nm-self.sh \
- run-readelf-self.sh run-readelf-test1.sh run-readelf-test2.sh \
- run-readelf-test3.sh run-readelf-test4.sh \
- run-readelf-twofiles.sh run-readelf-macro.sh \
- run-native-test.sh run-bug1-test.sh \
+ run-unstrip-M.sh run-ecp-test.sh run-ecp-test2.sh \
+ run-alldts.sh run-elflint-test.sh run-elflint-self.sh \
+ run-ranlib-test.sh run-ranlib-test2.sh run-ranlib-test3.sh \
+ run-ranlib-test4.sh run-addrscopes.sh run-strings-test.sh \
+ run-funcscopes.sh run-find-prologues.sh run-allregs.sh \
+ run-addrcfi.sh run-nm-self.sh run-readelf-self.sh \
+ run-readelf-test1.sh run-readelf-test2.sh run-readelf-test3.sh \
+ run-readelf-test4.sh run-readelf-twofiles.sh \
+ run-readelf-macro.sh run-readelf-loc.sh run-readelf-aranges.sh \
+ run-readelf-line.sh run-native-test.sh run-bug1-test.sh \
+ run-debuglink.sh run-debugaltlink.sh run-buildid.sh \
dwfl-bug-addr-overflow$(EXEEXT) run-addrname-test.sh \
dwfl-bug-fd-leak$(EXEEXT) dwfl-bug-report$(EXEEXT) \
run-dwfl-bug-offline-rel.sh run-dwfl-addr-sect.sh \
run-rerequest_tag.sh run-typeiter.sh run-readelf-d.sh \
run-readelf-gdb_index.sh run-unstrip-n.sh run-low_high_pc.sh \
run-macro-test.sh run-elf_cntl_gelf_getshdr.sh \
- run-test-archive64.sh $(am__EXEEXT_1) $(am__EXEEXT_3) \
- $(am__append_9)
+ run-test-archive64.sh run-readelf-vmcoreinfo.sh \
+ run-readelf-mixed-corenote.sh run-dwfllines.sh \
+ run-dwfl-report-elf-align.sh run-addr2line-test.sh \
+ run-addr2line-i-test.sh run-varlocs.sh run-funcretval.sh \
+ run-backtrace-native.sh run-backtrace-data.sh \
+ run-backtrace-dwarf.sh run-backtrace-native-biarch.sh \
+ run-backtrace-native-core.sh \
+ run-backtrace-native-core-biarch.sh \
+ run-backtrace-core-x86_64.sh run-backtrace-core-i386.sh \
+ run-backtrace-core-ppc.sh run-backtrace-core-s390x.sh \
+ run-backtrace-core-s390.sh run-backtrace-core-aarch64.sh \
+ run-backtrace-demangle.sh run-stack-d-test.sh \
+ run-stack-i-test.sh run-readelf-dwz-multi.sh \
+ run-allfcts-multi.sh $(am__EXEEXT_2) $(am__append_7) \
+ $(am__append_8) $(am__EXEEXT_4)
@STANDALONE_FALSE@am__append_5 = msg_tst md5-sha1-test
@STANDALONE_FALSE@am__append_6 = msg_tst md5-sha1-test
-@HAVE_LIBASM_TRUE@am__append_7 = $(asm_TESTS)
-@HAVE_LIBASM_TRUE@am__append_8 = $(asm_TESTS)
-@ENABLE_DWZ_TRUE@am__append_9 = run-readelf-dwz-multi.sh
+@LZMA_TRUE@am__append_7 = run-readelf-s.sh run-dwflsyms.sh
+@ZLIB_TRUE@am__append_8 = run-readelf-zdebug.sh
+@HAVE_LIBASM_TRUE@am__append_9 = $(asm_TESTS)
+@HAVE_LIBASM_TRUE@am__append_10 = $(asm_TESTS)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-@STANDALONE_FALSE@am__EXEEXT_1 = msg_tst$(EXEEXT) \
+@BIARCH_TRUE@am__EXEEXT_1 = backtrace-child-biarch$(EXEEXT)
+@STANDALONE_FALSE@am__EXEEXT_2 = msg_tst$(EXEEXT) \
@STANDALONE_FALSE@ md5-sha1-test$(EXEEXT)
-am__EXEEXT_2 = asm-tst1$(EXEEXT) asm-tst2$(EXEEXT) asm-tst3$(EXEEXT) \
+am__EXEEXT_3 = asm-tst1$(EXEEXT) asm-tst2$(EXEEXT) asm-tst3$(EXEEXT) \
asm-tst4$(EXEEXT) asm-tst5$(EXEEXT) asm-tst6$(EXEEXT) \
asm-tst7$(EXEEXT) asm-tst8$(EXEEXT) asm-tst9$(EXEEXT)
-@HAVE_LIBASM_TRUE@am__EXEEXT_3 = $(am__EXEEXT_2)
+@HAVE_LIBASM_TRUE@am__EXEEXT_4 = $(am__EXEEXT_3)
addrcfi_SOURCES = addrcfi.c
addrcfi_OBJECTS = addrcfi.$(OBJEXT)
am__DEPENDENCIES_1 =
@BUILD_STATIC_TRUE@@STANDALONE_FALSE@ $(am__DEPENDENCIES_2) \
@BUILD_STATIC_TRUE@@STANDALONE_FALSE@ $(am__DEPENDENCIES_3)
addrcfi_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
addrscopes_SOURCES = addrscopes.c
addrscopes_OBJECTS = addrscopes.$(OBJEXT)
-addrscopes_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1)
+addrscopes_DEPENDENCIES = $(am__DEPENDENCIES_4)
alldts_SOURCES = alldts.c
alldts_OBJECTS = alldts.$(OBJEXT)
-alldts_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+alldts_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
allfcts_SOURCES = allfcts.c
allfcts_OBJECTS = allfcts.$(OBJEXT)
-allfcts_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+allfcts_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
allregs_SOURCES = allregs.c
allregs_OBJECTS = allregs.$(OBJEXT)
-allregs_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1)
+allregs_DEPENDENCIES = $(am__DEPENDENCIES_4)
arextract_SOURCES = arextract.c
arextract_OBJECTS = arextract.$(OBJEXT)
-arextract_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+arextract_DEPENDENCIES = $(am__DEPENDENCIES_2)
arls_SOURCES = arls.c
arls_OBJECTS = arls.$(OBJEXT)
-arls_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+arls_DEPENDENCIES = $(am__DEPENDENCIES_2)
arsymtest_SOURCES = arsymtest.c
arsymtest_OBJECTS = arsymtest.$(OBJEXT)
-arsymtest_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+arsymtest_DEPENDENCIES = $(am__DEPENDENCIES_2)
asm_tst1_SOURCES = asm-tst1.c
asm_tst1_OBJECTS = asm-tst1.$(OBJEXT)
@BUILD_STATIC_FALSE@@STANDALONE_FALSE@am__DEPENDENCIES_5 = \
@BUILD_STATIC_TRUE@@STANDALONE_FALSE@am__DEPENDENCIES_5 = \
@BUILD_STATIC_TRUE@@STANDALONE_FALSE@ ../libasm/libasm.a
asm_tst1_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst2_SOURCES = asm-tst2.c
asm_tst2_OBJECTS = asm-tst2.$(OBJEXT)
asm_tst2_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst3_SOURCES = asm-tst3.c
asm_tst3_OBJECTS = asm-tst3.$(OBJEXT)
asm_tst3_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst4_SOURCES = asm-tst4.c
asm_tst4_OBJECTS = asm-tst4.$(OBJEXT)
asm_tst4_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst5_SOURCES = asm-tst5.c
asm_tst5_OBJECTS = asm-tst5.$(OBJEXT)
asm_tst5_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst6_SOURCES = asm-tst6.c
asm_tst6_OBJECTS = asm-tst6.$(OBJEXT)
asm_tst6_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst7_SOURCES = asm-tst7.c
asm_tst7_OBJECTS = asm-tst7.$(OBJEXT)
asm_tst7_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst8_SOURCES = asm-tst8.c
asm_tst8_OBJECTS = asm-tst8.$(OBJEXT)
asm_tst8_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
asm_tst9_SOURCES = asm-tst9.c
asm_tst9_OBJECTS = asm-tst9.$(OBJEXT)
asm_tst9_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
+backtrace_SOURCES = backtrace.c
+backtrace_OBJECTS = backtrace.$(OBJEXT)
+backtrace_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+backtrace_child_SOURCES = backtrace-child.c
+backtrace_child_OBJECTS = backtrace_child-backtrace-child.$(OBJEXT)
+backtrace_child_LDADD = $(LDADD)
+backtrace_child_LINK = $(CCLD) $(backtrace_child_CFLAGS) $(CFLAGS) \
+ $(backtrace_child_LDFLAGS) $(LDFLAGS) -o $@
+am_backtrace_child_biarch_OBJECTS = backtrace-child.$(OBJEXT)
+backtrace_child_biarch_OBJECTS = $(am_backtrace_child_biarch_OBJECTS)
+backtrace_child_biarch_LDADD = $(LDADD)
+backtrace_data_SOURCES = backtrace-data.c
+backtrace_data_OBJECTS = backtrace-data.$(OBJEXT)
+backtrace_data_DEPENDENCIES = $(am__DEPENDENCIES_4) \
+ $(am__DEPENDENCIES_2)
+backtrace_dwarf_SOURCES = backtrace-dwarf.c
+backtrace_dwarf_OBJECTS = backtrace_dwarf-backtrace-dwarf.$(OBJEXT)
+backtrace_dwarf_DEPENDENCIES = $(am__DEPENDENCIES_4) \
+ $(am__DEPENDENCIES_2)
+backtrace_dwarf_LINK = $(CCLD) $(backtrace_dwarf_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+buildid_SOURCES = buildid.c
+buildid_OBJECTS = buildid.$(OBJEXT)
+buildid_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+debugaltlink_SOURCES = debugaltlink.c
+debugaltlink_OBJECTS = debugaltlink.$(OBJEXT)
+debugaltlink_DEPENDENCIES = $(am__DEPENDENCIES_4) \
+ $(am__DEPENDENCIES_2)
+debuglink_SOURCES = debuglink.c
+debuglink_OBJECTS = debuglink.$(OBJEXT)
+debuglink_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
dwarf_getmacros_SOURCES = dwarf-getmacros.c
dwarf_getmacros_OBJECTS = dwarf-getmacros.$(OBJEXT)
-dwarf_getmacros_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_1)
+dwarf_getmacros_DEPENDENCIES = $(am__DEPENDENCIES_4)
dwarf_getstring_SOURCES = dwarf-getstring.c
dwarf_getstring_OBJECTS = dwarf-getstring.$(OBJEXT)
-dwarf_getstring_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_1)
+dwarf_getstring_DEPENDENCIES = $(am__DEPENDENCIES_4)
dwfl_addr_sect_SOURCES = dwfl-addr-sect.c
dwfl_addr_sect_OBJECTS = dwfl-addr-sect.$(OBJEXT)
dwfl_addr_sect_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
dwfl_bug_addr_overflow_SOURCES = dwfl-bug-addr-overflow.c
dwfl_bug_addr_overflow_OBJECTS = dwfl-bug-addr-overflow.$(OBJEXT)
dwfl_bug_addr_overflow_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
dwfl_bug_fd_leak_SOURCES = dwfl-bug-fd-leak.c
dwfl_bug_fd_leak_OBJECTS = dwfl-bug-fd-leak.$(OBJEXT)
dwfl_bug_fd_leak_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
dwfl_bug_getmodules_SOURCES = dwfl-bug-getmodules.c
dwfl_bug_getmodules_OBJECTS = dwfl-bug-getmodules.$(OBJEXT)
dwfl_bug_getmodules_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
dwfl_bug_report_SOURCES = dwfl-bug-report.c
dwfl_bug_report_OBJECTS = dwfl-bug-report.$(OBJEXT)
dwfl_bug_report_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+dwfl_report_elf_align_SOURCES = dwfl-report-elf-align.c
+dwfl_report_elf_align_OBJECTS = dwfl-report-elf-align.$(OBJEXT)
+dwfl_report_elf_align_DEPENDENCIES = $(am__DEPENDENCIES_4)
+dwfllines_SOURCES = dwfllines.c
+dwfllines_OBJECTS = dwfllines.$(OBJEXT)
+dwfllines_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
dwflmodtest_SOURCES = dwflmodtest.c
dwflmodtest_OBJECTS = dwflmodtest.$(OBJEXT)
dwflmodtest_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_3) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
+dwflsyms_SOURCES = dwflsyms.c
+dwflsyms_OBJECTS = dwflsyms.$(OBJEXT)
+dwflsyms_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
early_offscn_SOURCES = early-offscn.c
early_offscn_OBJECTS = early-offscn.$(OBJEXT)
-early_offscn_DEPENDENCIES = $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+early_offscn_DEPENDENCIES = $(am__DEPENDENCIES_2)
ecp_SOURCES = ecp.c
ecp_OBJECTS = ecp.$(OBJEXT)
-ecp_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ecp_DEPENDENCIES = $(am__DEPENDENCIES_2)
find_prologues_SOURCES = find-prologues.c
find_prologues_OBJECTS = find-prologues.$(OBJEXT)
-find_prologues_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_1)
+find_prologues_DEPENDENCIES = $(am__DEPENDENCIES_4)
funcretval_SOURCES = funcretval.c
funcretval_OBJECTS = funcretval.$(OBJEXT)
-funcretval_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1)
+funcretval_DEPENDENCIES = $(am__DEPENDENCIES_4)
funcscopes_SOURCES = funcscopes.c
funcscopes_OBJECTS = funcscopes.$(OBJEXT)
-funcscopes_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1)
+funcscopes_DEPENDENCIES = $(am__DEPENDENCIES_4)
get_aranges_SOURCES = get-aranges.c
get_aranges_OBJECTS = get-aranges.$(OBJEXT)
-get_aranges_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+get_aranges_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
get_files_SOURCES = get-files.c
get_files_OBJECTS = get-files.$(OBJEXT)
-get_files_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+get_files_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
get_lines_SOURCES = get-lines.c
get_lines_OBJECTS = get-lines.$(OBJEXT)
-get_lines_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+get_lines_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
get_pubnames_SOURCES = get-pubnames.c
get_pubnames_OBJECTS = get-pubnames.$(OBJEXT)
get_pubnames_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
hash_SOURCES = hash.c
hash_OBJECTS = hash.$(OBJEXT)
-hash_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+hash_DEPENDENCIES = $(am__DEPENDENCIES_2)
line2addr_SOURCES = line2addr.c
line2addr_OBJECTS = line2addr.$(OBJEXT)
-line2addr_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1)
+line2addr_DEPENDENCIES = $(am__DEPENDENCIES_4)
low_high_pc_SOURCES = low_high_pc.c
low_high_pc_OBJECTS = low_high_pc.$(OBJEXT)
-low_high_pc_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+low_high_pc_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
md5_sha1_test_SOURCES = md5-sha1-test.c
md5_sha1_test_OBJECTS = md5-sha1-test.$(OBJEXT)
md5_sha1_test_DEPENDENCIES = $(libeu)
msg_tst_SOURCES = msg_tst.c
msg_tst_OBJECTS = msg_tst.$(OBJEXT)
-msg_tst_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+msg_tst_DEPENDENCIES = $(am__DEPENDENCIES_2)
newfile_SOURCES = newfile.c
newfile_OBJECTS = newfile.$(OBJEXT)
-newfile_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+newfile_DEPENDENCIES = $(am__DEPENDENCIES_2)
newscn_SOURCES = newscn.c
newscn_OBJECTS = newscn.$(OBJEXT)
-newscn_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+newscn_DEPENDENCIES = $(am__DEPENDENCIES_2)
rdwrmmap_SOURCES = rdwrmmap.c
rdwrmmap_OBJECTS = rdwrmmap.$(OBJEXT)
-rdwrmmap_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+rdwrmmap_DEPENDENCIES = $(am__DEPENDENCIES_2)
rerequest_tag_SOURCES = rerequest_tag.c
rerequest_tag_OBJECTS = rerequest_tag.$(OBJEXT)
-rerequest_tag_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_1)
+rerequest_tag_DEPENDENCIES = $(am__DEPENDENCIES_4)
saridx_SOURCES = saridx.c
saridx_OBJECTS = saridx.$(OBJEXT)
-saridx_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+saridx_DEPENDENCIES = $(am__DEPENDENCIES_2)
scnnames_SOURCES = scnnames.c
scnnames_OBJECTS = scnnames.$(OBJEXT)
-scnnames_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+scnnames_DEPENDENCIES = $(am__DEPENDENCIES_2)
sectiondump_SOURCES = sectiondump.c
sectiondump_OBJECTS = sectiondump.$(OBJEXT)
-sectiondump_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+sectiondump_DEPENDENCIES = $(am__DEPENDENCIES_2)
show_abbrev_SOURCES = show-abbrev.c
show_abbrev_OBJECTS = show-abbrev.$(OBJEXT)
-show_abbrev_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+show_abbrev_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
show_die_info_SOURCES = show-die-info.c
show_die_info_OBJECTS = show-die-info.$(OBJEXT)
show_die_info_DEPENDENCIES = $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_2)
showptable_SOURCES = showptable.c
showptable_OBJECTS = showptable.$(OBJEXT)
-showptable_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+showptable_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_elf_cntl_gelf_getshdr_SOURCES = test-elf_cntl_gelf_getshdr.c
test_elf_cntl_gelf_getshdr_OBJECTS = \
test-elf_cntl_gelf_getshdr.$(OBJEXT)
-test_elf_cntl_gelf_getshdr_DEPENDENCIES = $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+test_elf_cntl_gelf_getshdr_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_flag_nobits_SOURCES = test-flag-nobits.c
test_flag_nobits_OBJECTS = test-flag-nobits.$(OBJEXT)
-test_flag_nobits_DEPENDENCIES = $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+test_flag_nobits_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_nlist_SOURCES = test-nlist.c
test_nlist_OBJECTS = test-nlist.$(OBJEXT)
-test_nlist_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+test_nlist_DEPENDENCIES = $(am__DEPENDENCIES_2)
typeiter_SOURCES = typeiter.c
typeiter_OBJECTS = typeiter.$(OBJEXT)
-typeiter_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+typeiter_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+typeiter2_SOURCES = typeiter2.c
+typeiter2_OBJECTS = typeiter2.$(OBJEXT)
+typeiter2_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
update1_SOURCES = update1.c
update1_OBJECTS = update1.$(OBJEXT)
-update1_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+update1_DEPENDENCIES = $(am__DEPENDENCIES_2)
update2_SOURCES = update2.c
update2_OBJECTS = update2.$(OBJEXT)
-update2_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+update2_DEPENDENCIES = $(am__DEPENDENCIES_2)
update3_SOURCES = update3.c
update3_OBJECTS = update3.$(OBJEXT)
-update3_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+update3_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
update4_SOURCES = update4.c
update4_OBJECTS = update4.$(OBJEXT)
-update4_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+update4_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+varlocs_SOURCES = varlocs.c
+varlocs_OBJECTS = varlocs.$(OBJEXT)
+varlocs_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = addrcfi.c addrscopes.c alldts.c allfcts.c allregs.c \
arextract.c arls.c arsymtest.c asm-tst1.c asm-tst2.c \
asm-tst3.c asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c \
- asm-tst8.c asm-tst9.c dwarf-getmacros.c dwarf-getstring.c \
- dwfl-addr-sect.c dwfl-bug-addr-overflow.c dwfl-bug-fd-leak.c \
- dwfl-bug-getmodules.c dwfl-bug-report.c dwflmodtest.c \
+ asm-tst8.c asm-tst9.c backtrace.c backtrace-child.c \
+ $(backtrace_child_biarch_SOURCES) backtrace-data.c \
+ backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
+ dwarf-getmacros.c dwarf-getstring.c dwfl-addr-sect.c \
+ dwfl-bug-addr-overflow.c dwfl-bug-fd-leak.c \
+ dwfl-bug-getmodules.c dwfl-bug-report.c \
+ dwfl-report-elf-align.c dwfllines.c dwflmodtest.c dwflsyms.c \
early-offscn.c ecp.c find-prologues.c funcretval.c \
funcscopes.c get-aranges.c get-files.c get-lines.c \
get-pubnames.c hash.c line2addr.c low_high_pc.c \
rerequest_tag.c saridx.c scnnames.c sectiondump.c \
show-abbrev.c show-die-info.c showptable.c \
test-elf_cntl_gelf_getshdr.c test-flag-nobits.c test-nlist.c \
- typeiter.c update1.c update2.c update3.c update4.c
+ typeiter.c typeiter2.c update1.c update2.c update3.c update4.c \
+ varlocs.c
DIST_SOURCES = addrcfi.c addrscopes.c alldts.c allfcts.c allregs.c \
arextract.c arls.c arsymtest.c asm-tst1.c asm-tst2.c \
asm-tst3.c asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c \
- asm-tst8.c asm-tst9.c dwarf-getmacros.c dwarf-getstring.c \
- dwfl-addr-sect.c dwfl-bug-addr-overflow.c dwfl-bug-fd-leak.c \
- dwfl-bug-getmodules.c dwfl-bug-report.c dwflmodtest.c \
+ asm-tst8.c asm-tst9.c backtrace.c backtrace-child.c \
+ $(backtrace_child_biarch_SOURCES) backtrace-data.c \
+ backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
+ dwarf-getmacros.c dwarf-getstring.c dwfl-addr-sect.c \
+ dwfl-bug-addr-overflow.c dwfl-bug-fd-leak.c \
+ dwfl-bug-getmodules.c dwfl-bug-report.c \
+ dwfl-report-elf-align.c dwfllines.c dwflmodtest.c dwflsyms.c \
early-offscn.c ecp.c find-prologues.c funcretval.c \
funcscopes.c get-aranges.c get-files.c get-lines.c \
get-pubnames.c hash.c line2addr.c low_high_pc.c \
rerequest_tag.c saridx.c scnnames.c sectiondump.c \
show-abbrev.c show-die-info.c showptable.c \
test-elf_cntl_gelf_getshdr.c test-flag-nobits.c test-nlist.c \
- typeiter.c update1.c update2.c update3.c update4.c
+ typeiter.c typeiter2.c update1.c update2.c update3.c update4.c \
+ varlocs.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='\e[0;31m'; \
+ grn='\e[0;32m'; \
+ lgn='\e[1;32m'; \
+ blu='\e[1;34m'; \
+ mgn='\e[0;35m'; \
+ brg='\e[1m'; \
+ std='\e[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
+CC_BIARCH = @CC_BIARCH@
CFLAGS = @CFLAGS@
+CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEBUGPRED = @DEBUGPRED@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_VALGRIND = @HAVE_VALGRIND@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
+NM = @NM@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+READELF = @READELF@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
-INCLUDES = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. $(am__append_2)
-AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
- $($(*F)_no_Werror),,-Werror) $(if \
- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
- $(am__append_1)
-@MUDFLAP_FALSE@libmudflap =
-@MUDFLAP_TRUE@libmudflap = -lmudflap
-COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
- $(COMPILE))
+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. $(am__append_1)
+AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ $(if $($(*F)_no_Werror),,-Werror) \
+ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+ $($(*F)_CFLAGS)
+COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda
-textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
-@MUDFLAP_FALSE@BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
-@MUDFLAP_TRUE@BUILD_RPATH = \$$ORIGIN/../backends
-AM_LDFLAGS = $(am__append_3) $(am__append_4)
+textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
+AM_LDFLAGS = $(am__append_2) $(am__append_3)
@TESTS_RPATH_FALSE@tests_rpath = no
@TESTS_RPATH_TRUE@tests_rpath = yes
asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
testfile5.bz2 testfile6.bz2 testfile7.bz2 testfile8.bz2 \
testfile9.bz2 testfile10.bz2 testfile11.bz2 testfile12.bz2 \
testfile13.bz2 run-strip-test3.sh run-allfcts.sh \
+ testfile_class_func.bz2 testfile_nested_funcs.bz2 \
run-line2addr.sh run-elflint-test.sh testfile14.bz2 \
run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \
run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \
run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \
- hello_ppc64.ko.bz2 hello_s390.ko.bz2 \
- run-unstrip-test.sh run-unstrip-test2.sh \
+ hello_ppc64.ko.bz2 hello_s390.ko.bz2 hello_aarch64.ko.bz2 \
+ run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-M.sh\
run-elflint-self.sh run-ranlib-test.sh run-ranlib-test2.sh \
run-ranlib-test3.sh run-ranlib-test4.sh \
run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
- run-nm-self.sh run-readelf-self.sh \
+ run-nm-self.sh run-readelf-self.sh run-addrcfi.sh \
run-find-prologues.sh run-allregs.sh run-native-test.sh \
run-addrname-test.sh run-dwfl-bug-offline-rel.sh \
run-dwfl-addr-sect.sh run-early-offscn.sh \
run-readelf-test1.sh run-readelf-test2.sh run-readelf-test3.sh \
run-readelf-test4.sh run-readelf-twofiles.sh \
run-bug1-test.sh testfile28.bz2 testfile28.rdwr.bz2 \
+ run-debuglink.sh run-debugaltlink.sh run-buildid.sh \
testfile29.bz2 testfile29.rdwr.bz2 \
testfile30.bz2 testfile31.bz2 testfile32.bz2 testfile33.bz2 \
testfile34.bz2 testfile35.bz2 testfile35.debug.bz2 \
testfile36.bz2 testfile36.debug.bz2 \
testfile37.bz2 testfile37.debug.bz2 \
testfile38.bz2 testfile39.bz2 testfile40.bz2 testfile40.debug.bz2 \
- testfile41.bz2 testfile42.bz2 testfile43.bz2 \
+ testfile41.bz2 testfile42.bz2 testfile42_noshdrs.bz2 \
+ testfile43.bz2 \
testfile44.S.bz2 testfile44.expect.bz2 run-disasm-x86.sh \
testfile45.S.bz2 testfile45.expect.bz2 run-disasm-x86-64.sh \
testfile46.bz2 testfile47.bz2 testfile48.bz2 testfile48.debug.bz2 \
testfile49.bz2 testfile50.bz2 testfile51.bz2 \
run-readelf-macro.sh testfilemacro.bz2 \
+ run-readelf-loc.sh testfileloc.bz2 \
+ run-readelf-aranges.sh run-readelf-line.sh testfilefoobarbaz.bz2 \
run-readelf-dwz-multi.sh libtestfile_multi_shared.so.bz2 \
testfile_multi.dwz.bz2 testfile_multi_main.bz2 \
+ testfile-dwzstr.bz2 testfile-dwzstr.multi.bz2 \
+ run-allfcts-multi.sh \
+ test-offset-loop.bz2 test-offset-loop.alt.bz2 \
run-prelink-addr-test.sh \
testfile52-32.so.bz2 testfile52-32.so.debug.bz2 \
testfile52-32.prelink.so.bz2 testfile52-32.noshdrs.so.bz2 \
run-readelf-d.sh testlib_dynseg.so.bz2 \
run-readelf-gdb_index.sh testfilegdbindex5.bz2 \
testfilegdbindex7.bz2 \
+ run-readelf-s.sh testfilebazdbg.bz2 testfilebazdyn.bz2 \
+ testfilebazmin.bz2 testfilebazdbg.debug.bz2 testfilebazmdb.bz2 \
+ testfilebaztab.bz2 testfilebasmin.bz2 testfilebaxmin.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 \
run-macro-test.sh testfile-macinfo.bz2 testfile-macros.bz2 \
run-elf_cntl_gelf_getshdr.sh \
run-test-archive64.sh testarchive64.a.bz2 \
- testfile60.bz2
-
-installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \
- bindir=$(DESTDIR)$(bindir) \
- LC_ALL=C LANG=C \
- $(srcdir)/test-wrapper.sh \
- installed $(tests_rpath) \
- $(program_transform_name)
-
-@STANDALONE_FALSE@TESTS_ENVIRONMENT = LC_ALL=C LANG=C $(srcdir)/test-wrapper.sh \
-@STANDALONE_FALSE@ ../libdw:../backends:../libelf:../libasm
+ testfile60.bz2 testfile61.bz2 \
+ run-readelf-vmcoreinfo.sh testfile62.bz2 \
+ run-readelf-mixed-corenote.sh testfile63.bz2 testfile64.bz2 \
+ testfile65.bz2 testfile67.bz2 testfile68.bz2 \
+ testfile69.core.bz2 testfile69.so.bz2 \
+ testfile70.core.bz2 testfile70.exec.bz2 testfile71.bz2 \
+ run-dwfllines.sh run-dwfl-report-elf-align.sh \
+ testfile-dwfl-report-elf-align-shlib.so.bz2 \
+ testfilenolines.bz2 test-core-lib.so.bz2 test-core.core.bz2 \
+ test-core.exec.bz2 run-addr2line-test.sh \
+ run-addr2line-i-test.sh testfile-inlines.bz2 \
+ testfileppc32.bz2 testfileppc64.bz2 \
+ testfiles390.bz2 testfiles390x.bz2 \
+ testfilearm.bz2 testfileaarch64.bz2 \
+ run-varlocs.sh \
+ testfile_const_type.c testfile_const_type.bz2 \
+ testfile_implicit_pointer.c testfile_implicit_pointer.bz2 \
+ testfile_parameter_ref.c testfile_parameter_ref.bz2 \
+ testfile_entry_value.c testfile_entry_value.bz2 \
+ testfile_implicit_value.c testfile_implicit_value.bz2 \
+ testfile_aarch64_core.bz2 testfile_i686_core.bz2 \
+ run-funcretval.sh funcretval_test.c funcretval_test_aarch64.bz2 \
+ run-backtrace-data.sh run-backtrace-dwarf.sh cleanup-13.c \
+ run-backtrace-native.sh run-backtrace-native-biarch.sh \
+ run-backtrace-native-core.sh run-backtrace-native-core-biarch.sh \
+ run-backtrace-core-x86_64.sh run-backtrace-core-i386.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 testfile66.bz2 testfile66.core.bz2 \
+ backtrace.s390x.core.bz2 backtrace.s390x.exec.bz2 \
+ backtrace.s390.core.bz2 backtrace.s390.exec.bz2 \
+ run-backtrace-core-s390x.sh run-backtrace-core-s390.sh \
+ run-backtrace-core-aarch64.sh \
+ backtrace.aarch64.core.bz2 backtrace.aarch64.exec.bz2 \
+ run-backtrace-demangle.sh testfile-backtrace-demangle.bz2 \
+ testfile-backtrace-demangle.cc \
+ testfile-backtrace-demangle.core.bz2 \
+ run-stack-d-test.sh run-stack-i-test.sh \
+ testfiledwarfinlines.bz2 testfiledwarfinlines.core.bz2 \
+ run-readelf-zdebug.sh testfile-debug.bz2 testfile-zdebug.bz2
+
+@USE_VALGRIND_TRUE@valgrind_cmd = 'valgrind -q --error-exitcode=1 --run-libc-freeres=no'
+installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir); \
+ bindir=$(DESTDIR)$(bindir); \
+ LC_ALL=C; LANG=C; \
+ VALGRIND_CMD=$(valgrind_cmd); \
+ abs_srcdir=$(abs_srcdir); \
+ abs_builddir=$(abs_builddir); \
+ abs_top_builddir=$(abs_top_builddir); \
+ export abs_srcdir; export abs_builddir; \
+ export abs_top_builddir; \
+ export libdir; export bindir; \
+ export LC_ALL; export LANG; export VALGRIND_CMD; \
+ NM=$(NM); export NM;
+
+installed_LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
+ installed $(tests_rpath) \
+ '$(program_transform_name)'
+
+@STANDALONE_FALSE@TESTS_ENVIRONMENT = LC_ALL=C; LANG=C; VALGRIND_CMD=$(valgrind_cmd); \
+@STANDALONE_FALSE@ abs_srcdir=$(abs_srcdir); abs_builddir=$(abs_builddir); \
+@STANDALONE_FALSE@ abs_top_builddir=$(abs_top_builddir); \
+@STANDALONE_FALSE@ export abs_srcdir; export abs_builddir; \
+@STANDALONE_FALSE@ export abs_top_builddir; \
+@STANDALONE_FALSE@ export LC_ALL; export LANG; export VALGRIND_CMD; \
+@STANDALONE_FALSE@ NM=$(NM); export NM;
@STANDALONE_TRUE@TESTS_ENVIRONMENT = $(installed_TESTS_ENVIRONMENT)
-@MUDFLAP_TRUE@static_build = yes
+@STANDALONE_FALSE@LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
+@STANDALONE_FALSE@ $(abs_top_builddir)/libdw:$(abs_top_builddir)/backends:$(abs_top_builddir)/libelf:$(abs_top_builddir)/libasm
+
+@STANDALONE_TRUE@LOG_COMPILER = $(installed_LOG_COMPILER)
@BUILD_STATIC_FALSE@@STANDALONE_FALSE@libdw = ../libdw/libdw.so
@BUILD_STATIC_TRUE@@STANDALONE_FALSE@libdw = ../libdw/libdw.a $(zip_LIBS) $(libelf) $(libebl) -ldl
@STANDALONE_TRUE@libdw = -ldw
@STANDALONE_FALSE@libebl = ../libebl/libebl.a
@STANDALONE_TRUE@libebl = -lebl
@STANDALONE_FALSE@libeu = ../lib/libeu.a
-arextract_LDADD = $(libelf) $(libmudflap)
-arsymtest_LDADD = $(libelf) $(libmudflap)
-newfile_LDADD = $(libelf) $(libmudflap)
-saridx_LDADD = $(libelf) $(libmudflap)
-scnnames_LDADD = $(libelf) $(libmudflap)
-sectiondump_LDADD = $(libelf) $(libmudflap)
-showptable_LDADD = $(libelf) $(libmudflap)
-hash_LDADD = $(libelf) $(libmudflap)
-test_nlist_LDADD = $(libelf) $(libmudflap)
-msg_tst_LDADD = $(libelf) $(libmudflap)
-newscn_LDADD = $(libelf) $(libmudflap)
-early_offscn_LDADD = $(libelf) $(libmudflap)
-ecp_LDADD = $(libelf) $(libmudflap)
-update1_LDADD = $(libelf) $(libmudflap)
-update2_LDADD = $(libelf) $(libmudflap)
-update3_LDADD = $(libebl) $(libelf) $(libmudflap)
-update4_LDADD = $(libebl) $(libelf) $(libmudflap)
-show_die_info_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_pubnames_LDADD = $(libdw) $(libelf) $(libmudflap)
-show_abbrev_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_lines_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_files_LDADD = $(libdw) $(libelf) $(libmudflap)
-get_aranges_LDADD = $(libdw) $(libelf) $(libmudflap)
-allfcts_LDADD = $(libdw) $(libelf) $(libmudflap)
-line2addr_no_Wformat = yes
-line2addr_LDADD = $(libdw) $(libmudflap)
-addrscopes_LDADD = $(libdw) $(libmudflap)
-funcscopes_LDADD = $(libdw) $(libmudflap)
-funcretval_LDADD = $(libdw) $(libmudflap)
-allregs_LDADD = $(libdw) $(libmudflap)
-find_prologues_LDADD = $(libdw) $(libmudflap)
-#show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf) $(libmudflap)
-asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst2_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst3_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst4_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst5_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst6_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst7_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst8_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-asm_tst9_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl
-dwflmodtest_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-rdwrmmap_LDADD = $(libelf) $(libmudflap)
-dwfl_bug_addr_overflow_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-arls_LDADD = $(libelf) $(libmudflap)
-dwfl_bug_fd_leak_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwfl_bug_report_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwfl_bug_getmodules_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwfl_addr_sect_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-dwarf_getmacros_LDADD = $(libdw) $(libmudflap)
-dwarf_getstring_LDADD = $(libdw) $(libmudflap)
-addrcfi_LDADD = $(libdw) $(libebl) $(libelf) $(libmudflap) -ldl
-test_flag_nobits_LDADD = $(libelf) $(libmudflap)
-rerequest_tag_LDADD = $(libdw) $(libmudflap)
-alldts_LDADD = $(libebl) $(libelf) $(libmudflap)
+arextract_LDADD = $(libelf)
+arsymtest_LDADD = $(libelf)
+newfile_LDADD = $(libelf)
+saridx_LDADD = $(libelf)
+scnnames_LDADD = $(libelf)
+sectiondump_LDADD = $(libelf)
+showptable_LDADD = $(libelf)
+hash_LDADD = $(libelf)
+test_nlist_LDADD = $(libelf)
+msg_tst_LDADD = $(libelf)
+newscn_LDADD = $(libelf)
+early_offscn_LDADD = $(libelf)
+ecp_LDADD = $(libelf)
+update1_LDADD = $(libelf)
+update2_LDADD = $(libelf)
+update3_LDADD = $(libebl) $(libelf)
+update4_LDADD = $(libebl) $(libelf)
+show_die_info_LDADD = $(libdw) $(libelf)
+get_pubnames_LDADD = $(libdw) $(libelf)
+show_abbrev_LDADD = $(libdw) $(libelf)
+get_lines_LDADD = $(libdw) $(libelf)
+get_files_LDADD = $(libdw) $(libelf)
+get_aranges_LDADD = $(libdw) $(libelf)
+allfcts_LDADD = $(libdw) $(libelf)
+line2addr_LDADD = $(libdw)
+addrscopes_LDADD = $(libdw)
+funcscopes_LDADD = $(libdw)
+funcretval_LDADD = $(libdw)
+allregs_LDADD = $(libdw)
+find_prologues_LDADD = $(libdw)
+#show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf)
+asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst2_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst3_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst4_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst5_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst6_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst7_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst8_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+asm_tst9_LDADD = $(libasm) $(libebl) $(libelf) -ldl
+dwflmodtest_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+rdwrmmap_LDADD = $(libelf)
+dwfl_bug_addr_overflow_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+arls_LDADD = $(libelf)
+dwfl_bug_fd_leak_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwfl_bug_report_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwfl_bug_getmodules_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwfl_addr_sect_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+dwarf_getmacros_LDADD = $(libdw)
+dwarf_getstring_LDADD = $(libdw)
+addrcfi_LDADD = $(libdw) $(libebl) $(libelf) -ldl
+test_flag_nobits_LDADD = $(libelf)
+rerequest_tag_LDADD = $(libdw)
+alldts_LDADD = $(libebl) $(libelf)
md5_sha1_test_LDADD = $(libeu)
-typeiter_LDADD = $(libdw) $(libelf) $(libmudflap)
-low_high_pc_LDADD = $(libdw) $(libelf) $(libmudflap)
-test_elf_cntl_gelf_getshdr_LDADD = $(libelf) $(libmudflap)
+typeiter_LDADD = $(libdw) $(libelf)
+typeiter2_LDADD = $(libdw) $(libelf)
+low_high_pc_LDADD = $(libdw) $(libelf)
+test_elf_cntl_gelf_getshdr_LDADD = $(libelf)
+dwflsyms_LDADD = $(libdw) $(libelf)
+dwfllines_LDADD = $(libdw) $(libelf)
+dwfl_report_elf_align_LDADD = $(libdw)
+varlocs_LDADD = $(libdw) $(libelf)
+backtrace_LDADD = $(libdw) $(libelf)
+# backtrace-child-biarch also uses those *_CFLAGS and *_LDLAGS variables:
+backtrace_child_CFLAGS = -fPIE
+backtrace_child_LDFLAGS = -pie -pthread
+backtrace_child_biarch_SOURCES = backtrace-child.c
+backtrace_data_LDADD = $(libdw) $(libelf)
+backtrace_dwarf_CFLAGS = -Wno-unused-parameter
+backtrace_dwarf_LDADD = $(libdw) $(libelf)
+debuglink_LDADD = $(libdw) $(libelf)
+debugaltlink_LDADD = $(libdw) $(libelf)
+buildid_LDADD = $(libdw) $(libelf)
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
+.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/eu.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
clean-checkPROGRAMS:
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
addrcfi$(EXEEXT): $(addrcfi_OBJECTS) $(addrcfi_DEPENDENCIES) $(EXTRA_addrcfi_DEPENDENCIES)
@rm -f addrcfi$(EXEEXT)
- $(LINK) $(addrcfi_OBJECTS) $(addrcfi_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(addrcfi_OBJECTS) $(addrcfi_LDADD) $(LIBS)
+
addrscopes$(EXEEXT): $(addrscopes_OBJECTS) $(addrscopes_DEPENDENCIES) $(EXTRA_addrscopes_DEPENDENCIES)
@rm -f addrscopes$(EXEEXT)
- $(LINK) $(addrscopes_OBJECTS) $(addrscopes_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(addrscopes_OBJECTS) $(addrscopes_LDADD) $(LIBS)
+
alldts$(EXEEXT): $(alldts_OBJECTS) $(alldts_DEPENDENCIES) $(EXTRA_alldts_DEPENDENCIES)
@rm -f alldts$(EXEEXT)
- $(LINK) $(alldts_OBJECTS) $(alldts_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(alldts_OBJECTS) $(alldts_LDADD) $(LIBS)
+
allfcts$(EXEEXT): $(allfcts_OBJECTS) $(allfcts_DEPENDENCIES) $(EXTRA_allfcts_DEPENDENCIES)
@rm -f allfcts$(EXEEXT)
- $(LINK) $(allfcts_OBJECTS) $(allfcts_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(allfcts_OBJECTS) $(allfcts_LDADD) $(LIBS)
+
allregs$(EXEEXT): $(allregs_OBJECTS) $(allregs_DEPENDENCIES) $(EXTRA_allregs_DEPENDENCIES)
@rm -f allregs$(EXEEXT)
- $(LINK) $(allregs_OBJECTS) $(allregs_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(allregs_OBJECTS) $(allregs_LDADD) $(LIBS)
+
arextract$(EXEEXT): $(arextract_OBJECTS) $(arextract_DEPENDENCIES) $(EXTRA_arextract_DEPENDENCIES)
@rm -f arextract$(EXEEXT)
- $(LINK) $(arextract_OBJECTS) $(arextract_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(arextract_OBJECTS) $(arextract_LDADD) $(LIBS)
+
arls$(EXEEXT): $(arls_OBJECTS) $(arls_DEPENDENCIES) $(EXTRA_arls_DEPENDENCIES)
@rm -f arls$(EXEEXT)
- $(LINK) $(arls_OBJECTS) $(arls_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(arls_OBJECTS) $(arls_LDADD) $(LIBS)
+
arsymtest$(EXEEXT): $(arsymtest_OBJECTS) $(arsymtest_DEPENDENCIES) $(EXTRA_arsymtest_DEPENDENCIES)
@rm -f arsymtest$(EXEEXT)
- $(LINK) $(arsymtest_OBJECTS) $(arsymtest_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(arsymtest_OBJECTS) $(arsymtest_LDADD) $(LIBS)
+
asm-tst1$(EXEEXT): $(asm_tst1_OBJECTS) $(asm_tst1_DEPENDENCIES) $(EXTRA_asm_tst1_DEPENDENCIES)
@rm -f asm-tst1$(EXEEXT)
- $(LINK) $(asm_tst1_OBJECTS) $(asm_tst1_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst1_OBJECTS) $(asm_tst1_LDADD) $(LIBS)
+
asm-tst2$(EXEEXT): $(asm_tst2_OBJECTS) $(asm_tst2_DEPENDENCIES) $(EXTRA_asm_tst2_DEPENDENCIES)
@rm -f asm-tst2$(EXEEXT)
- $(LINK) $(asm_tst2_OBJECTS) $(asm_tst2_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst2_OBJECTS) $(asm_tst2_LDADD) $(LIBS)
+
asm-tst3$(EXEEXT): $(asm_tst3_OBJECTS) $(asm_tst3_DEPENDENCIES) $(EXTRA_asm_tst3_DEPENDENCIES)
@rm -f asm-tst3$(EXEEXT)
- $(LINK) $(asm_tst3_OBJECTS) $(asm_tst3_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst3_OBJECTS) $(asm_tst3_LDADD) $(LIBS)
+
asm-tst4$(EXEEXT): $(asm_tst4_OBJECTS) $(asm_tst4_DEPENDENCIES) $(EXTRA_asm_tst4_DEPENDENCIES)
@rm -f asm-tst4$(EXEEXT)
- $(LINK) $(asm_tst4_OBJECTS) $(asm_tst4_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst4_OBJECTS) $(asm_tst4_LDADD) $(LIBS)
+
asm-tst5$(EXEEXT): $(asm_tst5_OBJECTS) $(asm_tst5_DEPENDENCIES) $(EXTRA_asm_tst5_DEPENDENCIES)
@rm -f asm-tst5$(EXEEXT)
- $(LINK) $(asm_tst5_OBJECTS) $(asm_tst5_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst5_OBJECTS) $(asm_tst5_LDADD) $(LIBS)
+
asm-tst6$(EXEEXT): $(asm_tst6_OBJECTS) $(asm_tst6_DEPENDENCIES) $(EXTRA_asm_tst6_DEPENDENCIES)
@rm -f asm-tst6$(EXEEXT)
- $(LINK) $(asm_tst6_OBJECTS) $(asm_tst6_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst6_OBJECTS) $(asm_tst6_LDADD) $(LIBS)
+
asm-tst7$(EXEEXT): $(asm_tst7_OBJECTS) $(asm_tst7_DEPENDENCIES) $(EXTRA_asm_tst7_DEPENDENCIES)
@rm -f asm-tst7$(EXEEXT)
- $(LINK) $(asm_tst7_OBJECTS) $(asm_tst7_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst7_OBJECTS) $(asm_tst7_LDADD) $(LIBS)
+
asm-tst8$(EXEEXT): $(asm_tst8_OBJECTS) $(asm_tst8_DEPENDENCIES) $(EXTRA_asm_tst8_DEPENDENCIES)
@rm -f asm-tst8$(EXEEXT)
- $(LINK) $(asm_tst8_OBJECTS) $(asm_tst8_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst8_OBJECTS) $(asm_tst8_LDADD) $(LIBS)
+
asm-tst9$(EXEEXT): $(asm_tst9_OBJECTS) $(asm_tst9_DEPENDENCIES) $(EXTRA_asm_tst9_DEPENDENCIES)
@rm -f asm-tst9$(EXEEXT)
- $(LINK) $(asm_tst9_OBJECTS) $(asm_tst9_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(asm_tst9_OBJECTS) $(asm_tst9_LDADD) $(LIBS)
+
+backtrace$(EXEEXT): $(backtrace_OBJECTS) $(backtrace_DEPENDENCIES) $(EXTRA_backtrace_DEPENDENCIES)
+ @rm -f backtrace$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(backtrace_OBJECTS) $(backtrace_LDADD) $(LIBS)
+
+backtrace-child$(EXEEXT): $(backtrace_child_OBJECTS) $(backtrace_child_DEPENDENCIES) $(EXTRA_backtrace_child_DEPENDENCIES)
+ @rm -f backtrace-child$(EXEEXT)
+ $(AM_V_CCLD)$(backtrace_child_LINK) $(backtrace_child_OBJECTS) $(backtrace_child_LDADD) $(LIBS)
+
+backtrace-data$(EXEEXT): $(backtrace_data_OBJECTS) $(backtrace_data_DEPENDENCIES) $(EXTRA_backtrace_data_DEPENDENCIES)
+ @rm -f backtrace-data$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(backtrace_data_OBJECTS) $(backtrace_data_LDADD) $(LIBS)
+
+backtrace-dwarf$(EXEEXT): $(backtrace_dwarf_OBJECTS) $(backtrace_dwarf_DEPENDENCIES) $(EXTRA_backtrace_dwarf_DEPENDENCIES)
+ @rm -f backtrace-dwarf$(EXEEXT)
+ $(AM_V_CCLD)$(backtrace_dwarf_LINK) $(backtrace_dwarf_OBJECTS) $(backtrace_dwarf_LDADD) $(LIBS)
+
+buildid$(EXEEXT): $(buildid_OBJECTS) $(buildid_DEPENDENCIES) $(EXTRA_buildid_DEPENDENCIES)
+ @rm -f buildid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(buildid_OBJECTS) $(buildid_LDADD) $(LIBS)
+
+debugaltlink$(EXEEXT): $(debugaltlink_OBJECTS) $(debugaltlink_DEPENDENCIES) $(EXTRA_debugaltlink_DEPENDENCIES)
+ @rm -f debugaltlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(debugaltlink_OBJECTS) $(debugaltlink_LDADD) $(LIBS)
+
+debuglink$(EXEEXT): $(debuglink_OBJECTS) $(debuglink_DEPENDENCIES) $(EXTRA_debuglink_DEPENDENCIES)
+ @rm -f debuglink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(debuglink_OBJECTS) $(debuglink_LDADD) $(LIBS)
+
dwarf-getmacros$(EXEEXT): $(dwarf_getmacros_OBJECTS) $(dwarf_getmacros_DEPENDENCIES) $(EXTRA_dwarf_getmacros_DEPENDENCIES)
@rm -f dwarf-getmacros$(EXEEXT)
- $(LINK) $(dwarf_getmacros_OBJECTS) $(dwarf_getmacros_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwarf_getmacros_OBJECTS) $(dwarf_getmacros_LDADD) $(LIBS)
+
dwarf-getstring$(EXEEXT): $(dwarf_getstring_OBJECTS) $(dwarf_getstring_DEPENDENCIES) $(EXTRA_dwarf_getstring_DEPENDENCIES)
@rm -f dwarf-getstring$(EXEEXT)
- $(LINK) $(dwarf_getstring_OBJECTS) $(dwarf_getstring_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwarf_getstring_OBJECTS) $(dwarf_getstring_LDADD) $(LIBS)
+
dwfl-addr-sect$(EXEEXT): $(dwfl_addr_sect_OBJECTS) $(dwfl_addr_sect_DEPENDENCIES) $(EXTRA_dwfl_addr_sect_DEPENDENCIES)
@rm -f dwfl-addr-sect$(EXEEXT)
- $(LINK) $(dwfl_addr_sect_OBJECTS) $(dwfl_addr_sect_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwfl_addr_sect_OBJECTS) $(dwfl_addr_sect_LDADD) $(LIBS)
+
dwfl-bug-addr-overflow$(EXEEXT): $(dwfl_bug_addr_overflow_OBJECTS) $(dwfl_bug_addr_overflow_DEPENDENCIES) $(EXTRA_dwfl_bug_addr_overflow_DEPENDENCIES)
@rm -f dwfl-bug-addr-overflow$(EXEEXT)
- $(LINK) $(dwfl_bug_addr_overflow_OBJECTS) $(dwfl_bug_addr_overflow_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwfl_bug_addr_overflow_OBJECTS) $(dwfl_bug_addr_overflow_LDADD) $(LIBS)
+
dwfl-bug-fd-leak$(EXEEXT): $(dwfl_bug_fd_leak_OBJECTS) $(dwfl_bug_fd_leak_DEPENDENCIES) $(EXTRA_dwfl_bug_fd_leak_DEPENDENCIES)
@rm -f dwfl-bug-fd-leak$(EXEEXT)
- $(LINK) $(dwfl_bug_fd_leak_OBJECTS) $(dwfl_bug_fd_leak_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwfl_bug_fd_leak_OBJECTS) $(dwfl_bug_fd_leak_LDADD) $(LIBS)
+
dwfl-bug-getmodules$(EXEEXT): $(dwfl_bug_getmodules_OBJECTS) $(dwfl_bug_getmodules_DEPENDENCIES) $(EXTRA_dwfl_bug_getmodules_DEPENDENCIES)
@rm -f dwfl-bug-getmodules$(EXEEXT)
- $(LINK) $(dwfl_bug_getmodules_OBJECTS) $(dwfl_bug_getmodules_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwfl_bug_getmodules_OBJECTS) $(dwfl_bug_getmodules_LDADD) $(LIBS)
+
dwfl-bug-report$(EXEEXT): $(dwfl_bug_report_OBJECTS) $(dwfl_bug_report_DEPENDENCIES) $(EXTRA_dwfl_bug_report_DEPENDENCIES)
@rm -f dwfl-bug-report$(EXEEXT)
- $(LINK) $(dwfl_bug_report_OBJECTS) $(dwfl_bug_report_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwfl_bug_report_OBJECTS) $(dwfl_bug_report_LDADD) $(LIBS)
+
+dwfl-report-elf-align$(EXEEXT): $(dwfl_report_elf_align_OBJECTS) $(dwfl_report_elf_align_DEPENDENCIES) $(EXTRA_dwfl_report_elf_align_DEPENDENCIES)
+ @rm -f dwfl-report-elf-align$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dwfl_report_elf_align_OBJECTS) $(dwfl_report_elf_align_LDADD) $(LIBS)
+
+dwfllines$(EXEEXT): $(dwfllines_OBJECTS) $(dwfllines_DEPENDENCIES) $(EXTRA_dwfllines_DEPENDENCIES)
+ @rm -f dwfllines$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dwfllines_OBJECTS) $(dwfllines_LDADD) $(LIBS)
+
dwflmodtest$(EXEEXT): $(dwflmodtest_OBJECTS) $(dwflmodtest_DEPENDENCIES) $(EXTRA_dwflmodtest_DEPENDENCIES)
@rm -f dwflmodtest$(EXEEXT)
- $(LINK) $(dwflmodtest_OBJECTS) $(dwflmodtest_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(dwflmodtest_OBJECTS) $(dwflmodtest_LDADD) $(LIBS)
+
+dwflsyms$(EXEEXT): $(dwflsyms_OBJECTS) $(dwflsyms_DEPENDENCIES) $(EXTRA_dwflsyms_DEPENDENCIES)
+ @rm -f dwflsyms$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dwflsyms_OBJECTS) $(dwflsyms_LDADD) $(LIBS)
+
early-offscn$(EXEEXT): $(early_offscn_OBJECTS) $(early_offscn_DEPENDENCIES) $(EXTRA_early_offscn_DEPENDENCIES)
@rm -f early-offscn$(EXEEXT)
- $(LINK) $(early_offscn_OBJECTS) $(early_offscn_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(early_offscn_OBJECTS) $(early_offscn_LDADD) $(LIBS)
+
ecp$(EXEEXT): $(ecp_OBJECTS) $(ecp_DEPENDENCIES) $(EXTRA_ecp_DEPENDENCIES)
@rm -f ecp$(EXEEXT)
- $(LINK) $(ecp_OBJECTS) $(ecp_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(ecp_OBJECTS) $(ecp_LDADD) $(LIBS)
+
find-prologues$(EXEEXT): $(find_prologues_OBJECTS) $(find_prologues_DEPENDENCIES) $(EXTRA_find_prologues_DEPENDENCIES)
@rm -f find-prologues$(EXEEXT)
- $(LINK) $(find_prologues_OBJECTS) $(find_prologues_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(find_prologues_OBJECTS) $(find_prologues_LDADD) $(LIBS)
+
funcretval$(EXEEXT): $(funcretval_OBJECTS) $(funcretval_DEPENDENCIES) $(EXTRA_funcretval_DEPENDENCIES)
@rm -f funcretval$(EXEEXT)
- $(LINK) $(funcretval_OBJECTS) $(funcretval_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(funcretval_OBJECTS) $(funcretval_LDADD) $(LIBS)
+
funcscopes$(EXEEXT): $(funcscopes_OBJECTS) $(funcscopes_DEPENDENCIES) $(EXTRA_funcscopes_DEPENDENCIES)
@rm -f funcscopes$(EXEEXT)
- $(LINK) $(funcscopes_OBJECTS) $(funcscopes_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(funcscopes_OBJECTS) $(funcscopes_LDADD) $(LIBS)
+
get-aranges$(EXEEXT): $(get_aranges_OBJECTS) $(get_aranges_DEPENDENCIES) $(EXTRA_get_aranges_DEPENDENCIES)
@rm -f get-aranges$(EXEEXT)
- $(LINK) $(get_aranges_OBJECTS) $(get_aranges_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(get_aranges_OBJECTS) $(get_aranges_LDADD) $(LIBS)
+
get-files$(EXEEXT): $(get_files_OBJECTS) $(get_files_DEPENDENCIES) $(EXTRA_get_files_DEPENDENCIES)
@rm -f get-files$(EXEEXT)
- $(LINK) $(get_files_OBJECTS) $(get_files_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(get_files_OBJECTS) $(get_files_LDADD) $(LIBS)
+
get-lines$(EXEEXT): $(get_lines_OBJECTS) $(get_lines_DEPENDENCIES) $(EXTRA_get_lines_DEPENDENCIES)
@rm -f get-lines$(EXEEXT)
- $(LINK) $(get_lines_OBJECTS) $(get_lines_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(get_lines_OBJECTS) $(get_lines_LDADD) $(LIBS)
+
get-pubnames$(EXEEXT): $(get_pubnames_OBJECTS) $(get_pubnames_DEPENDENCIES) $(EXTRA_get_pubnames_DEPENDENCIES)
@rm -f get-pubnames$(EXEEXT)
- $(LINK) $(get_pubnames_OBJECTS) $(get_pubnames_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(get_pubnames_OBJECTS) $(get_pubnames_LDADD) $(LIBS)
+
hash$(EXEEXT): $(hash_OBJECTS) $(hash_DEPENDENCIES) $(EXTRA_hash_DEPENDENCIES)
@rm -f hash$(EXEEXT)
- $(LINK) $(hash_OBJECTS) $(hash_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(hash_OBJECTS) $(hash_LDADD) $(LIBS)
+
line2addr$(EXEEXT): $(line2addr_OBJECTS) $(line2addr_DEPENDENCIES) $(EXTRA_line2addr_DEPENDENCIES)
@rm -f line2addr$(EXEEXT)
- $(LINK) $(line2addr_OBJECTS) $(line2addr_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(line2addr_OBJECTS) $(line2addr_LDADD) $(LIBS)
+
low_high_pc$(EXEEXT): $(low_high_pc_OBJECTS) $(low_high_pc_DEPENDENCIES) $(EXTRA_low_high_pc_DEPENDENCIES)
@rm -f low_high_pc$(EXEEXT)
- $(LINK) $(low_high_pc_OBJECTS) $(low_high_pc_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(low_high_pc_OBJECTS) $(low_high_pc_LDADD) $(LIBS)
+
md5-sha1-test$(EXEEXT): $(md5_sha1_test_OBJECTS) $(md5_sha1_test_DEPENDENCIES) $(EXTRA_md5_sha1_test_DEPENDENCIES)
@rm -f md5-sha1-test$(EXEEXT)
- $(LINK) $(md5_sha1_test_OBJECTS) $(md5_sha1_test_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(md5_sha1_test_OBJECTS) $(md5_sha1_test_LDADD) $(LIBS)
+
msg_tst$(EXEEXT): $(msg_tst_OBJECTS) $(msg_tst_DEPENDENCIES) $(EXTRA_msg_tst_DEPENDENCIES)
@rm -f msg_tst$(EXEEXT)
- $(LINK) $(msg_tst_OBJECTS) $(msg_tst_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(msg_tst_OBJECTS) $(msg_tst_LDADD) $(LIBS)
+
newfile$(EXEEXT): $(newfile_OBJECTS) $(newfile_DEPENDENCIES) $(EXTRA_newfile_DEPENDENCIES)
@rm -f newfile$(EXEEXT)
- $(LINK) $(newfile_OBJECTS) $(newfile_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(newfile_OBJECTS) $(newfile_LDADD) $(LIBS)
+
newscn$(EXEEXT): $(newscn_OBJECTS) $(newscn_DEPENDENCIES) $(EXTRA_newscn_DEPENDENCIES)
@rm -f newscn$(EXEEXT)
- $(LINK) $(newscn_OBJECTS) $(newscn_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(newscn_OBJECTS) $(newscn_LDADD) $(LIBS)
+
rdwrmmap$(EXEEXT): $(rdwrmmap_OBJECTS) $(rdwrmmap_DEPENDENCIES) $(EXTRA_rdwrmmap_DEPENDENCIES)
@rm -f rdwrmmap$(EXEEXT)
- $(LINK) $(rdwrmmap_OBJECTS) $(rdwrmmap_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(rdwrmmap_OBJECTS) $(rdwrmmap_LDADD) $(LIBS)
+
rerequest_tag$(EXEEXT): $(rerequest_tag_OBJECTS) $(rerequest_tag_DEPENDENCIES) $(EXTRA_rerequest_tag_DEPENDENCIES)
@rm -f rerequest_tag$(EXEEXT)
- $(LINK) $(rerequest_tag_OBJECTS) $(rerequest_tag_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(rerequest_tag_OBJECTS) $(rerequest_tag_LDADD) $(LIBS)
+
saridx$(EXEEXT): $(saridx_OBJECTS) $(saridx_DEPENDENCIES) $(EXTRA_saridx_DEPENDENCIES)
@rm -f saridx$(EXEEXT)
- $(LINK) $(saridx_OBJECTS) $(saridx_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(saridx_OBJECTS) $(saridx_LDADD) $(LIBS)
+
scnnames$(EXEEXT): $(scnnames_OBJECTS) $(scnnames_DEPENDENCIES) $(EXTRA_scnnames_DEPENDENCIES)
@rm -f scnnames$(EXEEXT)
- $(LINK) $(scnnames_OBJECTS) $(scnnames_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(scnnames_OBJECTS) $(scnnames_LDADD) $(LIBS)
+
sectiondump$(EXEEXT): $(sectiondump_OBJECTS) $(sectiondump_DEPENDENCIES) $(EXTRA_sectiondump_DEPENDENCIES)
@rm -f sectiondump$(EXEEXT)
- $(LINK) $(sectiondump_OBJECTS) $(sectiondump_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(sectiondump_OBJECTS) $(sectiondump_LDADD) $(LIBS)
+
show-abbrev$(EXEEXT): $(show_abbrev_OBJECTS) $(show_abbrev_DEPENDENCIES) $(EXTRA_show_abbrev_DEPENDENCIES)
@rm -f show-abbrev$(EXEEXT)
- $(LINK) $(show_abbrev_OBJECTS) $(show_abbrev_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(show_abbrev_OBJECTS) $(show_abbrev_LDADD) $(LIBS)
+
show-die-info$(EXEEXT): $(show_die_info_OBJECTS) $(show_die_info_DEPENDENCIES) $(EXTRA_show_die_info_DEPENDENCIES)
@rm -f show-die-info$(EXEEXT)
- $(LINK) $(show_die_info_OBJECTS) $(show_die_info_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(show_die_info_OBJECTS) $(show_die_info_LDADD) $(LIBS)
+
showptable$(EXEEXT): $(showptable_OBJECTS) $(showptable_DEPENDENCIES) $(EXTRA_showptable_DEPENDENCIES)
@rm -f showptable$(EXEEXT)
- $(LINK) $(showptable_OBJECTS) $(showptable_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(showptable_OBJECTS) $(showptable_LDADD) $(LIBS)
+
test-elf_cntl_gelf_getshdr$(EXEEXT): $(test_elf_cntl_gelf_getshdr_OBJECTS) $(test_elf_cntl_gelf_getshdr_DEPENDENCIES) $(EXTRA_test_elf_cntl_gelf_getshdr_DEPENDENCIES)
@rm -f test-elf_cntl_gelf_getshdr$(EXEEXT)
- $(LINK) $(test_elf_cntl_gelf_getshdr_OBJECTS) $(test_elf_cntl_gelf_getshdr_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(test_elf_cntl_gelf_getshdr_OBJECTS) $(test_elf_cntl_gelf_getshdr_LDADD) $(LIBS)
+
test-flag-nobits$(EXEEXT): $(test_flag_nobits_OBJECTS) $(test_flag_nobits_DEPENDENCIES) $(EXTRA_test_flag_nobits_DEPENDENCIES)
@rm -f test-flag-nobits$(EXEEXT)
- $(LINK) $(test_flag_nobits_OBJECTS) $(test_flag_nobits_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(test_flag_nobits_OBJECTS) $(test_flag_nobits_LDADD) $(LIBS)
+
test-nlist$(EXEEXT): $(test_nlist_OBJECTS) $(test_nlist_DEPENDENCIES) $(EXTRA_test_nlist_DEPENDENCIES)
@rm -f test-nlist$(EXEEXT)
- $(LINK) $(test_nlist_OBJECTS) $(test_nlist_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(test_nlist_OBJECTS) $(test_nlist_LDADD) $(LIBS)
+
typeiter$(EXEEXT): $(typeiter_OBJECTS) $(typeiter_DEPENDENCIES) $(EXTRA_typeiter_DEPENDENCIES)
@rm -f typeiter$(EXEEXT)
- $(LINK) $(typeiter_OBJECTS) $(typeiter_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(typeiter_OBJECTS) $(typeiter_LDADD) $(LIBS)
+
+typeiter2$(EXEEXT): $(typeiter2_OBJECTS) $(typeiter2_DEPENDENCIES) $(EXTRA_typeiter2_DEPENDENCIES)
+ @rm -f typeiter2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(typeiter2_OBJECTS) $(typeiter2_LDADD) $(LIBS)
+
update1$(EXEEXT): $(update1_OBJECTS) $(update1_DEPENDENCIES) $(EXTRA_update1_DEPENDENCIES)
@rm -f update1$(EXEEXT)
- $(LINK) $(update1_OBJECTS) $(update1_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(update1_OBJECTS) $(update1_LDADD) $(LIBS)
+
update2$(EXEEXT): $(update2_OBJECTS) $(update2_DEPENDENCIES) $(EXTRA_update2_DEPENDENCIES)
@rm -f update2$(EXEEXT)
- $(LINK) $(update2_OBJECTS) $(update2_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(update2_OBJECTS) $(update2_LDADD) $(LIBS)
+
update3$(EXEEXT): $(update3_OBJECTS) $(update3_DEPENDENCIES) $(EXTRA_update3_DEPENDENCIES)
@rm -f update3$(EXEEXT)
- $(LINK) $(update3_OBJECTS) $(update3_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(update3_OBJECTS) $(update3_LDADD) $(LIBS)
+
update4$(EXEEXT): $(update4_OBJECTS) $(update4_DEPENDENCIES) $(EXTRA_update4_DEPENDENCIES)
@rm -f update4$(EXEEXT)
- $(LINK) $(update4_OBJECTS) $(update4_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(update4_OBJECTS) $(update4_LDADD) $(LIBS)
+
+varlocs$(EXEEXT): $(varlocs_OBJECTS) $(varlocs_DEPENDENCIES) $(EXTRA_varlocs_DEPENDENCIES)
+ @rm -f varlocs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(varlocs_OBJECTS) $(varlocs_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst7.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst8.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst9.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backtrace-child.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backtrace-data.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backtrace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backtrace_child-backtrace-child.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buildid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debugaltlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debuglink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf-getmacros.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf-getstring.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl-addr-sect.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl-bug-fd-leak.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl-bug-getmodules.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl-bug-report.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl-report-elf-align.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfllines.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwflmodtest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwflsyms.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/early-offscn.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find-prologues.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-flag-nobits.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nlist.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typeiter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typeiter2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update3.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varlocs.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+backtrace_child-backtrace-child.o: backtrace-child.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_child_CFLAGS) $(CFLAGS) -MT backtrace_child-backtrace-child.o -MD -MP -MF $(DEPDIR)/backtrace_child-backtrace-child.Tpo -c -o backtrace_child-backtrace-child.o `test -f 'backtrace-child.c' || echo '$(srcdir)/'`backtrace-child.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backtrace_child-backtrace-child.Tpo $(DEPDIR)/backtrace_child-backtrace-child.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backtrace-child.c' object='backtrace_child-backtrace-child.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_child_CFLAGS) $(CFLAGS) -c -o backtrace_child-backtrace-child.o `test -f 'backtrace-child.c' || echo '$(srcdir)/'`backtrace-child.c
+
+backtrace_child-backtrace-child.obj: backtrace-child.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_child_CFLAGS) $(CFLAGS) -MT backtrace_child-backtrace-child.obj -MD -MP -MF $(DEPDIR)/backtrace_child-backtrace-child.Tpo -c -o backtrace_child-backtrace-child.obj `if test -f 'backtrace-child.c'; then $(CYGPATH_W) 'backtrace-child.c'; else $(CYGPATH_W) '$(srcdir)/backtrace-child.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backtrace_child-backtrace-child.Tpo $(DEPDIR)/backtrace_child-backtrace-child.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backtrace-child.c' object='backtrace_child-backtrace-child.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_child_CFLAGS) $(CFLAGS) -c -o backtrace_child-backtrace-child.obj `if test -f 'backtrace-child.c'; then $(CYGPATH_W) 'backtrace-child.c'; else $(CYGPATH_W) '$(srcdir)/backtrace-child.c'; fi`
+
+backtrace_dwarf-backtrace-dwarf.o: backtrace-dwarf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_dwarf_CFLAGS) $(CFLAGS) -MT backtrace_dwarf-backtrace-dwarf.o -MD -MP -MF $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Tpo -c -o backtrace_dwarf-backtrace-dwarf.o `test -f 'backtrace-dwarf.c' || echo '$(srcdir)/'`backtrace-dwarf.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Tpo $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backtrace-dwarf.c' object='backtrace_dwarf-backtrace-dwarf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_dwarf_CFLAGS) $(CFLAGS) -c -o backtrace_dwarf-backtrace-dwarf.o `test -f 'backtrace-dwarf.c' || echo '$(srcdir)/'`backtrace-dwarf.c
+
+backtrace_dwarf-backtrace-dwarf.obj: backtrace-dwarf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_dwarf_CFLAGS) $(CFLAGS) -MT backtrace_dwarf-backtrace-dwarf.obj -MD -MP -MF $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Tpo -c -o backtrace_dwarf-backtrace-dwarf.obj `if test -f 'backtrace-dwarf.c'; then $(CYGPATH_W) 'backtrace-dwarf.c'; else $(CYGPATH_W) '$(srcdir)/backtrace-dwarf.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Tpo $(DEPDIR)/backtrace_dwarf-backtrace-dwarf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='backtrace-dwarf.c' object='backtrace_dwarf-backtrace-dwarf.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(backtrace_dwarf_CFLAGS) $(CFLAGS) -c -o backtrace_dwarf-backtrace-dwarf.obj `if test -f 'backtrace-dwarf.c'; then $(CYGPATH_W) 'backtrace-dwarf.c'; else $(CYGPATH_W) '$(srcdir)/backtrace-dwarf.c'; fi`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-check-TESTS: $(TESTS)
- @failed=0; all=0; xfail=0; xpass=0; skip=0; \
- srcdir=$(srcdir); export srcdir; \
- list=' $(TESTS) '; \
- $(am__tty_colors); \
- if test -n "$$list"; then \
- for tst in $$list; do \
- if test -f ./$$tst; then dir=./; \
- elif test -f $$tst; then dir=; \
- else dir="$(srcdir)/"; fi; \
- if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
- all=`expr $$all + 1`; \
- case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$tst[\ \ ]*) \
- xpass=`expr $$xpass + 1`; \
- failed=`expr $$failed + 1`; \
- col=$$red; res=XPASS; \
- ;; \
- *) \
- col=$$grn; res=PASS; \
- ;; \
- esac; \
- elif test $$? -ne 77; then \
- all=`expr $$all + 1`; \
- case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$tst[\ \ ]*) \
- xfail=`expr $$xfail + 1`; \
- col=$$lgn; res=XFAIL; \
- ;; \
- *) \
- failed=`expr $$failed + 1`; \
- col=$$red; res=FAIL; \
- ;; \
- esac; \
- else \
- skip=`expr $$skip + 1`; \
- col=$$blu; res=SKIP; \
- fi; \
- echo "$${col}$$res$${std}: $$tst"; \
- done; \
- if test "$$all" -eq 1; then \
- tests="test"; \
- All=""; \
- else \
- tests="tests"; \
- All="All "; \
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
fi; \
- if test "$$failed" -eq 0; then \
- if test "$$xfail" -eq 0; then \
- banner="$$All$$all $$tests passed"; \
- else \
- if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
- banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
- fi; \
- else \
- if test "$$xpass" -eq 0; then \
- banner="$$failed of $$all $$tests failed"; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ else \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
else \
- if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
- banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
fi; \
- fi; \
- dashes="$$banner"; \
- skipped=""; \
- if test "$$skip" -ne 0; then \
- if test "$$skip" -eq 1; then \
- skipped="($$skip test was not run)"; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
else \
- skipped="($$skip tests were not run)"; \
+ color_start= color_end=; \
fi; \
- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
- dashes="$$skipped"; \
- fi; \
- report=""; \
- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
- report="Please report to $(PACKAGE_BUGREPORT)"; \
- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
- dashes="$$report"; \
- fi; \
- dashes=`echo "$$dashes" | sed s/./=/g`; \
- if test "$$failed" -eq 0; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- fi; \
- echo "$${col}$$dashes$${std}"; \
- echo "$${col}$$banner$${std}"; \
- test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
- test -z "$$report" || echo "$${col}$$report$${std}"; \
- echo "$${col}$$dashes$${std}"; \
- test "$$failed" -eq 0; \
- else :; fi
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+run-arextract.sh.log: run-arextract.sh
+ @p='run-arextract.sh'; \
+ b='run-arextract.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-arsymtest.sh.log: run-arsymtest.sh
+ @p='run-arsymtest.sh'; \
+ b='run-arsymtest.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+newfile.log: newfile$(EXEEXT)
+ @p='newfile$(EXEEXT)'; \
+ b='newfile'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-nlist.log: test-nlist$(EXEEXT)
+ @p='test-nlist$(EXEEXT)'; \
+ b='test-nlist'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+update1.log: update1$(EXEEXT)
+ @p='update1$(EXEEXT)'; \
+ b='update1'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+update2.log: update2$(EXEEXT)
+ @p='update2$(EXEEXT)'; \
+ b='update2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+update3.log: update3$(EXEEXT)
+ @p='update3$(EXEEXT)'; \
+ b='update3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+update4.log: update4$(EXEEXT)
+ @p='update4$(EXEEXT)'; \
+ b='update4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-show-die-info.sh.log: run-show-die-info.sh
+ @p='run-show-die-info.sh'; \
+ b='run-show-die-info.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-get-files.sh.log: run-get-files.sh
+ @p='run-get-files.sh'; \
+ b='run-get-files.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-get-lines.sh.log: run-get-lines.sh
+ @p='run-get-lines.sh'; \
+ b='run-get-lines.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-get-pubnames.sh.log: run-get-pubnames.sh
+ @p='run-get-pubnames.sh'; \
+ b='run-get-pubnames.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-get-aranges.sh.log: run-get-aranges.sh
+ @p='run-get-aranges.sh'; \
+ b='run-get-aranges.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-allfcts.sh.log: run-allfcts.sh
+ @p='run-allfcts.sh'; \
+ b='run-allfcts.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-show-abbrev.sh.log: run-show-abbrev.sh
+ @p='run-show-abbrev.sh'; \
+ b='run-show-abbrev.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-line2addr.sh.log: run-line2addr.sh
+ @p='run-line2addr.sh'; \
+ b='run-line2addr.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+hash.log: hash$(EXEEXT)
+ @p='hash$(EXEEXT)'; \
+ b='hash'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+newscn.log: newscn$(EXEEXT)
+ @p='newscn$(EXEEXT)'; \
+ b='newscn'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test.sh.log: run-strip-test.sh
+ @p='run-strip-test.sh'; \
+ b='run-strip-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test2.sh.log: run-strip-test2.sh
+ @p='run-strip-test2.sh'; \
+ b='run-strip-test2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test3.sh.log: run-strip-test3.sh
+ @p='run-strip-test3.sh'; \
+ b='run-strip-test3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test4.sh.log: run-strip-test4.sh
+ @p='run-strip-test4.sh'; \
+ b='run-strip-test4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test5.sh.log: run-strip-test5.sh
+ @p='run-strip-test5.sh'; \
+ b='run-strip-test5.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test6.sh.log: run-strip-test6.sh
+ @p='run-strip-test6.sh'; \
+ b='run-strip-test6.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test7.sh.log: run-strip-test7.sh
+ @p='run-strip-test7.sh'; \
+ b='run-strip-test7.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-test8.sh.log: run-strip-test8.sh
+ @p='run-strip-test8.sh'; \
+ b='run-strip-test8.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-groups.sh.log: run-strip-groups.sh
+ @p='run-strip-groups.sh'; \
+ b='run-strip-groups.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strip-reloc.sh.log: run-strip-reloc.sh
+ @p='run-strip-reloc.sh'; \
+ b='run-strip-reloc.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-unstrip-test.sh.log: run-unstrip-test.sh
+ @p='run-unstrip-test.sh'; \
+ b='run-unstrip-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-unstrip-test2.sh.log: run-unstrip-test2.sh
+ @p='run-unstrip-test2.sh'; \
+ b='run-unstrip-test2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-unstrip-M.sh.log: run-unstrip-M.sh
+ @p='run-unstrip-M.sh'; \
+ b='run-unstrip-M.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-ecp-test.sh.log: run-ecp-test.sh
+ @p='run-ecp-test.sh'; \
+ b='run-ecp-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-ecp-test2.sh.log: run-ecp-test2.sh
+ @p='run-ecp-test2.sh'; \
+ b='run-ecp-test2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-alldts.sh.log: run-alldts.sh
+ @p='run-alldts.sh'; \
+ b='run-alldts.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-elflint-test.sh.log: run-elflint-test.sh
+ @p='run-elflint-test.sh'; \
+ b='run-elflint-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-elflint-self.sh.log: run-elflint-self.sh
+ @p='run-elflint-self.sh'; \
+ b='run-elflint-self.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-ranlib-test.sh.log: run-ranlib-test.sh
+ @p='run-ranlib-test.sh'; \
+ b='run-ranlib-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-ranlib-test2.sh.log: run-ranlib-test2.sh
+ @p='run-ranlib-test2.sh'; \
+ b='run-ranlib-test2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-ranlib-test3.sh.log: run-ranlib-test3.sh
+ @p='run-ranlib-test3.sh'; \
+ b='run-ranlib-test3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-ranlib-test4.sh.log: run-ranlib-test4.sh
+ @p='run-ranlib-test4.sh'; \
+ b='run-ranlib-test4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-addrscopes.sh.log: run-addrscopes.sh
+ @p='run-addrscopes.sh'; \
+ b='run-addrscopes.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-strings-test.sh.log: run-strings-test.sh
+ @p='run-strings-test.sh'; \
+ b='run-strings-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-funcscopes.sh.log: run-funcscopes.sh
+ @p='run-funcscopes.sh'; \
+ b='run-funcscopes.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-find-prologues.sh.log: run-find-prologues.sh
+ @p='run-find-prologues.sh'; \
+ b='run-find-prologues.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-allregs.sh.log: run-allregs.sh
+ @p='run-allregs.sh'; \
+ b='run-allregs.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-addrcfi.sh.log: run-addrcfi.sh
+ @p='run-addrcfi.sh'; \
+ b='run-addrcfi.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-nm-self.sh.log: run-nm-self.sh
+ @p='run-nm-self.sh'; \
+ b='run-nm-self.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-self.sh.log: run-readelf-self.sh
+ @p='run-readelf-self.sh'; \
+ b='run-readelf-self.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-test1.sh.log: run-readelf-test1.sh
+ @p='run-readelf-test1.sh'; \
+ b='run-readelf-test1.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-test2.sh.log: run-readelf-test2.sh
+ @p='run-readelf-test2.sh'; \
+ b='run-readelf-test2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-test3.sh.log: run-readelf-test3.sh
+ @p='run-readelf-test3.sh'; \
+ b='run-readelf-test3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-test4.sh.log: run-readelf-test4.sh
+ @p='run-readelf-test4.sh'; \
+ b='run-readelf-test4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-twofiles.sh.log: run-readelf-twofiles.sh
+ @p='run-readelf-twofiles.sh'; \
+ b='run-readelf-twofiles.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-macro.sh.log: run-readelf-macro.sh
+ @p='run-readelf-macro.sh'; \
+ b='run-readelf-macro.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-loc.sh.log: run-readelf-loc.sh
+ @p='run-readelf-loc.sh'; \
+ b='run-readelf-loc.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-aranges.sh.log: run-readelf-aranges.sh
+ @p='run-readelf-aranges.sh'; \
+ b='run-readelf-aranges.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-line.sh.log: run-readelf-line.sh
+ @p='run-readelf-line.sh'; \
+ b='run-readelf-line.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-native-test.sh.log: run-native-test.sh
+ @p='run-native-test.sh'; \
+ b='run-native-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-bug1-test.sh.log: run-bug1-test.sh
+ @p='run-bug1-test.sh'; \
+ b='run-bug1-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-debuglink.sh.log: run-debuglink.sh
+ @p='run-debuglink.sh'; \
+ b='run-debuglink.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-debugaltlink.sh.log: run-debugaltlink.sh
+ @p='run-debugaltlink.sh'; \
+ b='run-debugaltlink.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-buildid.sh.log: run-buildid.sh
+ @p='run-buildid.sh'; \
+ b='run-buildid.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+dwfl-bug-addr-overflow.log: dwfl-bug-addr-overflow$(EXEEXT)
+ @p='dwfl-bug-addr-overflow$(EXEEXT)'; \
+ b='dwfl-bug-addr-overflow'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-addrname-test.sh.log: run-addrname-test.sh
+ @p='run-addrname-test.sh'; \
+ b='run-addrname-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+dwfl-bug-fd-leak.log: dwfl-bug-fd-leak$(EXEEXT)
+ @p='dwfl-bug-fd-leak$(EXEEXT)'; \
+ b='dwfl-bug-fd-leak'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+dwfl-bug-report.log: dwfl-bug-report$(EXEEXT)
+ @p='dwfl-bug-report$(EXEEXT)'; \
+ b='dwfl-bug-report'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwfl-bug-offline-rel.sh.log: run-dwfl-bug-offline-rel.sh
+ @p='run-dwfl-bug-offline-rel.sh'; \
+ b='run-dwfl-bug-offline-rel.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwfl-addr-sect.sh.log: run-dwfl-addr-sect.sh
+ @p='run-dwfl-addr-sect.sh'; \
+ b='run-dwfl-addr-sect.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-disasm-x86.sh.log: run-disasm-x86.sh
+ @p='run-disasm-x86.sh'; \
+ b='run-disasm-x86.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-disasm-x86-64.sh.log: run-disasm-x86-64.sh
+ @p='run-disasm-x86-64.sh'; \
+ b='run-disasm-x86-64.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-early-offscn.sh.log: run-early-offscn.sh
+ @p='run-early-offscn.sh'; \
+ b='run-early-offscn.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwarf-getmacros.sh.log: run-dwarf-getmacros.sh
+ @p='run-dwarf-getmacros.sh'; \
+ b='run-dwarf-getmacros.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-test-flag-nobits.sh.log: run-test-flag-nobits.sh
+ @p='run-test-flag-nobits.sh'; \
+ b='run-test-flag-nobits.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-prelink-addr-test.sh.log: run-prelink-addr-test.sh
+ @p='run-prelink-addr-test.sh'; \
+ b='run-prelink-addr-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwarf-getstring.sh.log: run-dwarf-getstring.sh
+ @p='run-dwarf-getstring.sh'; \
+ b='run-dwarf-getstring.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-rerequest_tag.sh.log: run-rerequest_tag.sh
+ @p='run-rerequest_tag.sh'; \
+ b='run-rerequest_tag.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-typeiter.sh.log: run-typeiter.sh
+ @p='run-typeiter.sh'; \
+ b='run-typeiter.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-d.sh.log: run-readelf-d.sh
+ @p='run-readelf-d.sh'; \
+ b='run-readelf-d.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-gdb_index.sh.log: run-readelf-gdb_index.sh
+ @p='run-readelf-gdb_index.sh'; \
+ b='run-readelf-gdb_index.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-unstrip-n.sh.log: run-unstrip-n.sh
+ @p='run-unstrip-n.sh'; \
+ b='run-unstrip-n.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-low_high_pc.sh.log: run-low_high_pc.sh
+ @p='run-low_high_pc.sh'; \
+ b='run-low_high_pc.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-macro-test.sh.log: run-macro-test.sh
+ @p='run-macro-test.sh'; \
+ b='run-macro-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-elf_cntl_gelf_getshdr.sh.log: run-elf_cntl_gelf_getshdr.sh
+ @p='run-elf_cntl_gelf_getshdr.sh'; \
+ b='run-elf_cntl_gelf_getshdr.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-test-archive64.sh.log: run-test-archive64.sh
+ @p='run-test-archive64.sh'; \
+ b='run-test-archive64.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-vmcoreinfo.sh.log: run-readelf-vmcoreinfo.sh
+ @p='run-readelf-vmcoreinfo.sh'; \
+ b='run-readelf-vmcoreinfo.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-mixed-corenote.sh.log: run-readelf-mixed-corenote.sh
+ @p='run-readelf-mixed-corenote.sh'; \
+ b='run-readelf-mixed-corenote.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwfllines.sh.log: run-dwfllines.sh
+ @p='run-dwfllines.sh'; \
+ b='run-dwfllines.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwfl-report-elf-align.sh.log: run-dwfl-report-elf-align.sh
+ @p='run-dwfl-report-elf-align.sh'; \
+ b='run-dwfl-report-elf-align.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-addr2line-test.sh.log: run-addr2line-test.sh
+ @p='run-addr2line-test.sh'; \
+ b='run-addr2line-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-addr2line-i-test.sh.log: run-addr2line-i-test.sh
+ @p='run-addr2line-i-test.sh'; \
+ b='run-addr2line-i-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-varlocs.sh.log: run-varlocs.sh
+ @p='run-varlocs.sh'; \
+ b='run-varlocs.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-funcretval.sh.log: run-funcretval.sh
+ @p='run-funcretval.sh'; \
+ b='run-funcretval.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-native.sh.log: run-backtrace-native.sh
+ @p='run-backtrace-native.sh'; \
+ b='run-backtrace-native.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-data.sh.log: run-backtrace-data.sh
+ @p='run-backtrace-data.sh'; \
+ b='run-backtrace-data.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-dwarf.sh.log: run-backtrace-dwarf.sh
+ @p='run-backtrace-dwarf.sh'; \
+ b='run-backtrace-dwarf.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-native-biarch.sh.log: run-backtrace-native-biarch.sh
+ @p='run-backtrace-native-biarch.sh'; \
+ b='run-backtrace-native-biarch.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-native-core.sh.log: run-backtrace-native-core.sh
+ @p='run-backtrace-native-core.sh'; \
+ b='run-backtrace-native-core.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-native-core-biarch.sh.log: run-backtrace-native-core-biarch.sh
+ @p='run-backtrace-native-core-biarch.sh'; \
+ b='run-backtrace-native-core-biarch.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-core-x86_64.sh.log: run-backtrace-core-x86_64.sh
+ @p='run-backtrace-core-x86_64.sh'; \
+ b='run-backtrace-core-x86_64.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-core-i386.sh.log: run-backtrace-core-i386.sh
+ @p='run-backtrace-core-i386.sh'; \
+ b='run-backtrace-core-i386.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-core-ppc.sh.log: run-backtrace-core-ppc.sh
+ @p='run-backtrace-core-ppc.sh'; \
+ b='run-backtrace-core-ppc.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-core-s390x.sh.log: run-backtrace-core-s390x.sh
+ @p='run-backtrace-core-s390x.sh'; \
+ b='run-backtrace-core-s390x.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-core-s390.sh.log: run-backtrace-core-s390.sh
+ @p='run-backtrace-core-s390.sh'; \
+ b='run-backtrace-core-s390.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-core-aarch64.sh.log: run-backtrace-core-aarch64.sh
+ @p='run-backtrace-core-aarch64.sh'; \
+ b='run-backtrace-core-aarch64.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-backtrace-demangle.sh.log: run-backtrace-demangle.sh
+ @p='run-backtrace-demangle.sh'; \
+ b='run-backtrace-demangle.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-stack-d-test.sh.log: run-stack-d-test.sh
+ @p='run-stack-d-test.sh'; \
+ b='run-stack-d-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-stack-i-test.sh.log: run-stack-i-test.sh
+ @p='run-stack-i-test.sh'; \
+ b='run-stack-i-test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-dwz-multi.sh.log: run-readelf-dwz-multi.sh
+ @p='run-readelf-dwz-multi.sh'; \
+ b='run-readelf-dwz-multi.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-allfcts-multi.sh.log: run-allfcts-multi.sh
+ @p='run-allfcts-multi.sh'; \
+ b='run-allfcts-multi.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+msg_tst.log: msg_tst$(EXEEXT)
+ @p='msg_tst$(EXEEXT)'; \
+ b='msg_tst'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+md5-sha1-test.log: md5-sha1-test$(EXEEXT)
+ @p='md5-sha1-test$(EXEEXT)'; \
+ b='md5-sha1-test'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-s.sh.log: run-readelf-s.sh
+ @p='run-readelf-s.sh'; \
+ b='run-readelf-s.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwflsyms.sh.log: run-dwflsyms.sh
+ @p='run-dwflsyms.sh'; \
+ b='run-dwflsyms.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run-readelf-zdebug.sh.log: run-readelf-zdebug.sh
+ @p='run-readelf-zdebug.sh'; \
+ b='run-readelf-zdebug.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst1.log: asm-tst1$(EXEEXT)
+ @p='asm-tst1$(EXEEXT)'; \
+ b='asm-tst1'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst2.log: asm-tst2$(EXEEXT)
+ @p='asm-tst2$(EXEEXT)'; \
+ b='asm-tst2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst3.log: asm-tst3$(EXEEXT)
+ @p='asm-tst3$(EXEEXT)'; \
+ b='asm-tst3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst4.log: asm-tst4$(EXEEXT)
+ @p='asm-tst4$(EXEEXT)'; \
+ b='asm-tst4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst5.log: asm-tst5$(EXEEXT)
+ @p='asm-tst5$(EXEEXT)'; \
+ b='asm-tst5'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst6.log: asm-tst6$(EXEEXT)
+ @p='asm-tst6$(EXEEXT)'; \
+ b='asm-tst6'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst7.log: asm-tst7$(EXEEXT)
+ @p='asm-tst7$(EXEEXT)'; \
+ b='asm-tst7'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst8.log: asm-tst8$(EXEEXT)
+ @p='asm-tst8$(EXEEXT)'; \
+ b='asm-tst8'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+asm-tst9.log: asm-tst9$(EXEEXT)
+ @p='asm-tst9$(EXEEXT)'; \
+ b='asm-tst9'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
.MAKE: check-am install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
- clean-checkPROGRAMS clean-generic ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installcheck-local installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
- tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+ distclean distclean-compile distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installcheck-local \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am recheck tags tags-am uninstall uninstall-am
%.os: %.c %.o
@AMDEP_TRUE@ fi
@AMDEP_FALSE@ $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $<
+# Substitute $(COMPILE).
+backtrace-child-biarch$(EXEEXT): backtrace-child.c
+ $(CC_BIARCH) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS) $(backtrace_child_CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) $(backtrace_child_LDFLAGS) \
+ -o $@ $<
+
+@BIARCH_FALSE@export ELFUTILS_DISABLE_BIARCH = 1
+
+@DEMANGLE_FALSE@export ELFUTILS_DISABLE_DEMANGLE = 1
+
@STANDALONE_FALSE@installcheck-local:
@STANDALONE_FALSE@ $(MAKE) $(AM_MAKEFLAGS) \
-@STANDALONE_FALSE@ TESTS_ENVIRONMENT='$(installed_TESTS_ENVIRONMENT)' check-TESTS
+@STANDALONE_FALSE@ TESTS_ENVIRONMENT="$(installed_TESTS_ENVIRONMENT)" \
+@STANDALONE_FALSE@ LOG_COMPILER="$(installed_LOG_COMPILER)" check-TESTS
@GCOV_TRUE@check: check-am coverage
@GCOV_TRUE@.PHONY: coverage
/* Test program for CFI handling.
- Copyright (C) 2009-2010 Red Hat, Inc.
+ Copyright (C) 2009-2010, 2013 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
#include <stdio_ext.h>
#include <locale.h>
#include <stdlib.h>
-#include <error.h>
#include <string.h>
+#include "../libdw/known-dwarf.h"
+
+static const char *
+op_name (unsigned int code)
+{
+ static const char *const known[] =
+ {
+#define ONE_KNOWN_DW_OP_DESC(NAME, CODE, DESC) ONE_KNOWN_DW_OP (NAME, CODE)
+#define ONE_KNOWN_DW_OP(NAME, CODE) [CODE] = #NAME,
+ ALL_KNOWN_DW_OP
+#undef ONE_KNOWN_DW_OP
+#undef ONE_KNOWN_DW_OP_DESC
+ };
+
+ if (likely (code < sizeof (known) / sizeof (known[0])))
+ return known[code];
+
+ return NULL;
+}
static void
print_detail (int result, const Dwarf_Op *ops, size_t nops, Dwarf_Addr bias)
if (result < 0)
printf ("indeterminate (%s)\n", dwarf_errmsg (-1));
else if (nops == 0)
- printf ("%s\n", result == 0 ? "same_value" : "undefined");
+ printf ("%s\n", ops == NULL ? "same_value" : "undefined");
else
{
printf ("%s expression:", result == 0 ? "location" : "value");
for (size_t i = 0; i < nops; ++i)
{
- printf (" %#x", ops[i].atom);
+ printf (" %s", op_name(ops[i].atom));
if (ops[i].number2 == 0)
{
if (ops[i].atom == DW_OP_addr)
handle_cfi (Dwfl *dwfl, const char *which, Dwarf_CFI *cfi,
GElf_Addr pc, struct stuff *stuff)
{
+ if (cfi == NULL)
+ {
+ printf ("handle_cfi no CFI (%s): %s\n", which, dwarf_errmsg (-1));
+ return -1;
+ }
+
int result = dwarf_cfi_addrframe (cfi, pc - stuff->bias, &stuff->frame);
if (result != 0)
{
- error (0, 0, "dwarf_cfi_addrframe (%s): %s", which, dwarf_errmsg (-1));
+ printf ("dwarf_cfi_addrframe (%s): %s\n", which, dwarf_errmsg (-1));
return 1;
}
printf ("\treturn address in reg%u%s\n",
ra_regno, signalp ? " (signal frame)" : "");
- Dwarf_Op *cfa_ops;
+ // Point cfa_ops to dummy to match print_detail expectations.
+ // (nops == 0 && cfa_ops != NULL => "undefined")
+ Dwarf_Op dummy;
+ Dwarf_Op *cfa_ops = &dummy;
size_t cfa_nops;
result = dwarf_frame_cfa (stuff->frame, &cfa_ops, &cfa_nops);
-/* Copyright (C) 2005 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
# include <config.h>
#endif
+#include <err.h>
#include <fcntl.h>
#include ELFUTILS_HEADER(dw)
+#include ELFUTILS_HEADER(dwelf)
#include <stdio.h>
#include <unistd.h>
printf ("%s:%d:%s\n", file, line, fct);
- return DWARF_CB_OK;
+ return DWARF_CB_ABORT;
}
+static Dwarf *
+setup_alt (Dwarf *main)
+{
+ const char *alt_name;
+ const void *build_id;
+ ssize_t ret = dwelf_dwarf_gnu_debugaltlink (main, &alt_name, &build_id);
+ if (ret == 0)
+ return NULL;
+ if (ret == -1)
+ errx (1, "dwelf_dwarf_gnu_debugaltlink: %s", dwarf_errmsg (-1));
+ int fd = open (alt_name, O_RDONLY);
+ if (fd < 0)
+ err (1, "open (%s)", alt_name);
+ Dwarf *dbg_alt = dwarf_begin (fd, DWARF_C_READ);
+ if (dbg_alt == NULL)
+ errx (1, "dwarf_begin (%s): %s", alt_name, dwarf_errmsg (-1));
+ if (elf_cntl (dwarf_getelf (dbg_alt), ELF_C_FDREAD) != 0)
+ errx (1, "elf_cntl (%s, ELF_C_FDREAD): %s", alt_name, elf_errmsg (-1));
+ close (fd);
+ dwarf_setalt (main, dbg_alt);
+ return dbg_alt;
+}
int
main (int argc, char *argv[])
for (int i = 1; i < argc; ++i)
{
int fd = open (argv[i], O_RDONLY);
+ if (fd < 0)
+ err (1, "open (%s)", argv[i]);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg != NULL)
Dwarf_Off off = 0;
size_t cuhl;
Dwarf_Off noff;
+ Dwarf *dbg_alt = setup_alt (dbg);
while (dwarf_nextcu (dbg, off, &noff, &cuhl, NULL, NULL, NULL) == 0)
{
Dwarf_Die die_mem;
Dwarf_Die *die = dwarf_offdie (dbg, off + cuhl, &die_mem);
- (void) dwarf_getfuncs (die, cb, NULL, 0);
+ /* Explicitly stop in the callback and then resume each time. */
+ ptrdiff_t doff = 0;
+ do
+ {
+ doff = dwarf_getfuncs (die, cb, NULL, doff);
+ if (dwarf_errno () != 0)
+ errx (1, "dwarf_getfuncs (%s): %s",
+ argv[i], dwarf_errmsg (-1));
+ }
+ while (doff != 0);
off = noff;
}
+ dwarf_end (dbg_alt);
dwarf_end (dbg);
}
+ else
+ errx (1, "dwarf_begin (%s): %s", argv[i], dwarf_errmsg (-1));
close (fd);
}
--- /dev/null
+/* Test child for parent backtrace test.
+ 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Command line syntax: ./backtrace-child [--ptraceme|--gencore]
+ --ptraceme will call ptrace (PTRACE_TRACEME) in the two threads.
+ --gencore will call abort () at its end.
+ Main thread will signal SIGUSR2. Other thread will signal SIGUSR1.
+ On x86_64 only:
+ PC will get changed to function 'jmp' by backtrace.c function
+ prepare_thread. Then SIGUSR2 will be signalled to backtrace-child
+ which will invoke function sigusr2.
+ This is all done so that signal interrupts execution of the very first
+ instruction of a function. Properly handled unwind should not slip into
+ the previous unrelated function.
+ The tested functionality is arch-independent but the code reproducing it
+ has to be arch-specific.
+ On non-x86_64:
+ sigusr2 gets called by normal function call from function stdarg.
+ On any arch then sigusr2 calls raise (SIGUSR1) for --ptraceme.
+ abort () is called otherwise, expected for --gencore core dump.
+
+ Expected x86_64 output:
+ TID 10276:
+ # 0 0x7f7ab61e9e6b raise
+ # 1 0x7f7ab661af47 - 1 main
+ # 2 0x7f7ab5e3bb45 - 1 __libc_start_main
+ # 3 0x7f7ab661aa09 - 1 _start
+ TID 10278:
+ # 0 0x7f7ab61e9e6b raise
+ # 1 0x7f7ab661ab3c - 1 sigusr2
+ # 2 0x7f7ab5e4fa60 __restore_rt
+ # 3 0x7f7ab661ab47 jmp
+ # 4 0x7f7ab661ac92 - 1 stdarg
+ # 5 0x7f7ab661acba - 1 backtracegen
+ # 6 0x7f7ab661acd1 - 1 start
+ # 7 0x7f7ab61e2c53 - 1 start_thread
+ # 8 0x7f7ab5f0fdbd - 1 __clone
+
+ Expected non-x86_64 (i386) output; __kernel_vsyscall are skipped if found:
+ TID 10408:
+ # 0 0xf779f430 __kernel_vsyscall
+ # 1 0xf7771466 - 1 raise
+ # 2 0xf77c1d07 - 1 main
+ # 3 0xf75bd963 - 1 __libc_start_main
+ # 4 0xf77c1761 - 1 _start
+ TID 10412:
+ # 0 0xf779f430 __kernel_vsyscall
+ # 1 0xf7771466 - 1 raise
+ # 2 0xf77c18f4 - 1 sigusr2
+ # 3 0xf77c1a10 - 1 stdarg
+ # 4 0xf77c1a2c - 1 backtracegen
+ # 5 0xf77c1a48 - 1 start
+ # 6 0xf77699da - 1 start_thread
+ # 7 0xf769bbfe - 1 __clone
+ */
+
+#include <config.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <errno.h>
+#include <sys/ptrace.h>
+#include <string.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#ifndef __linux__
+
+int
+main (int argc __attribute__ ((unused)), char **argv)
+{
+ fprintf (stderr, "%s: Unwinding not supported for this architecture\n",
+ argv[0]);
+ return 77;
+}
+
+#else /* __linux__ */
+
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+#define NOINLINE_NOCLONE __attribute__ ((noinline, noclone))
+#else
+#define NOINLINE_NOCLONE __attribute__ ((noinline))
+#endif
+
+#define NORETURN __attribute__ ((noreturn))
+#define UNUSED __attribute__ ((unused))
+#define USED __attribute__ ((used))
+
+static int ptraceme, gencore;
+
+/* Execution will arrive here from jmp by an artificial ptrace-spawn signal. */
+
+static NOINLINE_NOCLONE void
+sigusr2 (int signo)
+{
+ assert (signo == SIGUSR2);
+ if (! gencore)
+ {
+ raise (SIGUSR1);
+ /* Do not return as stack may be invalid due to ptrace-patched PC to the
+ jmp function. */
+ pthread_exit (NULL);
+ /* Not reached. */
+ abort ();
+ }
+ /* Here we dump the core for --gencore. */
+ raise (SIGABRT);
+ /* Avoid tail call optimization for the raise call. */
+ asm volatile ("");
+}
+
+static NOINLINE_NOCLONE void
+dummy1 (void)
+{
+ asm volatile ("");
+}
+
+#ifdef __x86_64__
+static NOINLINE_NOCLONE USED void
+jmp (void)
+{
+ /* Not reached, signal will get ptrace-spawn to jump into sigusr2. */
+ abort ();
+}
+#endif
+
+static NOINLINE_NOCLONE void
+dummy2 (void)
+{
+ asm volatile ("");
+}
+
+static NOINLINE_NOCLONE NORETURN void
+stdarg (int f UNUSED, ...)
+{
+ sighandler_t sigusr2_orig = signal (SIGUSR2, sigusr2);
+ assert (sigusr2_orig == SIG_DFL);
+ errno = 0;
+ if (ptraceme)
+ {
+ long l = ptrace (PTRACE_TRACEME, 0, NULL, NULL);
+ assert_perror (errno);
+ assert (l == 0);
+ }
+#ifdef __x86_64__
+ if (! gencore)
+ {
+ /* Execution will get PC patched into function jmp. */
+ raise (SIGUSR1);
+ }
+#endif
+ sigusr2 (SIGUSR2);
+ /* Not reached. */
+ abort ();
+}
+
+static NOINLINE_NOCLONE void
+dummy3 (void)
+{
+ asm volatile ("");
+}
+
+static NOINLINE_NOCLONE void
+backtracegen (void)
+{
+ stdarg (1);
+ /* Here should be no instruction after the stdarg call as it is noreturn
+ function. It must be stdarg so that it is a call and not jump (jump as
+ a tail-call). */
+}
+
+static NOINLINE_NOCLONE void
+dummy4 (void)
+{
+ asm volatile ("");
+}
+
+static void *
+start (void *arg UNUSED)
+{
+ backtracegen ();
+ /* Not reached. */
+ abort ();
+}
+
+int
+main (int argc UNUSED, char **argv)
+{
+ setbuf (stdout, NULL);
+ assert (*argv++);
+ ptraceme = (*argv && strcmp (*argv, "--ptraceme") == 0);
+ argv += ptraceme;
+ gencore = (*argv && strcmp (*argv, "--gencore") == 0);
+ argv += gencore;
+ assert (!*argv);
+ /* These dummy* functions are there so that each of their surrounding
+ functions has some unrelated code around. The purpose of some of the
+ tests is verify unwinding the very first / after the very last instruction
+ does not inappropriately slip into the unrelated code around. */
+ dummy1 ();
+ dummy2 ();
+ dummy3 ();
+ dummy4 ();
+ if (gencore)
+ printf ("%ld\n", (long) getpid ());
+ pthread_t thread;
+ int i = pthread_create (&thread, NULL, start, NULL);
+ // pthread_* functions do not set errno.
+ assert (i == 0);
+ if (ptraceme)
+ {
+ errno = 0;
+ long l = ptrace (PTRACE_TRACEME, 0, NULL, NULL);
+ assert_perror (errno);
+ assert (l == 0);
+ }
+ if (gencore)
+ pthread_join (thread, NULL);
+ else
+ raise (SIGUSR2);
+ return 0;
+}
+
+#endif /* ! __linux__ */
+
--- /dev/null
+/* Test custom provided Dwfl_Thread_Callbacks vector.
+ 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Test custom provided Dwfl_Thread_Callbacks vector. Test mimics what
+ a ptrace based vector would do. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <dirent.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <error.h>
+#include <unistd.h>
+#include <dwarf.h>
+#include <sys/resource.h>
+#include <sys/ptrace.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/user.h>
+#include <fcntl.h>
+#include <string.h>
+#include ELFUTILS_HEADER(dwfl)
+
+#if !defined(__x86_64__) || !defined(__linux__)
+
+int
+main (int argc __attribute__ ((unused)), char **argv)
+{
+ fprintf (stderr, "%s: Unwinding not supported for this architecture\n",
+ argv[0]);
+ return 77;
+}
+
+#else /* __x86_64__ && __linux__ */
+
+/* The only arch specific code is set_initial_registers. */
+
+static int
+find_elf (Dwfl_Module *mod __attribute__ ((unused)),
+ void **userdata __attribute__ ((unused)),
+ const char *modname __attribute__ ((unused)),
+ Dwarf_Addr base __attribute__ ((unused)),
+ char **file_name __attribute__ ((unused)),
+ Elf **elfp __attribute__ ((unused)))
+{
+ /* Not used as modules are reported explicitly. */
+ assert (0);
+}
+
+static bool
+memory_read (Dwfl *dwfl, Dwarf_Addr addr, Dwarf_Word *result,
+ void *dwfl_arg __attribute__ ((unused)))
+{
+ pid_t child = dwfl_pid (dwfl);
+
+ errno = 0;
+ long l = ptrace (PTRACE_PEEKDATA, child, (void *) (uintptr_t) addr, NULL);
+ assert_perror (errno);
+ *result = l;
+
+ /* We could also return false for failed ptrace. */
+ return true;
+}
+
+/* Return filename and VMA address *BASEP where its mapping starts which
+ contains ADDR. */
+
+static char *
+maps_lookup (pid_t pid, Dwarf_Addr addr, GElf_Addr *basep)
+{
+ char *fname;
+ int i = asprintf (&fname, "/proc/%ld/maps", (long) pid);
+ assert_perror (errno);
+ assert (i > 0);
+ FILE *f = fopen (fname, "r");
+ assert_perror (errno);
+ assert (f);
+ free (fname);
+ for (;;)
+ {
+ // 37e3c22000-37e3c23000 rw-p 00022000 00:11 49532 /lib64/ld-2.14.90.so */
+ unsigned long start, end, offset;
+ i = fscanf (f, "%lx-%lx %*s %lx %*x:%*x %*x", &start, &end, &offset);
+ assert_perror (errno);
+ assert (i == 3);
+ char *filename = strdup ("");
+ assert (filename);
+ size_t filename_len = 0;
+ for (;;)
+ {
+ int c = fgetc (f);
+ assert (c != EOF);
+ if (c == '\n')
+ break;
+ if (c == ' ' && *filename == '\0')
+ continue;
+ filename = realloc (filename, filename_len + 2);
+ assert (filename);
+ filename[filename_len++] = c;
+ filename[filename_len] = '\0';
+ }
+ if (start <= addr && addr < end)
+ {
+ i = fclose (f);
+ assert_perror (errno);
+ assert (i == 0);
+
+ *basep = start - offset;
+ return filename;
+ }
+ free (filename);
+ }
+}
+
+/* Add module containing ADDR to the DWFL address space.
+
+ dwfl_report_elf call here violates Dwfl manipulation as one should call
+ dwfl_report only between dwfl_report_begin_add and dwfl_report_end.
+ Current elfutils implementation does not mind as dwfl_report_begin_add is
+ empty. */
+
+static Dwfl_Module *
+report_module (Dwfl *dwfl, pid_t child, Dwarf_Addr addr)
+{
+ GElf_Addr base;
+ char *long_name = maps_lookup (child, addr, &base);
+ Dwfl_Module *mod = dwfl_report_elf (dwfl, long_name, long_name, -1,
+ base, false /* add_p_vaddr */);
+ assert (mod);
+ free (long_name);
+ assert (dwfl_addrmodule (dwfl, addr) == mod);
+ return mod;
+}
+
+static pid_t
+next_thread (Dwfl *dwfl, void *dwfl_arg __attribute__ ((unused)),
+ void **thread_argp)
+{
+ if (*thread_argp != NULL)
+ return 0;
+ /* Put arbitrary non-NULL value into *THREAD_ARGP as a marker so that this
+ function returns non-zero PID only once. */
+ *thread_argp = thread_argp;
+ return dwfl_pid (dwfl);
+}
+
+static bool
+set_initial_registers (Dwfl_Thread *thread,
+ void *thread_arg __attribute__ ((unused)))
+{
+ pid_t child = dwfl_pid (dwfl_thread_dwfl (thread));
+
+ struct user_regs_struct user_regs;
+ long l = ptrace (PTRACE_GETREGS, child, NULL, &user_regs);
+ assert_perror (errno);
+ assert (l == 0);
+
+ Dwarf_Word dwarf_regs[17];
+ dwarf_regs[0] = user_regs.rax;
+ dwarf_regs[1] = user_regs.rdx;
+ dwarf_regs[2] = user_regs.rcx;
+ dwarf_regs[3] = user_regs.rbx;
+ dwarf_regs[4] = user_regs.rsi;
+ dwarf_regs[5] = user_regs.rdi;
+ dwarf_regs[6] = user_regs.rbp;
+ dwarf_regs[7] = user_regs.rsp;
+ dwarf_regs[8] = user_regs.r8;
+ dwarf_regs[9] = user_regs.r9;
+ dwarf_regs[10] = user_regs.r10;
+ dwarf_regs[11] = user_regs.r11;
+ dwarf_regs[12] = user_regs.r12;
+ dwarf_regs[13] = user_regs.r13;
+ dwarf_regs[14] = user_regs.r14;
+ dwarf_regs[15] = user_regs.r15;
+ dwarf_regs[16] = user_regs.rip;
+ bool ok = dwfl_thread_state_registers (thread, 0, 17, dwarf_regs);
+ assert (ok);
+
+ /* x86_64 has PC contained in its CFI subset of DWARF register set so
+ elfutils will figure out the real PC value from REGS.
+ So no need to explicitly call dwfl_thread_state_register_pc. */
+
+ return true;
+}
+
+static const Dwfl_Thread_Callbacks callbacks =
+{
+ next_thread,
+ NULL, /* get_thread */
+ memory_read,
+ set_initial_registers,
+ NULL, /* detach */
+ NULL, /* thread_detach */
+};
+
+static int
+frame_callback (Dwfl_Frame *state, void *arg)
+{
+ unsigned *framenop = arg;
+ Dwarf_Addr pc;
+ bool isactivation;
+ if (! dwfl_frame_pc (state, &pc, &isactivation))
+ {
+ error (1, 0, "%s", dwfl_errmsg (-1));
+ return 1;
+ }
+ Dwarf_Addr pc_adjusted = pc - (isactivation ? 0 : 1);
+
+ /* Get PC->SYMNAME. */
+ Dwfl *dwfl = dwfl_thread_dwfl (dwfl_frame_thread (state));
+ Dwfl_Module *mod = dwfl_addrmodule (dwfl, pc_adjusted);
+ if (mod == NULL)
+ mod = report_module (dwfl, dwfl_pid (dwfl), pc_adjusted);
+ const char *symname = NULL;
+ symname = dwfl_module_addrname (mod, pc_adjusted);
+
+ printf ("#%2u %#" PRIx64 "%4s\t%s\n", (*framenop)++, (uint64_t) pc,
+ ! isactivation ? "- 1" : "", symname);
+ return DWARF_CB_OK;
+}
+
+static int
+thread_callback (Dwfl_Thread *thread, void *thread_arg __attribute__ ((unused)))
+{
+ unsigned frameno = 0;
+ switch (dwfl_thread_getframes (thread, frame_callback, &frameno))
+ {
+ case 0:
+ break;
+ case -1:
+ error (1, 0, "dwfl_thread_getframes: %s", dwfl_errmsg (-1));
+ default:
+ abort ();
+ }
+ return DWARF_CB_OK;
+}
+
+int
+main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
+{
+ /* We use no threads here which can interfere with handling a stream. */
+ __fsetlocking (stdin, FSETLOCKING_BYCALLER);
+ __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+ __fsetlocking (stderr, FSETLOCKING_BYCALLER);
+
+ /* Set locale. */
+ (void) setlocale (LC_ALL, "");
+
+ elf_version (EV_CURRENT);
+
+ pid_t child = fork ();
+ switch (child)
+ {
+ case -1:
+ assert_perror (errno);
+ assert (0);
+ case 0:;
+ long l = ptrace (PTRACE_TRACEME, 0, NULL, NULL);
+ assert_perror (errno);
+ assert (l == 0);
+ raise (SIGUSR1);
+ return 0;
+ default:
+ break;
+ }
+
+ int status;
+ pid_t pid = waitpid (child, &status, 0);
+ assert_perror (errno);
+ assert (pid == child);
+ assert (WIFSTOPPED (status));
+ assert (WSTOPSIG (status) == SIGUSR1);
+
+ static char *debuginfo_path;
+ static const Dwfl_Callbacks offline_callbacks =
+ {
+ .find_debuginfo = dwfl_standard_find_debuginfo,
+ .debuginfo_path = &debuginfo_path,
+ .section_address = dwfl_offline_section_address,
+ .find_elf = find_elf,
+ };
+ Dwfl *dwfl = dwfl_begin (&offline_callbacks);
+ assert (dwfl);
+
+ struct user_regs_struct user_regs;
+ long l = ptrace (PTRACE_GETREGS, child, NULL, &user_regs);
+ assert_perror (errno);
+ assert (l == 0);
+ report_module (dwfl, child, user_regs.rip);
+
+ bool ok = dwfl_attach_state (dwfl, EM_NONE, child, &callbacks, NULL);
+ assert (ok);
+
+ /* Multiple threads are not handled here. */
+ int err = dwfl_getthreads (dwfl, thread_callback, NULL);
+ assert (! err);
+
+ dwfl_end (dwfl);
+ kill (child, SIGKILL);
+ pid = waitpid (child, &status, 0);
+ assert_perror (errno);
+ assert (pid == child);
+ assert (WIFSIGNALED (status));
+ assert (WTERMSIG (status) == SIGKILL);
+
+ return EXIT_SUCCESS;
+}
+
+#endif /* x86_64 */
--- /dev/null
+/* Test program for unwinding of complicated DWARF expressions.
+ 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <signal.h>
+#include <inttypes.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <errno.h>
+#include <sys/ptrace.h>
+#include ELFUTILS_HEADER(dwfl)
+
+#ifndef __linux__
+
+int
+main (int argc __attribute__ ((unused)), char **argv)
+{
+ fprintf (stderr, "%s: Unwinding not supported for this architecture\n",
+ argv[0]);
+ return 77;
+}
+
+#else /* __linux__ */
+
+static void cleanup_13_abort (void);
+#define main cleanup_13_main
+#include "cleanup-13.c"
+#undef main
+
+static void
+report_pid (Dwfl *dwfl, pid_t pid)
+{
+ int result = dwfl_linux_proc_report (dwfl, pid);
+ if (result < 0)
+ error (2, 0, "dwfl_linux_proc_report: %s", dwfl_errmsg (-1));
+ else if (result > 0)
+ error (2, result, "dwfl_linux_proc_report");
+
+ if (dwfl_report_end (dwfl, NULL, NULL) != 0)
+ error (2, 0, "dwfl_report_end: %s", dwfl_errmsg (-1));
+
+ result = dwfl_linux_proc_attach (dwfl, pid, true);
+ if (result < 0)
+ error (2, 0, "dwfl_linux_proc_attach: %s", dwfl_errmsg (-1));
+ else if (result > 0)
+ error (2, result, "dwfl_linux_proc_attach");
+}
+
+static Dwfl *
+pid_to_dwfl (pid_t pid)
+{
+ static char *debuginfo_path;
+ static const Dwfl_Callbacks proc_callbacks =
+ {
+ .find_debuginfo = dwfl_standard_find_debuginfo,
+ .debuginfo_path = &debuginfo_path,
+
+ .find_elf = dwfl_linux_proc_find_elf,
+ };
+ Dwfl *dwfl = dwfl_begin (&proc_callbacks);
+ if (dwfl == NULL)
+ error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
+ report_pid (dwfl, pid);
+ return dwfl;
+}
+
+static int
+frame_callback (Dwfl_Frame *state, void *frame_arg)
+{
+ Dwarf_Addr pc;
+ bool isactivation;
+ if (! dwfl_frame_pc (state, &pc, &isactivation))
+ {
+ error (0, 0, "%s", dwfl_errmsg (-1));
+ return DWARF_CB_ABORT;
+ }
+ Dwarf_Addr pc_adjusted = pc - (isactivation ? 0 : 1);
+
+ /* Get PC->SYMNAME. */
+ Dwfl_Thread *thread = dwfl_frame_thread (state);
+ Dwfl *dwfl = dwfl_thread_dwfl (thread);
+ Dwfl_Module *mod = dwfl_addrmodule (dwfl, pc_adjusted);
+ const char *symname = NULL;
+ if (mod)
+ symname = dwfl_module_addrname (mod, pc_adjusted);
+
+ printf ("%#" PRIx64 "\t%s\n", (uint64_t) pc, symname);
+
+ if (symname && (strcmp (symname, "main") == 0
+ || strcmp (symname, ".main") == 0))
+ {
+ kill (dwfl_pid (dwfl), SIGKILL);
+ exit (0);
+ }
+
+ return DWARF_CB_OK;
+}
+
+static int
+thread_callback (Dwfl_Thread *thread, void *thread_arg)
+{
+ dwfl_thread_getframes (thread, frame_callback, NULL);
+ error (1, 0, "dwfl_thread_getframes: %s", dwfl_errmsg (-1));
+}
+
+int
+main (int argc __attribute__ ((unused)), char **argv)
+{
+ /* We use no threads here which can interfere with handling a stream. */
+ __fsetlocking (stdin, FSETLOCKING_BYCALLER);
+ __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+ __fsetlocking (stderr, FSETLOCKING_BYCALLER);
+
+ /* Set locale. */
+ (void) setlocale (LC_ALL, "");
+
+ elf_version (EV_CURRENT);
+
+ pid_t pid = fork ();
+ switch (pid)
+ {
+ case -1:
+ abort ();
+ case 0:;
+ long l = ptrace (PTRACE_TRACEME, 0, NULL, NULL);
+ assert_perror (errno);
+ assert (l == 0);
+ cleanup_13_main ();
+ abort ();
+ default:
+ break;
+ }
+
+ errno = 0;
+ int status;
+ pid_t got = waitpid (pid, &status, 0);
+ assert_perror (errno);
+ assert (got == pid);
+ assert (WIFSTOPPED (status));
+ assert (WSTOPSIG (status) == SIGABRT);
+
+ Dwfl *dwfl = pid_to_dwfl (pid);
+ dwfl_getthreads (dwfl, thread_callback, NULL);
+
+ /* There is an exit (0) call if we find the "main" frame, */
+ error (1, 0, "dwfl_getthreads: %s", dwfl_errmsg (-1));
+}
+
+#endif /* ! __linux__ */
+
--- /dev/null
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Verify one of the backtraced threads contains function 'main'.
+check_main()
+{
+ if grep -w main $1; then
+ return
+ fi
+ echo >&2 $2: no main
+ false
+}
+
+# Without proper ELF symbols resolution we could get inappropriate weak
+# symbol "gsignal" with the same address as the correct symbol "raise".
+# It was fixed by GIT commit 78dec228b3cfb2f9300cd0b682ebf416c9674c91 .
+# [patch] Improve ELF symbols preference (global > weak)
+# https://lists.fedorahosted.org/pipermail/elfutils-devel/2012-October/002624.html
+check_gsignal()
+{
+ if ! grep -w gsignal $1; then
+ return
+ fi
+ echo >&2 $2: found gsignal
+ false
+}
+
+# Verify the STDERR output does not contain unexpected errors.
+# In some cases we cannot reliably find out we got behind _start as some
+# operating system do not properly terminate CFI by undefined PC.
+# Ignore it here as it is a bug of OS, not a bug of elfutils.
+check_err()
+{
+ if [ $(egrep -v <$1 'dwfl_thread_getframes: (No DWARF information found|no matching address range)$' \
+ | wc -c) \
+ -eq 0 ]
+ then
+ return
+ fi
+ echo >&2 $2: neither empty nor just out of DWARF
+ false
+}
+
+check_all()
+{
+ bt=$1
+ err=$2
+ testname=$3
+ check_main $bt $testname
+ check_gsignal $bt $testname
+ check_err $err $testname
+}
+
+check_unsupported()
+{
+ err=$1
+ testname=$2
+ if grep -q ': Unwinding not supported for this architecture$' $err; then
+ echo >&2 $testname: arch not supported
+ exit 77
+ fi
+}
+
+check_native_unsupported()
+{
+ err=$1
+ testname=$2
+ check_unsupported $err $testname
+
+ # ARM is special. It is supported, but it doesn't use .eh_frame by default
+ # making the native tests fail unless debuginfo (for glibc) is installed
+ # and we can fall back on .debug_frame for the CFI.
+ case "`uname -m`" in
+ arm* )
+ if grep 'dwfl_thread_getframes: No DWARF information found' $err; then
+ echo >&2 $testname: arm needs debuginfo installed for all libraries
+ exit 77
+ fi
+ ;;
+ esac
+}
+
+check_core()
+{
+ arch=$1
+ testfiles backtrace.$arch.{exec,core}
+ tempfiles backtrace.$arch.{bt,err}
+ echo ./backtrace ./backtrace.$arch.{exec,core}
+ testrun ${abs_builddir}/backtrace -e ./backtrace.$arch.exec --core=./backtrace.$arch.core 1>backtrace.$arch.bt 2>backtrace.$arch.err || true
+ cat backtrace.$arch.{bt,err}
+ check_unsupported backtrace.$arch.err backtrace.$arch.core
+ check_all backtrace.$arch.{bt,err} backtrace.$arch.core
+}
+
+# Backtrace live process.
+# Do not abort on non-zero exit code due to some warnings of ./backtrace
+# - see function check_err.
+check_native()
+{
+ child=$1
+ tempfiles $child.{bt,err}
+ (set +ex; testrun ${abs_builddir}/backtrace --backtrace-exec=${abs_builddir}/$child 1>$child.bt 2>$child.err; true)
+ cat $child.{bt,err}
+ check_native_unsupported $child.err $child
+ check_all $child.{bt,err} $child
+}
+
+# Backtrace core file.
+check_native_core()
+{
+ child=$1
+
+ # Disable valgrind while dumping core.
+ SAVED_VALGRIND_CMD="$VALGRIND_CMD"
+ unset VALGRIND_CMD
+
+ # Skip the test if we cannot adjust core ulimit.
+ core="core.`ulimit -c unlimited || exit 77; set +ex; testrun ${abs_builddir}/$child --gencore; true`"
+ # see if /proc/sys/kernel/core_uses_pid is set to 0
+ if [ -f core ]; then
+ mv core "$core"
+ fi
+ if [ ! -f "$core" ]; then exit 77; fi
+
+ if [ "x$SAVED_VALGRIND_CMD" != "x" ]; then
+ VALGRIND_CMD="$SAVED_VALGRIND_CMD"
+ export VALGRIND_CMD
+ fi
+
+ # Do not abort on non-zero exit code due to some warnings of ./backtrace
+ # - see function check_err.
+ tempfiles $core{,.{bt,err}}
+ (set +ex; testrun ${abs_builddir}/backtrace -e ${abs_builddir}/$child --core=$core 1>$core.bt 2>$core.err; true)
+ cat $core.{bt,err}
+ check_native_unsupported $core.err $child-$core
+ check_all $core.{bt,err} $child-$core
+}
--- /dev/null
+/* Test program for unwinding of frames.
+ Copyright (C) 2013, 2014 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <locale.h>
+#include <dirent.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <error.h>
+#include <unistd.h>
+#include <dwarf.h>
+#include <sys/resource.h>
+#include <sys/ptrace.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/user.h>
+#include <fcntl.h>
+#include <string.h>
+#include <argp.h>
+#include ELFUTILS_HEADER(dwfl)
+
+#ifndef __linux__
+
+int
+main (int argc __attribute__ ((unused)), char **argv)
+{
+ fprintf (stderr, "%s: Unwinding not supported for this architecture\n",
+ argv[0]);
+ return 77;
+}
+
+#else /* __linux__ */
+
+static int
+dump_modules (Dwfl_Module *mod, void **userdata __attribute__ ((unused)),
+ const char *name, Dwarf_Addr start,
+ void *arg __attribute__ ((unused)))
+{
+ Dwarf_Addr end;
+ dwfl_module_info (mod, NULL, NULL, &end, NULL, NULL, NULL, NULL);
+ printf ("%#" PRIx64 "\t%#" PRIx64 "\t%s\n", (uint64_t) start, (uint64_t) end,
+ name);
+ return DWARF_CB_OK;
+}
+
+static bool is_x86_64_native;
+static pid_t check_tid;
+
+static void
+callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc,
+ const char *symname, Dwfl *dwfl)
+{
+ static bool seen_main = false;
+ if (symname && *symname == '.')
+ symname++;
+ if (symname && strcmp (symname, "main") == 0)
+ seen_main = true;
+ if (pc == 0)
+ {
+ assert (seen_main);
+ return;
+ }
+ if (check_tid == 0)
+ check_tid = tid;
+ if (tid != check_tid)
+ {
+ // For the main thread we are only interested if we can unwind till
+ // we see the "main" symbol.
+ return;
+ }
+ Dwfl_Module *mod;
+ static bool reduce_frameno = false;
+ if (reduce_frameno)
+ frameno--;
+ if (! is_x86_64_native && frameno >= 2)
+ frameno += 2;
+ const char *symname2 = NULL;
+ switch (frameno)
+ {
+ case 0:
+ if (! reduce_frameno && symname
+ && (strcmp (symname, "__kernel_vsyscall") == 0
+ || strcmp (symname, "__libc_do_syscall") == 0))
+ reduce_frameno = true;
+ else
+ assert (symname && strcmp (symname, "raise") == 0);
+ break;
+ case 1:
+ assert (symname != NULL && strcmp (symname, "sigusr2") == 0);
+ break;
+ case 2: // x86_64 only
+ /* __restore_rt - glibc maybe does not have to have this symbol. */
+ break;
+ case 3: // x86_64 only
+ if (is_x86_64_native)
+ {
+ /* Verify we trapped on the very first instruction of jmp. */
+ assert (symname != NULL && strcmp (symname, "jmp") == 0);
+ mod = dwfl_addrmodule (dwfl, pc - 1);
+ if (mod)
+ symname2 = dwfl_module_addrname (mod, pc - 1);
+ assert (symname2 == NULL || strcmp (symname2, "jmp") != 0);
+ break;
+ }
+ /* PASSTHRU */
+ case 4:
+ assert (symname != NULL && strcmp (symname, "stdarg") == 0);
+ break;
+ case 5:
+ /* Verify we trapped on the very last instruction of child. */
+ assert (symname != NULL && strcmp (symname, "backtracegen") == 0);
+ mod = dwfl_addrmodule (dwfl, pc);
+ if (mod)
+ symname2 = dwfl_module_addrname (mod, pc);
+
+ // Note that the following assert might in theory even fail on x86_64,
+ // there is no guarantee that the compiler doesn't reorder the
+ // instructions or even inserts some padding instructions at the end
+ // (which apparently happens on ppc64).
+ if (is_x86_64_native)
+ assert (symname2 == NULL || strcmp (symname2, "backtracegen") != 0);
+ break;
+ }
+}
+
+static int
+frame_callback (Dwfl_Frame *state, void *frame_arg)
+{
+ int *framenop = frame_arg;
+ Dwarf_Addr pc;
+ bool isactivation;
+
+ if (*framenop > 16)
+ {
+ error (0, 0, "Too many frames: %d\n", *framenop);
+ return DWARF_CB_ABORT;
+ }
+
+ if (! dwfl_frame_pc (state, &pc, &isactivation))
+ {
+ error (0, 0, "%s", dwfl_errmsg (-1));
+ return DWARF_CB_ABORT;
+ }
+ Dwarf_Addr pc_adjusted = pc - (isactivation ? 0 : 1);
+
+ /* Get PC->SYMNAME. */
+ Dwfl_Thread *thread = dwfl_frame_thread (state);
+ Dwfl *dwfl = dwfl_thread_dwfl (thread);
+ Dwfl_Module *mod = dwfl_addrmodule (dwfl, pc_adjusted);
+ const char *symname = NULL;
+ if (mod)
+ symname = dwfl_module_addrname (mod, pc_adjusted);
+
+ printf ("#%2d %#" PRIx64 "%4s\t%s\n", *framenop, (uint64_t) pc,
+ ! isactivation ? "- 1" : "", symname);
+ pid_t tid = dwfl_thread_tid (thread);
+ callback_verify (tid, *framenop, pc, symname, dwfl);
+ (*framenop)++;
+
+ return DWARF_CB_OK;
+}
+
+static int
+thread_callback (Dwfl_Thread *thread, void *thread_arg __attribute__((unused)))
+{
+ printf ("TID %ld:\n", (long) dwfl_thread_tid (thread));
+ int frameno = 0;
+ switch (dwfl_thread_getframes (thread, frame_callback, &frameno))
+ {
+ case 0:
+ break;
+ case DWARF_CB_ABORT:
+ return DWARF_CB_ABORT;
+ case -1:
+ error (0, 0, "dwfl_thread_getframes: %s", dwfl_errmsg (-1));
+ /* All platforms do not have yet proper unwind termination. */
+ break;
+ default:
+ abort ();
+ }
+ return DWARF_CB_OK;
+}
+
+static void
+dump (Dwfl *dwfl)
+{
+ ptrdiff_t ptrdiff = dwfl_getmodules (dwfl, dump_modules, NULL, 0);
+ assert (ptrdiff == 0);
+ bool err = false;
+ switch (dwfl_getthreads (dwfl, thread_callback, NULL))
+ {
+ case 0:
+ break;
+ case DWARF_CB_ABORT:
+ err = true;
+ break;
+ case -1:
+ error (0, 0, "dwfl_getthreads: %s", dwfl_errmsg (-1));
+ err = true;
+ break;
+ default:
+ abort ();
+ }
+ callback_verify (0, 0, 0, NULL, dwfl);
+ if (err)
+ exit (EXIT_FAILURE);
+}
+
+struct see_exec_module
+{
+ Dwfl_Module *mod;
+ char selfpath[PATH_MAX + 1];
+};
+
+static int
+see_exec_module (Dwfl_Module *mod, void **userdata __attribute__ ((unused)),
+ const char *name __attribute__ ((unused)),
+ Dwarf_Addr start __attribute__ ((unused)), void *arg)
+{
+ struct see_exec_module *data = arg;
+ if (strcmp (name, data->selfpath) != 0)
+ return DWARF_CB_OK;
+ assert (data->mod == NULL);
+ data->mod = mod;
+ return DWARF_CB_OK;
+}
+
+/* On x86_64 only:
+ PC will get changed to function 'jmp' by backtrace.c function
+ prepare_thread. Then SIGUSR2 will be signalled to backtrace-child
+ which will invoke function sigusr2.
+ This is all done so that signal interrupts execution of the very first
+ instruction of a function. Properly handled unwind should not slip into
+ the previous unrelated function. */
+
+static void
+prepare_thread (pid_t pid2 __attribute__ ((unused)),
+ void (*jmp) (void) __attribute__ ((unused)))
+{
+#ifndef __x86_64__
+ abort ();
+#else /* x86_64 */
+ long l;
+ errno = 0;
+ l = ptrace (PTRACE_POKEUSER, pid2,
+ (void *) (intptr_t) offsetof (struct user_regs_struct, rip), jmp);
+ assert_perror (errno);
+ assert (l == 0);
+ l = ptrace (PTRACE_CONT, pid2, NULL, (void *) (intptr_t) SIGUSR2);
+ int status;
+ pid_t got = waitpid (pid2, &status, __WALL);
+ assert_perror (errno);
+ assert (got == pid2);
+ assert (WIFSTOPPED (status));
+ assert (WSTOPSIG (status) == SIGUSR1);
+#endif /* __x86_64__ */
+}
+
+#include <asm/unistd.h>
+#include <unistd.h>
+#define tgkill(pid, tid, sig) syscall (__NR_tgkill, (pid), (tid), (sig))
+
+static void
+report_pid (Dwfl *dwfl, pid_t pid)
+{
+ int result = dwfl_linux_proc_report (dwfl, pid);
+ if (result < 0)
+ error (2, 0, "dwfl_linux_proc_report: %s", dwfl_errmsg (-1));
+ else if (result > 0)
+ error (2, result, "dwfl_linux_proc_report");
+
+ if (dwfl_report_end (dwfl, NULL, NULL) != 0)
+ error (2, 0, "dwfl_report_end: %s", dwfl_errmsg (-1));
+
+ result = dwfl_linux_proc_attach (dwfl, pid, true);
+ if (result < 0)
+ error (2, 0, "dwfl_linux_proc_attach: %s", dwfl_errmsg (-1));
+ else if (result > 0)
+ error (2, result, "dwfl_linux_proc_attach");
+}
+
+static Dwfl *
+pid_to_dwfl (pid_t pid)
+{
+ static char *debuginfo_path;
+ static const Dwfl_Callbacks proc_callbacks =
+ {
+ .find_debuginfo = dwfl_standard_find_debuginfo,
+ .debuginfo_path = &debuginfo_path,
+
+ .find_elf = dwfl_linux_proc_find_elf,
+ };
+ Dwfl *dwfl = dwfl_begin (&proc_callbacks);
+ if (dwfl == NULL)
+ error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
+ report_pid (dwfl, pid);
+ return dwfl;
+}
+
+static void
+exec_dump (const char *exec)
+{
+ pid_t pid = fork ();
+ switch (pid)
+ {
+ case -1:
+ abort ();
+ case 0:
+ execl (exec, exec, "--ptraceme", NULL);
+ abort ();
+ default:
+ break;
+ }
+
+ /* Catch the main thread. Catch it first otherwise the /proc evaluation of
+ PID may have caught still ourselves before executing execl above. */
+ errno = 0;
+ int status;
+ pid_t got = waitpid (pid, &status, 0);
+ assert_perror (errno);
+ assert (got == pid);
+ assert (WIFSTOPPED (status));
+ // Main thread will signal SIGUSR2. Other thread will signal SIGUSR1.
+ assert (WSTOPSIG (status) == SIGUSR2);
+
+ /* Catch the spawned thread. Do not use __WCLONE as we could get racy
+ __WCLONE, probably despite pthread_create already had to be called the new
+ task is not yet alive enough for waitpid. */
+ pid_t pid2 = waitpid (-1, &status, __WALL);
+ assert_perror (errno);
+ assert (pid2 > 0);
+ assert (pid2 != pid);
+ assert (WIFSTOPPED (status));
+ // Main thread will signal SIGUSR2. Other thread will signal SIGUSR1.
+ assert (WSTOPSIG (status) == SIGUSR1);
+
+ Dwfl *dwfl = pid_to_dwfl (pid);
+ char *selfpathname;
+ int i = asprintf (&selfpathname, "/proc/%ld/exe", (long) pid);
+ assert (i > 0);
+ struct see_exec_module data;
+ ssize_t ssize = readlink (selfpathname, data.selfpath,
+ sizeof (data.selfpath));
+ free (selfpathname);
+ assert (ssize > 0 && ssize < (ssize_t) sizeof (data.selfpath));
+ data.selfpath[ssize] = '\0';
+ data.mod = NULL;
+ ptrdiff_t ptrdiff = dwfl_getmodules (dwfl, see_exec_module, &data, 0);
+ assert (ptrdiff == 0);
+ assert (data.mod != NULL);
+ GElf_Addr loadbase;
+ Elf *elf = dwfl_module_getelf (data.mod, &loadbase);
+ GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem);
+ assert (ehdr != NULL);
+ /* It is false also on x86_64 with i386 inferior. */
+#ifndef __x86_64__
+ is_x86_64_native = false;
+#else /* __x86_64__ */
+ is_x86_64_native = ehdr->e_ident[EI_CLASS] == ELFCLASS64;
+#endif /* __x86_64__ */
+ void (*jmp) (void);
+ if (is_x86_64_native)
+ {
+ // Find inferior symbol named "jmp".
+ int nsym = dwfl_module_getsymtab (data.mod);
+ int symi;
+ for (symi = 1; symi < nsym; ++symi)
+ {
+ GElf_Sym symbol;
+ const char *symbol_name = dwfl_module_getsym (data.mod, symi, &symbol, NULL);
+ if (symbol_name == NULL)
+ continue;
+ switch (GELF_ST_TYPE (symbol.st_info))
+ {
+ case STT_SECTION:
+ case STT_FILE:
+ case STT_TLS:
+ continue;
+ default:
+ if (strcmp (symbol_name, "jmp") != 0)
+ continue;
+ break;
+ }
+ /* LOADBASE is already applied here. */
+ jmp = (void (*) (void)) (uintptr_t) symbol.st_value;
+ break;
+ }
+ assert (symi < nsym);
+ prepare_thread (pid2, jmp);
+ }
+ dwfl_end (dwfl);
+ check_tid = pid2;
+ dwfl = pid_to_dwfl (pid);
+ dump (dwfl);
+ dwfl_end (dwfl);
+}
+
+#define OPT_BACKTRACE_EXEC 0x100
+
+static const struct argp_option options[] =
+ {
+ { "backtrace-exec", OPT_BACKTRACE_EXEC, "EXEC", 0, N_("Run executable"), 0 },
+ { NULL, 0, NULL, 0, NULL, 0 }
+ };
+
+
+static error_t
+parse_opt (int key, char *arg, struct argp_state *state)
+{
+ switch (key)
+ {
+ case ARGP_KEY_INIT:
+ state->child_inputs[0] = state->input;
+ break;
+
+ case OPT_BACKTRACE_EXEC:
+ exec_dump (arg);
+ exit (0);
+
+ default:
+ return ARGP_ERR_UNKNOWN;
+ }
+ return 0;
+}
+
+int
+main (int argc __attribute__ ((unused)), char **argv)
+{
+ /* We use no threads here which can interfere with handling a stream. */
+ __fsetlocking (stdin, FSETLOCKING_BYCALLER);
+ __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+ __fsetlocking (stderr, FSETLOCKING_BYCALLER);
+
+ /* Set locale. */
+ (void) setlocale (LC_ALL, "");
+
+ elf_version (EV_CURRENT);
+
+ Dwfl *dwfl = NULL;
+ const struct argp_child argp_children[] =
+ {
+ { .argp = dwfl_standard_argp () },
+ { .argp = NULL }
+ };
+ const struct argp argp =
+ {
+ options, parse_opt, NULL, NULL, argp_children, NULL, NULL
+ };
+ (void) argp_parse (&argp, argc, argv, 0, NULL, &dwfl);
+ assert (dwfl != NULL);
+ /* We want to make sure the dwfl was properly attached. */
+ if (dwfl_pid (dwfl) < 0)
+ error (2, 0, "dwfl_pid: %s", dwfl_errmsg (-1));
+ dump (dwfl);
+ dwfl_end (dwfl);
+ return 0;
+}
+
+#endif /* ! __linux__ */
+
--- /dev/null
+/* Test program for dwelf_elf_gnu_build_id, print build ID.
+ Copyright (C) 2014 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <err.h>
+#include <errno.h>
+#include ELFUTILS_HEADER(elf)
+#include ELFUTILS_HEADER(dwelf)
+#include <stdio.h>
+#include <error.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+int
+main (int argc, char *argv[])
+{
+ if (argc < 2)
+ error (EXIT_FAILURE, 0, "No input file given");
+
+ elf_version (EV_CURRENT);
+
+ for (int i = 1; i < argc; i++)
+ {
+ const char *file = argv[i];
+ int fd = open (file, O_RDONLY);
+ if (fd < 0)
+ error (EXIT_FAILURE, errno, "couldn't open file '%s'", file);
+
+ Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
+ if (elf == NULL)
+ {
+ printf("%s: elf_begin failed: %s\n", file, elf_errmsg (-1));
+ close (fd);
+ continue;
+ }
+
+ const void *build_id;
+ ssize_t len = dwelf_elf_gnu_build_id (elf, &build_id);
+ switch (len)
+ {
+ case 0:
+ printf ("%s: <no NT_GNU_BUILD_ID note>\n", file);
+ break;
+ case -1:
+ errx (1, "dwelf_elf_gnu_build_id (%s): %s",
+ file, elf_errmsg (-1));
+ default:
+ printf ("%s: build ID: ", file);
+ const unsigned char *p = build_id;
+ const unsigned char *end = p + len;
+ while (p < end)
+ printf("%02x", (unsigned)*p++);
+ putchar('\n');
+ }
+
+ elf_end (elf);
+ close (fd);
+ }
+
+ return 0;
+}
--- /dev/null
+// http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/testsuite/gcc.dg/cleanup-13.c?view=co&content-type=text%2Fplain
+
+/* HP-UX libunwind.so doesn't provide _UA_END_OF_STACK */
+/* { dg-do run } */
+/* { dg-options "-fexceptions" } */
+/* { dg-skip-if "" { "ia64-*-hpux11.*" } { "*" } { "" } } */
+/* Verify DW_OP_* handling in the unwinder. */
+
+#include <unwind.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* #define OP_addr(x) 0x06, ... */
+#define OP_deref 0x06,
+#define SLEB128(x) (x)&0x7f /* Assume here the value is -0x40 ... 0x3f. */
+#define ULEB128(x) (x)&0x7f /* Assume here the value is 0 ... 0x7f. */
+#define VAL1(x) (x)&0xff
+#if defined (__BIG_ENDIAN__)
+#define VAL2(x) ((x)>>8)&0xff,(x)&0xff
+#define VAL4(x) ((x)>>24)&0xff,((x)>>16)&0xff,((x)>>8)&0xff,(x)&0xff
+#define VAL8(x) ((x)>>56)&0xff,((x)>>48)&0xff,((x)>>40)&0xff,((x)>>32)&0xff,((x)>>24)&0xff,((x)>>16)&0xff,((x)>>8)&0xff,(x)&0xff
+#elif defined(__LITTLE_ENDIAN__) || defined(__x86_64__) || defined(__i386__)
+#define VAL2(x) (x)&0xff,((x)>>8)&0xff
+#define VAL4(x) (x)&0xff,((x)>>8)&0xff,((x)>>16)&0xff,((x)>>24)&0xff
+#define VAL8(x) (x)&0xff,((x)>>8)&0xff,((x)>>16)&0xff,((x)>>24)&0xff,((x)>>32)&0xff,((x)>>40)&0xff,((x)>>48)&0xff,((x)>>56)&0xff
+#endif
+#define OP_const1u(x) 0x08,VAL1(x),
+#define OP_const1s(x) 0x09,VAL1(x),
+#define OP_const2u(x) 0x0a,VAL2(x),
+#define OP_const2s(x) 0x0b,VAL2(x),
+#define OP_const4u(x) 0x0c,VAL4(x),
+#define OP_const4s(x) 0x0d,VAL4(x),
+#define OP_const8u(x) 0x0e,VAL8(x),
+#define OP_const8s(x) 0x0f,VAL8(x),
+#define OP_constu(x) 0x10,ULEB128(x),
+#define OP_consts(x) 0x11,SLEB128(x),
+#define OP_dup 0x12,
+#define OP_drop 0x13,
+#define OP_over 0x14,
+#define OP_pick(x) 0x15,VAL1(x),
+#define OP_swap 0x16,
+#define OP_rot 0x17,
+#define OP_xderef 0x18,
+#define OP_abs 0x19,
+#define OP_and 0x1a,
+#define OP_div 0x1b,
+#define OP_minus 0x1c,
+#define OP_mod 0x1d,
+#define OP_mul 0x1e,
+#define OP_neg 0x1f,
+#define OP_not 0x20,
+#define OP_or 0x21,
+#define OP_plus 0x22,
+#define OP_plus_uconst(x) 0x23,ULEB128(x),
+#define OP_shl 0x24,
+#define OP_shr 0x25,
+#define OP_shra 0x26,
+#define OP_xor 0x27,
+#define OP_bra(x) 0x28,VAL2(x),
+#define OP_eq 0x29,
+#define OP_ge 0x2a,
+#define OP_gt 0x2b,
+#define OP_le 0x2c,
+#define OP_lt 0x2d,
+#define OP_ne 0x2e,
+#define OP_skip(x) 0x2f,VAL2(x),
+#define OP_lit0 0x30,
+#define OP_lit1 0x31,
+#define OP_lit2 0x32,
+#define OP_lit3 0x33,
+#define OP_lit4 0x34,
+#define OP_lit5 0x35,
+#define OP_lit6 0x36,
+#define OP_lit7 0x37,
+#define OP_lit8 0x38,
+#define OP_lit9 0x39,
+#define OP_lit10 0x3a,
+#define OP_lit11 0x3b,
+#define OP_lit12 0x3c,
+#define OP_lit13 0x3d,
+#define OP_lit14 0x3e,
+#define OP_lit15 0x3f,
+#define OP_lit16 0x40,
+#define OP_lit17 0x41,
+#define OP_lit18 0x42,
+#define OP_lit19 0x43,
+#define OP_lit20 0x44,
+#define OP_lit21 0x45,
+#define OP_lit22 0x46,
+#define OP_lit23 0x47,
+#define OP_lit24 0x48,
+#define OP_lit25 0x49,
+#define OP_lit26 0x4a,
+#define OP_lit27 0x4b,
+#define OP_lit28 0x4c,
+#define OP_lit29 0x4d,
+#define OP_lit30 0x4e,
+#define OP_lit31 0x4f,
+#define OP_reg0 0x50,
+#define OP_reg1 0x51,
+#define OP_reg2 0x52,
+#define OP_reg3 0x53,
+#define OP_reg4 0x54,
+#define OP_reg5 0x55,
+#define OP_reg6 0x56,
+#define OP_reg7 0x57,
+#define OP_reg8 0x58,
+#define OP_reg9 0x59,
+#define OP_reg10 0x5a,
+#define OP_reg11 0x5b,
+#define OP_reg12 0x5c,
+#define OP_reg13 0x5d,
+#define OP_reg14 0x5e,
+#define OP_reg15 0x5f,
+#define OP_reg16 0x60,
+#define OP_reg17 0x61,
+#define OP_reg18 0x62,
+#define OP_reg19 0x63,
+#define OP_reg20 0x64,
+#define OP_reg21 0x65,
+#define OP_reg22 0x66,
+#define OP_reg23 0x67,
+#define OP_reg24 0x68,
+#define OP_reg25 0x69,
+#define OP_reg26 0x6a,
+#define OP_reg27 0x6b,
+#define OP_reg28 0x6c,
+#define OP_reg29 0x6d,
+#define OP_reg30 0x6e,
+#define OP_reg31 0x6f,
+#define OP_breg0(x) 0x70,SLEB128(x),
+#define OP_breg1(x) 0x71,SLEB128(x),
+#define OP_breg2(x) 0x72,SLEB128(x),
+#define OP_breg3(x) 0x73,SLEB128(x),
+#define OP_breg4(x) 0x74,SLEB128(x),
+#define OP_breg5(x) 0x75,SLEB128(x),
+#define OP_breg6(x) 0x76,SLEB128(x),
+#define OP_breg7(x) 0x77,SLEB128(x),
+#define OP_breg8(x) 0x78,SLEB128(x),
+#define OP_breg9(x) 0x79,SLEB128(x),
+#define OP_breg10(x) 0x7a,SLEB128(x),
+#define OP_breg11(x) 0x7b,SLEB128(x),
+#define OP_breg12(x) 0x7c,SLEB128(x),
+#define OP_breg13(x) 0x7d,SLEB128(x),
+#define OP_breg14(x) 0x7e,SLEB128(x),
+#define OP_breg15(x) 0x7f,SLEB128(x),
+#define OP_breg16(x) 0x80,SLEB128(x),
+#define OP_breg17(x) 0x81,SLEB128(x),
+#define OP_breg18(x) 0x82,SLEB128(x),
+#define OP_breg19(x) 0x83,SLEB128(x),
+#define OP_breg20(x) 0x84,SLEB128(x),
+#define OP_breg21(x) 0x85,SLEB128(x),
+#define OP_breg22(x) 0x86,SLEB128(x),
+#define OP_breg23(x) 0x87,SLEB128(x),
+#define OP_breg24(x) 0x88,SLEB128(x),
+#define OP_breg25(x) 0x89,SLEB128(x),
+#define OP_breg26(x) 0x8a,SLEB128(x),
+#define OP_breg27(x) 0x8b,SLEB128(x),
+#define OP_breg28(x) 0x8c,SLEB128(x),
+#define OP_breg29(x) 0x8d,SLEB128(x),
+#define OP_breg30(x) 0x8e,SLEB128(x),
+#define OP_breg31(x) 0x8f,SLEB128(x),
+#define OP_regx(x) 0x90,SLEB128(x),
+#define OP_fbreg(x) 0x91,SLEB128(x),
+#define OP_bregx(x,y) 0x92,ULEB128(x),SLEB128(y),
+#define OP_piece(x) 0x93,ULEB128(x),
+#define OP_deref_size(x) 0x94,VAL1(x),
+#define OP_xderef_size(x) 0x95,VAL1(x),
+#define OP_nop 0x96,
+#define OP_nop_termination 0x96
+#define OP_push_object_address 0x97,
+#define OP_call2(x) 0x98,VAL2(x),
+#define OP_call4(x) 0x99,VAL4(x),
+/* #define OP_call_ref(x) 0x9a,... */
+#define OP_form_tls_address(x) 0x9b,
+#define OP_call_frame_cfa 0x9c,
+#define OP_bit_piece(x) 0x9d,ULEB128(x),
+/* #define OP_implicit_value(x...) 0x9e,... */
+#define OP_stack_value 0x9f,
+#define OP_GNU_push_tls_address 0xe0,
+/* #define OP_GNU_encoded_addr(x...) 0xf1, */
+
+#define ASSERT_TOS_NON0 OP_bra(3) OP_skip(-3)
+#define ASSERT_TOS_0 OP_lit0 OP_eq ASSERT_TOS_NON0
+
+/* Initially there is CFA value on the stack, we want to
+ keep it there at the end. */
+#define CFI_PROGRAM \
+OP_lit0 OP_nop ASSERT_TOS_0 \
+OP_lit1 ASSERT_TOS_NON0 \
+OP_lit1 OP_const1u(1) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_const2u(16) OP_eq ASSERT_TOS_NON0 \
+OP_lit31 OP_const4u(31) OP_ne ASSERT_TOS_0 \
+OP_lit1 OP_neg OP_const1s(-1) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_neg OP_const2s(-16) OP_ne ASSERT_TOS_0 \
+OP_lit31 OP_const4s(-31) OP_neg OP_ne ASSERT_TOS_0 \
+OP_lit7 OP_dup OP_plus_uconst(2) OP_lit9 OP_eq ASSERT_TOS_NON0 \
+ OP_lit7 OP_eq ASSERT_TOS_NON0 \
+OP_lit20 OP_lit1 OP_drop OP_lit20 OP_eq ASSERT_TOS_NON0 \
+OP_lit17 OP_lit19 OP_over OP_lit17 OP_eq ASSERT_TOS_NON0 \
+ OP_lit19 OP_eq ASSERT_TOS_NON0 OP_lit17 OP_eq ASSERT_TOS_NON0 \
+OP_lit1 OP_lit2 OP_lit3 OP_lit4 OP_pick(2) OP_lit2 OP_eq ASSERT_TOS_NON0\
+ OP_lit4 OP_eq ASSERT_TOS_NON0 OP_lit3 OP_eq ASSERT_TOS_NON0 \
+ OP_pick(0) OP_lit2 OP_eq ASSERT_TOS_NON0 \
+ OP_lit2 OP_eq ASSERT_TOS_NON0 OP_lit1 OP_eq ASSERT_TOS_NON0 \
+OP_lit6 OP_lit12 OP_swap OP_lit6 OP_eq ASSERT_TOS_NON0 \
+ OP_lit12 OP_eq ASSERT_TOS_NON0 \
+OP_lit7 OP_lit8 OP_lit9 OP_rot OP_lit8 OP_eq ASSERT_TOS_NON0 \
+ OP_lit7 OP_eq ASSERT_TOS_NON0 OP_lit9 OP_eq ASSERT_TOS_NON0 \
+OP_lit7 OP_abs OP_lit7 OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-123) OP_abs OP_const1u(123) OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_and OP_lit2 OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_or OP_lit7 OP_eq ASSERT_TOS_NON0 \
+OP_lit17 OP_lit2 OP_minus OP_lit15 OP_eq ASSERT_TOS_NON0 \
+/* Divide is signed truncating toward zero. */ \
+OP_const1s(-6) OP_const1s(-2) OP_div OP_lit3 OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-7) OP_const1s(3) OP_div OP_const1s(-2) \
+ OP_eq ASSERT_TOS_NON0 \
+/* Modulo is unsigned. */ \
+OP_const1s(-6) OP_const1s(-4) OP_mod OP_const1s(-6) \
+ OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit4 OP_mod OP_lit2 OP_eq ASSERT_TOS_NON0 \
+OP_lit6 OP_const1s(-4) OP_mod OP_lit6 OP_eq ASSERT_TOS_NON0 \
+/* Signed modulo can be implemented using "over over div mul minus". */\
+OP_const1s(-6) OP_const1s(-4) OP_over OP_over OP_div OP_mul OP_minus \
+ OP_const1s(-2) OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-7) OP_lit3 OP_over OP_over OP_div OP_mul OP_minus \
+ OP_const1s(-1) OP_eq ASSERT_TOS_NON0 \
+OP_lit7 OP_const1s(-3) OP_over OP_over OP_div OP_mul OP_minus \
+ OP_lit1 OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_lit31 OP_plus_uconst(1) OP_mul OP_const2u(512) \
+ OP_eq ASSERT_TOS_NON0 \
+OP_lit5 OP_not OP_lit31 OP_and OP_lit26 OP_eq ASSERT_TOS_NON0 \
+OP_lit12 OP_lit31 OP_plus OP_const1u(43) OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit2 OP_plus OP_const1s(-4) OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_plus_uconst(3) OP_const1s(-3) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_lit4 OP_shl OP_const2u(256) OP_eq ASSERT_TOS_NON0 \
+OP_lit16 OP_lit3 OP_shr OP_lit2 OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-16) OP_lit3 OP_shra OP_const1s(-2) OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_xor OP_lit5 OP_eq ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_le ASSERT_TOS_NON0 \
+OP_lit3 OP_lit3 OP_le ASSERT_TOS_NON0 \
+OP_lit6 OP_lit3 OP_le ASSERT_TOS_0 \
+OP_lit3 OP_lit6 OP_lt ASSERT_TOS_NON0 \
+OP_lit3 OP_lit3 OP_lt ASSERT_TOS_0 \
+OP_lit6 OP_lit3 OP_lt ASSERT_TOS_0 \
+OP_lit3 OP_lit6 OP_ge ASSERT_TOS_0 \
+OP_lit3 OP_lit3 OP_ge ASSERT_TOS_NON0 \
+OP_lit6 OP_lit3 OP_ge ASSERT_TOS_NON0 \
+OP_lit3 OP_lit6 OP_gt ASSERT_TOS_0 \
+OP_lit3 OP_lit3 OP_gt ASSERT_TOS_0 \
+OP_lit6 OP_lit3 OP_gt ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit1 OP_shr OP_lit0 OP_gt ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit1 OP_shra OP_lit0 OP_lt ASSERT_TOS_NON0
+
+#define CFI_ESCAPE_VAL_2(VALUES...) #VALUES
+#define CFI_ESCAPE_VAL_1(VALUES...) CFI_ESCAPE_VAL_2(VALUES)
+#define CFI_ESCAPE_VAL(VALUES...) CFI_ESCAPE_VAL_1(VALUES)
+#define CFI_ESCAPE do { } while (0)
+#define CFI_ARCH_PROGRAM OP_nop_termination
+#ifdef __GCC_HAVE_DWARF2_CFI_ASM
+#if defined (__x86_64__)
+#undef CFI_ESCAPE
+#undef CFI_ARCH_PROGRAM
+#define CFI_ARCH_PROGRAM CFI_PROGRAM OP_lit8 OP_minus OP_nop_termination
+unsigned char cfi_arch_program[] = { CFI_ARCH_PROGRAM };
+extern char verify_it[sizeof (cfi_arch_program) - 0x80 < 0x3f80 ? 1 : -1];
+/* DW_CFA_expression %rip, uleb128(l2-l1), l1: program DW_OP_lit8 DW_OP_minus DW_OP_nop l2: */
+#define CFI_ESCAPE \
+ asm volatile (".cfi_escape 0x10, 0x10, (%P0&0x7f)+0x80, %P0>>7, " \
+ CFI_ESCAPE_VAL (CFI_ARCH_PROGRAM) \
+ : : "i" (sizeof (cfi_arch_program)))
+#elif defined (__i386__)
+#undef CFI_ESCAPE
+#undef CFI_ARCH_PROGRAM
+#define CFI_ARCH_PROGRAM CFI_PROGRAM OP_lit4 OP_minus OP_nop_termination
+unsigned char cfi_arch_program[] = { CFI_ARCH_PROGRAM };
+extern char verify_it[sizeof (cfi_arch_program) - 0x80 < 0x3f80 ? 1 : -1];
+/* DW_CFA_expression %eip, uleb128(l2-l1), l1: program DW_OP_lit4 DW_OP_minus DW_OP_nop l2: */
+#define CFI_ESCAPE \
+ asm volatile (".cfi_escape 0x10, 8, (%P0&0x7f)+0x80, %P0>>7, " \
+ CFI_ESCAPE_VAL (CFI_ARCH_PROGRAM) \
+ : : "i" (sizeof (cfi_arch_program)))
+#endif
+#endif
+
+/* The original GCC testcase tests the runtime unwinder using
+ _Unwind_ForcedUnwind, we just inspect the child when it aborts. */
+
+static void force_unwind ()
+{
+ abort ();
+}
+
+static void handler (void *p __attribute__((unused)))
+{
+ exit (0);
+}
+
+__attribute__((noinline)) static void callme ()
+{
+ CFI_ESCAPE;
+ force_unwind ();
+}
+
+__attribute__((noinline)) static void doit ()
+{
+ char dummy __attribute__((cleanup (handler)));
+ callme ();
+}
+
+int main()
+{
+ doit ();
+ abort ();
+}
--- /dev/null
+/* Test program for dwelf_dwarf_gnu_debugaltlink, print name and build ID.
+ Copyright (C) 2014 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <err.h>
+#include <errno.h>
+#include ELFUTILS_HEADER(dw)
+#include ELFUTILS_HEADER(dwelf)
+#include <stdio.h>
+#include <error.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+int
+main (int argc, char *argv[])
+{
+ if (argc < 2)
+ error (EXIT_FAILURE, 0, "No input file given");
+
+ elf_version (EV_CURRENT);
+
+ for (int i = 1; i < argc; i++)
+ {
+ const char *file = argv[i];
+ int fd = open (file, O_RDONLY);
+ if (fd < 0)
+ error (EXIT_FAILURE, errno, "couldn't open file '%s'", file);
+
+ Dwarf *dwarf = dwarf_begin (fd, DWARF_C_READ);
+ if (dwarf == NULL)
+ {
+ printf("%s: dwarf_begin failed: %s\n", file, dwarf_errmsg (-1));
+ close (fd);
+ continue;
+ }
+
+ const char *name;
+ const void *build_id;
+ ssize_t ret = dwelf_dwarf_gnu_debugaltlink
+ (dwarf, &name, &build_id);
+ switch (ret)
+ {
+ case 0:
+ printf ("%s: <no .gnu_debugaltlink section>\n", file);
+ break;
+ case -1:
+ errx (1, "dwelf_dwarf_gnu_debugaltlink (%s): %s",
+ file, dwarf_errmsg (-1));
+ default:
+ printf ("%s: %s, build ID: ", file, name);
+ const unsigned char *p = build_id;
+ const unsigned char *end = p + ret;
+ while (p < end)
+ printf("%02x", (unsigned)*p++);
+ putchar('\n');
+ }
+
+ dwarf_end (dwarf);
+ close (fd);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test program for dwelf_elf_gnu_debuglink, print name and crc.
+ Copyright (C) 2014 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <errno.h>
+#include ELFUTILS_HEADER(dwelf)
+#include <stdio.h>
+#include <error.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+int
+main (int argc, char *argv[])
+{
+ if (argc < 2)
+ error (EXIT_FAILURE, 0, "No input file given");
+
+ elf_version (EV_CURRENT);
+
+ for (int i = 1; i < argc; i++)
+ {
+ const char *file = argv[i];
+ int fd = open (file, O_RDONLY);
+ if (fd < 0)
+ error (EXIT_FAILURE, errno, "couldn't open file '%s'", file);
+
+ Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
+ if (elf == NULL)
+ error (EXIT_FAILURE, 0, "elf_begin failed for '%s': %s",
+ file, elf_errmsg (-1));
+
+ GElf_Word crc;
+ const char *debug = dwelf_elf_gnu_debuglink (elf, &crc);
+ if (debug == NULL)
+ printf ("%s: <no gnu_debuglink file>\n", file);
+ else
+ printf ("%s: %s, crc: %" PRIx32 "\n", file, debug, crc);
+
+ elf_end (elf);
+ close (fd);
+ }
+
+ return 0;
+}
--- /dev/null
+/* Test program for dwfl_report_elf incorrect BASE alignment.
+ 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <error.h>
+#include <locale.h>
+#include <string.h>
+#include <stdlib.h>
+#include ELFUTILS_HEADER(dwfl)
+
+
+static const Dwfl_Callbacks offline_callbacks =
+ {
+ .find_debuginfo = INTUSE(dwfl_standard_find_debuginfo),
+ .section_address = INTUSE(dwfl_offline_section_address),
+ };
+
+
+int
+main (int argc, char **argv)
+{
+ /* We use no threads here which can interfere with handling a stream. */
+ (void) __fsetlocking (stdout, FSETLOCKING_BYCALLER);
+
+ /* Set locale. */
+ (void) setlocale (LC_ALL, "");
+
+ if (argc != 5)
+ error (1, 0, "dwfl-report-elf-align shlib.so base funcaddr funcname");
+
+ Dwfl *dwfl = dwfl_begin (&offline_callbacks);
+ assert (dwfl != NULL);
+
+ char *endptr;
+ uintptr_t base = strtoull (argv[2], &endptr, 0);
+ assert (endptr && !*endptr);
+
+ Dwfl_Module *mod = dwfl_report_elf (dwfl, argv[1], argv[1], -1, base, false);
+ assert (mod != NULL);
+
+ uintptr_t funcaddr = strtoull (argv[3], &endptr, 0);
+ assert (endptr && !*endptr);
+
+ Dwfl_Module *mod_found = dwfl_addrmodule (dwfl, funcaddr);
+ assert (mod_found == mod);
+
+ const char *symname = dwfl_module_addrname (mod, funcaddr);
+ assert (symname != NULL);
+ assert (strcmp (symname, argv[4]) == 0);
+
+ dwfl_end (dwfl);
+
+ return 0;
+}
--- /dev/null
+/* 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <inttypes.h>
+#include <assert.h>
+#include ELFUTILS_HEADER(dw)
+#include ELFUTILS_HEADER(dwfl)
+#include <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <error.h>
+
+int
+main (int argc, char *argv[])
+{
+ int cnt;
+
+ Dwfl *dwfl = NULL;
+ (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &cnt, &dwfl);
+ assert (dwfl != NULL);
+
+ Dwarf_Die *cu = NULL;
+ Dwarf_Addr bias;
+ do
+ {
+ cu = dwfl_nextcu (dwfl, cu, &bias);
+ if (cu != NULL)
+ {
+ Dwfl_Module *mod = dwfl_cumodule (cu);
+ const char *modname = (dwfl_module_info (mod, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL)
+ ?: "<unknown>");
+ const char *cuname = (dwarf_diename (cu) ?: "<unknown>");
+
+ printf ("mod: %s CU: [%" PRIx64 "] %s\n", modname,
+ dwarf_dieoffset (cu), cuname);
+
+ size_t lines;
+ if (dwfl_getsrclines (cu, &lines) != 0)
+ continue; // No lines...
+
+ for (size_t i = 0; i < lines; i++)
+ {
+ Dwfl_Line *line = dwfl_onesrcline (cu, i);
+
+ Dwarf_Addr addr;
+ int lineno;
+ int colno;
+ Dwarf_Word mtime;
+ Dwarf_Word length;
+ const char *src = dwfl_lineinfo (line, &addr, &lineno, &colno,
+ &mtime, &length);
+
+ Dwarf_Addr dw_bias;
+ Dwarf_Line *dw_line = dwfl_dwarf_line (line, &dw_bias);
+ assert (bias == dw_bias);
+
+ Dwarf_Addr dw_addr;
+ if (dwarf_lineaddr (dw_line, &dw_addr) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineaddr: %s",
+ dwarf_errmsg (-1));
+ assert (addr == dw_addr + dw_bias);
+
+ unsigned int dw_op_index;
+ if (dwarf_lineop_index (dw_line, &dw_op_index) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineop_index: %s",
+ dwarf_errmsg (-1));
+
+ int dw_lineno;
+ if (dwarf_lineno (dw_line, &dw_lineno) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineno: %s",
+ dwarf_errmsg (-1));
+ assert (lineno == dw_lineno);
+
+ int dw_colno;
+ if (dwarf_linecol (dw_line, &dw_colno) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineno: %s",
+ dwarf_errmsg (-1));
+ assert (colno == dw_colno);
+
+ bool begin;
+ if (dwarf_linebeginstatement (dw_line, &begin) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_linebeginstatement: %s",
+ dwarf_errmsg (-1));
+
+ bool end;
+ if (dwarf_lineendsequence (dw_line, &end) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineendsequence: %s",
+ dwarf_errmsg (-1));
+
+ bool pend;
+ if (dwarf_lineprologueend (dw_line, &pend) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineprologueend: %s",
+ dwarf_errmsg (-1));
+
+ bool ebegin;
+ if (dwarf_lineepiloguebegin (dw_line, &ebegin) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineepiloguebegin: %s",
+ dwarf_errmsg (-1));
+
+ bool block;
+ if (dwarf_lineblock (dw_line, &block) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineblock: %s",
+ dwarf_errmsg (-1));
+
+ unsigned int isa;
+ if (dwarf_lineisa (dw_line, &isa) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_lineisa: %s",
+ dwarf_errmsg (-1));
+
+ unsigned int disc;
+ if (dwarf_linediscriminator (dw_line, &disc) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_linediscriminator: %s",
+ dwarf_errmsg (-1));
+
+ const char *dw_src;
+ Dwarf_Word dw_mtime;
+ Dwarf_Word dw_length;
+ dw_src = dwarf_linesrc (dw_line, &dw_mtime, &dw_length);
+ assert (strcmp (src, dw_src) == 0);
+ assert (mtime == dw_mtime);
+ assert (length == dw_length);
+
+ printf ("%zd %#" PRIx64 " %s:%d:%d\n"
+ " time: %#" PRIX64 ", len: %" PRIu64
+ ", idx: %d, b: %d, e: %d"
+ ", pe: %d, eb: %d, block: %d"
+ ", isa: %d, disc: %d\n",
+ i, addr, src, lineno, colno, mtime, length,
+ dw_op_index, begin, end, pend, ebegin, block, isa, disc);
+
+ Dwarf_Die *linecu = dwfl_linecu (line);
+ assert (cu == linecu);
+
+ Dwfl_Module *linemod = dwfl_linemodule (line);
+ assert (mod == linemod);
+ }
+ }
+ }
+ while (cu != NULL);
+
+ dwfl_end (dwfl);
+
+ return 0;
+}
--- /dev/null
+/* Test program for libdwfl symbol resolving
+ 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include ELFUTILS_HEADER(dwfl)
+#include <elf.h>
+#include <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <stdio_ext.h>
+#include <stdlib.h>
+#include <error.h>
+#include <string.h>
+
+static const char *
+gelf_type (GElf_Sym *sym)
+{
+ switch (GELF_ST_TYPE (sym->st_info))
+ {
+ case STT_NOTYPE:
+ return "NOTYPE";
+ case STT_OBJECT:
+ return "OBJECT";
+ case STT_FUNC:
+ return "FUNC";
+ case STT_SECTION:
+ return "SECTION";
+ case STT_FILE:
+ return "FILE";
+ case STT_COMMON:
+ return "COMMON";
+ case STT_TLS:
+ return "TLS";
+ default:
+ return "UNKNOWN";
+ }
+}
+
+static const char *
+gelf_bind (GElf_Sym *sym)
+{
+ switch (GELF_ST_BIND (sym->st_info))
+ {
+ case STB_LOCAL:
+ return "LOCAL";
+ case STB_GLOBAL:
+ return "GLOBAL";
+ case STB_WEAK:
+ return "WEAK";
+ default:
+ return "UNKNOWN";
+ }
+}
+
+static int
+gelf_bind_order (GElf_Sym *sym)
+{
+ switch (GELF_ST_BIND (sym->st_info))
+ {
+ case STB_LOCAL:
+ return 1;
+ case STB_WEAK:
+ return 2;
+ case STB_GLOBAL:
+ return 3;
+ default:
+ return 0;
+ }
+}
+
+static const char *
+elf_section_name (Elf *elf, GElf_Word shndx)
+{
+ GElf_Ehdr ehdr;
+ GElf_Shdr shdr;
+ Elf_Scn *scn = elf_getscn (elf, shndx);
+ gelf_getshdr (scn, &shdr);
+ gelf_getehdr (elf, &ehdr);
+ return elf_strptr (elf, ehdr.e_shstrndx, shdr.sh_name);
+}
+
+bool
+addr_in_section (Elf *elf, GElf_Word shndx, GElf_Addr addr)
+{
+ GElf_Shdr shdr;
+ Elf_Scn *scn = elf_getscn (elf, shndx);
+ gelf_getshdr (scn, &shdr);
+ return addr >= shdr.sh_addr && addr < shdr.sh_addr + shdr.sh_size;
+}
+
+static int
+list_syms (struct Dwfl_Module *mod,
+ void **user __attribute__ ((unused)), const char *mod_name,
+ Dwarf_Addr low_addr __attribute__ ((unused)),
+ void *arg __attribute__ ((unused)))
+{
+ int syms = dwfl_module_getsymtab (mod);
+ if (syms < 0)
+ {
+ printf ("%s: %s\n", mod_name, dwfl_errmsg (-1));
+ return DWARF_CB_OK;
+ }
+
+ for (int ndx = 0; ndx < syms; ndx++)
+ {
+ GElf_Sym sym;
+ GElf_Word shndxp;
+ Elf *elf;
+ Dwarf_Addr 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 (). */
+ if (GELF_ST_TYPE (sym.st_info) == STT_FUNC && shndxp != SHN_UNDEF)
+ {
+ /* Make sure the adjusted value really falls in the elf section. */
+ assert (addr_in_section (elf, shndxp, sym.st_value - bias));
+
+ GElf_Addr addr = value;
+ GElf_Sym asym;
+ GElf_Word ashndxp;
+ Elf *aelf;
+ Dwarf_Addr 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)
+ || 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))
+ && value <= sym.st_value);
+
+ addr = sym.st_value;
+ int res = dwfl_module_relocate_address (mod, &addr);
+ assert (res != -1);
+ if (shndxp < SHN_LORESERVE)
+ printf(", rel: %#" PRIx64 " (%s)", addr,
+ 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");
+ }
+
+ return DWARF_CB_OK;
+}
+
+int
+main (int argc, char *argv[])
+{
+ int remaining;
+ Dwfl *dwfl;
+ error_t res;
+
+ res = argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining, &dwfl);
+ assert (res == 0 && dwfl != NULL);
+
+ ptrdiff_t off = 0;
+ do
+ off = dwfl_getmodules (dwfl, list_syms, NULL, off);
+ while (off > 0);
+
+ dwfl_end (dwfl);
+
+ return off;
+}
--- /dev/null
+signed char fun_char (void) { return 5; }
+short fun_short (void) { return 6; }
+int fun_int (void) { return 7; }
+void *fun_ptr (void) { return &fun_ptr; }
+int fun_iptr (void) { return 8; }
+long fun_long (void) { return 9; }
+__int128 fun_int128 (void) { return 10; }
+
+typedef struct { int i[10]; } large_struct1_t;
+large_struct1_t fun_large_struct1 (void) {
+ large_struct1_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } };
+ return ret;
+}
+
+typedef struct { int i1; int i2; int i3; int i4; int i5;
+ int i6; int i7; int i8; int i9; int i10; } large_struct2_t;
+large_struct2_t fun_large_struct2 (void) {
+ large_struct2_t ret = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ return ret;
+}
+
+float fun_float (void) { return 1.5; }
+float _Complex fun_float_complex (void) { return 1.5 + 2.5i; }
+
+double fun_double (void) { return 2.5; }
+double _Complex fun_double_complex (void) { return 2.5 + 3.5i; }
+
+long double fun_long_double (void) { return 3.5; }
+long double _Complex fun_long_double_complex (void) { return 4.5 + 5.5i; }
+
+#ifdef FLOAT128
+__float128 fun_float128 (void) { return 3.5; }
+#endif
+
+// 8 byte vectors.
+
+typedef signed char __attribute__ ((vector_size (8))) vec_char_8_t;
+vec_char_8_t fun_vec_char_8 (void) {
+ vec_char_8_t ret = { 1, 2, 3, 4, 5, 6, 7, 8 };
+ return ret;
+}
+
+typedef short __attribute__ ((vector_size (8))) vec_short_8_t;
+vec_short_8_t fun_vec_short_8 (void) {
+ vec_short_8_t ret = { 2, 3, 4, 5 };
+ return ret;
+}
+
+typedef int __attribute__ ((vector_size (8))) vec_int_8_t;
+vec_int_8_t fun_vec_int_8 (void) {
+ vec_int_8_t ret = { 3, 4 };
+ return ret;
+}
+
+typedef long __attribute__ ((vector_size (8))) vec_long_8_t;
+vec_long_8_t fun_vec_long_8 (void) {
+ vec_long_8_t ret = { 5 };
+ return ret;
+}
+
+typedef float __attribute__ ((vector_size (8))) vec_float_8_t;
+vec_float_8_t fun_vec_float_8 (void) {
+ vec_float_8_t ret = { 1.5, 2.5 };
+ return ret;
+}
+
+typedef double __attribute__ ((vector_size (8))) vec_double_8_t;
+#ifndef AARCH64_BUG_1032854
+// https://bugzilla.redhat.com/show_bug.cgi?id=1032854
+vec_double_8_t fun_vec_double_8 (void) {
+ vec_double_8_t ret = { 3.5 };
+ return ret;
+}
+#endif
+
+// 16 byte vectors.
+
+typedef signed char __attribute__ ((vector_size (16))) vec_char_16_t;
+vec_char_16_t fun_vec_char_16 (void) {
+ vec_char_16_t ret = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
+ return ret;
+}
+
+typedef short __attribute__ ((vector_size (16))) vec_short_16_t;
+vec_short_16_t fun_vec_short_16 (void) {
+ vec_short_16_t ret = { 2, 3, 4, 5, 6, 7, 8 };
+ return ret;
+}
+
+typedef int __attribute__ ((vector_size (16))) vec_int_16_t;
+vec_int_16_t fun_vec_int_16 (void) {
+ vec_int_16_t ret = { 2, 3, 4 };
+ return ret;
+}
+
+typedef long __attribute__ ((vector_size (16))) vec_long_16_t;
+vec_long_16_t fun_vec_long_16 (void) {
+ vec_long_16_t ret = { 3, 4 };
+ return ret;
+}
+
+typedef __int128 __attribute__ ((vector_size (16))) vec_int128_16_t;
+vec_int128_16_t fun_vec_int128_16 (void) {
+ vec_int128_16_t ret = { 999 };
+ return ret;
+}
+
+typedef float __attribute__ ((vector_size (16))) vec_float_16_t;
+vec_float_16_t fun_vec_float_16 (void) {
+ vec_float_16_t ret = { 1.5, 2.5, 3.5, 4.5 };
+ return ret;
+}
+
+typedef double __attribute__ ((vector_size (16))) vec_double_16_t;
+vec_double_16_t fun_vec_double_16 (void) {
+ vec_double_16_t ret = { 2.5, 5 };
+ return ret;
+}
+
+#ifdef FLOAT128
+typedef __float128 __attribute__ ((vector_size (16))) vec_float128_16_t;
+vec_float128_16_t fun_vec_float128_16 (void) {
+ vec_float128_16_t ret = { 7.5 };
+ return ret;
+}
+#endif
+
+// Homogeneous floating-point aggregates.
+
+typedef struct { float f; } hfa1_float_t;
+hfa1_float_t fun_hfa1_float (void) {
+ hfa1_float_t ret = { 1.5 };
+ return ret;
+}
+
+typedef struct { double f; } hfa1_double_t;
+hfa1_double_t fun_hfa1_double (void) {
+ hfa1_double_t ret = { 3.0 };
+ return ret;
+}
+
+typedef struct { long double f; } hfa1_long_double_t;
+hfa1_long_double_t fun_hfa1_long_double (void) {
+ hfa1_long_double_t ret = { 3.0 };
+ return ret;
+}
+
+typedef struct { float f[1]; } hfa1_float_a_t;
+hfa1_float_a_t fun_hfa1_float_a (void) {
+ hfa1_float_a_t ret = { { 1.5 } };
+ return ret;
+}
+
+typedef struct { double f[1]; } hfa1_double_a_t;
+hfa1_double_a_t fun_hfa1_double_a (void) {
+ hfa1_double_a_t ret = { { 3.0 } };
+ return ret;
+}
+
+typedef struct { long double f[1]; } hfa1_long_double_a_t;
+hfa1_long_double_a_t fun_hfa1_long_double_a (void) {
+ hfa1_long_double_a_t ret = { { 3.0 } };
+ return ret;
+}
+
+typedef struct { float f; float g; } hfa2_float_t;
+hfa2_float_t fun_hfa2_float (void) {
+ hfa2_float_t ret = { 1.5, 3.0 };
+ return ret;
+}
+
+typedef struct { double f; double g; } hfa2_double_t;
+hfa2_double_t fun_hfa2_double (void) {
+ hfa2_double_t ret = { 3.0, 4.5 };
+ return ret;
+}
+
+typedef struct { long double f; long double g; } hfa2_long_double_t;
+hfa2_long_double_t fun_hfa2_long_double (void) {
+ hfa2_long_double_t ret = { 3.0, 4.5 };
+ return ret;
+}
+
+typedef struct { float f[2]; } hfa2_float_a_t;
+hfa2_float_a_t fun_hfa2_float_a (void) {
+ hfa2_float_a_t ret = { { 2.5, 3.5 } };
+ return ret;
+}
+
+typedef struct { double f[2]; } hfa2_double_a_t;
+hfa2_double_a_t fun_hfa2_double_a (void) {
+ hfa2_double_a_t ret = { { 3.0, 3.5 } };
+ return ret;
+}
+
+typedef struct { long double f[2]; } hfa2_long_double_a_t;
+hfa2_long_double_a_t fun_hfa2_long_double_a (void) {
+ hfa2_long_double_a_t ret = { { 3.0, 4.0 } };
+ return ret;
+}
+
+typedef struct { float f; float g; float h; } hfa3_float_t;
+hfa3_float_t fun_hfa3_float (void) {
+ hfa3_float_t ret = { 1.5, 3.0, 4.5 };
+ return ret;
+}
+
+typedef struct { double f; double g; double h; } hfa3_double_t;
+hfa3_double_t fun_hfa3_double (void) {
+ hfa3_double_t ret = { 3.0, 4.5, 9.5 };
+ return ret;
+}
+
+typedef struct { long double f; long double g; long double h; } hfa3_long_double_t;
+hfa3_long_double_t fun_hfa3_long_double (void) {
+ hfa3_long_double_t ret = { 3.0, 4.5, 9.5 };
+ return ret;
+}
+
+typedef struct { float f[3]; } hfa3_float_a_t;
+hfa3_float_a_t fun_hfa3_float_a (void) {
+ hfa3_float_a_t ret = { { 3.5, 4.5, 5.5 } };
+ return ret;
+}
+
+typedef struct { double f[3]; } hfa3_double_a_t;
+hfa3_double_a_t fun_hfa3_double_a (void) {
+ hfa3_double_a_t ret = { { 3.0, 3.5, 4.0 } };
+ return ret;
+}
+
+typedef struct { long double f[3]; } hfa3_long_double_a_t;
+hfa3_long_double_a_t fun_hfa3_long_double_a (void) {
+ hfa3_long_double_a_t ret = { { 3.0, 4.0, 5.0 } };
+ return ret;
+}
+
+typedef struct { float f; float g; float h; float i; } hfa4_float_t;
+hfa4_float_t fun_hfa4_float (void) {
+ hfa4_float_t ret = { 1.5, 3.5, 4.5, 9.5 };
+ return ret;
+}
+
+typedef struct { double f; double g; double h; double i; } hfa4_double_t;
+hfa4_double_t fun_hfa4_double (void) {
+ hfa4_double_t ret = { 3.5, 4.5, 9.5, 1.5 };
+ return ret;
+}
+
+typedef struct { long double f; long double g; long double h; long double i; } hfa4_long_double_t;
+hfa4_long_double_t fun_hfa4_long_double (void) {
+ hfa4_long_double_t ret = { 3.5, 4.5, 9.5, 1.5 };
+ return ret;
+}
+
+typedef struct { float f[4]; } hfa4_float_a_t;
+hfa4_float_a_t fun_hfa4_float_a (void) {
+ hfa4_float_a_t ret = { { 4.5, 5.5, 6.5, 7.5 } };
+ return ret;
+}
+
+typedef struct { double f[4]; } hfa4_double_a_t;
+hfa4_double_a_t fun_hfa4_double_a (void) {
+ hfa4_double_a_t ret = { { 3.0, 4.5, 5.0, 5.5 } };
+ return ret;
+}
+
+typedef struct { long double f[4]; } hfa4_long_double_a_t;
+hfa4_long_double_a_t fun_hfa4_long_double_a (void) {
+ hfa4_long_double_a_t ret = { { 3.0, 4.0, 5.0, 6.0 } };
+ return ret;
+}
+
+typedef struct { float f; float g; float h; float i; float j; } nfa5_float_t;
+nfa5_float_t fun_nfa5_float (void) {
+ nfa5_float_t ret = { 1.5, 3.5, 4.5, 9.5, 10.5 };
+ return ret;
+}
+
+typedef struct { double f; double g; double h; double i; double j; } nfa5_double_t;
+nfa5_double_t fun_nfa5_double (void) {
+ nfa5_double_t ret = { 3.5, 4.5, 9.5, 1.5, 2.5 };
+ return ret;
+}
+
+typedef struct { long double f; long double g; long double h; long double i; long double j; } nfa5_long_double_t;
+nfa5_long_double_t fun_nfa5_long_double (void) {
+ nfa5_long_double_t ret = { 3.5, 4.5, 9.5, 1.5, 2.5 };
+ return ret;
+}
+
+typedef struct { float f[5]; } nfa5_float_a_t;
+nfa5_float_a_t fun_nfa5_float_a (void) {
+ nfa5_float_a_t ret = { { 4.5, 5.5, 6.5, 7.5, 9.5 } };
+ return ret;
+}
+
+typedef struct { double f[5]; } nfa5_double_a_t;
+nfa5_double_a_t fun_nfa5_double_a (void) {
+ nfa5_double_a_t ret = { { 3.0, 4.5, 5.0, 5.5, 6.5 } };
+ return ret;
+}
+
+typedef struct { long double f[5]; } nfa5_long_double_a_t;
+nfa5_long_double_a_t fun_nfa5_long_double_a (void) {
+ nfa5_long_double_a_t ret = { { 3.0, 4.0, 5.0, 6.0, 7.0 } };
+ return ret;
+}
+
+#ifdef FLOAT128
+typedef struct { __float128 f; } hfa1_float128_t;
+hfa1_float128_t fun_hfa1_float128 (void) {
+ hfa1_float128_t ret = { 4.5 };
+ return ret;
+}
+
+typedef struct { __float128 f; __float128 g; } hfa2_float128_t;
+hfa2_float128_t fun_hfa2_float128 (void) {
+ hfa2_float128_t ret = { 4.5, 9.5 };
+ return ret;
+}
+
+typedef struct { __float128 f; __float128 g; __float128 h; } hfa3_float128_t;
+hfa3_float128_t fun_hfa3_float128 (void) {
+ hfa3_float128_t ret = { 4.5, 9.5, 12.5 };
+ return ret;
+}
+
+typedef struct { __float128 f; __float128 g; __float128 h; __float128 i; } hfa4_float128_t;
+hfa4_float128_t fun_hfa4_float128 (void) {
+ hfa4_float128_t ret = { 4.5, 9.5, 3.5, 1.5 };
+ return ret;
+}
+#endif
+
+// Homogeneous vector aggregates of 1 element.
+
+typedef struct { vec_char_8_t a; } hva1_vec_char_8_t;
+hva1_vec_char_8_t fun_hva1_vec_char_8 (void) {
+ hva1_vec_char_8_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8 } };
+ return ret;
+}
+
+typedef struct { vec_short_8_t a; } hva1_vec_short_8_t;
+hva1_vec_short_8_t fun_hva1_vec_short_8 (void) {
+ hva1_vec_short_8_t ret = { { 2, 3, 4, 5 } };
+ return ret;
+}
+
+typedef struct { vec_int_8_t a; } hva1_vec_int_8_t;
+hva1_vec_int_8_t fun_hva1_vec_int_8 (void) {
+ hva1_vec_int_8_t ret = { { 3, 4 } };
+ return ret;
+}
+
+typedef struct { vec_long_8_t a; } hva1_vec_long_8_t;
+hva1_vec_long_8_t fun_hva1_vec_long_8 (void) {
+ hva1_vec_long_8_t ret = { { 5 } };
+ return ret;
+}
+
+typedef struct { vec_float_8_t a; } hva1_vec_float_8_t;
+hva1_vec_float_8_t fun_hva1_vec_float_8 (void) {
+ hva1_vec_float_8_t ret = { { 1.5, 2.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_8_t a; } hva1_vec_double_8_t;
+hva1_vec_double_8_t fun_hva1_vec_double_8 (void) {
+ hva1_vec_double_8_t ret = { { 3.5 } };
+ return ret;
+}
+
+typedef struct { vec_char_16_t a; } hva1_vec_char_16_t;
+hva1_vec_char_16_t fun_hva1_vec_char_16_t (void) {
+ hva1_vec_char_16_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16 } };
+ return ret;
+}
+
+typedef struct { vec_short_16_t a; } hva1_vec_short_16_t;
+hva1_vec_short_16_t fun_hva1_vec_short_16_t (void) {
+ hva1_vec_short_16_t ret = { { 2, 3, 4, 5, 6, 7, 8, 9 } };
+ return ret;
+}
+
+typedef struct { vec_int_16_t a; } hva1_vec_int_16_t;
+hva1_vec_int_16_t fun_hva1_vec_int_16_t (void) {
+ hva1_vec_int_16_t ret = { { 3, 4, 5, 6 } };
+ return ret;
+}
+
+typedef struct { vec_long_16_t a; } hva1_vec_long_16_t;
+hva1_vec_long_16_t fun_hva1_vec_long_16_t (void) {
+ hva1_vec_long_16_t ret = { { 4, 5 } };
+ return ret;
+}
+
+typedef struct { vec_int128_16_t a; } hva1_vec_int128_16_t;
+hva1_vec_int128_16_t fun_hva1_vec_int128_16_t (void) {
+ hva1_vec_int128_16_t ret = { { 6 } };
+ return ret;
+}
+
+typedef struct { vec_float_16_t a; } hva1_vec_float_16_t;
+hva1_vec_float_16_t fun_hva1_vec_float_16_t (void) {
+ hva1_vec_float_16_t ret = { { 1.5, 2.5, 3.5, 4.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_16_t a; } hva1_vec_double_16_t;
+hva1_vec_double_16_t fun_hva1_vec_double_16_t (void) {
+ hva1_vec_double_16_t ret = { { 2.5, 3.5 } };
+ return ret;
+}
+
+#ifdef FLOAT128
+typedef struct { vec_float128_16_t a; } hva1_vec_float128_16_t;
+hva1_vec_float128_16_t fun_hva1_vec_float128_16_t (void) {
+ hva1_vec_float128_16_t ret = { { 4.5 } };
+ return ret;
+}
+#endif
+
+// Homogeneous vector aggregates of 2 elements.
+
+typedef struct { vec_char_8_t a; vec_char_8_t b; } hva2_vec_char_8_t;
+hva2_vec_char_8_t fun_hva2_vec_char_8 (void) {
+ hva2_vec_char_8_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8 },
+ { 2, 3, 4, 5, 6, 7, 8, 9 } };
+ return ret;
+}
+
+typedef struct { vec_short_8_t a; vec_short_8_t b; } hva2_vec_short_8_t;
+hva2_vec_short_8_t fun_hva2_vec_short_8 (void) {
+ hva2_vec_short_8_t ret = { { 2, 3, 4, 5 },
+ { 3, 4, 5, 6 } };
+ return ret;
+}
+
+typedef struct { vec_int_8_t a; vec_int_8_t b; } hva2_vec_int_8_t;
+hva2_vec_int_8_t fun_hva2_vec_int_8 (void) {
+ hva2_vec_int_8_t ret = { { 3, 4 },
+ { 4, 5 } };
+ return ret;
+}
+
+typedef struct { vec_long_8_t a; vec_long_8_t b; } hva2_vec_long_8_t;
+hva2_vec_long_8_t fun_hva2_vec_long_8 (void) {
+ hva2_vec_long_8_t ret = { { 5 },
+ { 6 } };
+ return ret;
+}
+
+typedef struct { vec_float_8_t a; vec_float_8_t b; } hva2_vec_float_8_t;
+hva2_vec_float_8_t fun_hva2_vec_float_8 (void) {
+ hva2_vec_float_8_t ret = { { 1.5, 2.5 },
+ { 2.5, 3.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_8_t a; vec_double_8_t b; } hva2_vec_double_8_t;
+hva2_vec_double_8_t fun_hva2_vec_double_8 (void) {
+ hva2_vec_double_8_t ret = { { 3.5 },
+ { 4.5 } };
+ return ret;
+}
+
+typedef struct { vec_char_16_t a; vec_char_16_t b; } hva2_vec_char_16_t;
+hva2_vec_char_16_t fun_hva2_vec_char_16_t (void) {
+ hva2_vec_char_16_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16 },
+ { 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17 } };
+ return ret;
+}
+
+typedef struct { vec_short_16_t a; vec_short_16_t b; } hva2_vec_short_16_t;
+hva2_vec_short_16_t fun_hva2_vec_short_16_t (void) {
+ hva2_vec_short_16_t ret = { { 2, 3, 4, 5, 6, 7, 8, 9 },
+ { 3, 4, 5, 6, 7, 8, 9, 10 } };
+ return ret;
+}
+
+typedef struct { vec_int_16_t a; vec_int_16_t b; } hva2_vec_int_16_t;
+hva2_vec_int_16_t fun_hva2_vec_int_16_t (void) {
+ hva2_vec_int_16_t ret = { { 3, 4, 5, 6 },
+ { 4, 5, 6, 7 } };
+ return ret;
+}
+
+typedef struct { vec_long_16_t a; vec_long_16_t b; } hva2_vec_long_16_t;
+hva2_vec_long_16_t fun_hva2_vec_long_16_t (void) {
+ hva2_vec_long_16_t ret = { { 4, 5 },
+ { 5, 6 } };
+ return ret;
+}
+
+typedef struct { vec_int128_16_t a; vec_int128_16_t b; } hva2_vec_int128_16_t;
+hva2_vec_int128_16_t fun_hva2_vec_int128_16_t (void) {
+ hva2_vec_int128_16_t ret = { { 6 },
+ { 7 } };
+ return ret;
+}
+
+typedef struct { vec_float_16_t a; vec_float_16_t b; } hva2_vec_float_16_t;
+hva2_vec_float_16_t fun_hva2_vec_float_16_t (void) {
+ hva2_vec_float_16_t ret = { { 1.5, 2.5, 3.5, 4.5 },
+ { 2.5, 3.5, 4.5, 5.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_16_t a; vec_double_16_t b; } hva2_vec_double_16_t;
+hva2_vec_double_16_t fun_hva2_vec_double_16_t (void) {
+ hva2_vec_double_16_t ret = { { 2.5, 3.5 },
+ { 3.5, 4.5 } };
+ return ret;
+}
+
+#ifdef FLOAT128
+typedef struct { vec_float128_16_t a; vec_float128_16_t b; } hva2_vec_float128_16_t;
+hva2_vec_float128_16_t fun_hva2_vec_float128_16_t (void) {
+ hva2_vec_float128_16_t ret = { { 4.5 },
+ { 5.5 } };
+ return ret;
+}
+#endif
+
+// Homogeneous vector aggregates of 3 elements.
+
+typedef struct { vec_char_8_t a; vec_char_8_t b; vec_char_8_t c; } hva3_vec_char_8_t;
+hva3_vec_char_8_t fun_hva3_vec_char_8 (void) {
+ hva3_vec_char_8_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8 },
+ { 2, 3, 4, 5, 6, 7, 8, 9 },
+ { 3, 4, 5, 6, 7, 8, 9, 10 } };
+ return ret;
+}
+
+typedef struct { vec_short_8_t a; vec_short_8_t b; vec_short_8_t c; } hva3_vec_short_8_t;
+hva3_vec_short_8_t fun_hva3_vec_short_8 (void) {
+ hva3_vec_short_8_t ret = { { 2, 3, 4, 5 },
+ { 3, 4, 5, 6 },
+ { 4, 5, 6, 7 } };
+ return ret;
+}
+
+typedef struct { vec_int_8_t a; vec_int_8_t b; vec_int_8_t c; } hva3_vec_int_8_t;
+hva3_vec_int_8_t fun_hva3_vec_int_8 (void) {
+ hva3_vec_int_8_t ret = { { 3, 4 },
+ { 4, 5 },
+ { 5, 6 } };
+ return ret;
+}
+
+typedef struct { vec_long_8_t a; vec_long_8_t b; vec_long_8_t c; } hva3_vec_long_8_t;
+hva3_vec_long_8_t fun_hva3_vec_long_8 (void) {
+ hva3_vec_long_8_t ret = { { 5 },
+ { 6 },
+ { 7 } };
+ return ret;
+}
+
+typedef struct { vec_float_8_t a; vec_float_8_t b; vec_float_8_t c; } hva3_vec_float_8_t;
+hva3_vec_float_8_t fun_hva3_vec_float_8 (void) {
+ hva3_vec_float_8_t ret = { { 1.5, 2.5 },
+ { 2.5, 3.5 },
+ { 3.5, 4.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_8_t a; vec_double_8_t b; vec_double_8_t c; } hva3_vec_double_8_t;
+hva3_vec_double_8_t fun_hva3_vec_double_8 (void) {
+ hva3_vec_double_8_t ret = { { 3.5 },
+ { 4.5 },
+ { 5.5 } };
+ return ret;
+}
+
+typedef struct { vec_char_16_t a; vec_char_16_t b; vec_char_16_t c; } hva3_vec_char_16_t;
+hva3_vec_char_16_t fun_hva3_vec_char_16_t (void) {
+ hva3_vec_char_16_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16 },
+ { 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17 },
+ { 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18 } };
+ return ret;
+}
+
+typedef struct { vec_short_16_t a; vec_short_16_t b; vec_short_16_t c; } hva3_vec_short_16_t;
+hva3_vec_short_16_t fun_hva3_vec_short_16_t (void) {
+ hva3_vec_short_16_t ret = { { 2, 3, 4, 5, 6, 7, 8, 9 },
+ { 3, 4, 5, 6, 7, 8, 9, 10 },
+ { 4, 5, 6, 7, 8, 9, 10, 11 } };
+ return ret;
+}
+
+typedef struct { vec_int_16_t a; vec_int_16_t b; vec_int_16_t c; } hva3_vec_int_16_t;
+hva3_vec_int_16_t fun_hva3_vec_int_16_t (void) {
+ hva3_vec_int_16_t ret = { { 3, 4, 5, 6 },
+ { 4, 5, 6, 7 },
+ { 5, 6, 7, 8 } };
+ return ret;
+}
+
+typedef struct { vec_long_16_t a; vec_long_16_t b; vec_long_16_t c; } hva3_vec_long_16_t;
+hva3_vec_long_16_t fun_hva3_vec_long_16_t (void) {
+ hva3_vec_long_16_t ret = { { 3, 4 },
+ { 4, 5 },
+ { 5, 6 } };
+ return ret;
+}
+
+typedef struct { vec_int128_16_t a; vec_int128_16_t b; vec_int128_16_t c; } hva3_vec_int128_16_t;
+hva3_vec_int128_16_t fun_hva3_vec_int128_16_t (void) {
+ hva3_vec_int128_16_t ret = { { 6 },
+ { 7 },
+ { 8 } };
+ return ret;
+}
+
+typedef struct { vec_float_16_t a; vec_float_16_t b; vec_float_16_t c; } hva3_vec_float_16_t;
+hva3_vec_float_16_t fun_hva3_vec_float_16_t (void) {
+ hva3_vec_float_16_t ret = { { 1.5, 2.5, 3.5, 4.5 },
+ { 2.5, 3.5, 4.5, 5.5 },
+ { 3.5, 4.5, 5.5, 6.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_16_t a; vec_double_16_t b; vec_double_16_t c; } hva3_vec_double_16_t;
+hva3_vec_double_16_t fun_hva3_vec_double_16_t (void) {
+ hva3_vec_double_16_t ret = { { 2.5, 3.5 },
+ { 3.5, 4.5 },
+ { 4.5, 5.5 } };
+ return ret;
+}
+
+#ifdef FLOAT128
+typedef struct { vec_float128_16_t a; vec_float128_16_t b; vec_float128_16_t c; } hva3_vec_float128_16_t;
+hva3_vec_float128_16_t fun_hva3_vec_float128_16_t (void) {
+ hva3_vec_float128_16_t ret = { { 4.5 },
+ { 5.5 },
+ { 6.5 } };
+ return ret;
+}
+#endif
+
+// Homogeneous vector aggregates of 3 elements.
+
+typedef struct { vec_char_8_t a; vec_char_8_t b; vec_char_8_t c; vec_char_8_t d; } hva4_vec_char_8_t;
+hva4_vec_char_8_t fun_hva4_vec_char_8 (void) {
+ hva4_vec_char_8_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8 },
+ { 2, 3, 4, 5, 6, 7, 8, 9 },
+ { 3, 4, 5, 6, 7, 8, 9, 10 },
+ { 4, 5, 6, 7, 8, 9, 10, 11 } };
+ return ret;
+}
+
+typedef struct { vec_short_8_t a; vec_short_8_t b; vec_short_8_t c; vec_short_8_t d; } hva4_vec_short_8_t;
+hva4_vec_short_8_t fun_hva4_vec_short_8 (void) {
+ hva4_vec_short_8_t ret = { { 2, 3, 4, 5 },
+ { 3, 4, 5, 6 },
+ { 4, 5, 6, 7 },
+ { 5, 6, 7, 8 } };
+ return ret;
+}
+
+typedef struct { vec_int_8_t a; vec_int_8_t b; vec_int_8_t c; vec_int_8_t d; } hva4_vec_int_8_t;
+hva4_vec_int_8_t fun_hva4_vec_int_8 (void) {
+ hva4_vec_int_8_t ret = { { 3, 4 },
+ { 4, 5 },
+ { 5, 6 },
+ { 6, 7 } };
+ return ret;
+}
+
+typedef struct { vec_long_8_t a; vec_long_8_t b; vec_long_8_t c; vec_long_8_t d; } hva4_vec_long_8_t;
+hva4_vec_long_8_t fun_hva4_vec_long_8 (void) {
+ hva4_vec_long_8_t ret = { { 5 },
+ { 6 },
+ { 7 },
+ { 8 } };
+ return ret;
+}
+
+typedef struct { vec_float_8_t a; vec_float_8_t b; vec_float_8_t c; vec_float_8_t d; } hva4_vec_float_8_t;
+hva4_vec_float_8_t fun_hva4_vec_float_8 (void) {
+ hva4_vec_float_8_t ret = { { 1.5, 2.5 },
+ { 2.5, 3.5 },
+ { 3.5, 4.5 },
+ { 4.5, 5.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_8_t a; vec_double_8_t b; vec_double_8_t c; vec_double_8_t d; } hva4_vec_double_8_t;
+hva4_vec_double_8_t fun_hva4_vec_double_8 (void) {
+ hva4_vec_double_8_t ret = { { 3.5 },
+ { 4.5 },
+ { 5.5 },
+ { 6.5 } };
+ return ret;
+}
+
+typedef struct { vec_char_16_t a; vec_char_16_t b; vec_char_16_t c; vec_char_16_t d; } hva4_vec_char_16_t;
+hva4_vec_char_16_t fun_hva4_vec_char_16_t (void) {
+ hva4_vec_char_16_t ret = { { 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16 },
+ { 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17 },
+ { 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18 },
+ { 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19 } };
+ return ret;
+}
+
+typedef struct { vec_short_16_t a; vec_short_16_t b; vec_short_16_t c; vec_short_16_t d; } hva4_vec_short_16_t;
+hva4_vec_short_16_t fun_hva4_vec_short_16_t (void) {
+ hva4_vec_short_16_t ret = { { 2, 3, 4, 5, 6, 7, 8, 9 },
+ { 3, 4, 5, 6, 7, 8, 9, 10 },
+ { 4, 5, 6, 7, 8, 9, 10, 11 },
+ { 5, 6, 7, 8, 9, 10, 11, 12 } };
+ return ret;
+}
+
+typedef struct { vec_int_16_t a; vec_int_16_t b; vec_int_16_t c; vec_int_16_t d; } hva4_vec_int_16_t;
+hva4_vec_int_16_t fun_hva4_vec_int_16_t (void) {
+ hva4_vec_int_16_t ret = { { 3, 4, 5, 6 },
+ { 4, 5, 6, 7 },
+ { 5, 6, 7, 8 },
+ { 6, 7, 8, 9 } };
+ return ret;
+}
+
+typedef struct { vec_long_16_t a; vec_long_16_t b; vec_long_16_t c; vec_long_16_t d; } hva4_vec_long_16_t;
+hva4_vec_long_16_t fun_hva4_vec_long_16_t (void) {
+ hva4_vec_long_16_t ret = { { 3, 4 },
+ { 4, 5 },
+ { 5, 6 },
+ { 6, 7 } };
+ return ret;
+}
+
+typedef struct { vec_int128_16_t a; vec_int128_16_t b; vec_int128_16_t c; vec_int128_16_t d; } hva4_vec_int128_16_t;
+hva4_vec_int128_16_t fun_hva4_vec_int128_16_t (void) {
+ hva4_vec_int128_16_t ret = { { 6 },
+ { 7 },
+ { 8 },
+ { 9 } };
+ return ret;
+}
+
+typedef struct { vec_float_16_t a; vec_float_16_t b; vec_float_16_t c; vec_float_16_t d; } hva4_vec_float_16_t;
+hva4_vec_float_16_t fun_hva4_vec_float_16_t (void) {
+ hva4_vec_float_16_t ret = { { 1.5, 2.5, 3.5, 4.5 },
+ { 2.5, 3.5, 4.5, 5.5 },
+ { 3.5, 4.5, 5.5, 6.5 },
+ { 4.5, 5.5, 6.5, 7.5 } };
+ return ret;
+}
+
+typedef struct { vec_double_16_t a; vec_double_16_t b; vec_double_16_t c; vec_double_16_t d; } hva4_vec_double_16_t;
+hva4_vec_double_16_t fun_hva4_vec_double_16_t (void) {
+ hva4_vec_double_16_t ret = { { 2.5, 3.5 },
+ { 3.5, 4.5 },
+ { 4.5, 5.5 },
+ { 5.5, 6.5 } };
+ return ret;
+}
+
+#ifdef FLOAT128
+typedef struct { vec_float128_16_t a; vec_float128_16_t b; vec_float128_16_t c; vec_float128_16_t d; } hva4_vec_float128_16_t;
+hva4_vec_float128_16_t fun_hva4_vec_float128_16_t (void) {
+ hva4_vec_float128_16_t ret = { { 4.5 },
+ { 5.5 },
+ { 6.5 },
+ { 7.5 } };
+ return ret;
+}
+#endif
+
+// Mixed HFA.
+typedef struct { float _Complex a; float b; } mixed_hfa3_cff_t;
+mixed_hfa3_cff_t fun_mixed_hfa3_cff (void) {
+ mixed_hfa3_cff_t ret = { 1.5 + 2.5i, 3.5 };
+ return ret;
+}
+
+typedef struct { double _Complex a; double b; } mixed_hfa3_cdd_t;
+mixed_hfa3_cdd_t fun_mixed_hfa3_cdd (void) {
+ mixed_hfa3_cdd_t ret = { 1.5 + 2.5i, 3.5 };
+ return ret;
+}
+
+typedef struct { long double _Complex a; long double b; } mixed_hfa3_cldld_t;
+mixed_hfa3_cldld_t fun_mixed_hfa3_cldld (void) {
+ mixed_hfa3_cldld_t ret = { 1.5 + 2.5i, 3.5 };
+ return ret;
+}
+
+typedef struct { float b; float _Complex a; } mixed_hfa3_fcf_t;
+mixed_hfa3_fcf_t fun_mixed_hfa3_fcf (void) {
+ mixed_hfa3_fcf_t ret = { 3.5, 1.5 + 2.5i };
+ return ret;
+}
+
+typedef struct { double b; double _Complex a; } mixed_hfa3_dcd_t;
+mixed_hfa3_dcd_t fun_mixed_hfa3_dcd (void) {
+ mixed_hfa3_dcd_t ret = { 3.5, 1.5 + 2.5i };
+ return ret;
+}
+
+typedef struct { long double b; long double _Complex a; } mixed_hfa3_ldcld_t;
+mixed_hfa3_ldcld_t fun_mixed_hfa3_ldcld (void) {
+ mixed_hfa3_ldcld_t ret = { 3.5, 1.5 + 2.5i };
+ return ret;
+}
+
+typedef struct { vec_float_8_t a; vec_short_8_t b; } mixed_hfa2_fltsht_t;
+mixed_hfa2_fltsht_t fun_mixed_hfa2_fltsht_t (void) {
+ mixed_hfa2_fltsht_t ret = { { 3.5, 4.5 }, { 1, 2, 3, 4 } };
+ return ret;
+}
+
+int main(int argc, char *argv[])
+{
+ return 0;
+}
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# // g++ x.cpp -g -fPIC -olibx.so -shared -O3 -fvisibility=hidden
+#
+# void foobar()
+# {
+# __asm__ ( "nop" ::: );
+# }
+#
+# void fubar()
+# {
+# __asm__ ( "nop" ::: );
+# }
+#
+# void bar()
+# {
+# foobar();
+# }
+#
+# void baz()
+# {
+# fubar();
+# }
+#
+# void foo()
+# {
+# bar();
+# baz();
+# }
+#
+# void fu()
+# {
+# __asm__ ( "nop" ::: );
+# fubar();
+# foobar();
+# }
+
+testfiles testfile-inlines
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005a0 <<\EOF
+/tmp/x.cpp:5
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005a1 <<\EOF
+/tmp/x.cpp:6
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005b0 <<\EOF
+/tmp/x.cpp:10
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005b1 <<\EOF
+/tmp/x.cpp:11
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005c0 <<\EOF
+/tmp/x.cpp:5
+/tmp/x.cpp:15
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005d0 <<\EOF
+/tmp/x.cpp:10
+/tmp/x.cpp:20
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005e0 <<\EOF
+/tmp/x.cpp:5
+/tmp/x.cpp:15
+/tmp/x.cpp:25
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005e1 <<\EOF
+/tmp/x.cpp:10
+/tmp/x.cpp:20
+/tmp/x.cpp:26
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005f1 <<\EOF
+/tmp/x.cpp:10
+/tmp/x.cpp:32
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-inlines 0x00000000000005f2 <<\EOF
+/tmp/x.cpp:5
+/tmp/x.cpp:33
+EOF
+
+# All together now (plus function names).
+testrun_compare ${abs_top_builddir}/src/addr2line -f -i -e testfile-inlines 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f1 0x00000000000005f2 <<\EOF
+foobar
+/tmp/x.cpp:5
+foobar
+/tmp/x.cpp:6
+fubar
+/tmp/x.cpp:10
+fubar
+/tmp/x.cpp:11
+foobar inlined at /tmp/x.cpp:15 in _Z3barv
+/tmp/x.cpp:5
+bar
+/tmp/x.cpp:15
+fubar inlined at /tmp/x.cpp:20 in _Z3bazv
+/tmp/x.cpp:10
+baz
+/tmp/x.cpp:20
+foobar inlined at /tmp/x.cpp:15 in _Z3foov
+/tmp/x.cpp:5
+bar
+/tmp/x.cpp:15
+_Z3foov
+/tmp/x.cpp:25
+fubar inlined at /tmp/x.cpp:20 in _Z3foov
+/tmp/x.cpp:10
+baz
+/tmp/x.cpp:20
+_Z3foov
+/tmp/x.cpp:26
+fubar inlined at /tmp/x.cpp:32 in _Z2fuv
+/tmp/x.cpp:10
+_Z2fuv
+/tmp/x.cpp:32
+foobar inlined at /tmp/x.cpp:33 in _Z2fuv
+/tmp/x.cpp:5
+_Z2fuv
+/tmp/x.cpp:33
+EOF
+
+exit 0
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+testfiles testfile
+tempfiles good.out stdin.nl stdin.nl.out stdin.nonl stdin.nonl.out foo.out
+tempfiles addr2line.out
+
+cat > good.out <<\EOF
+foo
+/home/drepper/gnu/new-bu/build/ttt/f.c:3
+bar
+/home/drepper/gnu/new-bu/build/ttt/b.c:4
+foo
+/home/drepper/gnu/new-bu/build/ttt/f.c:3
+bar
+/home/drepper/gnu/new-bu/build/ttt/b.c:4
+foo
+/home/drepper/gnu/new-bu/build/ttt/f.c:3
+bar
+/home/drepper/gnu/new-bu/build/ttt/b.c:4
+foo
+/home/drepper/gnu/new-bu/build/ttt/f.c:3
+bar
+/home/drepper/gnu/new-bu/build/ttt/b.c:4
+EOF
+
+echo "# Everything on the command line"
+cat good.out | testrun_compare ${abs_top_builddir}/src/addr2line -f -e testfile 0x08048468 0x0804845c foo bar foo+0x0 bar+0x0 foo-0x0 bar-0x0
+
+cat > stdin.nl <<\EOF
+0x08048468
+0x0804845c
+foo
+bar
+foo+0x0
+bar+0x0
+foo-0x0
+bar-0x0
+EOF
+
+echo "# Everything from stdin (with newlines)."
+cat stdin.nl | testrun ${abs_top_builddir}/src/addr2line -f -e testfile > stdin.nl.out || exit 1
+cmp good.out stdin.nl.out || exit 1
+
+cat > foo.out <<\EOF
+foo
+/home/drepper/gnu/new-bu/build/ttt/f.c:3
+EOF
+
+echo "# stdin without newline address, just EOF."
+echo -n "0x08048468" | testrun ${abs_top_builddir}/src/addr2line -f -e testfile > stdin.nonl.out || exit 1
+cmp foo.out stdin.nonl.out || exit 1
+
+echo "# stdin without newline symbol, just EOF."
+echo -n "foo" | testrun ${abs_top_builddir}/src/addr2line -f -e testfile > stdin.nl.out || exit 1
+cmp foo.out stdin.nonl.out || exit 1
+
+exit 0
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2013
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Note some testfiles are also used in run-allregs.sh.
+
+# Shows return address, CFA location expression and register rules
+# from ABI's default CFI program as setup by arch ebl backend hook
+# abi_cfi unless overridden by CIE and FDE program at given address.
+
+# EM_386 (function main 0x080489b8)
+testfiles testfile11
+testrun_compare ${abs_builddir}/addrcfi -e testfile11 0x080489b8 <<\EOF
+.eh_frame has 0x80489b8 => [0x80489b8, 0x80489b9):
+ return address in reg8
+ CFA location expression: bregx(4,4)
+ integer reg0 (%eax): undefined
+ integer reg1 (%ecx): undefined
+ integer reg2 (%edx): undefined
+ integer reg3 (%ebx): same_value
+ integer reg4 (%esp): location expression: call_frame_cfa stack_value
+ integer reg5 (%ebp): same_value
+ integer reg6 (%esi): same_value
+ integer reg7 (%edi): same_value
+ integer reg8 (%eip): location expression: call_frame_cfa plus_uconst(-4)
+ integer reg9 (%eflags): undefined
+ integer reg10 (%trapno): undefined
+ x87 reg11 (%st0): undefined
+ x87 reg12 (%st1): undefined
+ x87 reg13 (%st2): undefined
+ x87 reg14 (%st3): undefined
+ x87 reg15 (%st4): undefined
+ x87 reg16 (%st5): undefined
+ x87 reg17 (%st6): undefined
+ x87 reg18 (%st7): undefined
+ SSE reg21 (%xmm0): undefined
+ SSE reg22 (%xmm1): undefined
+ SSE reg23 (%xmm2): undefined
+ SSE reg24 (%xmm3): undefined
+ SSE reg25 (%xmm4): undefined
+ SSE reg26 (%xmm5): undefined
+ SSE reg27 (%xmm6): undefined
+ SSE reg28 (%xmm7): undefined
+ MMX reg29 (%mm0): undefined
+ MMX reg30 (%mm1): undefined
+ MMX reg31 (%mm2): undefined
+ MMX reg32 (%mm3): undefined
+ MMX reg33 (%mm4): undefined
+ MMX reg34 (%mm5): undefined
+ MMX reg35 (%mm6): undefined
+ MMX reg36 (%mm7): undefined
+ FPU-control reg37 (%fctrl): undefined
+ FPU-control reg38 (%fstat): undefined
+ FPU-control reg39 (%mxcsr): undefined
+ segment reg40 (%es): same_value
+ segment reg41 (%cs): same_value
+ segment reg42 (%ss): same_value
+ segment reg43 (%ds): same_value
+ segment reg44 (%fs): same_value
+ segment reg45 (%gs): same_value
+.debug_frame has 0x80489b8 => [0x80489b8, 0x80489b9):
+ return address in reg8
+ CFA location expression: bregx(4,4)
+ integer reg0 (%eax): undefined
+ integer reg1 (%ecx): undefined
+ integer reg2 (%edx): undefined
+ integer reg3 (%ebx): same_value
+ integer reg4 (%esp): location expression: call_frame_cfa stack_value
+ integer reg5 (%ebp): same_value
+ integer reg6 (%esi): same_value
+ integer reg7 (%edi): same_value
+ integer reg8 (%eip): location expression: call_frame_cfa plus_uconst(-4)
+ integer reg9 (%eflags): undefined
+ integer reg10 (%trapno): undefined
+ x87 reg11 (%st0): undefined
+ x87 reg12 (%st1): undefined
+ x87 reg13 (%st2): undefined
+ x87 reg14 (%st3): undefined
+ x87 reg15 (%st4): undefined
+ x87 reg16 (%st5): undefined
+ x87 reg17 (%st6): undefined
+ x87 reg18 (%st7): undefined
+ SSE reg21 (%xmm0): undefined
+ SSE reg22 (%xmm1): undefined
+ SSE reg23 (%xmm2): undefined
+ SSE reg24 (%xmm3): undefined
+ SSE reg25 (%xmm4): undefined
+ SSE reg26 (%xmm5): undefined
+ SSE reg27 (%xmm6): undefined
+ SSE reg28 (%xmm7): undefined
+ MMX reg29 (%mm0): undefined
+ MMX reg30 (%mm1): undefined
+ MMX reg31 (%mm2): undefined
+ MMX reg32 (%mm3): undefined
+ MMX reg33 (%mm4): undefined
+ MMX reg34 (%mm5): undefined
+ MMX reg35 (%mm6): undefined
+ MMX reg36 (%mm7): undefined
+ FPU-control reg37 (%fctrl): undefined
+ FPU-control reg38 (%fstat): undefined
+ FPU-control reg39 (%mxcsr): undefined
+ segment reg40 (%es): same_value
+ segment reg41 (%cs): same_value
+ segment reg42 (%ss): same_value
+ segment reg43 (%ds): same_value
+ segment reg44 (%fs): same_value
+ segment reg45 (%gs): same_value
+EOF
+
+# EM_X86_64 (function foo 0x00000000000009d0)
+testfiles testfile12
+testrun_compare ${abs_builddir}/addrcfi -e testfile12 0x00000000000009d0 <<\EOF
+.eh_frame has 0x9d0 => [0x9d0, 0x9d1):
+ return address in reg16
+ CFA location expression: bregx(7,8)
+ integer reg0 (%rax): same_value
+ integer reg1 (%rdx): undefined
+ integer reg2 (%rcx): undefined
+ integer reg3 (%rbx): undefined
+ integer reg4 (%rsi): undefined
+ integer reg5 (%rdi): undefined
+ integer reg6 (%rbp): same_value
+ integer reg7 (%rsp): location expression: call_frame_cfa stack_value
+ integer reg8 (%r8): undefined
+ integer reg9 (%r9): undefined
+ integer reg10 (%r10): undefined
+ integer reg11 (%r11): undefined
+ integer reg12 (%r12): same_value
+ integer reg13 (%r13): same_value
+ integer reg14 (%r14): same_value
+ integer reg15 (%r15): same_value
+ integer reg16 (%rip): location expression: call_frame_cfa plus_uconst(-8)
+ SSE reg17 (%xmm0): undefined
+ SSE reg18 (%xmm1): undefined
+ SSE reg19 (%xmm2): undefined
+ SSE reg20 (%xmm3): undefined
+ SSE reg21 (%xmm4): undefined
+ SSE reg22 (%xmm5): undefined
+ SSE reg23 (%xmm6): undefined
+ SSE reg24 (%xmm7): undefined
+ SSE reg25 (%xmm8): undefined
+ SSE reg26 (%xmm9): undefined
+ SSE reg27 (%xmm10): undefined
+ SSE reg28 (%xmm11): undefined
+ SSE reg29 (%xmm12): undefined
+ SSE reg30 (%xmm13): undefined
+ SSE reg31 (%xmm14): undefined
+ SSE reg32 (%xmm15): undefined
+ x87 reg33 (%st0): undefined
+ x87 reg34 (%st1): undefined
+ x87 reg35 (%st2): undefined
+ x87 reg36 (%st3): undefined
+ x87 reg37 (%st4): undefined
+ x87 reg38 (%st5): undefined
+ x87 reg39 (%st6): undefined
+ x87 reg40 (%st7): undefined
+ MMX reg41 (%mm0): undefined
+ MMX reg42 (%mm1): undefined
+ MMX reg43 (%mm2): undefined
+ MMX reg44 (%mm3): undefined
+ MMX reg45 (%mm4): undefined
+ MMX reg46 (%mm5): undefined
+ MMX reg47 (%mm6): undefined
+ MMX reg48 (%mm7): undefined
+ integer reg49 (%rflags): undefined
+ segment reg50 (%es): undefined
+ segment reg51 (%cs): undefined
+ segment reg52 (%ss): undefined
+ segment reg53 (%ds): undefined
+ segment reg54 (%fs): undefined
+ segment reg55 (%gs): undefined
+ segment reg58 (%fs.base): undefined
+ segment reg59 (%gs.base): undefined
+ control reg62 (%tr): undefined
+ control reg63 (%ldtr): undefined
+ control reg64 (%mxcsr): undefined
+ control reg65 (%fcw): undefined
+ control reg66 (%fsw): undefined
+.debug_frame has 0x9d0 => [0x9d0, 0x9d1):
+ return address in reg16
+ CFA location expression: bregx(7,8)
+ integer reg0 (%rax): same_value
+ integer reg1 (%rdx): undefined
+ integer reg2 (%rcx): undefined
+ integer reg3 (%rbx): undefined
+ integer reg4 (%rsi): undefined
+ integer reg5 (%rdi): undefined
+ integer reg6 (%rbp): same_value
+ integer reg7 (%rsp): location expression: call_frame_cfa stack_value
+ integer reg8 (%r8): undefined
+ integer reg9 (%r9): undefined
+ integer reg10 (%r10): undefined
+ integer reg11 (%r11): undefined
+ integer reg12 (%r12): same_value
+ integer reg13 (%r13): same_value
+ integer reg14 (%r14): same_value
+ integer reg15 (%r15): same_value
+ integer reg16 (%rip): location expression: call_frame_cfa plus_uconst(-8)
+ SSE reg17 (%xmm0): undefined
+ SSE reg18 (%xmm1): undefined
+ SSE reg19 (%xmm2): undefined
+ SSE reg20 (%xmm3): undefined
+ SSE reg21 (%xmm4): undefined
+ SSE reg22 (%xmm5): undefined
+ SSE reg23 (%xmm6): undefined
+ SSE reg24 (%xmm7): undefined
+ SSE reg25 (%xmm8): undefined
+ SSE reg26 (%xmm9): undefined
+ SSE reg27 (%xmm10): undefined
+ SSE reg28 (%xmm11): undefined
+ SSE reg29 (%xmm12): undefined
+ SSE reg30 (%xmm13): undefined
+ SSE reg31 (%xmm14): undefined
+ SSE reg32 (%xmm15): undefined
+ x87 reg33 (%st0): undefined
+ x87 reg34 (%st1): undefined
+ x87 reg35 (%st2): undefined
+ x87 reg36 (%st3): undefined
+ x87 reg37 (%st4): undefined
+ x87 reg38 (%st5): undefined
+ x87 reg39 (%st6): undefined
+ x87 reg40 (%st7): undefined
+ MMX reg41 (%mm0): undefined
+ MMX reg42 (%mm1): undefined
+ MMX reg43 (%mm2): undefined
+ MMX reg44 (%mm3): undefined
+ MMX reg45 (%mm4): undefined
+ MMX reg46 (%mm5): undefined
+ MMX reg47 (%mm6): undefined
+ MMX reg48 (%mm7): undefined
+ integer reg49 (%rflags): undefined
+ segment reg50 (%es): undefined
+ segment reg51 (%cs): undefined
+ segment reg52 (%ss): undefined
+ segment reg53 (%ds): undefined
+ segment reg54 (%fs): undefined
+ segment reg55 (%gs): undefined
+ segment reg58 (%fs.base): undefined
+ segment reg59 (%gs.base): undefined
+ control reg62 (%tr): undefined
+ control reg63 (%ldtr): undefined
+ control reg64 (%mxcsr): undefined
+ control reg65 (%fcw): undefined
+ control reg66 (%fsw): undefined
+EOF
+
+# EM_PPC (function bar 0x100004c0)
+# Note. Only in .debug_frame, not in .eh_frame.
+#
+# = bar.c =
+#
+# static int b1 = 1;
+# int b2 = 1;
+#
+# static int
+# foo (int a)
+# {
+# return a + b2;
+# }
+#
+# int bar (int b)
+# {
+# return b - foo (b - b1);
+# }
+#
+# = foo.c =
+#
+# extern int bar (int b);
+# extern int b2;
+#
+# int
+# main (int argc, char ** argv)
+# {
+# return bar (argc + b2);
+# }
+#
+# gcc -g -O2 -m32 -c foo.c
+# gcc -g -O2 -m32 -c bar.c
+# gcc -g -O2 m32 -o testfileppc32 foo.o bar.o
+testfiles testfileppc32
+testrun_compare ${abs_builddir}/addrcfi -e testfileppc32 0x100004c0 <<\EOF
+dwarf_cfi_addrframe (.eh_frame): no matching address range
+.debug_frame has 0x100004c0 => [0x100004c0, 0x100004d0):
+ return address in reg65
+ CFA location expression: bregx(1)
+ integer reg0 (r0): undefined
+ integer reg1 (r1): location expression: call_frame_cfa stack_value
+ integer reg2 (r2): same_value
+ integer reg3 (r3): undefined
+ integer reg4 (r4): undefined
+ integer reg5 (r5): undefined
+ integer reg6 (r6): undefined
+ integer reg7 (r7): undefined
+ integer reg8 (r8): undefined
+ integer reg9 (r9): undefined
+ integer reg10 (r10): undefined
+ integer reg11 (r11): undefined
+ integer reg12 (r12): undefined
+ integer reg13 (r13): same_value
+ integer reg14 (r14): same_value
+ integer reg15 (r15): same_value
+ integer reg16 (r16): same_value
+ integer reg17 (r17): same_value
+ integer reg18 (r18): same_value
+ integer reg19 (r19): same_value
+ integer reg20 (r20): same_value
+ integer reg21 (r21): same_value
+ integer reg22 (r22): same_value
+ integer reg23 (r23): same_value
+ integer reg24 (r24): same_value
+ integer reg25 (r25): same_value
+ integer reg26 (r26): same_value
+ integer reg27 (r27): same_value
+ integer reg28 (r28): same_value
+ integer reg29 (r29): same_value
+ integer reg30 (r30): same_value
+ integer reg31 (r31): same_value
+ FPU reg32 (f0): undefined
+ FPU reg33 (f1): undefined
+ FPU reg34 (f2): undefined
+ FPU reg35 (f3): undefined
+ FPU reg36 (f4): undefined
+ FPU reg37 (f5): undefined
+ FPU reg38 (f6): undefined
+ FPU reg39 (f7): undefined
+ FPU reg40 (f8): undefined
+ FPU reg41 (f9): undefined
+ FPU reg42 (f10): undefined
+ FPU reg43 (f11): undefined
+ FPU reg44 (f12): undefined
+ FPU reg45 (f13): undefined
+ FPU reg46 (f14): undefined
+ FPU reg47 (f15): undefined
+ FPU reg48 (f16): undefined
+ FPU reg49 (f17): undefined
+ FPU reg50 (f18): undefined
+ FPU reg51 (f19): undefined
+ FPU reg52 (f20): undefined
+ FPU reg53 (f21): undefined
+ FPU reg54 (f22): undefined
+ FPU reg55 (f23): undefined
+ FPU reg56 (f24): undefined
+ FPU reg57 (f25): undefined
+ FPU reg58 (f26): undefined
+ FPU reg59 (f27): undefined
+ FPU reg60 (f28): undefined
+ FPU reg61 (f29): undefined
+ FPU reg62 (f30): undefined
+ FPU reg63 (f31): undefined
+ integer reg64 (cr): undefined
+ FPU reg65 (fpscr): same_value
+ integer reg66 (msr): undefined
+ vector reg67 (vscr): undefined
+ privileged reg70 (sr0): undefined
+ privileged reg71 (sr1): undefined
+ privileged reg72 (sr2): undefined
+ privileged reg73 (sr3): undefined
+ privileged reg74 (sr4): undefined
+ privileged reg75 (sr5): undefined
+ privileged reg76 (sr6): undefined
+ privileged reg77 (sr7): undefined
+ privileged reg78 (sr8): undefined
+ privileged reg79 (sr9): undefined
+ privileged reg80 (sr10): undefined
+ privileged reg81 (sr11): undefined
+ privileged reg82 (sr12): undefined
+ privileged reg83 (sr13): undefined
+ privileged reg84 (sr14): undefined
+ privileged reg85 (sr15): undefined
+ privileged reg100 (mq): undefined
+ privileged reg101 (xer): undefined
+ privileged reg102 (spr2): undefined
+ privileged reg103 (spr3): undefined
+ privileged reg104 (spr4): undefined
+ privileged reg105 (spr5): undefined
+ privileged reg106 (spr6): undefined
+ privileged reg107 (spr7): undefined
+ privileged reg108 (lr): undefined
+ privileged reg109 (ctr): undefined
+ privileged reg110 (spr10): undefined
+ privileged reg111 (spr11): undefined
+ privileged reg112 (spr12): undefined
+ privileged reg113 (spr13): undefined
+ privileged reg114 (spr14): undefined
+ privileged reg115 (spr15): undefined
+ privileged reg116 (spr16): undefined
+ privileged reg117 (spr17): undefined
+ privileged reg118 (dsisr): undefined
+ privileged reg119 (dar): undefined
+ privileged reg120 (spr20): undefined
+ privileged reg121 (spr21): undefined
+ privileged reg122 (dec): undefined
+ privileged reg123 (spr23): undefined
+ privileged reg124 (spr24): undefined
+ privileged reg125 (spr25): undefined
+ privileged reg126 (spr26): undefined
+ privileged reg127 (spr27): undefined
+ privileged reg128 (spr28): undefined
+ privileged reg129 (spr29): undefined
+ privileged reg130 (spr30): undefined
+ privileged reg131 (spr31): undefined
+ privileged reg132 (spr32): undefined
+ privileged reg133 (spr33): undefined
+ privileged reg134 (spr34): undefined
+ privileged reg135 (spr35): undefined
+ privileged reg136 (spr36): undefined
+ privileged reg137 (spr37): undefined
+ privileged reg138 (spr38): undefined
+ privileged reg139 (spr39): undefined
+ privileged reg140 (spr40): undefined
+ privileged reg141 (spr41): undefined
+ privileged reg142 (spr42): undefined
+ privileged reg143 (spr43): undefined
+ privileged reg144 (spr44): undefined
+ privileged reg145 (spr45): undefined
+ privileged reg146 (spr46): undefined
+ privileged reg147 (spr47): undefined
+ privileged reg148 (spr48): undefined
+ privileged reg149 (spr49): undefined
+ privileged reg150 (spr50): undefined
+ privileged reg151 (spr51): undefined
+ privileged reg152 (spr52): undefined
+ privileged reg153 (spr53): undefined
+ privileged reg154 (spr54): undefined
+ privileged reg155 (spr55): undefined
+ privileged reg156 (spr56): undefined
+ privileged reg157 (spr57): undefined
+ privileged reg158 (spr58): undefined
+ privileged reg159 (spr59): undefined
+ privileged reg160 (spr60): undefined
+ privileged reg161 (spr61): undefined
+ privileged reg162 (spr62): undefined
+ privileged reg163 (spr63): undefined
+ privileged reg164 (spr64): undefined
+ privileged reg165 (spr65): undefined
+ privileged reg166 (spr66): undefined
+ privileged reg167 (spr67): undefined
+ privileged reg168 (spr68): undefined
+ privileged reg169 (spr69): undefined
+ privileged reg170 (spr70): undefined
+ privileged reg171 (spr71): undefined
+ privileged reg172 (spr72): undefined
+ privileged reg173 (spr73): undefined
+ privileged reg174 (spr74): undefined
+ privileged reg175 (spr75): undefined
+ privileged reg176 (spr76): undefined
+ privileged reg177 (spr77): undefined
+ privileged reg178 (spr78): undefined
+ privileged reg179 (spr79): undefined
+ privileged reg180 (spr80): undefined
+ privileged reg181 (spr81): undefined
+ privileged reg182 (spr82): undefined
+ privileged reg183 (spr83): undefined
+ privileged reg184 (spr84): undefined
+ privileged reg185 (spr85): undefined
+ privileged reg186 (spr86): undefined
+ privileged reg187 (spr87): undefined
+ privileged reg188 (spr88): undefined
+ privileged reg189 (spr89): undefined
+ privileged reg190 (spr90): undefined
+ privileged reg191 (spr91): undefined
+ privileged reg192 (spr92): undefined
+ privileged reg193 (spr93): undefined
+ privileged reg194 (spr94): undefined
+ privileged reg195 (spr95): undefined
+ privileged reg196 (spr96): undefined
+ privileged reg197 (spr97): undefined
+ privileged reg198 (spr98): undefined
+ privileged reg199 (spr99): undefined
+ privileged reg200 (spr100): undefined
+ privileged reg201 (spr101): undefined
+ privileged reg202 (spr102): undefined
+ privileged reg203 (spr103): undefined
+ privileged reg204 (spr104): undefined
+ privileged reg205 (spr105): undefined
+ privileged reg206 (spr106): undefined
+ privileged reg207 (spr107): undefined
+ privileged reg208 (spr108): undefined
+ privileged reg209 (spr109): undefined
+ privileged reg210 (spr110): undefined
+ privileged reg211 (spr111): undefined
+ privileged reg212 (spr112): undefined
+ privileged reg213 (spr113): undefined
+ privileged reg214 (spr114): undefined
+ privileged reg215 (spr115): undefined
+ privileged reg216 (spr116): undefined
+ privileged reg217 (spr117): undefined
+ privileged reg218 (spr118): undefined
+ privileged reg219 (spr119): undefined
+ privileged reg220 (spr120): undefined
+ privileged reg221 (spr121): undefined
+ privileged reg222 (spr122): undefined
+ privileged reg223 (spr123): undefined
+ privileged reg224 (spr124): undefined
+ privileged reg225 (spr125): undefined
+ privileged reg226 (spr126): undefined
+ privileged reg227 (spr127): undefined
+ privileged reg228 (spr128): undefined
+ privileged reg229 (spr129): undefined
+ privileged reg230 (spr130): undefined
+ privileged reg231 (spr131): undefined
+ privileged reg232 (spr132): undefined
+ privileged reg233 (spr133): undefined
+ privileged reg234 (spr134): undefined
+ privileged reg235 (spr135): undefined
+ privileged reg236 (spr136): undefined
+ privileged reg237 (spr137): undefined
+ privileged reg238 (spr138): undefined
+ privileged reg239 (spr139): undefined
+ privileged reg240 (spr140): undefined
+ privileged reg241 (spr141): undefined
+ privileged reg242 (spr142): undefined
+ privileged reg243 (spr143): undefined
+ privileged reg244 (spr144): undefined
+ privileged reg245 (spr145): undefined
+ privileged reg246 (spr146): undefined
+ privileged reg247 (spr147): undefined
+ privileged reg248 (spr148): undefined
+ privileged reg249 (spr149): undefined
+ privileged reg250 (spr150): undefined
+ privileged reg251 (spr151): undefined
+ privileged reg252 (spr152): undefined
+ privileged reg253 (spr153): undefined
+ privileged reg254 (spr154): undefined
+ privileged reg255 (spr155): undefined
+ privileged reg256 (spr156): undefined
+ privileged reg257 (spr157): undefined
+ privileged reg258 (spr158): undefined
+ privileged reg259 (spr159): undefined
+ privileged reg260 (spr160): undefined
+ privileged reg261 (spr161): undefined
+ privileged reg262 (spr162): undefined
+ privileged reg263 (spr163): undefined
+ privileged reg264 (spr164): undefined
+ privileged reg265 (spr165): undefined
+ privileged reg266 (spr166): undefined
+ privileged reg267 (spr167): undefined
+ privileged reg268 (spr168): undefined
+ privileged reg269 (spr169): undefined
+ privileged reg270 (spr170): undefined
+ privileged reg271 (spr171): undefined
+ privileged reg272 (spr172): undefined
+ privileged reg273 (spr173): undefined
+ privileged reg274 (spr174): undefined
+ privileged reg275 (spr175): undefined
+ privileged reg276 (spr176): undefined
+ privileged reg277 (spr177): undefined
+ privileged reg278 (spr178): undefined
+ privileged reg279 (spr179): undefined
+ privileged reg280 (spr180): undefined
+ privileged reg281 (spr181): undefined
+ privileged reg282 (spr182): undefined
+ privileged reg283 (spr183): undefined
+ privileged reg284 (spr184): undefined
+ privileged reg285 (spr185): undefined
+ privileged reg286 (spr186): undefined
+ privileged reg287 (spr187): undefined
+ privileged reg288 (spr188): undefined
+ privileged reg289 (spr189): undefined
+ privileged reg290 (spr190): undefined
+ privileged reg291 (spr191): undefined
+ privileged reg292 (spr192): undefined
+ privileged reg293 (spr193): undefined
+ privileged reg294 (spr194): undefined
+ privileged reg295 (spr195): undefined
+ privileged reg296 (spr196): undefined
+ privileged reg297 (spr197): undefined
+ privileged reg298 (spr198): undefined
+ privileged reg299 (spr199): undefined
+ privileged reg300 (spr200): undefined
+ privileged reg301 (spr201): undefined
+ privileged reg302 (spr202): undefined
+ privileged reg303 (spr203): undefined
+ privileged reg304 (spr204): undefined
+ privileged reg305 (spr205): undefined
+ privileged reg306 (spr206): undefined
+ privileged reg307 (spr207): undefined
+ privileged reg308 (spr208): undefined
+ privileged reg309 (spr209): undefined
+ privileged reg310 (spr210): undefined
+ privileged reg311 (spr211): undefined
+ privileged reg312 (spr212): undefined
+ privileged reg313 (spr213): undefined
+ privileged reg314 (spr214): undefined
+ privileged reg315 (spr215): undefined
+ privileged reg316 (spr216): undefined
+ privileged reg317 (spr217): undefined
+ privileged reg318 (spr218): undefined
+ privileged reg319 (spr219): undefined
+ privileged reg320 (spr220): undefined
+ privileged reg321 (spr221): undefined
+ privileged reg322 (spr222): undefined
+ privileged reg323 (spr223): undefined
+ privileged reg324 (spr224): undefined
+ privileged reg325 (spr225): undefined
+ privileged reg326 (spr226): undefined
+ privileged reg327 (spr227): undefined
+ privileged reg328 (spr228): undefined
+ privileged reg329 (spr229): undefined
+ privileged reg330 (spr230): undefined
+ privileged reg331 (spr231): undefined
+ privileged reg332 (spr232): undefined
+ privileged reg333 (spr233): undefined
+ privileged reg334 (spr234): undefined
+ privileged reg335 (spr235): undefined
+ privileged reg336 (spr236): undefined
+ privileged reg337 (spr237): undefined
+ privileged reg338 (spr238): undefined
+ privileged reg339 (spr239): undefined
+ privileged reg340 (spr240): undefined
+ privileged reg341 (spr241): undefined
+ privileged reg342 (spr242): undefined
+ privileged reg343 (spr243): undefined
+ privileged reg344 (spr244): undefined
+ privileged reg345 (spr245): undefined
+ privileged reg346 (spr246): undefined
+ privileged reg347 (spr247): undefined
+ privileged reg348 (spr248): undefined
+ privileged reg349 (spr249): undefined
+ privileged reg350 (spr250): undefined
+ privileged reg351 (spr251): undefined
+ privileged reg352 (spr252): undefined
+ privileged reg353 (spr253): undefined
+ privileged reg354 (spr254): undefined
+ privileged reg355 (spr255): undefined
+ vector reg356 (vrsave): undefined
+ privileged reg357 (spr257): undefined
+ privileged reg358 (spr258): undefined
+ privileged reg359 (spr259): undefined
+ privileged reg360 (spr260): undefined
+ privileged reg361 (spr261): undefined
+ privileged reg362 (spr262): undefined
+ privileged reg363 (spr263): undefined
+ privileged reg364 (spr264): undefined
+ privileged reg365 (spr265): undefined
+ privileged reg366 (spr266): undefined
+ privileged reg367 (spr267): undefined
+ privileged reg368 (spr268): undefined
+ privileged reg369 (spr269): undefined
+ privileged reg370 (spr270): undefined
+ privileged reg371 (spr271): undefined
+ privileged reg372 (spr272): undefined
+ privileged reg373 (spr273): undefined
+ privileged reg374 (spr274): undefined
+ privileged reg375 (spr275): undefined
+ privileged reg376 (spr276): undefined
+ privileged reg377 (spr277): undefined
+ privileged reg378 (spr278): undefined
+ privileged reg379 (spr279): undefined
+ privileged reg380 (spr280): undefined
+ privileged reg381 (spr281): undefined
+ privileged reg382 (spr282): undefined
+ privileged reg383 (spr283): undefined
+ privileged reg384 (spr284): undefined
+ privileged reg385 (spr285): undefined
+ privileged reg386 (spr286): undefined
+ privileged reg387 (spr287): undefined
+ privileged reg388 (spr288): undefined
+ privileged reg389 (spr289): undefined
+ privileged reg390 (spr290): undefined
+ privileged reg391 (spr291): undefined
+ privileged reg392 (spr292): undefined
+ privileged reg393 (spr293): undefined
+ privileged reg394 (spr294): undefined
+ privileged reg395 (spr295): undefined
+ privileged reg396 (spr296): undefined
+ privileged reg397 (spr297): undefined
+ privileged reg398 (spr298): undefined
+ privileged reg399 (spr299): undefined
+ privileged reg400 (spr300): undefined
+ privileged reg401 (spr301): undefined
+ privileged reg402 (spr302): undefined
+ privileged reg403 (spr303): undefined
+ privileged reg404 (spr304): undefined
+ privileged reg405 (spr305): undefined
+ privileged reg406 (spr306): undefined
+ privileged reg407 (spr307): undefined
+ privileged reg408 (spr308): undefined
+ privileged reg409 (spr309): undefined
+ privileged reg410 (spr310): undefined
+ privileged reg411 (spr311): undefined
+ privileged reg412 (spr312): undefined
+ privileged reg413 (spr313): undefined
+ privileged reg414 (spr314): undefined
+ privileged reg415 (spr315): undefined
+ privileged reg416 (spr316): undefined
+ privileged reg417 (spr317): undefined
+ privileged reg418 (spr318): undefined
+ privileged reg419 (spr319): undefined
+ privileged reg420 (spr320): undefined
+ privileged reg421 (spr321): undefined
+ privileged reg422 (spr322): undefined
+ privileged reg423 (spr323): undefined
+ privileged reg424 (spr324): undefined
+ privileged reg425 (spr325): undefined
+ privileged reg426 (spr326): undefined
+ privileged reg427 (spr327): undefined
+ privileged reg428 (spr328): undefined
+ privileged reg429 (spr329): undefined
+ privileged reg430 (spr330): undefined
+ privileged reg431 (spr331): undefined
+ privileged reg432 (spr332): undefined
+ privileged reg433 (spr333): undefined
+ privileged reg434 (spr334): undefined
+ privileged reg435 (spr335): undefined
+ privileged reg436 (spr336): undefined
+ privileged reg437 (spr337): undefined
+ privileged reg438 (spr338): undefined
+ privileged reg439 (spr339): undefined
+ privileged reg440 (spr340): undefined
+ privileged reg441 (spr341): undefined
+ privileged reg442 (spr342): undefined
+ privileged reg443 (spr343): undefined
+ privileged reg444 (spr344): undefined
+ privileged reg445 (spr345): undefined
+ privileged reg446 (spr346): undefined
+ privileged reg447 (spr347): undefined
+ privileged reg448 (spr348): undefined
+ privileged reg449 (spr349): undefined
+ privileged reg450 (spr350): undefined
+ privileged reg451 (spr351): undefined
+ privileged reg452 (spr352): undefined
+ privileged reg453 (spr353): undefined
+ privileged reg454 (spr354): undefined
+ privileged reg455 (spr355): undefined
+ privileged reg456 (spr356): undefined
+ privileged reg457 (spr357): undefined
+ privileged reg458 (spr358): undefined
+ privileged reg459 (spr359): undefined
+ privileged reg460 (spr360): undefined
+ privileged reg461 (spr361): undefined
+ privileged reg462 (spr362): undefined
+ privileged reg463 (spr363): undefined
+ privileged reg464 (spr364): undefined
+ privileged reg465 (spr365): undefined
+ privileged reg466 (spr366): undefined
+ privileged reg467 (spr367): undefined
+ privileged reg468 (spr368): undefined
+ privileged reg469 (spr369): undefined
+ privileged reg470 (spr370): undefined
+ privileged reg471 (spr371): undefined
+ privileged reg472 (spr372): undefined
+ privileged reg473 (spr373): undefined
+ privileged reg474 (spr374): undefined
+ privileged reg475 (spr375): undefined
+ privileged reg476 (spr376): undefined
+ privileged reg477 (spr377): undefined
+ privileged reg478 (spr378): undefined
+ privileged reg479 (spr379): undefined
+ privileged reg480 (spr380): undefined
+ privileged reg481 (spr381): undefined
+ privileged reg482 (spr382): undefined
+ privileged reg483 (spr383): undefined
+ privileged reg484 (spr384): undefined
+ privileged reg485 (spr385): undefined
+ privileged reg486 (spr386): undefined
+ privileged reg487 (spr387): undefined
+ privileged reg488 (spr388): undefined
+ privileged reg489 (spr389): undefined
+ privileged reg490 (spr390): undefined
+ privileged reg491 (spr391): undefined
+ privileged reg492 (spr392): undefined
+ privileged reg493 (spr393): undefined
+ privileged reg494 (spr394): undefined
+ privileged reg495 (spr395): undefined
+ privileged reg496 (spr396): undefined
+ privileged reg497 (spr397): undefined
+ privileged reg498 (spr398): undefined
+ privileged reg499 (spr399): undefined
+ privileged reg500 (spr400): undefined
+ privileged reg501 (spr401): undefined
+ privileged reg502 (spr402): undefined
+ privileged reg503 (spr403): undefined
+ privileged reg504 (spr404): undefined
+ privileged reg505 (spr405): undefined
+ privileged reg506 (spr406): undefined
+ privileged reg507 (spr407): undefined
+ privileged reg508 (spr408): undefined
+ privileged reg509 (spr409): undefined
+ privileged reg510 (spr410): undefined
+ privileged reg511 (spr411): undefined
+ privileged reg512 (spr412): undefined
+ privileged reg513 (spr413): undefined
+ privileged reg514 (spr414): undefined
+ privileged reg515 (spr415): undefined
+ privileged reg516 (spr416): undefined
+ privileged reg517 (spr417): undefined
+ privileged reg518 (spr418): undefined
+ privileged reg519 (spr419): undefined
+ privileged reg520 (spr420): undefined
+ privileged reg521 (spr421): undefined
+ privileged reg522 (spr422): undefined
+ privileged reg523 (spr423): undefined
+ privileged reg524 (spr424): undefined
+ privileged reg525 (spr425): undefined
+ privileged reg526 (spr426): undefined
+ privileged reg527 (spr427): undefined
+ privileged reg528 (spr428): undefined
+ privileged reg529 (spr429): undefined
+ privileged reg530 (spr430): undefined
+ privileged reg531 (spr431): undefined
+ privileged reg532 (spr432): undefined
+ privileged reg533 (spr433): undefined
+ privileged reg534 (spr434): undefined
+ privileged reg535 (spr435): undefined
+ privileged reg536 (spr436): undefined
+ privileged reg537 (spr437): undefined
+ privileged reg538 (spr438): undefined
+ privileged reg539 (spr439): undefined
+ privileged reg540 (spr440): undefined
+ privileged reg541 (spr441): undefined
+ privileged reg542 (spr442): undefined
+ privileged reg543 (spr443): undefined
+ privileged reg544 (spr444): undefined
+ privileged reg545 (spr445): undefined
+ privileged reg546 (spr446): undefined
+ privileged reg547 (spr447): undefined
+ privileged reg548 (spr448): undefined
+ privileged reg549 (spr449): undefined
+ privileged reg550 (spr450): undefined
+ privileged reg551 (spr451): undefined
+ privileged reg552 (spr452): undefined
+ privileged reg553 (spr453): undefined
+ privileged reg554 (spr454): undefined
+ privileged reg555 (spr455): undefined
+ privileged reg556 (spr456): undefined
+ privileged reg557 (spr457): undefined
+ privileged reg558 (spr458): undefined
+ privileged reg559 (spr459): undefined
+ privileged reg560 (spr460): undefined
+ privileged reg561 (spr461): undefined
+ privileged reg562 (spr462): undefined
+ privileged reg563 (spr463): undefined
+ privileged reg564 (spr464): undefined
+ privileged reg565 (spr465): undefined
+ privileged reg566 (spr466): undefined
+ privileged reg567 (spr467): undefined
+ privileged reg568 (spr468): undefined
+ privileged reg569 (spr469): undefined
+ privileged reg570 (spr470): undefined
+ privileged reg571 (spr471): undefined
+ privileged reg572 (spr472): undefined
+ privileged reg573 (spr473): undefined
+ privileged reg574 (spr474): undefined
+ privileged reg575 (spr475): undefined
+ privileged reg576 (spr476): undefined
+ privileged reg577 (spr477): undefined
+ privileged reg578 (spr478): undefined
+ privileged reg579 (spr479): undefined
+ privileged reg580 (spr480): undefined
+ privileged reg581 (spr481): undefined
+ privileged reg582 (spr482): undefined
+ privileged reg583 (spr483): undefined
+ privileged reg584 (spr484): undefined
+ privileged reg585 (spr485): undefined
+ privileged reg586 (spr486): undefined
+ privileged reg587 (spr487): undefined
+ privileged reg588 (spr488): undefined
+ privileged reg589 (spr489): undefined
+ privileged reg590 (spr490): undefined
+ privileged reg591 (spr491): undefined
+ privileged reg592 (spr492): undefined
+ privileged reg593 (spr493): undefined
+ privileged reg594 (spr494): undefined
+ privileged reg595 (spr495): undefined
+ privileged reg596 (spr496): undefined
+ privileged reg597 (spr497): undefined
+ privileged reg598 (spr498): undefined
+ privileged reg599 (spr499): undefined
+ privileged reg600 (spr500): undefined
+ privileged reg601 (spr501): undefined
+ privileged reg602 (spr502): undefined
+ privileged reg603 (spr503): undefined
+ privileged reg604 (spr504): undefined
+ privileged reg605 (spr505): undefined
+ privileged reg606 (spr506): undefined
+ privileged reg607 (spr507): undefined
+ privileged reg608 (spr508): undefined
+ privileged reg609 (spr509): undefined
+ privileged reg610 (spr510): undefined
+ privileged reg611 (spr511): undefined
+ vector reg612 (spefscr): undefined
+ privileged reg613 (spr513): undefined
+ privileged reg614 (spr514): undefined
+ privileged reg615 (spr515): undefined
+ privileged reg616 (spr516): undefined
+ privileged reg617 (spr517): undefined
+ privileged reg618 (spr518): undefined
+ privileged reg619 (spr519): undefined
+ privileged reg620 (spr520): undefined
+ privileged reg621 (spr521): undefined
+ privileged reg622 (spr522): undefined
+ privileged reg623 (spr523): undefined
+ privileged reg624 (spr524): undefined
+ privileged reg625 (spr525): undefined
+ privileged reg626 (spr526): undefined
+ privileged reg627 (spr527): undefined
+ privileged reg628 (spr528): undefined
+ privileged reg629 (spr529): undefined
+ privileged reg630 (spr530): undefined
+ privileged reg631 (spr531): undefined
+ privileged reg632 (spr532): undefined
+ privileged reg633 (spr533): undefined
+ privileged reg634 (spr534): undefined
+ privileged reg635 (spr535): undefined
+ privileged reg636 (spr536): undefined
+ privileged reg637 (spr537): undefined
+ privileged reg638 (spr538): undefined
+ privileged reg639 (spr539): undefined
+ privileged reg640 (spr540): undefined
+ privileged reg641 (spr541): undefined
+ privileged reg642 (spr542): undefined
+ privileged reg643 (spr543): undefined
+ privileged reg644 (spr544): undefined
+ privileged reg645 (spr545): undefined
+ privileged reg646 (spr546): undefined
+ privileged reg647 (spr547): undefined
+ privileged reg648 (spr548): undefined
+ privileged reg649 (spr549): undefined
+ privileged reg650 (spr550): undefined
+ privileged reg651 (spr551): undefined
+ privileged reg652 (spr552): undefined
+ privileged reg653 (spr553): undefined
+ privileged reg654 (spr554): undefined
+ privileged reg655 (spr555): undefined
+ privileged reg656 (spr556): undefined
+ privileged reg657 (spr557): undefined
+ privileged reg658 (spr558): undefined
+ privileged reg659 (spr559): undefined
+ privileged reg660 (spr560): undefined
+ privileged reg661 (spr561): undefined
+ privileged reg662 (spr562): undefined
+ privileged reg663 (spr563): undefined
+ privileged reg664 (spr564): undefined
+ privileged reg665 (spr565): undefined
+ privileged reg666 (spr566): undefined
+ privileged reg667 (spr567): undefined
+ privileged reg668 (spr568): undefined
+ privileged reg669 (spr569): undefined
+ privileged reg670 (spr570): undefined
+ privileged reg671 (spr571): undefined
+ privileged reg672 (spr572): undefined
+ privileged reg673 (spr573): undefined
+ privileged reg674 (spr574): undefined
+ privileged reg675 (spr575): undefined
+ privileged reg676 (spr576): undefined
+ privileged reg677 (spr577): undefined
+ privileged reg678 (spr578): undefined
+ privileged reg679 (spr579): undefined
+ privileged reg680 (spr580): undefined
+ privileged reg681 (spr581): undefined
+ privileged reg682 (spr582): undefined
+ privileged reg683 (spr583): undefined
+ privileged reg684 (spr584): undefined
+ privileged reg685 (spr585): undefined
+ privileged reg686 (spr586): undefined
+ privileged reg687 (spr587): undefined
+ privileged reg688 (spr588): undefined
+ privileged reg689 (spr589): undefined
+ privileged reg690 (spr590): undefined
+ privileged reg691 (spr591): undefined
+ privileged reg692 (spr592): undefined
+ privileged reg693 (spr593): undefined
+ privileged reg694 (spr594): undefined
+ privileged reg695 (spr595): undefined
+ privileged reg696 (spr596): undefined
+ privileged reg697 (spr597): undefined
+ privileged reg698 (spr598): undefined
+ privileged reg699 (spr599): undefined
+ privileged reg700 (spr600): undefined
+ privileged reg701 (spr601): undefined
+ privileged reg702 (spr602): undefined
+ privileged reg703 (spr603): undefined
+ privileged reg704 (spr604): undefined
+ privileged reg705 (spr605): undefined
+ privileged reg706 (spr606): undefined
+ privileged reg707 (spr607): undefined
+ privileged reg708 (spr608): undefined
+ privileged reg709 (spr609): undefined
+ privileged reg710 (spr610): undefined
+ privileged reg711 (spr611): undefined
+ privileged reg712 (spr612): undefined
+ privileged reg713 (spr613): undefined
+ privileged reg714 (spr614): undefined
+ privileged reg715 (spr615): undefined
+ privileged reg716 (spr616): undefined
+ privileged reg717 (spr617): undefined
+ privileged reg718 (spr618): undefined
+ privileged reg719 (spr619): undefined
+ privileged reg720 (spr620): undefined
+ privileged reg721 (spr621): undefined
+ privileged reg722 (spr622): undefined
+ privileged reg723 (spr623): undefined
+ privileged reg724 (spr624): undefined
+ privileged reg725 (spr625): undefined
+ privileged reg726 (spr626): undefined
+ privileged reg727 (spr627): undefined
+ privileged reg728 (spr628): undefined
+ privileged reg729 (spr629): undefined
+ privileged reg730 (spr630): undefined
+ privileged reg731 (spr631): undefined
+ privileged reg732 (spr632): undefined
+ privileged reg733 (spr633): undefined
+ privileged reg734 (spr634): undefined
+ privileged reg735 (spr635): undefined
+ privileged reg736 (spr636): undefined
+ privileged reg737 (spr637): undefined
+ privileged reg738 (spr638): undefined
+ privileged reg739 (spr639): undefined
+ privileged reg740 (spr640): undefined
+ privileged reg741 (spr641): undefined
+ privileged reg742 (spr642): undefined
+ privileged reg743 (spr643): undefined
+ privileged reg744 (spr644): undefined
+ privileged reg745 (spr645): undefined
+ privileged reg746 (spr646): undefined
+ privileged reg747 (spr647): undefined
+ privileged reg748 (spr648): undefined
+ privileged reg749 (spr649): undefined
+ privileged reg750 (spr650): undefined
+ privileged reg751 (spr651): undefined
+ privileged reg752 (spr652): undefined
+ privileged reg753 (spr653): undefined
+ privileged reg754 (spr654): undefined
+ privileged reg755 (spr655): undefined
+ privileged reg756 (spr656): undefined
+ privileged reg757 (spr657): undefined
+ privileged reg758 (spr658): undefined
+ privileged reg759 (spr659): undefined
+ privileged reg760 (spr660): undefined
+ privileged reg761 (spr661): undefined
+ privileged reg762 (spr662): undefined
+ privileged reg763 (spr663): undefined
+ privileged reg764 (spr664): undefined
+ privileged reg765 (spr665): undefined
+ privileged reg766 (spr666): undefined
+ privileged reg767 (spr667): undefined
+ privileged reg768 (spr668): undefined
+ privileged reg769 (spr669): undefined
+ privileged reg770 (spr670): undefined
+ privileged reg771 (spr671): undefined
+ privileged reg772 (spr672): undefined
+ privileged reg773 (spr673): undefined
+ privileged reg774 (spr674): undefined
+ privileged reg775 (spr675): undefined
+ privileged reg776 (spr676): undefined
+ privileged reg777 (spr677): undefined
+ privileged reg778 (spr678): undefined
+ privileged reg779 (spr679): undefined
+ privileged reg780 (spr680): undefined
+ privileged reg781 (spr681): undefined
+ privileged reg782 (spr682): undefined
+ privileged reg783 (spr683): undefined
+ privileged reg784 (spr684): undefined
+ privileged reg785 (spr685): undefined
+ privileged reg786 (spr686): undefined
+ privileged reg787 (spr687): undefined
+ privileged reg788 (spr688): undefined
+ privileged reg789 (spr689): undefined
+ privileged reg790 (spr690): undefined
+ privileged reg791 (spr691): undefined
+ privileged reg792 (spr692): undefined
+ privileged reg793 (spr693): undefined
+ privileged reg794 (spr694): undefined
+ privileged reg795 (spr695): undefined
+ privileged reg796 (spr696): undefined
+ privileged reg797 (spr697): undefined
+ privileged reg798 (spr698): undefined
+ privileged reg799 (spr699): undefined
+ privileged reg800 (spr700): undefined
+ privileged reg801 (spr701): undefined
+ privileged reg802 (spr702): undefined
+ privileged reg803 (spr703): undefined
+ privileged reg804 (spr704): undefined
+ privileged reg805 (spr705): undefined
+ privileged reg806 (spr706): undefined
+ privileged reg807 (spr707): undefined
+ privileged reg808 (spr708): undefined
+ privileged reg809 (spr709): undefined
+ privileged reg810 (spr710): undefined
+ privileged reg811 (spr711): undefined
+ privileged reg812 (spr712): undefined
+ privileged reg813 (spr713): undefined
+ privileged reg814 (spr714): undefined
+ privileged reg815 (spr715): undefined
+ privileged reg816 (spr716): undefined
+ privileged reg817 (spr717): undefined
+ privileged reg818 (spr718): undefined
+ privileged reg819 (spr719): undefined
+ privileged reg820 (spr720): undefined
+ privileged reg821 (spr721): undefined
+ privileged reg822 (spr722): undefined
+ privileged reg823 (spr723): undefined
+ privileged reg824 (spr724): undefined
+ privileged reg825 (spr725): undefined
+ privileged reg826 (spr726): undefined
+ privileged reg827 (spr727): undefined
+ privileged reg828 (spr728): undefined
+ privileged reg829 (spr729): undefined
+ privileged reg830 (spr730): undefined
+ privileged reg831 (spr731): undefined
+ privileged reg832 (spr732): undefined
+ privileged reg833 (spr733): undefined
+ privileged reg834 (spr734): undefined
+ privileged reg835 (spr735): undefined
+ privileged reg836 (spr736): undefined
+ privileged reg837 (spr737): undefined
+ privileged reg838 (spr738): undefined
+ privileged reg839 (spr739): undefined
+ privileged reg840 (spr740): undefined
+ privileged reg841 (spr741): undefined
+ privileged reg842 (spr742): undefined
+ privileged reg843 (spr743): undefined
+ privileged reg844 (spr744): undefined
+ privileged reg845 (spr745): undefined
+ privileged reg846 (spr746): undefined
+ privileged reg847 (spr747): undefined
+ privileged reg848 (spr748): undefined
+ privileged reg849 (spr749): undefined
+ privileged reg850 (spr750): undefined
+ privileged reg851 (spr751): undefined
+ privileged reg852 (spr752): undefined
+ privileged reg853 (spr753): undefined
+ privileged reg854 (spr754): undefined
+ privileged reg855 (spr755): undefined
+ privileged reg856 (spr756): undefined
+ privileged reg857 (spr757): undefined
+ privileged reg858 (spr758): undefined
+ privileged reg859 (spr759): undefined
+ privileged reg860 (spr760): undefined
+ privileged reg861 (spr761): undefined
+ privileged reg862 (spr762): undefined
+ privileged reg863 (spr763): undefined
+ privileged reg864 (spr764): undefined
+ privileged reg865 (spr765): undefined
+ privileged reg866 (spr766): undefined
+ privileged reg867 (spr767): undefined
+ privileged reg868 (spr768): undefined
+ privileged reg869 (spr769): undefined
+ privileged reg870 (spr770): undefined
+ privileged reg871 (spr771): undefined
+ privileged reg872 (spr772): undefined
+ privileged reg873 (spr773): undefined
+ privileged reg874 (spr774): undefined
+ privileged reg875 (spr775): undefined
+ privileged reg876 (spr776): undefined
+ privileged reg877 (spr777): undefined
+ privileged reg878 (spr778): undefined
+ privileged reg879 (spr779): undefined
+ privileged reg880 (spr780): undefined
+ privileged reg881 (spr781): undefined
+ privileged reg882 (spr782): undefined
+ privileged reg883 (spr783): undefined
+ privileged reg884 (spr784): undefined
+ privileged reg885 (spr785): undefined
+ privileged reg886 (spr786): undefined
+ privileged reg887 (spr787): undefined
+ privileged reg888 (spr788): undefined
+ privileged reg889 (spr789): undefined
+ privileged reg890 (spr790): undefined
+ privileged reg891 (spr791): undefined
+ privileged reg892 (spr792): undefined
+ privileged reg893 (spr793): undefined
+ privileged reg894 (spr794): undefined
+ privileged reg895 (spr795): undefined
+ privileged reg896 (spr796): undefined
+ privileged reg897 (spr797): undefined
+ privileged reg898 (spr798): undefined
+ privileged reg899 (spr799): undefined
+ privileged reg900 (spr800): undefined
+ privileged reg901 (spr801): undefined
+ privileged reg902 (spr802): undefined
+ privileged reg903 (spr803): undefined
+ privileged reg904 (spr804): undefined
+ privileged reg905 (spr805): undefined
+ privileged reg906 (spr806): undefined
+ privileged reg907 (spr807): undefined
+ privileged reg908 (spr808): undefined
+ privileged reg909 (spr809): undefined
+ privileged reg910 (spr810): undefined
+ privileged reg911 (spr811): undefined
+ privileged reg912 (spr812): undefined
+ privileged reg913 (spr813): undefined
+ privileged reg914 (spr814): undefined
+ privileged reg915 (spr815): undefined
+ privileged reg916 (spr816): undefined
+ privileged reg917 (spr817): undefined
+ privileged reg918 (spr818): undefined
+ privileged reg919 (spr819): undefined
+ privileged reg920 (spr820): undefined
+ privileged reg921 (spr821): undefined
+ privileged reg922 (spr822): undefined
+ privileged reg923 (spr823): undefined
+ privileged reg924 (spr824): undefined
+ privileged reg925 (spr825): undefined
+ privileged reg926 (spr826): undefined
+ privileged reg927 (spr827): undefined
+ privileged reg928 (spr828): undefined
+ privileged reg929 (spr829): undefined
+ privileged reg930 (spr830): undefined
+ privileged reg931 (spr831): undefined
+ privileged reg932 (spr832): undefined
+ privileged reg933 (spr833): undefined
+ privileged reg934 (spr834): undefined
+ privileged reg935 (spr835): undefined
+ privileged reg936 (spr836): undefined
+ privileged reg937 (spr837): undefined
+ privileged reg938 (spr838): undefined
+ privileged reg939 (spr839): undefined
+ privileged reg940 (spr840): undefined
+ privileged reg941 (spr841): undefined
+ privileged reg942 (spr842): undefined
+ privileged reg943 (spr843): undefined
+ privileged reg944 (spr844): undefined
+ privileged reg945 (spr845): undefined
+ privileged reg946 (spr846): undefined
+ privileged reg947 (spr847): undefined
+ privileged reg948 (spr848): undefined
+ privileged reg949 (spr849): undefined
+ privileged reg950 (spr850): undefined
+ privileged reg951 (spr851): undefined
+ privileged reg952 (spr852): undefined
+ privileged reg953 (spr853): undefined
+ privileged reg954 (spr854): undefined
+ privileged reg955 (spr855): undefined
+ privileged reg956 (spr856): undefined
+ privileged reg957 (spr857): undefined
+ privileged reg958 (spr858): undefined
+ privileged reg959 (spr859): undefined
+ privileged reg960 (spr860): undefined
+ privileged reg961 (spr861): undefined
+ privileged reg962 (spr862): undefined
+ privileged reg963 (spr863): undefined
+ privileged reg964 (spr864): undefined
+ privileged reg965 (spr865): undefined
+ privileged reg966 (spr866): undefined
+ privileged reg967 (spr867): undefined
+ privileged reg968 (spr868): undefined
+ privileged reg969 (spr869): undefined
+ privileged reg970 (spr870): undefined
+ privileged reg971 (spr871): undefined
+ privileged reg972 (spr872): undefined
+ privileged reg973 (spr873): undefined
+ privileged reg974 (spr874): undefined
+ privileged reg975 (spr875): undefined
+ privileged reg976 (spr876): undefined
+ privileged reg977 (spr877): undefined
+ privileged reg978 (spr878): undefined
+ privileged reg979 (spr879): undefined
+ privileged reg980 (spr880): undefined
+ privileged reg981 (spr881): undefined
+ privileged reg982 (spr882): undefined
+ privileged reg983 (spr883): undefined
+ privileged reg984 (spr884): undefined
+ privileged reg985 (spr885): undefined
+ privileged reg986 (spr886): undefined
+ privileged reg987 (spr887): undefined
+ privileged reg988 (spr888): undefined
+ privileged reg989 (spr889): undefined
+ privileged reg990 (spr890): undefined
+ privileged reg991 (spr891): undefined
+ privileged reg992 (spr892): undefined
+ privileged reg993 (spr893): undefined
+ privileged reg994 (spr894): undefined
+ privileged reg995 (spr895): undefined
+ privileged reg996 (spr896): undefined
+ privileged reg997 (spr897): undefined
+ privileged reg998 (spr898): undefined
+ privileged reg999 (spr899): undefined
+ vector reg1124 (vr0): undefined
+ vector reg1125 (vr1): undefined
+ vector reg1126 (vr2): undefined
+ vector reg1127 (vr3): undefined
+ vector reg1128 (vr4): undefined
+ vector reg1129 (vr5): undefined
+ vector reg1130 (vr6): undefined
+ vector reg1131 (vr7): undefined
+ vector reg1132 (vr8): undefined
+ vector reg1133 (vr9): undefined
+ vector reg1134 (vr10): undefined
+ vector reg1135 (vr11): undefined
+ vector reg1136 (vr12): undefined
+ vector reg1137 (vr13): undefined
+ vector reg1138 (vr14): undefined
+ vector reg1139 (vr15): undefined
+ vector reg1140 (vr16): undefined
+ vector reg1141 (vr17): undefined
+ vector reg1142 (vr18): undefined
+ vector reg1143 (vr19): undefined
+ vector reg1144 (vr20): undefined
+ vector reg1145 (vr21): undefined
+ vector reg1146 (vr22): undefined
+ vector reg1147 (vr23): undefined
+ vector reg1148 (vr24): undefined
+ vector reg1149 (vr25): undefined
+ vector reg1150 (vr26): undefined
+ vector reg1151 (vr27): undefined
+ vector reg1152 (vr28): undefined
+ vector reg1153 (vr29): undefined
+ vector reg1154 (vr30): undefined
+ vector reg1155 (vr31): undefined
+EOF
+
+# EM_PPC64 (function bar 0x00000000100005b0)
+# Note. Only in .debug_frame, not in .eh_frame.
+# Same as testfileppc32 but without -m32.
+testfiles testfileppc64
+testrun_compare ${abs_builddir}/addrcfi -e testfileppc64 0x00000000100005b0 <<\EOF
+dwarf_cfi_addrframe (.eh_frame): no matching address range
+.debug_frame has 0x100005b0 => [0x100005b0, 0x100005d0):
+ return address in reg65
+ CFA location expression: bregx(1)
+ integer reg0 (r0): undefined
+ integer reg1 (r1): location expression: call_frame_cfa stack_value
+ integer reg2 (r2): same_value
+ integer reg3 (r3): undefined
+ integer reg4 (r4): undefined
+ integer reg5 (r5): undefined
+ integer reg6 (r6): undefined
+ integer reg7 (r7): undefined
+ integer reg8 (r8): undefined
+ integer reg9 (r9): undefined
+ integer reg10 (r10): undefined
+ integer reg11 (r11): undefined
+ integer reg12 (r12): undefined
+ integer reg13 (r13): same_value
+ integer reg14 (r14): same_value
+ integer reg15 (r15): same_value
+ integer reg16 (r16): same_value
+ integer reg17 (r17): same_value
+ integer reg18 (r18): same_value
+ integer reg19 (r19): same_value
+ integer reg20 (r20): same_value
+ integer reg21 (r21): same_value
+ integer reg22 (r22): same_value
+ integer reg23 (r23): same_value
+ integer reg24 (r24): same_value
+ integer reg25 (r25): same_value
+ integer reg26 (r26): same_value
+ integer reg27 (r27): same_value
+ integer reg28 (r28): same_value
+ integer reg29 (r29): same_value
+ integer reg30 (r30): same_value
+ integer reg31 (r31): same_value
+ FPU reg32 (f0): undefined
+ FPU reg33 (f1): undefined
+ FPU reg34 (f2): undefined
+ FPU reg35 (f3): undefined
+ FPU reg36 (f4): undefined
+ FPU reg37 (f5): undefined
+ FPU reg38 (f6): undefined
+ FPU reg39 (f7): undefined
+ FPU reg40 (f8): undefined
+ FPU reg41 (f9): undefined
+ FPU reg42 (f10): undefined
+ FPU reg43 (f11): undefined
+ FPU reg44 (f12): undefined
+ FPU reg45 (f13): undefined
+ FPU reg46 (f14): undefined
+ FPU reg47 (f15): undefined
+ FPU reg48 (f16): undefined
+ FPU reg49 (f17): undefined
+ FPU reg50 (f18): undefined
+ FPU reg51 (f19): undefined
+ FPU reg52 (f20): undefined
+ FPU reg53 (f21): undefined
+ FPU reg54 (f22): undefined
+ FPU reg55 (f23): undefined
+ FPU reg56 (f24): undefined
+ FPU reg57 (f25): undefined
+ FPU reg58 (f26): undefined
+ FPU reg59 (f27): undefined
+ FPU reg60 (f28): undefined
+ FPU reg61 (f29): undefined
+ FPU reg62 (f30): undefined
+ FPU reg63 (f31): undefined
+ integer reg64 (cr): undefined
+ FPU reg65 (fpscr): same_value
+ integer reg66 (msr): undefined
+ vector reg67 (vscr): undefined
+ privileged reg70 (sr0): undefined
+ privileged reg71 (sr1): undefined
+ privileged reg72 (sr2): undefined
+ privileged reg73 (sr3): undefined
+ privileged reg74 (sr4): undefined
+ privileged reg75 (sr5): undefined
+ privileged reg76 (sr6): undefined
+ privileged reg77 (sr7): undefined
+ privileged reg78 (sr8): undefined
+ privileged reg79 (sr9): undefined
+ privileged reg80 (sr10): undefined
+ privileged reg81 (sr11): undefined
+ privileged reg82 (sr12): undefined
+ privileged reg83 (sr13): undefined
+ privileged reg84 (sr14): undefined
+ privileged reg85 (sr15): undefined
+ privileged reg100 (spr0): undefined
+ privileged reg101 (xer): undefined
+ privileged reg102 (spr2): undefined
+ privileged reg103 (spr3): undefined
+ privileged reg104 (spr4): undefined
+ privileged reg105 (spr5): undefined
+ privileged reg106 (spr6): undefined
+ privileged reg107 (spr7): undefined
+ privileged reg108 (lr): undefined
+ privileged reg109 (ctr): undefined
+ privileged reg110 (spr10): undefined
+ privileged reg111 (spr11): undefined
+ privileged reg112 (spr12): undefined
+ privileged reg113 (spr13): undefined
+ privileged reg114 (spr14): undefined
+ privileged reg115 (spr15): undefined
+ privileged reg116 (spr16): undefined
+ privileged reg117 (spr17): undefined
+ privileged reg118 (dsisr): undefined
+ privileged reg119 (dar): undefined
+ privileged reg120 (spr20): undefined
+ privileged reg121 (spr21): undefined
+ privileged reg122 (dec): undefined
+ privileged reg123 (spr23): undefined
+ privileged reg124 (spr24): undefined
+ privileged reg125 (spr25): undefined
+ privileged reg126 (spr26): undefined
+ privileged reg127 (spr27): undefined
+ privileged reg128 (spr28): undefined
+ privileged reg129 (spr29): undefined
+ privileged reg130 (spr30): undefined
+ privileged reg131 (spr31): undefined
+ privileged reg132 (spr32): undefined
+ privileged reg133 (spr33): undefined
+ privileged reg134 (spr34): undefined
+ privileged reg135 (spr35): undefined
+ privileged reg136 (spr36): undefined
+ privileged reg137 (spr37): undefined
+ privileged reg138 (spr38): undefined
+ privileged reg139 (spr39): undefined
+ privileged reg140 (spr40): undefined
+ privileged reg141 (spr41): undefined
+ privileged reg142 (spr42): undefined
+ privileged reg143 (spr43): undefined
+ privileged reg144 (spr44): undefined
+ privileged reg145 (spr45): undefined
+ privileged reg146 (spr46): undefined
+ privileged reg147 (spr47): undefined
+ privileged reg148 (spr48): undefined
+ privileged reg149 (spr49): undefined
+ privileged reg150 (spr50): undefined
+ privileged reg151 (spr51): undefined
+ privileged reg152 (spr52): undefined
+ privileged reg153 (spr53): undefined
+ privileged reg154 (spr54): undefined
+ privileged reg155 (spr55): undefined
+ privileged reg156 (spr56): undefined
+ privileged reg157 (spr57): undefined
+ privileged reg158 (spr58): undefined
+ privileged reg159 (spr59): undefined
+ privileged reg160 (spr60): undefined
+ privileged reg161 (spr61): undefined
+ privileged reg162 (spr62): undefined
+ privileged reg163 (spr63): undefined
+ privileged reg164 (spr64): undefined
+ privileged reg165 (spr65): undefined
+ privileged reg166 (spr66): undefined
+ privileged reg167 (spr67): undefined
+ privileged reg168 (spr68): undefined
+ privileged reg169 (spr69): undefined
+ privileged reg170 (spr70): undefined
+ privileged reg171 (spr71): undefined
+ privileged reg172 (spr72): undefined
+ privileged reg173 (spr73): undefined
+ privileged reg174 (spr74): undefined
+ privileged reg175 (spr75): undefined
+ privileged reg176 (spr76): undefined
+ privileged reg177 (spr77): undefined
+ privileged reg178 (spr78): undefined
+ privileged reg179 (spr79): undefined
+ privileged reg180 (spr80): undefined
+ privileged reg181 (spr81): undefined
+ privileged reg182 (spr82): undefined
+ privileged reg183 (spr83): undefined
+ privileged reg184 (spr84): undefined
+ privileged reg185 (spr85): undefined
+ privileged reg186 (spr86): undefined
+ privileged reg187 (spr87): undefined
+ privileged reg188 (spr88): undefined
+ privileged reg189 (spr89): undefined
+ privileged reg190 (spr90): undefined
+ privileged reg191 (spr91): undefined
+ privileged reg192 (spr92): undefined
+ privileged reg193 (spr93): undefined
+ privileged reg194 (spr94): undefined
+ privileged reg195 (spr95): undefined
+ privileged reg196 (spr96): undefined
+ privileged reg197 (spr97): undefined
+ privileged reg198 (spr98): undefined
+ privileged reg199 (spr99): undefined
+ privileged reg200 (spr100): undefined
+ privileged reg201 (spr101): undefined
+ privileged reg202 (spr102): undefined
+ privileged reg203 (spr103): undefined
+ privileged reg204 (spr104): undefined
+ privileged reg205 (spr105): undefined
+ privileged reg206 (spr106): undefined
+ privileged reg207 (spr107): undefined
+ privileged reg208 (spr108): undefined
+ privileged reg209 (spr109): undefined
+ privileged reg210 (spr110): undefined
+ privileged reg211 (spr111): undefined
+ privileged reg212 (spr112): undefined
+ privileged reg213 (spr113): undefined
+ privileged reg214 (spr114): undefined
+ privileged reg215 (spr115): undefined
+ privileged reg216 (spr116): undefined
+ privileged reg217 (spr117): undefined
+ privileged reg218 (spr118): undefined
+ privileged reg219 (spr119): undefined
+ privileged reg220 (spr120): undefined
+ privileged reg221 (spr121): undefined
+ privileged reg222 (spr122): undefined
+ privileged reg223 (spr123): undefined
+ privileged reg224 (spr124): undefined
+ privileged reg225 (spr125): undefined
+ privileged reg226 (spr126): undefined
+ privileged reg227 (spr127): undefined
+ privileged reg228 (spr128): undefined
+ privileged reg229 (spr129): undefined
+ privileged reg230 (spr130): undefined
+ privileged reg231 (spr131): undefined
+ privileged reg232 (spr132): undefined
+ privileged reg233 (spr133): undefined
+ privileged reg234 (spr134): undefined
+ privileged reg235 (spr135): undefined
+ privileged reg236 (spr136): undefined
+ privileged reg237 (spr137): undefined
+ privileged reg238 (spr138): undefined
+ privileged reg239 (spr139): undefined
+ privileged reg240 (spr140): undefined
+ privileged reg241 (spr141): undefined
+ privileged reg242 (spr142): undefined
+ privileged reg243 (spr143): undefined
+ privileged reg244 (spr144): undefined
+ privileged reg245 (spr145): undefined
+ privileged reg246 (spr146): undefined
+ privileged reg247 (spr147): undefined
+ privileged reg248 (spr148): undefined
+ privileged reg249 (spr149): undefined
+ privileged reg250 (spr150): undefined
+ privileged reg251 (spr151): undefined
+ privileged reg252 (spr152): undefined
+ privileged reg253 (spr153): undefined
+ privileged reg254 (spr154): undefined
+ privileged reg255 (spr155): undefined
+ privileged reg256 (spr156): undefined
+ privileged reg257 (spr157): undefined
+ privileged reg258 (spr158): undefined
+ privileged reg259 (spr159): undefined
+ privileged reg260 (spr160): undefined
+ privileged reg261 (spr161): undefined
+ privileged reg262 (spr162): undefined
+ privileged reg263 (spr163): undefined
+ privileged reg264 (spr164): undefined
+ privileged reg265 (spr165): undefined
+ privileged reg266 (spr166): undefined
+ privileged reg267 (spr167): undefined
+ privileged reg268 (spr168): undefined
+ privileged reg269 (spr169): undefined
+ privileged reg270 (spr170): undefined
+ privileged reg271 (spr171): undefined
+ privileged reg272 (spr172): undefined
+ privileged reg273 (spr173): undefined
+ privileged reg274 (spr174): undefined
+ privileged reg275 (spr175): undefined
+ privileged reg276 (spr176): undefined
+ privileged reg277 (spr177): undefined
+ privileged reg278 (spr178): undefined
+ privileged reg279 (spr179): undefined
+ privileged reg280 (spr180): undefined
+ privileged reg281 (spr181): undefined
+ privileged reg282 (spr182): undefined
+ privileged reg283 (spr183): undefined
+ privileged reg284 (spr184): undefined
+ privileged reg285 (spr185): undefined
+ privileged reg286 (spr186): undefined
+ privileged reg287 (spr187): undefined
+ privileged reg288 (spr188): undefined
+ privileged reg289 (spr189): undefined
+ privileged reg290 (spr190): undefined
+ privileged reg291 (spr191): undefined
+ privileged reg292 (spr192): undefined
+ privileged reg293 (spr193): undefined
+ privileged reg294 (spr194): undefined
+ privileged reg295 (spr195): undefined
+ privileged reg296 (spr196): undefined
+ privileged reg297 (spr197): undefined
+ privileged reg298 (spr198): undefined
+ privileged reg299 (spr199): undefined
+ privileged reg300 (spr200): undefined
+ privileged reg301 (spr201): undefined
+ privileged reg302 (spr202): undefined
+ privileged reg303 (spr203): undefined
+ privileged reg304 (spr204): undefined
+ privileged reg305 (spr205): undefined
+ privileged reg306 (spr206): undefined
+ privileged reg307 (spr207): undefined
+ privileged reg308 (spr208): undefined
+ privileged reg309 (spr209): undefined
+ privileged reg310 (spr210): undefined
+ privileged reg311 (spr211): undefined
+ privileged reg312 (spr212): undefined
+ privileged reg313 (spr213): undefined
+ privileged reg314 (spr214): undefined
+ privileged reg315 (spr215): undefined
+ privileged reg316 (spr216): undefined
+ privileged reg317 (spr217): undefined
+ privileged reg318 (spr218): undefined
+ privileged reg319 (spr219): undefined
+ privileged reg320 (spr220): undefined
+ privileged reg321 (spr221): undefined
+ privileged reg322 (spr222): undefined
+ privileged reg323 (spr223): undefined
+ privileged reg324 (spr224): undefined
+ privileged reg325 (spr225): undefined
+ privileged reg326 (spr226): undefined
+ privileged reg327 (spr227): undefined
+ privileged reg328 (spr228): undefined
+ privileged reg329 (spr229): undefined
+ privileged reg330 (spr230): undefined
+ privileged reg331 (spr231): undefined
+ privileged reg332 (spr232): undefined
+ privileged reg333 (spr233): undefined
+ privileged reg334 (spr234): undefined
+ privileged reg335 (spr235): undefined
+ privileged reg336 (spr236): undefined
+ privileged reg337 (spr237): undefined
+ privileged reg338 (spr238): undefined
+ privileged reg339 (spr239): undefined
+ privileged reg340 (spr240): undefined
+ privileged reg341 (spr241): undefined
+ privileged reg342 (spr242): undefined
+ privileged reg343 (spr243): undefined
+ privileged reg344 (spr244): undefined
+ privileged reg345 (spr245): undefined
+ privileged reg346 (spr246): undefined
+ privileged reg347 (spr247): undefined
+ privileged reg348 (spr248): undefined
+ privileged reg349 (spr249): undefined
+ privileged reg350 (spr250): undefined
+ privileged reg351 (spr251): undefined
+ privileged reg352 (spr252): undefined
+ privileged reg353 (spr253): undefined
+ privileged reg354 (spr254): undefined
+ privileged reg355 (spr255): undefined
+ vector reg356 (vrsave): undefined
+ privileged reg357 (spr257): undefined
+ privileged reg358 (spr258): undefined
+ privileged reg359 (spr259): undefined
+ privileged reg360 (spr260): undefined
+ privileged reg361 (spr261): undefined
+ privileged reg362 (spr262): undefined
+ privileged reg363 (spr263): undefined
+ privileged reg364 (spr264): undefined
+ privileged reg365 (spr265): undefined
+ privileged reg366 (spr266): undefined
+ privileged reg367 (spr267): undefined
+ privileged reg368 (spr268): undefined
+ privileged reg369 (spr269): undefined
+ privileged reg370 (spr270): undefined
+ privileged reg371 (spr271): undefined
+ privileged reg372 (spr272): undefined
+ privileged reg373 (spr273): undefined
+ privileged reg374 (spr274): undefined
+ privileged reg375 (spr275): undefined
+ privileged reg376 (spr276): undefined
+ privileged reg377 (spr277): undefined
+ privileged reg378 (spr278): undefined
+ privileged reg379 (spr279): undefined
+ privileged reg380 (spr280): undefined
+ privileged reg381 (spr281): undefined
+ privileged reg382 (spr282): undefined
+ privileged reg383 (spr283): undefined
+ privileged reg384 (spr284): undefined
+ privileged reg385 (spr285): undefined
+ privileged reg386 (spr286): undefined
+ privileged reg387 (spr287): undefined
+ privileged reg388 (spr288): undefined
+ privileged reg389 (spr289): undefined
+ privileged reg390 (spr290): undefined
+ privileged reg391 (spr291): undefined
+ privileged reg392 (spr292): undefined
+ privileged reg393 (spr293): undefined
+ privileged reg394 (spr294): undefined
+ privileged reg395 (spr295): undefined
+ privileged reg396 (spr296): undefined
+ privileged reg397 (spr297): undefined
+ privileged reg398 (spr298): undefined
+ privileged reg399 (spr299): undefined
+ privileged reg400 (spr300): undefined
+ privileged reg401 (spr301): undefined
+ privileged reg402 (spr302): undefined
+ privileged reg403 (spr303): undefined
+ privileged reg404 (spr304): undefined
+ privileged reg405 (spr305): undefined
+ privileged reg406 (spr306): undefined
+ privileged reg407 (spr307): undefined
+ privileged reg408 (spr308): undefined
+ privileged reg409 (spr309): undefined
+ privileged reg410 (spr310): undefined
+ privileged reg411 (spr311): undefined
+ privileged reg412 (spr312): undefined
+ privileged reg413 (spr313): undefined
+ privileged reg414 (spr314): undefined
+ privileged reg415 (spr315): undefined
+ privileged reg416 (spr316): undefined
+ privileged reg417 (spr317): undefined
+ privileged reg418 (spr318): undefined
+ privileged reg419 (spr319): undefined
+ privileged reg420 (spr320): undefined
+ privileged reg421 (spr321): undefined
+ privileged reg422 (spr322): undefined
+ privileged reg423 (spr323): undefined
+ privileged reg424 (spr324): undefined
+ privileged reg425 (spr325): undefined
+ privileged reg426 (spr326): undefined
+ privileged reg427 (spr327): undefined
+ privileged reg428 (spr328): undefined
+ privileged reg429 (spr329): undefined
+ privileged reg430 (spr330): undefined
+ privileged reg431 (spr331): undefined
+ privileged reg432 (spr332): undefined
+ privileged reg433 (spr333): undefined
+ privileged reg434 (spr334): undefined
+ privileged reg435 (spr335): undefined
+ privileged reg436 (spr336): undefined
+ privileged reg437 (spr337): undefined
+ privileged reg438 (spr338): undefined
+ privileged reg439 (spr339): undefined
+ privileged reg440 (spr340): undefined
+ privileged reg441 (spr341): undefined
+ privileged reg442 (spr342): undefined
+ privileged reg443 (spr343): undefined
+ privileged reg444 (spr344): undefined
+ privileged reg445 (spr345): undefined
+ privileged reg446 (spr346): undefined
+ privileged reg447 (spr347): undefined
+ privileged reg448 (spr348): undefined
+ privileged reg449 (spr349): undefined
+ privileged reg450 (spr350): undefined
+ privileged reg451 (spr351): undefined
+ privileged reg452 (spr352): undefined
+ privileged reg453 (spr353): undefined
+ privileged reg454 (spr354): undefined
+ privileged reg455 (spr355): undefined
+ privileged reg456 (spr356): undefined
+ privileged reg457 (spr357): undefined
+ privileged reg458 (spr358): undefined
+ privileged reg459 (spr359): undefined
+ privileged reg460 (spr360): undefined
+ privileged reg461 (spr361): undefined
+ privileged reg462 (spr362): undefined
+ privileged reg463 (spr363): undefined
+ privileged reg464 (spr364): undefined
+ privileged reg465 (spr365): undefined
+ privileged reg466 (spr366): undefined
+ privileged reg467 (spr367): undefined
+ privileged reg468 (spr368): undefined
+ privileged reg469 (spr369): undefined
+ privileged reg470 (spr370): undefined
+ privileged reg471 (spr371): undefined
+ privileged reg472 (spr372): undefined
+ privileged reg473 (spr373): undefined
+ privileged reg474 (spr374): undefined
+ privileged reg475 (spr375): undefined
+ privileged reg476 (spr376): undefined
+ privileged reg477 (spr377): undefined
+ privileged reg478 (spr378): undefined
+ privileged reg479 (spr379): undefined
+ privileged reg480 (spr380): undefined
+ privileged reg481 (spr381): undefined
+ privileged reg482 (spr382): undefined
+ privileged reg483 (spr383): undefined
+ privileged reg484 (spr384): undefined
+ privileged reg485 (spr385): undefined
+ privileged reg486 (spr386): undefined
+ privileged reg487 (spr387): undefined
+ privileged reg488 (spr388): undefined
+ privileged reg489 (spr389): undefined
+ privileged reg490 (spr390): undefined
+ privileged reg491 (spr391): undefined
+ privileged reg492 (spr392): undefined
+ privileged reg493 (spr393): undefined
+ privileged reg494 (spr394): undefined
+ privileged reg495 (spr395): undefined
+ privileged reg496 (spr396): undefined
+ privileged reg497 (spr397): undefined
+ privileged reg498 (spr398): undefined
+ privileged reg499 (spr399): undefined
+ privileged reg500 (spr400): undefined
+ privileged reg501 (spr401): undefined
+ privileged reg502 (spr402): undefined
+ privileged reg503 (spr403): undefined
+ privileged reg504 (spr404): undefined
+ privileged reg505 (spr405): undefined
+ privileged reg506 (spr406): undefined
+ privileged reg507 (spr407): undefined
+ privileged reg508 (spr408): undefined
+ privileged reg509 (spr409): undefined
+ privileged reg510 (spr410): undefined
+ privileged reg511 (spr411): undefined
+ privileged reg512 (spr412): undefined
+ privileged reg513 (spr413): undefined
+ privileged reg514 (spr414): undefined
+ privileged reg515 (spr415): undefined
+ privileged reg516 (spr416): undefined
+ privileged reg517 (spr417): undefined
+ privileged reg518 (spr418): undefined
+ privileged reg519 (spr419): undefined
+ privileged reg520 (spr420): undefined
+ privileged reg521 (spr421): undefined
+ privileged reg522 (spr422): undefined
+ privileged reg523 (spr423): undefined
+ privileged reg524 (spr424): undefined
+ privileged reg525 (spr425): undefined
+ privileged reg526 (spr426): undefined
+ privileged reg527 (spr427): undefined
+ privileged reg528 (spr428): undefined
+ privileged reg529 (spr429): undefined
+ privileged reg530 (spr430): undefined
+ privileged reg531 (spr431): undefined
+ privileged reg532 (spr432): undefined
+ privileged reg533 (spr433): undefined
+ privileged reg534 (spr434): undefined
+ privileged reg535 (spr435): undefined
+ privileged reg536 (spr436): undefined
+ privileged reg537 (spr437): undefined
+ privileged reg538 (spr438): undefined
+ privileged reg539 (spr439): undefined
+ privileged reg540 (spr440): undefined
+ privileged reg541 (spr441): undefined
+ privileged reg542 (spr442): undefined
+ privileged reg543 (spr443): undefined
+ privileged reg544 (spr444): undefined
+ privileged reg545 (spr445): undefined
+ privileged reg546 (spr446): undefined
+ privileged reg547 (spr447): undefined
+ privileged reg548 (spr448): undefined
+ privileged reg549 (spr449): undefined
+ privileged reg550 (spr450): undefined
+ privileged reg551 (spr451): undefined
+ privileged reg552 (spr452): undefined
+ privileged reg553 (spr453): undefined
+ privileged reg554 (spr454): undefined
+ privileged reg555 (spr455): undefined
+ privileged reg556 (spr456): undefined
+ privileged reg557 (spr457): undefined
+ privileged reg558 (spr458): undefined
+ privileged reg559 (spr459): undefined
+ privileged reg560 (spr460): undefined
+ privileged reg561 (spr461): undefined
+ privileged reg562 (spr462): undefined
+ privileged reg563 (spr463): undefined
+ privileged reg564 (spr464): undefined
+ privileged reg565 (spr465): undefined
+ privileged reg566 (spr466): undefined
+ privileged reg567 (spr467): undefined
+ privileged reg568 (spr468): undefined
+ privileged reg569 (spr469): undefined
+ privileged reg570 (spr470): undefined
+ privileged reg571 (spr471): undefined
+ privileged reg572 (spr472): undefined
+ privileged reg573 (spr473): undefined
+ privileged reg574 (spr474): undefined
+ privileged reg575 (spr475): undefined
+ privileged reg576 (spr476): undefined
+ privileged reg577 (spr477): undefined
+ privileged reg578 (spr478): undefined
+ privileged reg579 (spr479): undefined
+ privileged reg580 (spr480): undefined
+ privileged reg581 (spr481): undefined
+ privileged reg582 (spr482): undefined
+ privileged reg583 (spr483): undefined
+ privileged reg584 (spr484): undefined
+ privileged reg585 (spr485): undefined
+ privileged reg586 (spr486): undefined
+ privileged reg587 (spr487): undefined
+ privileged reg588 (spr488): undefined
+ privileged reg589 (spr489): undefined
+ privileged reg590 (spr490): undefined
+ privileged reg591 (spr491): undefined
+ privileged reg592 (spr492): undefined
+ privileged reg593 (spr493): undefined
+ privileged reg594 (spr494): undefined
+ privileged reg595 (spr495): undefined
+ privileged reg596 (spr496): undefined
+ privileged reg597 (spr497): undefined
+ privileged reg598 (spr498): undefined
+ privileged reg599 (spr499): undefined
+ privileged reg600 (spr500): undefined
+ privileged reg601 (spr501): undefined
+ privileged reg602 (spr502): undefined
+ privileged reg603 (spr503): undefined
+ privileged reg604 (spr504): undefined
+ privileged reg605 (spr505): undefined
+ privileged reg606 (spr506): undefined
+ privileged reg607 (spr507): undefined
+ privileged reg608 (spr508): undefined
+ privileged reg609 (spr509): undefined
+ privileged reg610 (spr510): undefined
+ privileged reg611 (spr511): undefined
+ vector reg612 (spefscr): undefined
+ privileged reg613 (spr513): undefined
+ privileged reg614 (spr514): undefined
+ privileged reg615 (spr515): undefined
+ privileged reg616 (spr516): undefined
+ privileged reg617 (spr517): undefined
+ privileged reg618 (spr518): undefined
+ privileged reg619 (spr519): undefined
+ privileged reg620 (spr520): undefined
+ privileged reg621 (spr521): undefined
+ privileged reg622 (spr522): undefined
+ privileged reg623 (spr523): undefined
+ privileged reg624 (spr524): undefined
+ privileged reg625 (spr525): undefined
+ privileged reg626 (spr526): undefined
+ privileged reg627 (spr527): undefined
+ privileged reg628 (spr528): undefined
+ privileged reg629 (spr529): undefined
+ privileged reg630 (spr530): undefined
+ privileged reg631 (spr531): undefined
+ privileged reg632 (spr532): undefined
+ privileged reg633 (spr533): undefined
+ privileged reg634 (spr534): undefined
+ privileged reg635 (spr535): undefined
+ privileged reg636 (spr536): undefined
+ privileged reg637 (spr537): undefined
+ privileged reg638 (spr538): undefined
+ privileged reg639 (spr539): undefined
+ privileged reg640 (spr540): undefined
+ privileged reg641 (spr541): undefined
+ privileged reg642 (spr542): undefined
+ privileged reg643 (spr543): undefined
+ privileged reg644 (spr544): undefined
+ privileged reg645 (spr545): undefined
+ privileged reg646 (spr546): undefined
+ privileged reg647 (spr547): undefined
+ privileged reg648 (spr548): undefined
+ privileged reg649 (spr549): undefined
+ privileged reg650 (spr550): undefined
+ privileged reg651 (spr551): undefined
+ privileged reg652 (spr552): undefined
+ privileged reg653 (spr553): undefined
+ privileged reg654 (spr554): undefined
+ privileged reg655 (spr555): undefined
+ privileged reg656 (spr556): undefined
+ privileged reg657 (spr557): undefined
+ privileged reg658 (spr558): undefined
+ privileged reg659 (spr559): undefined
+ privileged reg660 (spr560): undefined
+ privileged reg661 (spr561): undefined
+ privileged reg662 (spr562): undefined
+ privileged reg663 (spr563): undefined
+ privileged reg664 (spr564): undefined
+ privileged reg665 (spr565): undefined
+ privileged reg666 (spr566): undefined
+ privileged reg667 (spr567): undefined
+ privileged reg668 (spr568): undefined
+ privileged reg669 (spr569): undefined
+ privileged reg670 (spr570): undefined
+ privileged reg671 (spr571): undefined
+ privileged reg672 (spr572): undefined
+ privileged reg673 (spr573): undefined
+ privileged reg674 (spr574): undefined
+ privileged reg675 (spr575): undefined
+ privileged reg676 (spr576): undefined
+ privileged reg677 (spr577): undefined
+ privileged reg678 (spr578): undefined
+ privileged reg679 (spr579): undefined
+ privileged reg680 (spr580): undefined
+ privileged reg681 (spr581): undefined
+ privileged reg682 (spr582): undefined
+ privileged reg683 (spr583): undefined
+ privileged reg684 (spr584): undefined
+ privileged reg685 (spr585): undefined
+ privileged reg686 (spr586): undefined
+ privileged reg687 (spr587): undefined
+ privileged reg688 (spr588): undefined
+ privileged reg689 (spr589): undefined
+ privileged reg690 (spr590): undefined
+ privileged reg691 (spr591): undefined
+ privileged reg692 (spr592): undefined
+ privileged reg693 (spr593): undefined
+ privileged reg694 (spr594): undefined
+ privileged reg695 (spr595): undefined
+ privileged reg696 (spr596): undefined
+ privileged reg697 (spr597): undefined
+ privileged reg698 (spr598): undefined
+ privileged reg699 (spr599): undefined
+ privileged reg700 (spr600): undefined
+ privileged reg701 (spr601): undefined
+ privileged reg702 (spr602): undefined
+ privileged reg703 (spr603): undefined
+ privileged reg704 (spr604): undefined
+ privileged reg705 (spr605): undefined
+ privileged reg706 (spr606): undefined
+ privileged reg707 (spr607): undefined
+ privileged reg708 (spr608): undefined
+ privileged reg709 (spr609): undefined
+ privileged reg710 (spr610): undefined
+ privileged reg711 (spr611): undefined
+ privileged reg712 (spr612): undefined
+ privileged reg713 (spr613): undefined
+ privileged reg714 (spr614): undefined
+ privileged reg715 (spr615): undefined
+ privileged reg716 (spr616): undefined
+ privileged reg717 (spr617): undefined
+ privileged reg718 (spr618): undefined
+ privileged reg719 (spr619): undefined
+ privileged reg720 (spr620): undefined
+ privileged reg721 (spr621): undefined
+ privileged reg722 (spr622): undefined
+ privileged reg723 (spr623): undefined
+ privileged reg724 (spr624): undefined
+ privileged reg725 (spr625): undefined
+ privileged reg726 (spr626): undefined
+ privileged reg727 (spr627): undefined
+ privileged reg728 (spr628): undefined
+ privileged reg729 (spr629): undefined
+ privileged reg730 (spr630): undefined
+ privileged reg731 (spr631): undefined
+ privileged reg732 (spr632): undefined
+ privileged reg733 (spr633): undefined
+ privileged reg734 (spr634): undefined
+ privileged reg735 (spr635): undefined
+ privileged reg736 (spr636): undefined
+ privileged reg737 (spr637): undefined
+ privileged reg738 (spr638): undefined
+ privileged reg739 (spr639): undefined
+ privileged reg740 (spr640): undefined
+ privileged reg741 (spr641): undefined
+ privileged reg742 (spr642): undefined
+ privileged reg743 (spr643): undefined
+ privileged reg744 (spr644): undefined
+ privileged reg745 (spr645): undefined
+ privileged reg746 (spr646): undefined
+ privileged reg747 (spr647): undefined
+ privileged reg748 (spr648): undefined
+ privileged reg749 (spr649): undefined
+ privileged reg750 (spr650): undefined
+ privileged reg751 (spr651): undefined
+ privileged reg752 (spr652): undefined
+ privileged reg753 (spr653): undefined
+ privileged reg754 (spr654): undefined
+ privileged reg755 (spr655): undefined
+ privileged reg756 (spr656): undefined
+ privileged reg757 (spr657): undefined
+ privileged reg758 (spr658): undefined
+ privileged reg759 (spr659): undefined
+ privileged reg760 (spr660): undefined
+ privileged reg761 (spr661): undefined
+ privileged reg762 (spr662): undefined
+ privileged reg763 (spr663): undefined
+ privileged reg764 (spr664): undefined
+ privileged reg765 (spr665): undefined
+ privileged reg766 (spr666): undefined
+ privileged reg767 (spr667): undefined
+ privileged reg768 (spr668): undefined
+ privileged reg769 (spr669): undefined
+ privileged reg770 (spr670): undefined
+ privileged reg771 (spr671): undefined
+ privileged reg772 (spr672): undefined
+ privileged reg773 (spr673): undefined
+ privileged reg774 (spr674): undefined
+ privileged reg775 (spr675): undefined
+ privileged reg776 (spr676): undefined
+ privileged reg777 (spr677): undefined
+ privileged reg778 (spr678): undefined
+ privileged reg779 (spr679): undefined
+ privileged reg780 (spr680): undefined
+ privileged reg781 (spr681): undefined
+ privileged reg782 (spr682): undefined
+ privileged reg783 (spr683): undefined
+ privileged reg784 (spr684): undefined
+ privileged reg785 (spr685): undefined
+ privileged reg786 (spr686): undefined
+ privileged reg787 (spr687): undefined
+ privileged reg788 (spr688): undefined
+ privileged reg789 (spr689): undefined
+ privileged reg790 (spr690): undefined
+ privileged reg791 (spr691): undefined
+ privileged reg792 (spr692): undefined
+ privileged reg793 (spr693): undefined
+ privileged reg794 (spr694): undefined
+ privileged reg795 (spr695): undefined
+ privileged reg796 (spr696): undefined
+ privileged reg797 (spr697): undefined
+ privileged reg798 (spr698): undefined
+ privileged reg799 (spr699): undefined
+ privileged reg800 (spr700): undefined
+ privileged reg801 (spr701): undefined
+ privileged reg802 (spr702): undefined
+ privileged reg803 (spr703): undefined
+ privileged reg804 (spr704): undefined
+ privileged reg805 (spr705): undefined
+ privileged reg806 (spr706): undefined
+ privileged reg807 (spr707): undefined
+ privileged reg808 (spr708): undefined
+ privileged reg809 (spr709): undefined
+ privileged reg810 (spr710): undefined
+ privileged reg811 (spr711): undefined
+ privileged reg812 (spr712): undefined
+ privileged reg813 (spr713): undefined
+ privileged reg814 (spr714): undefined
+ privileged reg815 (spr715): undefined
+ privileged reg816 (spr716): undefined
+ privileged reg817 (spr717): undefined
+ privileged reg818 (spr718): undefined
+ privileged reg819 (spr719): undefined
+ privileged reg820 (spr720): undefined
+ privileged reg821 (spr721): undefined
+ privileged reg822 (spr722): undefined
+ privileged reg823 (spr723): undefined
+ privileged reg824 (spr724): undefined
+ privileged reg825 (spr725): undefined
+ privileged reg826 (spr726): undefined
+ privileged reg827 (spr727): undefined
+ privileged reg828 (spr728): undefined
+ privileged reg829 (spr729): undefined
+ privileged reg830 (spr730): undefined
+ privileged reg831 (spr731): undefined
+ privileged reg832 (spr732): undefined
+ privileged reg833 (spr733): undefined
+ privileged reg834 (spr734): undefined
+ privileged reg835 (spr735): undefined
+ privileged reg836 (spr736): undefined
+ privileged reg837 (spr737): undefined
+ privileged reg838 (spr738): undefined
+ privileged reg839 (spr739): undefined
+ privileged reg840 (spr740): undefined
+ privileged reg841 (spr741): undefined
+ privileged reg842 (spr742): undefined
+ privileged reg843 (spr743): undefined
+ privileged reg844 (spr744): undefined
+ privileged reg845 (spr745): undefined
+ privileged reg846 (spr746): undefined
+ privileged reg847 (spr747): undefined
+ privileged reg848 (spr748): undefined
+ privileged reg849 (spr749): undefined
+ privileged reg850 (spr750): undefined
+ privileged reg851 (spr751): undefined
+ privileged reg852 (spr752): undefined
+ privileged reg853 (spr753): undefined
+ privileged reg854 (spr754): undefined
+ privileged reg855 (spr755): undefined
+ privileged reg856 (spr756): undefined
+ privileged reg857 (spr757): undefined
+ privileged reg858 (spr758): undefined
+ privileged reg859 (spr759): undefined
+ privileged reg860 (spr760): undefined
+ privileged reg861 (spr761): undefined
+ privileged reg862 (spr762): undefined
+ privileged reg863 (spr763): undefined
+ privileged reg864 (spr764): undefined
+ privileged reg865 (spr765): undefined
+ privileged reg866 (spr766): undefined
+ privileged reg867 (spr767): undefined
+ privileged reg868 (spr768): undefined
+ privileged reg869 (spr769): undefined
+ privileged reg870 (spr770): undefined
+ privileged reg871 (spr771): undefined
+ privileged reg872 (spr772): undefined
+ privileged reg873 (spr773): undefined
+ privileged reg874 (spr774): undefined
+ privileged reg875 (spr775): undefined
+ privileged reg876 (spr776): undefined
+ privileged reg877 (spr777): undefined
+ privileged reg878 (spr778): undefined
+ privileged reg879 (spr779): undefined
+ privileged reg880 (spr780): undefined
+ privileged reg881 (spr781): undefined
+ privileged reg882 (spr782): undefined
+ privileged reg883 (spr783): undefined
+ privileged reg884 (spr784): undefined
+ privileged reg885 (spr785): undefined
+ privileged reg886 (spr786): undefined
+ privileged reg887 (spr787): undefined
+ privileged reg888 (spr788): undefined
+ privileged reg889 (spr789): undefined
+ privileged reg890 (spr790): undefined
+ privileged reg891 (spr791): undefined
+ privileged reg892 (spr792): undefined
+ privileged reg893 (spr793): undefined
+ privileged reg894 (spr794): undefined
+ privileged reg895 (spr795): undefined
+ privileged reg896 (spr796): undefined
+ privileged reg897 (spr797): undefined
+ privileged reg898 (spr798): undefined
+ privileged reg899 (spr799): undefined
+ privileged reg900 (spr800): undefined
+ privileged reg901 (spr801): undefined
+ privileged reg902 (spr802): undefined
+ privileged reg903 (spr803): undefined
+ privileged reg904 (spr804): undefined
+ privileged reg905 (spr805): undefined
+ privileged reg906 (spr806): undefined
+ privileged reg907 (spr807): undefined
+ privileged reg908 (spr808): undefined
+ privileged reg909 (spr809): undefined
+ privileged reg910 (spr810): undefined
+ privileged reg911 (spr811): undefined
+ privileged reg912 (spr812): undefined
+ privileged reg913 (spr813): undefined
+ privileged reg914 (spr814): undefined
+ privileged reg915 (spr815): undefined
+ privileged reg916 (spr816): undefined
+ privileged reg917 (spr817): undefined
+ privileged reg918 (spr818): undefined
+ privileged reg919 (spr819): undefined
+ privileged reg920 (spr820): undefined
+ privileged reg921 (spr821): undefined
+ privileged reg922 (spr822): undefined
+ privileged reg923 (spr823): undefined
+ privileged reg924 (spr824): undefined
+ privileged reg925 (spr825): undefined
+ privileged reg926 (spr826): undefined
+ privileged reg927 (spr827): undefined
+ privileged reg928 (spr828): undefined
+ privileged reg929 (spr829): undefined
+ privileged reg930 (spr830): undefined
+ privileged reg931 (spr831): undefined
+ privileged reg932 (spr832): undefined
+ privileged reg933 (spr833): undefined
+ privileged reg934 (spr834): undefined
+ privileged reg935 (spr835): undefined
+ privileged reg936 (spr836): undefined
+ privileged reg937 (spr837): undefined
+ privileged reg938 (spr838): undefined
+ privileged reg939 (spr839): undefined
+ privileged reg940 (spr840): undefined
+ privileged reg941 (spr841): undefined
+ privileged reg942 (spr842): undefined
+ privileged reg943 (spr843): undefined
+ privileged reg944 (spr844): undefined
+ privileged reg945 (spr845): undefined
+ privileged reg946 (spr846): undefined
+ privileged reg947 (spr847): undefined
+ privileged reg948 (spr848): undefined
+ privileged reg949 (spr849): undefined
+ privileged reg950 (spr850): undefined
+ privileged reg951 (spr851): undefined
+ privileged reg952 (spr852): undefined
+ privileged reg953 (spr853): undefined
+ privileged reg954 (spr854): undefined
+ privileged reg955 (spr855): undefined
+ privileged reg956 (spr856): undefined
+ privileged reg957 (spr857): undefined
+ privileged reg958 (spr858): undefined
+ privileged reg959 (spr859): undefined
+ privileged reg960 (spr860): undefined
+ privileged reg961 (spr861): undefined
+ privileged reg962 (spr862): undefined
+ privileged reg963 (spr863): undefined
+ privileged reg964 (spr864): undefined
+ privileged reg965 (spr865): undefined
+ privileged reg966 (spr866): undefined
+ privileged reg967 (spr867): undefined
+ privileged reg968 (spr868): undefined
+ privileged reg969 (spr869): undefined
+ privileged reg970 (spr870): undefined
+ privileged reg971 (spr871): undefined
+ privileged reg972 (spr872): undefined
+ privileged reg973 (spr873): undefined
+ privileged reg974 (spr874): undefined
+ privileged reg975 (spr875): undefined
+ privileged reg976 (spr876): undefined
+ privileged reg977 (spr877): undefined
+ privileged reg978 (spr878): undefined
+ privileged reg979 (spr879): undefined
+ privileged reg980 (spr880): undefined
+ privileged reg981 (spr881): undefined
+ privileged reg982 (spr882): undefined
+ privileged reg983 (spr883): undefined
+ privileged reg984 (spr884): undefined
+ privileged reg985 (spr885): undefined
+ privileged reg986 (spr886): undefined
+ privileged reg987 (spr887): undefined
+ privileged reg988 (spr888): undefined
+ privileged reg989 (spr889): undefined
+ privileged reg990 (spr890): undefined
+ privileged reg991 (spr891): undefined
+ privileged reg992 (spr892): undefined
+ privileged reg993 (spr893): undefined
+ privileged reg994 (spr894): undefined
+ privileged reg995 (spr895): undefined
+ privileged reg996 (spr896): undefined
+ privileged reg997 (spr897): undefined
+ privileged reg998 (spr898): undefined
+ privileged reg999 (spr899): undefined
+ vector reg1124 (vr0): undefined
+ vector reg1125 (vr1): undefined
+ vector reg1126 (vr2): undefined
+ vector reg1127 (vr3): undefined
+ vector reg1128 (vr4): undefined
+ vector reg1129 (vr5): undefined
+ vector reg1130 (vr6): undefined
+ vector reg1131 (vr7): undefined
+ vector reg1132 (vr8): undefined
+ vector reg1133 (vr9): undefined
+ vector reg1134 (vr10): undefined
+ vector reg1135 (vr11): undefined
+ vector reg1136 (vr12): undefined
+ vector reg1137 (vr13): undefined
+ vector reg1138 (vr14): undefined
+ vector reg1139 (vr15): undefined
+ vector reg1140 (vr16): undefined
+ vector reg1141 (vr17): undefined
+ vector reg1142 (vr18): undefined
+ vector reg1143 (vr19): undefined
+ vector reg1144 (vr20): undefined
+ vector reg1145 (vr21): undefined
+ vector reg1146 (vr22): undefined
+ vector reg1147 (vr23): undefined
+ vector reg1148 (vr24): undefined
+ vector reg1149 (vr25): undefined
+ vector reg1150 (vr26): undefined
+ vector reg1151 (vr27): undefined
+ vector reg1152 (vr28): undefined
+ vector reg1153 (vr29): undefined
+ vector reg1154 (vr30): undefined
+ vector reg1155 (vr31): undefined
+EOF
+
+# EM_S390 (ELFCLASS32) (function bar 0x4004d8)
+# Note. Only in .eh_frame, there is no .debug_frame.
+# Same as PPC above but with -m31.
+testfiles testfiles390
+testrun_compare ${abs_builddir}/addrcfi -e testfiles390 0x4004d8 <<\EOF
+.eh_frame has 0x4004d8 => [0x4004d8, 0x4004e8):
+ return address in reg14
+ CFA location expression: bregx(15,96)
+ integer reg0 (%r0): undefined
+ integer reg1 (%r1): undefined
+ integer reg2 (%r2): undefined
+ integer reg3 (%r3): undefined
+ integer reg4 (%r4): undefined
+ integer reg5 (%r5): undefined
+ integer reg6 (%r6): same_value
+ integer reg7 (%r7): same_value
+ integer reg8 (%r8): same_value
+ integer reg9 (%r9): same_value
+ integer reg10 (%r10): same_value
+ integer reg11 (%r11): same_value
+ integer reg12 (%r12): same_value
+ integer reg13 (%r13): same_value
+ integer reg14 (%r14): same_value
+ integer reg15 (%r15): same_value
+ FPU reg16 (%f0): undefined
+ FPU reg17 (%f2): undefined
+ FPU reg18 (%f4): undefined
+ FPU reg19 (%f6): undefined
+ FPU reg20 (%f1): undefined
+ FPU reg21 (%f3): undefined
+ FPU reg22 (%f5): undefined
+ FPU reg23 (%f7): undefined
+ FPU reg24 (%f8): same_value
+ FPU reg25 (%f10): same_value
+ FPU reg26 (%f12): same_value
+ FPU reg27 (%f14): same_value
+ FPU reg28 (%f9): same_value
+ FPU reg29 (%f11): same_value
+ FPU reg30 (%f13): same_value
+ FPU reg31 (%f15): same_value
+ control reg32 (%c0): undefined
+ control reg33 (%c1): undefined
+ control reg34 (%c2): undefined
+ control reg35 (%c3): undefined
+ control reg36 (%c4): undefined
+ control reg37 (%c5): undefined
+ control reg38 (%c6): undefined
+ control reg39 (%c7): undefined
+ control reg40 (%c8): undefined
+ control reg41 (%c9): undefined
+ control reg42 (%c10): undefined
+ control reg43 (%c11): undefined
+ control reg44 (%c12): undefined
+ control reg45 (%c13): undefined
+ control reg46 (%c14): undefined
+ control reg47 (%c15): undefined
+ access reg48 (%a0): undefined
+ access reg49 (%a1): undefined
+ access reg50 (%a2): undefined
+ access reg51 (%a3): undefined
+ access reg52 (%a4): undefined
+ access reg53 (%a5): undefined
+ access reg54 (%a6): undefined
+ access reg55 (%a7): undefined
+ access reg56 (%a8): undefined
+ access reg57 (%a9): undefined
+ access reg58 (%a10): undefined
+ access reg59 (%a11): undefined
+ access reg60 (%a12): undefined
+ access reg61 (%a13): undefined
+ access reg62 (%a14): undefined
+ access reg63 (%a15): undefined
+ control reg64 (%pswm): undefined
+ control reg65 (%pswa): undefined
+handle_cfi no CFI (.debug_frame): no error
+EOF
+
+# EM_S390 (ELFCLASS64) (function bar 0x0000000080000510)
+# Note. Only in .eh_frame, there is no .debug_frame.
+# Same as s390 above but without -m31.
+testfiles testfiles390x
+testrun_compare ${abs_builddir}/addrcfi -e testfiles390x 0x0000000080000510 <<\EOF
+.eh_frame has 0x80000510 => [0x80000510, 0x80000524):
+ return address in reg14
+ CFA location expression: bregx(15,160)
+ integer reg0 (%r0): undefined
+ integer reg1 (%r1): undefined
+ integer reg2 (%r2): undefined
+ integer reg3 (%r3): undefined
+ integer reg4 (%r4): undefined
+ integer reg5 (%r5): undefined
+ integer reg6 (%r6): same_value
+ integer reg7 (%r7): same_value
+ integer reg8 (%r8): same_value
+ integer reg9 (%r9): same_value
+ integer reg10 (%r10): same_value
+ integer reg11 (%r11): same_value
+ integer reg12 (%r12): same_value
+ integer reg13 (%r13): same_value
+ integer reg14 (%r14): same_value
+ integer reg15 (%r15): same_value
+ FPU reg16 (%f0): undefined
+ FPU reg17 (%f2): undefined
+ FPU reg18 (%f4): undefined
+ FPU reg19 (%f6): undefined
+ FPU reg20 (%f1): undefined
+ FPU reg21 (%f3): undefined
+ FPU reg22 (%f5): undefined
+ FPU reg23 (%f7): undefined
+ FPU reg24 (%f8): same_value
+ FPU reg25 (%f10): same_value
+ FPU reg26 (%f12): same_value
+ FPU reg27 (%f14): same_value
+ FPU reg28 (%f9): same_value
+ FPU reg29 (%f11): same_value
+ FPU reg30 (%f13): same_value
+ FPU reg31 (%f15): same_value
+ control reg32 (%c0): undefined
+ control reg33 (%c1): undefined
+ control reg34 (%c2): undefined
+ control reg35 (%c3): undefined
+ control reg36 (%c4): undefined
+ control reg37 (%c5): undefined
+ control reg38 (%c6): undefined
+ control reg39 (%c7): undefined
+ control reg40 (%c8): undefined
+ control reg41 (%c9): undefined
+ control reg42 (%c10): undefined
+ control reg43 (%c11): undefined
+ control reg44 (%c12): undefined
+ control reg45 (%c13): undefined
+ control reg46 (%c14): undefined
+ control reg47 (%c15): undefined
+ access reg48 (%a0): undefined
+ access reg49 (%a1): undefined
+ access reg50 (%a2): undefined
+ access reg51 (%a3): undefined
+ access reg52 (%a4): undefined
+ access reg53 (%a5): undefined
+ access reg54 (%a6): undefined
+ access reg55 (%a7): undefined
+ access reg56 (%a8): undefined
+ access reg57 (%a9): undefined
+ access reg58 (%a10): undefined
+ access reg59 (%a11): undefined
+ access reg60 (%a12): undefined
+ access reg61 (%a13): undefined
+ access reg62 (%a14): undefined
+ access reg63 (%a15): undefined
+ control reg64 (%pswm): undefined
+ control reg65 (%pswa): undefined
+handle_cfi no CFI (.debug_frame): no error
+EOF
+
+# EM_ARM (function bar 0x00008510)
+# Note. Only in .debug_frame, the .eh_frame is actually empty.
+# Same as s390 and ppc above.
+testfiles testfilearm
+testrun_compare ${abs_builddir}/addrcfi -e testfilearm 0x00008510 <<\EOF
+dwarf_cfi_addrframe (.eh_frame): no matching address range
+.debug_frame has 0x8510 => [0x8510, 0x8524):
+ return address in reg14
+ CFA location expression: bregx(13)
+ integer reg0 (r0): undefined
+ integer reg1 (r1): undefined
+ integer reg2 (r2): undefined
+ integer reg3 (r3): undefined
+ integer reg4 (r4): same_value
+ integer reg5 (r5): same_value
+ integer reg6 (r6): same_value
+ integer reg7 (r7): same_value
+ integer reg8 (r8): same_value
+ integer reg9 (r9): undefined
+ integer reg10 (r10): same_value
+ integer reg11 (r11): same_value
+ integer reg12 (r12): undefined
+ integer reg13 (sp): location expression: call_frame_cfa stack_value
+ integer reg14 (lr): same_value
+ integer reg15 (pc): location expression: regx(14)
+ FPA reg16 (f0): undefined
+ FPA reg17 (f1): undefined
+ FPA reg18 (f2): undefined
+ FPA reg19 (f3): undefined
+ FPA reg20 (f4): undefined
+ FPA reg21 (f5): undefined
+ FPA reg22 (f6): undefined
+ FPA reg23 (f7): undefined
+ FPA reg96 (f0): undefined
+ FPA reg97 (f1): undefined
+ FPA reg98 (f2): undefined
+ FPA reg99 (f3): undefined
+ FPA reg100 (f4): undefined
+ FPA reg101 (f5): undefined
+ FPA reg102 (f6): undefined
+ FPA reg103 (f7): undefined
+ integer reg128 (spsr): undefined
+ VFP reg256 (d0): undefined
+ VFP reg257 (d1): undefined
+ VFP reg258 (d2): undefined
+ VFP reg259 (d3): undefined
+ VFP reg260 (d4): undefined
+ VFP reg261 (d5): undefined
+ VFP reg262 (d6): undefined
+ VFP reg263 (d7): undefined
+ VFP reg264 (d8): same_value
+ VFP reg265 (d9): same_value
+ VFP reg266 (d10): same_value
+ VFP reg267 (d11): same_value
+ VFP reg268 (d12): same_value
+ VFP reg269 (d13): same_value
+ VFP reg270 (d14): same_value
+ VFP reg271 (d15): same_value
+ VFP reg272 (d16): undefined
+ VFP reg273 (d17): undefined
+ VFP reg274 (d18): undefined
+ VFP reg275 (d19): undefined
+ VFP reg276 (d20): undefined
+ VFP reg277 (d21): undefined
+ VFP reg278 (d22): undefined
+ VFP reg279 (d23): undefined
+ VFP reg280 (d24): undefined
+ VFP reg281 (d25): undefined
+ VFP reg282 (d26): undefined
+ VFP reg283 (d27): undefined
+ VFP reg284 (d28): undefined
+ VFP reg285 (d29): undefined
+ VFP reg286 (d30): undefined
+ VFP reg287 (d31): undefined
+EOF
+
+# EM_AARCH64 (function bar 0x400550)
+# Same as arm, 390 and ppc above.
+# Note missing coverage in .eh_frame.
+testfiles testfileaarch64
+testrun_compare ${abs_builddir}/addrcfi -e testfileaarch64 0x400550 <<\EOF
+dwarf_cfi_addrframe (.eh_frame): no matching address range
+.debug_frame has 0x400550 => [0x400550, 0x400568):
+ return address in reg30
+ CFA location expression: bregx(31)
+ integer reg0 (x0): undefined
+ integer reg1 (x1): undefined
+ integer reg2 (x2): undefined
+ integer reg3 (x3): undefined
+ integer reg4 (x4): undefined
+ integer reg5 (x5): undefined
+ integer reg6 (x6): undefined
+ integer reg7 (x7): undefined
+ integer reg8 (x8): undefined
+ integer reg9 (x9): undefined
+ integer reg10 (x10): undefined
+ integer reg11 (x11): undefined
+ integer reg12 (x12): undefined
+ integer reg13 (x13): undefined
+ integer reg14 (x14): undefined
+ integer reg15 (x15): undefined
+ integer reg16 (x16): undefined
+ integer reg17 (x17): undefined
+ integer reg18 (x18): undefined
+ integer reg19 (x19): same_value
+ integer reg20 (x20): same_value
+ integer reg21 (x21): same_value
+ integer reg22 (x22): same_value
+ integer reg23 (x23): same_value
+ integer reg24 (x24): same_value
+ integer reg25 (x25): same_value
+ integer reg26 (x26): same_value
+ integer reg27 (x27): same_value
+ integer reg28 (x28): same_value
+ integer reg29 (x29): same_value
+ integer reg30 (x30): same_value
+ integer reg31 (sp): undefined
+ integer reg33 (elr): undefined
+ FP/SIMD reg64 (v0): undefined
+ FP/SIMD reg65 (v1): undefined
+ FP/SIMD reg66 (v2): undefined
+ FP/SIMD reg67 (v3): undefined
+ FP/SIMD reg68 (v4): undefined
+ FP/SIMD reg69 (v5): undefined
+ FP/SIMD reg70 (v6): undefined
+ FP/SIMD reg71 (v7): undefined
+ FP/SIMD reg72 (v8): same_value
+ FP/SIMD reg73 (v9): same_value
+ FP/SIMD reg74 (v10): same_value
+ FP/SIMD reg75 (v11): same_value
+ FP/SIMD reg76 (v12): same_value
+ FP/SIMD reg77 (v13): same_value
+ FP/SIMD reg78 (v14): same_value
+ FP/SIMD reg79 (v15): same_value
+ FP/SIMD reg80 (v16): undefined
+ FP/SIMD reg81 (v17): undefined
+ FP/SIMD reg82 (v18): undefined
+ FP/SIMD reg83 (v19): undefined
+ FP/SIMD reg84 (v20): undefined
+ FP/SIMD reg85 (v21): undefined
+ FP/SIMD reg86 (v22): undefined
+ FP/SIMD reg87 (v23): undefined
+ FP/SIMD reg88 (v24): undefined
+ FP/SIMD reg89 (v25): undefined
+ FP/SIMD reg90 (v26): undefined
+ FP/SIMD reg91 (v27): undefined
+ FP/SIMD reg92 (v28): undefined
+ FP/SIMD reg93 (v29): undefined
+ FP/SIMD reg94 (v30): undefined
+ FP/SIMD reg95 (v31): undefined
+EOF
testfiles testfile34 testfile38 testfile41 testfile49
-testrun_compare ../src/addr2line -f -e testfile34 \
+testrun_compare ${abs_top_builddir}/src/addr2line -f -e testfile34 \
0x08048074 0x08048075 0x08048076 \
0x08049078 0x08048080 0x08049080 <<\EOF
foo
??:0
EOF
-testrun_compare ../src/addr2line -S -e testfile38 0x02 0x10a 0x211 0x31a <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile38 0x02 0x10a 0x211 0x31a <<\EOF
t1_global_outer+0x2
??:0
t2_global_symbol+0x2
??:0
EOF
-testrun_compare ../src/addr2line -S -e testfile41 0x1 0x104 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile41 0x1 0x104 <<\EOF
small_global_at_large_global+0x1
??:0
small_global_first_at_large_global+0x1
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
EOF
-testrun_compare ../src/addr2line -S -M testmaps 0x40047c 0x10009db <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps 0x40047c 0x10009db <<\EOF
caller+0x14
/home/drepper/local/elfutils-build/20050425/v.c:11
foo+0xb
# nop #10
# .size local_outer, . - local_outer
# nop #11
-testrun_compare ../src/addr2line -S -e testfile49 \
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile49 \
0 1 2 3 4 5 6 7 8 9 \
0x100 0x101 0x102 0x103 0x104 0x105 \
0x106 0x107 0x108 0x109 0x10a 0x10b \
??:0
EOF
+# .macro global label size
+#\label: .globl \label
+# .size \label, \size
+# .endm
+# .macro weak label size
+#\label: .weak \label
+# .size \label, \size
+# .endm
+# .macro local label size
+#\label: .size \label, \size
+# .endm
+# .macro offset val
+# .ifne (. - _start) - \val
+# .err
+# .endif
+# .byte \val
+# .endm
+#
+#_start:
+# offset 0
+#
+# local glocal, 1
+# weak gweak, 1
+# global gglobal1, 2
+# global gglobal2, 1
+# global gglobal3, 1
+# offset 1
+# /* Symbols end here. */
+# offset 2
+# /* gglobal1 ends here. */
+# offset 3
+#
+# local g0local, 0
+# weak g0weak, 0
+# global g0global1, 0
+# global g0global2, 0
+# offset 4
+#
+# local wlocal, 1
+# weak wweak1, 2
+# weak wweak2, 1
+# weak wweak3, 1
+# offset 5
+# /* Symbols end here. */
+# offset 6
+# /* wweak1 ends here. */
+# offset 7
+#
+# local w0local, 0
+# weak w0weak1, 0
+# weak w0weak2, 0
+# offset 8
+#
+# local llocal1, 2
+# local llocal2, 1
+# local llocal3, 1
+# offset 9
+# /* Symbols end here. */
+# offset 10
+# /* llocal1 ends here. */
+# offset 11
+#
+# local l0local1, 0
+# local l0local2, 0
+# offset 12
+testfiles testfile64
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile64 1 4 5 8 9 12 <<\EOF
+gglobal2
+??:0
+g0global2
+??:0
+wweak2
+??:0
+w0weak2
+??:0
+llocal2
+??:0
+l0local2
+??:0
+EOF
+
+testfiles testfile65
+testrun_compare ${abs_top_builddir}/src/addr2line -S --core=testfile65 0x7fff94bffa30 <<\EOF
+__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
+??:0
+libglobal+0x9
+??:0
+EOF
+
+testfiles testfile70.exec testfile70.core
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile70.exec --core=testfile70.core 0x7ff2cfe9b6b5 <<\EOF
+main+0x9
+??:0
+EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S --core=testfile70.core -e testfile70.exec 0x7ff2cfe9b6b5 <<\EOF
+main+0x9
+??:0
+EOF
+
+testfiles test-core-lib.so test-core.core test-core.exec
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e test-core.exec --core=test-core.core 0x7f67f2aaf619 <<\EOF
+libfunc+0x9
+??:0
+EOF
+
exit 0
testfiles testfile22
-testrun_compare ./addrscopes -e testfile22 0x8048353 <<\EOF
+testrun_compare ${abs_builddir}/addrscopes -e testfile22 0x8048353 <<\EOF
0x8048353:
tests/foo.c (0x11): 0x8048348 (tests/foo.c:5) .. 0x804837e (tests/foo.c:16)
global [ be]
test_cleanup
testfiles testfile24
-testrun_compare ./addrscopes -e testfile24 0x804834e <<\EOF
+testrun_compare ${abs_builddir}/addrscopes -e testfile24 0x804834e <<\EOF
0x804834e:
inline-test.c (0x11): 0x8048348 (/home/roland/build/stock-elfutils/inline-test.c:7) .. 0x8048364 (/home/roland/build/stock-elfutils/inline-test.c:16)
add (0x1d): 0x804834e (/home/roland/build/stock-elfutils/inline-test.c:3) .. 0x8048350 (/home/roland/build/stock-elfutils/inline-test.c:9)
. $srcdir/test-subr.sh
+tempfiles testfile-alldts
+
# This will produce "testfile-alldts" file
-testrun ./alldts
+testrun ${abs_builddir}/alldts
-testrun_compare ../src/readelf -d testfile-alldts <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf -d testfile-alldts <<\EOF
Dynamic segment contains 66 entries:
Addr: 0x000001a0 Offset: 0x000078 Link to section: [ 0] ''
FILTER 0xdeadbeef
EOF
-rm -f testfile-alldts
-
exit 0
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# See run-readelf-dwz-multi.sh
+testfiles libtestfile_multi_shared.so testfile_multi_main testfile_multi.dwz
+testfiles testfile-dwzstr testfile-dwzstr.multi
+
+testrun_compare ${abs_builddir}/allfcts testfile_multi_main libtestfile_multi_shared.so testfile-dwzstr <<\EOF
+/home/mark/src/tests/dwz/main.c:3:main
+/home/mark/src/tests/dwz/shared.c:3:call_foo
+/home/mark/src/tests/main.c:8:main
+EOF
+
+# - test-offset-loop.c
+#
+# #include <stdbool.h>
+# #include <string.h>
+# #include <errno.h>
+# void padding (int x, int y, int z) { }
+# static inline bool is_error (int err) { return err != 0; }
+# static inline int get_errno (void) { return errno; }
+# int main () { return is_error (get_errno ()); }
+#
+# gcc -g -O2 test-offset-loop.c -o test-offset-loop
+# cp test-offset-loop test-offset-loop2
+# dwz test-offset-loop test-offset-loop2 -m test-offset-loop.alt
+
+testfiles test-offset-loop test-offset-loop.alt
+tempfiles allfcts.out
+
+# Use head to capture output because the output could be infinite...
+testrun ${abs_builddir}/allfcts test-offset-loop | head -n 20 > allfcts.out
+testrun_compare cat allfcts.out <<\EOF
+/tmp/test-offset-loop.c:6:get_errno
+/tmp/test-offset-loop.c:5:is_error
+/tmp/test-offset-loop.c:4:padding
+/tmp/test-offset-loop.c:7:main
+EOF
+
+exit 0
#! /bin/sh
-# Copyright (C) 2005 Red Hat, Inc.
+# Copyright (C) 2005, 2013 Red Hat, Inc.
# This file is part of elfutils.
# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
#
testfiles testfile testfile2 testfile8
-testrun_compare ./allfcts testfile testfile2 testfile8 <<\EOF
+testrun_compare ${abs_builddir}/allfcts testfile testfile2 testfile8 <<\EOF
/home/drepper/gnu/new-bu/build/ttt/m.c:5:main
/home/drepper/gnu/new-bu/build/ttt/b.c:4:bar
/home/drepper/gnu/new-bu/build/ttt/f.c:3:foo
/home/drepper/gnu/elfutils/build/src/../../src/strip.c:313:handle_elf
EOF
+# = nested_funcs.c =
+#
+# static int
+# foo (int x)
+# {
+# int bar (int y)
+# {
+# return x - y;
+# }
+#
+# return bar (x * 2);
+# }
+#
+# int
+# main (int argc, char ** argv)
+# {
+# return foo (argc);
+# }
+#
+# gcc -g -o nested_funcs nested_funcs.c
+
+# = class_func.cxx =
+#
+# namespace foobar
+# {
+# class Foo
+# {
+# public:
+# int bar(int x);
+# };
+#
+# int Foo::bar(int x) { return x - 42; }
+# };
+#
+# int
+# main (int argc, char **argv)
+# {
+# foobar::Foo foo;
+#
+# return foo.bar (42);
+# }
+#
+# clang++ -g -o class_func class_func.cxx
+
+testfiles testfile_nested_funcs testfile_class_func
+
+testrun_compare ${abs_builddir}/allfcts testfile_nested_funcs testfile_class_func <<\EOF
+/home/mark/src/tests/nested/nested_funcs.c:2:foo
+/home/mark/src/tests/nested/nested_funcs.c:4:bar
+/home/mark/src/tests/nested/nested_funcs.c:13:main
+/home/mark/src/tests/nested/class_func.cxx:6:bar
+/home/mark/src/tests/nested/class_func.cxx:13:main
+EOF
+
exit 0
#! /bin/sh
-# Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+# Copyright (C) 2005, 2006, 2007, 2012, 2013 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
tempfiles good.regs
cat > good.regs
testfiles "$@"
- for f; do testrun_compare ./allregs -e $f < good.regs; done
+ for f; do testrun_compare ${abs_builddir}/allregs -e $f < good.regs; done
test_cleanup
}
64: pc (pc), address 64 bits
EOF
+regs_test testfile61 <<\EOF
+integer registers:
+ 0: r0 (r0), signed 32 bits
+ 1: r1 (r1), signed 32 bits
+ 2: r2 (r2), signed 32 bits
+ 3: r3 (r3), signed 32 bits
+ 4: r4 (r4), signed 32 bits
+ 5: r5 (r5), signed 32 bits
+ 6: r6 (r6), signed 32 bits
+ 7: r7 (r7), signed 32 bits
+ 8: r8 (r8), signed 32 bits
+ 9: r9 (r9), signed 32 bits
+ 10: r10 (r10), signed 32 bits
+ 11: r11 (r11), signed 32 bits
+ 12: r12 (r12), signed 32 bits
+ 13: sp (sp), address 32 bits
+ 14: lr (lr), address 32 bits
+ 15: pc (pc), address 32 bits
+ 128: spsr (spsr), unsigned 32 bits
+FPA registers:
+ 16: f0 (f0), float 96 bits
+ 17: f1 (f1), float 96 bits
+ 18: f2 (f2), float 96 bits
+ 19: f3 (f3), float 96 bits
+ 20: f4 (f4), float 96 bits
+ 21: f5 (f5), float 96 bits
+ 22: f6 (f6), float 96 bits
+ 23: f7 (f7), float 96 bits
+ 96: f0 (f0), float 96 bits
+ 97: f1 (f1), float 96 bits
+ 98: f2 (f2), float 96 bits
+ 99: f3 (f3), float 96 bits
+ 100: f4 (f4), float 96 bits
+ 101: f5 (f5), float 96 bits
+ 102: f6 (f6), float 96 bits
+ 103: f7 (f7), float 96 bits
+VFP registers:
+ 256: d0 (d0), float 64 bits
+ 257: d1 (d1), float 64 bits
+ 258: d2 (d2), float 64 bits
+ 259: d3 (d3), float 64 bits
+ 260: d4 (d4), float 64 bits
+ 261: d5 (d5), float 64 bits
+ 262: d6 (d6), float 64 bits
+ 263: d7 (d7), float 64 bits
+ 264: d8 (d8), float 64 bits
+ 265: d9 (d9), float 64 bits
+ 266: d10 (d10), float 64 bits
+ 267: d11 (d11), float 64 bits
+ 268: d12 (d12), float 64 bits
+ 269: d13 (d13), float 64 bits
+ 270: d14 (d14), float 64 bits
+ 271: d15 (d15), float 64 bits
+ 272: d16 (d16), float 64 bits
+ 273: d17 (d17), float 64 bits
+ 274: d18 (d18), float 64 bits
+ 275: d19 (d19), float 64 bits
+ 276: d20 (d20), float 64 bits
+ 277: d21 (d21), float 64 bits
+ 278: d22 (d22), float 64 bits
+ 279: d23 (d23), float 64 bits
+ 280: d24 (d24), float 64 bits
+ 281: d25 (d25), float 64 bits
+ 282: d26 (d26), float 64 bits
+ 283: d27 (d27), float 64 bits
+ 284: d28 (d28), float 64 bits
+ 285: d29 (d29), float 64 bits
+ 286: d30 (d30), float 64 bits
+ 287: d31 (d31), float 64 bits
+EOF
+
+# See run-readelf-mixed-corenote.sh for instructions to regenerate
+# this core file.
+regs_test testfile_aarch64_core <<\EOF
+integer registers:
+ 0: x0 (x0), signed 64 bits
+ 1: x1 (x1), signed 64 bits
+ 2: x2 (x2), signed 64 bits
+ 3: x3 (x3), signed 64 bits
+ 4: x4 (x4), signed 64 bits
+ 5: x5 (x5), signed 64 bits
+ 6: x6 (x6), signed 64 bits
+ 7: x7 (x7), signed 64 bits
+ 8: x8 (x8), signed 64 bits
+ 9: x9 (x9), signed 64 bits
+ 10: x10 (x10), signed 64 bits
+ 11: x11 (x11), signed 64 bits
+ 12: x12 (x12), signed 64 bits
+ 13: x13 (x13), signed 64 bits
+ 14: x14 (x14), signed 64 bits
+ 15: x15 (x15), signed 64 bits
+ 16: x16 (x16), signed 64 bits
+ 17: x17 (x17), signed 64 bits
+ 18: x18 (x18), signed 64 bits
+ 19: x19 (x19), signed 64 bits
+ 20: x20 (x20), signed 64 bits
+ 21: x21 (x21), signed 64 bits
+ 22: x22 (x22), signed 64 bits
+ 23: x23 (x23), signed 64 bits
+ 24: x24 (x24), signed 64 bits
+ 25: x25 (x25), signed 64 bits
+ 26: x26 (x26), signed 64 bits
+ 27: x27 (x27), signed 64 bits
+ 28: x28 (x28), signed 64 bits
+ 29: x29 (x29), signed 64 bits
+ 30: x30 (x30), signed 64 bits
+ 31: sp (sp), address 64 bits
+ 33: elr (elr), address 64 bits
+FP/SIMD registers:
+ 64: v0 (v0), unsigned 128 bits
+ 65: v1 (v1), unsigned 128 bits
+ 66: v2 (v2), unsigned 128 bits
+ 67: v3 (v3), unsigned 128 bits
+ 68: v4 (v4), unsigned 128 bits
+ 69: v5 (v5), unsigned 128 bits
+ 70: v6 (v6), unsigned 128 bits
+ 71: v7 (v7), unsigned 128 bits
+ 72: v8 (v8), unsigned 128 bits
+ 73: v9 (v9), unsigned 128 bits
+ 74: v10 (v10), unsigned 128 bits
+ 75: v11 (v11), unsigned 128 bits
+ 76: v12 (v12), unsigned 128 bits
+ 77: v13 (v13), unsigned 128 bits
+ 78: v14 (v14), unsigned 128 bits
+ 79: v15 (v15), unsigned 128 bits
+ 80: v16 (v16), unsigned 128 bits
+ 81: v17 (v17), unsigned 128 bits
+ 82: v18 (v18), unsigned 128 bits
+ 83: v19 (v19), unsigned 128 bits
+ 84: v20 (v20), unsigned 128 bits
+ 85: v21 (v21), unsigned 128 bits
+ 86: v22 (v22), unsigned 128 bits
+ 87: v23 (v23), unsigned 128 bits
+ 88: v24 (v24), unsigned 128 bits
+ 89: v25 (v25), unsigned 128 bits
+ 90: v26 (v26), unsigned 128 bits
+ 91: v27 (v27), unsigned 128 bits
+ 92: v28 (v28), unsigned 128 bits
+ 93: v29 (v29), unsigned 128 bits
+ 94: v30 (v30), unsigned 128 bits
+ 95: v31 (v31), unsigned 128 bits
+EOF
+
exit 0
tempfiles arextract.test
-archive=../libelf/libelf.a
+archive=${abs_top_builddir}/libelf/libelf.a
if test -f $archive; then
# The file is really available (i.e., no shared-only built).
echo -n "Extracting symbols... $ac_c"
# The files we are looking at.
- for f in ../libelf/*.o; do
- testrun ./arextract $archive `basename $f` arextract.test || exit 1
+ for f in ${abs_top_builddir}/libelf/*.o; do
+ testrun ${abs_builddir}/arextract $archive `basename $f` arextract.test || exit 1
cmp $f arextract.test || {
echo "Extraction of $1 failed"
exit 1
. $srcdir/test-subr.sh
-lib=../libelf/libelf.a
+lib=${abs_top_builddir}/libelf/libelf.a
okfile=arsymtest.ok
tmpfile=arsymtest.tmp
testfile=arsymtest.test
result=77
if test -f $lib; then
# Generate list using `nm' we check against.
- nm -s $lib |
+ ${NM} -s $lib |
sed -e '1,/^Arch/d' -e '/^$/,$d' |
sort > $okfile
# Now run our program using libelf.
- testrun ./arsymtest $lib $tmpfile || exit 1
+ testrun ${abs_builddir}/arsymtest $lib $tmpfile || exit 1
sort $tmpfile > $testfile
# Compare the outputs.
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+# backtrace.aarch64.exe is a -static binary of backtrace-child.
+# backtrace.aarch64.core was generated by running the static backtrace-child
+# with --gencore.
+check_core aarch64
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+check_core i386
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+check_core ppc
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+check_core s390
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+check_core s390x
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+check_core x86_64
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+# This test really cannot be run under valgrind, it tries to introspect
+# its own maps and registers and will find valgrinds instead.
+unset VALGRIND_CMD
+
+tempfiles data.{bt,err}
+(set +ex; testrun ${abs_builddir}/backtrace-data 1>data.bt 2>data.err; true)
+cat data.{bt,err}
+check_unsupported data.err data
+check_all data.{bt,err} data
--- /dev/null
+#! /bin/bash
+# Copyright (C) 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test -n "$ELFUTILS_DISABLE_DEMANGLE"; then
+ exit 77
+fi
+
+. $srcdir/backtrace-subr.sh
+
+child=testfile-backtrace-demangle
+testfiles $child{,.core}
+tempfiles $child.{bt,err}
+
+# There can be more than 3 frames, but depending on the system/installed
+# glibc we might not be able to unwind fully till the end.
+# cxxfunc -> f -> main
+# Expect to see the top two and a warning that there are more frames
+# (exit code 1)
+testrun ${abs_top_builddir}/src/stack -n 2 -e $child --core $child.core >$child.bt 2>$child.err || exitcode=$?
+cat $child.{bt,err}
+if test $exitcode != 1 || ! grep "shown max number of frames" $child.err; then
+ echo >&2 $2: expected more than 2 frames
+ false
+fi
+if ! grep -w f $child.bt; then
+ echo >&2 $2: no f
+ false
+fi
+if ! grep ' cxxfunc(int)' $child.bt; then
+ echo >&2 $2: no cxxfunc
+ false
+fi
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+# This test really cannot be run under valgrind, it tries to introspect
+# itself through ptrace and will find bits and pieces of valgrind.
+# On top of that valgrind also tries to read all the unwind info and
+# will warn and complain about various opcodes it doesn't understand...
+unset VALGRIND_CMD
+
+tempfiles dwarf.{bt,err}
+(set +ex; testrun ${abs_builddir}/backtrace-dwarf 1>dwarf.bt 2>dwarf.err; true)
+cat dwarf.{bt,err}
+check_native_unsupported dwarf.err dwarf
+check_main dwarf.bt dwarf
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test -n "$ELFUTILS_DISABLE_BIARCH"; then
+ exit 77
+fi
+
+. $srcdir/backtrace-subr.sh
+
+check_native backtrace-child-biarch
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test -n "$ELFUTILS_DISABLE_BIARCH"; then
+ exit 77
+fi
+
+. $srcdir/backtrace-subr.sh
+
+check_native_core backtrace-child-biarch
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+check_native_core backtrace-child
--- /dev/null
+#! /bin/bash
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/backtrace-subr.sh
+
+check_native backtrace-child
testfiles testfile28 testfile28.rdwr
-testrun ./rdwrmmap testfile28
+testrun ${abs_builddir}/rdwrmmap testfile28
cmp testfile28 testfile28.rdwr
testfiles testfile29 testfile29.rdwr
-testrun ./rdwrmmap testfile29
+testrun ${abs_builddir}/rdwrmmap testfile29
cmp testfile29 testfile29.rdwr
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Just some random testfiles, four with, one without build-id,
+# and one without shdrs forcing reading the notes through phdrs.
+# eu-strip --strip-sections -g --output=testfile42_noshdrs testfile42
+# See also run-debugaltlink.sh.
+testfiles testfile42 testfile_multi.dwz testfile-dwzstr.multi \
+ test-offset-loop.alt testfile14 testfile42_noshdrs
+
+testrun_compare ${abs_builddir}/buildid testfile42 testfile42_noshdrs \
+ testfile_multi.dwz testfile-dwzstr.multi \
+ test-offset-loop.alt testfile14 <<\EOF
+testfile42: build ID: d826d96c4d097bdc5c254b1f7344a907e36b0439
+testfile42_noshdrs: build ID: d826d96c4d097bdc5c254b1f7344a907e36b0439
+testfile_multi.dwz: build ID: a0d6c06e0d912d74033b6fe2808753cae8f6f594
+testfile-dwzstr.multi: build ID: 6da22627dae55c1d62cf9122827c665e240a056b
+test-offset-loop.alt: build ID: 066bbf1a7bc5676f5015ee1966a088f23bdb83ae
+testfile14: <no NT_GNU_BUILD_ID note>
+EOF
+
+exit 0
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Just some random testfiles, four with, one without .gnu_debugaltlink
+testfiles testfile42 testfile_multi_main testfile-dwzstr \
+ test-offset-loop libtestfile_multi_shared.so
+
+testrun_compare ${abs_builddir}/debugaltlink testfile42 \
+ testfile_multi_main testfile-dwzstr \
+ test-offset-loop libtestfile_multi_shared.so <<\EOF
+testfile42: <no .gnu_debugaltlink section>
+testfile_multi_main: testfile_multi.dwz, build ID: a0d6c06e0d912d74033b6fe2808753cae8f6f594
+testfile-dwzstr: testfile-dwzstr.multi, build ID: 6da22627dae55c1d62cf9122827c665e240a056b
+test-offset-loop: test-offset-loop.alt, build ID: 066bbf1a7bc5676f5015ee1966a088f23bdb83ae
+libtestfile_multi_shared.so: testfile_multi.dwz, build ID: a0d6c06e0d912d74033b6fe2808753cae8f6f594
+EOF
+
+exit 0
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Just some random testfiles, two with, one without .gnu_debuglink
+testfiles testfile36 testfile52-32.so testfile42
+
+testrun_compare ${abs_builddir}/debuglink testfile36 testfile52-32.so testfile42 <<\EOF
+testfile36: testfile36.debug, crc: 8c5c20a3
+testfile52-32.so: testfile52-32.so.debug, crc: b835a71d
+testfile42: <no gnu_debuglink file>
+EOF
+
+exit 0
tempfiles testfile45.o
testfiles testfile45.S testfile45.expect
gcc -m64 -c -o testfile45.o testfile45.S
- testrun_compare ../src/objdump -d testfile45.o < testfile45.expect
+ testrun_compare ${abs_top_builddir}/src/objdump -d testfile45.o < testfile45.expect
;;
esac
tempfiles testfile44.o
testfiles testfile44.S testfile44.expect
gcc -m32 -c -o testfile44.o testfile44.S
- testrun_compare ../src/objdump -d testfile44.o < testfile44.expect
+ testrun_compare ${abs_top_builddir}/src/objdump -d testfile44.o < testfile44.expect
;;
esac
testfiles testfile51
-testrun_compare ./dwarf-getmacros testfile51 0xb <<\EOF
+testrun_compare ${abs_builddir}/dwarf-getmacros testfile51 0xb <<\EOF
__STDC__ 1
__STDC_HOSTED__ 1
__GNUC__ 4
macro1 ble
EOF
-testrun_compare ./dwarf-getmacros testfile51 0x84 <<\EOF
+testrun_compare ${abs_builddir}/dwarf-getmacros testfile51 0x84 <<\EOF
__STDC__ 1
__STDC_HOSTED__ 1
__GNUC__ 4
testfiles testfile11
-testrun_compare ./dwarf-getstring testfile11 <<\EOF
+testrun_compare ${abs_builddir}/dwarf-getstring testfile11 <<\EOF
_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_
itimerspec
_G_int32_t
testfiles testfile43 testfile50
-testrun_compare ./dwfl-addr-sect -e testfile43 0x64 0x8 0x98 <<\EOF
+testrun_compare ${abs_builddir}/dwfl-addr-sect -e testfile43 0x64 0x8 0x98 <<\EOF
address 0x64 => module "" section 4 + 0
address 0x8 => module "" section 1 + 0x8
address 0x98 => module "" section 7 + 0
EOF
-testrun_compare ./dwfl-addr-sect -e testfile50 0x1 <<\EOF
+testrun_compare ${abs_builddir}/dwfl-addr-sect -e testfile50 0x1 <<\EOF
address 0x1 => module "" section 1 + 0x1
EOF
testfiles testfile36 testfile36.debug
-testrun_compare ./dwflmodtest -e testfile36 <<\EOF
+testrun_compare ${abs_builddir}/dwflmodtest -e testfile36 <<\EOF
module: 00000000..00002308 testfile36 (null)
module: 00000000 DWARF 0 (no error)
module: 00000000..00002308 testfile36 testfile36.debug
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+testfiles testfile-dwfl-report-elf-align-shlib.so
+
+# /proc/PID/maps when the process was running:
+# 7f3560c92000-7f3560c93000 r-xp 00000000 fd:02 25037063 testfile-dwfl-report-elf-align-shlib.so
+# 7f3560c93000-7f3560e92000 ---p 00001000 fd:02 25037063 testfile-dwfl-report-elf-align-shlib.so
+# 7f3560e92000-7f3560e93000 rw-p 00000000 fd:02 25037063 testfile-dwfl-report-elf-align-shlib.so
+# testfile-dwfl-report-elf-align-shlib.so:
+# Program Headers:
+# Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
+# LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x00065c 0x00065c R E 0x200000
+# LOAD 0x000660 0x0000000000200660 0x0000000000200660 0x0001f0 0x000200 RW 0x200000
+# Symbol table '.dynsym' contains 12 entries:
+# Num: Value Size Type Bind Vis Ndx Name
+# 8: 000000000000057c 11 FUNC GLOBAL DEFAULT 11 shlib
+# GDB output showing proper relocation:
+# #1 0x00007f3560c92585 in shlib () from ./testfile-dwfl-report-elf-align-shlib.so
+#
+# 0x7f3560c92000 is VMA address of first byte of testfile-dwfl-report-elf-align-shlib.so.
+# 0x7f3560c92585 = 0x7f3560c92000 + 0x585
+# where 0x585 is any address inside the shlib function: 0x57c .. 0x57c + 11 -1
+
+testrun ${abs_builddir}/dwfl-report-elf-align ./testfile-dwfl-report-elf-align-shlib.so \
+ 0x7f3560c92000 0x7f3560c92585 shlib
+
+exit 0
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+testfiles testfile testfile2
+
+testrun_compare ${abs_builddir}/dwfllines -e testfile <<\EOF
+mod: CU: [b] m.c
+0 0x804842c /home/drepper/gnu/new-bu/build/ttt/m.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+1 0x8048432 /home/drepper/gnu/new-bu/build/ttt/m.c:6:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+2 0x804844d /home/drepper/gnu/new-bu/build/ttt/m.c:7:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+3 0x8048458 /home/drepper/gnu/new-bu/build/ttt/m.c:8:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+4 0x804845a /home/drepper/gnu/new-bu/build/ttt/m.c:8:0
+ time: 0, len: 0, idx: 0, b: 1, e: 1, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+mod: CU: [ca] b.c
+0 0x804845c /home/drepper/gnu/new-bu/build/ttt/b.c:4:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+1 0x804845f /home/drepper/gnu/new-bu/build/ttt/b.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+2 0x8048464 /home/drepper/gnu/new-bu/build/ttt/b.c:6:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+3 0x8048466 /home/drepper/gnu/new-bu/build/ttt/b.c:6:0
+ time: 0, len: 0, idx: 0, b: 1, e: 1, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+mod: CU: [15fc] f.c
+0 0x8048468 /home/drepper/gnu/new-bu/build/ttt/f.c:3:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+1 0x804846b /home/drepper/gnu/new-bu/build/ttt/f.c:4:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+2 0x8048470 /home/drepper/gnu/new-bu/build/ttt/f.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+3 0x8048472 /home/drepper/gnu/new-bu/build/ttt/f.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 1, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+EOF
+
+testrun_compare ${abs_builddir}/dwfllines -e testfile2 <<\EOF
+mod: CU: [b] b.c
+0 0x10000470 /shoggoth/drepper/b.c:4:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+1 0x1000047c /shoggoth/drepper/b.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+2 0x10000480 /shoggoth/drepper/b.c:6:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+3 0x10000490 /shoggoth/drepper/b.c:6:0
+ time: 0, len: 0, idx: 0, b: 1, e: 1, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+mod: CU: [97d] f.c
+0 0x10000490 /shoggoth/drepper/f.c:3:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+1 0x1000049c /shoggoth/drepper/f.c:4:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+2 0x100004a0 /shoggoth/drepper/f.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+3 0x100004b0 /shoggoth/drepper/f.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 1, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+mod: CU: [9e4] m.c
+0 0x100004b0 /shoggoth/drepper/m.c:5:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+1 0x100004cc /shoggoth/drepper/m.c:6:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+2 0x100004e8 /shoggoth/drepper/m.c:7:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+3 0x100004f4 /shoggoth/drepper/m.c:8:0
+ time: 0, len: 0, idx: 0, b: 1, e: 0, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+4 0x10000514 /shoggoth/drepper/m.c:8:0
+ time: 0, len: 0, idx: 0, b: 1, e: 1, pe: 0, eb: 0, block: 0, isa: 0, disc: 0
+EOF
+
+testrun_on_self_quiet ${abs_builddir}/dwfllines -e
+
+exit 0
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Tests dwfl_module_{addrsym,getsym,relocate_address}
+# See run-readelf-s.sh for how to generate test binaries.
+# In addition, *_pl files were created from their base file
+# with prelink -N, and *_plr with prelink -r 0x4200000000.
+
+testfiles testfilebaztab
+testfiles testfilebazdbg testfilebazdbg.debug
+testfiles testfilebazdbg_pl
+testfiles testfilebazdbg_plr
+testfiles testfilebazdyn
+testfiles testfilebazmdb
+testfiles testfilebazmin
+testfiles testfilebazmin_pl
+testfiles testfilebazmin_plr
+testfiles testfilebasmin
+testfiles testfilebaxmin
+
+tempfiles testfile.dynsym.in testfile.symtab.in testfile.minsym.in dwflsyms.out
+tempfiles testfile.symtab_pl.in testfile.minsym_pl.in
+
+cat > testfile.symtab.in <<\EOF
+ 0: NOTYPE LOCAL (0) 0
+ 1: SECTION LOCAL (0) 0x238
+ 2: SECTION LOCAL (0) 0x254
+ 3: SECTION LOCAL (0) 0x274
+ 4: SECTION LOCAL (0) 0x298
+ 5: SECTION LOCAL (0) 0x2d8
+ 6: SECTION LOCAL (0) 0x428
+ 7: SECTION LOCAL (0) 0x4f2
+ 8: SECTION LOCAL (0) 0x510
+ 9: SECTION LOCAL (0) 0x530
+ 10: SECTION LOCAL (0) 0x638
+ 11: SECTION LOCAL (0) 0x680
+ 12: SECTION LOCAL (0) 0x6a0
+ 13: SECTION LOCAL (0) 0x6e0
+ 14: SECTION LOCAL (0) 0x8f4
+ 15: SECTION LOCAL (0) 0x900
+ 16: SECTION LOCAL (0) 0x904
+ 17: SECTION LOCAL (0) 0x948
+ 18: SECTION LOCAL (0) 0x200dd0
+ 19: SECTION LOCAL (0) 0x200dd8
+ 20: SECTION LOCAL (0) 0x200de0
+ 21: SECTION LOCAL (0) 0x200de8
+ 22: SECTION LOCAL (0) 0x200df0
+ 23: SECTION LOCAL (0) 0x200fc0
+ 24: SECTION LOCAL (0) 0x201000
+ 25: SECTION LOCAL (0) 0x201030
+ 26: SECTION LOCAL (0) 0x20103c
+ 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: FILE LOCAL crtstuff.c (0) 0
+ 34: OBJECT LOCAL __JCR_LIST__ (0) 0x200de0
+ 35: FUNC LOCAL deregister_tm_clones (0) 0x710, rel: 0x710 (.text)
+ 36: FUNC LOCAL register_tm_clones (0) 0x740, rel: 0x740 (.text)
+ 37: FUNC LOCAL __do_global_dtors_aux (0) 0x780, rel: 0x780 (.text)
+ 38: OBJECT LOCAL completed.6137 (1) 0x20103c
+ 39: OBJECT LOCAL __do_global_dtors_aux_fini_array_entry (0) 0x200dd8
+ 40: FUNC LOCAL frame_dummy (0) 0x7c0, rel: 0x7c0 (.text)
+ 41: OBJECT LOCAL __frame_dummy_init_array_entry (0) 0x200dd0
+ 42: FILE LOCAL foo.c (0) 0
+ 43: FILE LOCAL bar.c (0) 0
+ 44: OBJECT LOCAL b1 (4) 0x201034
+ 45: FUNC LOCAL foo (20) 0x814, rel: 0x814 (.text)
+ 46: FILE LOCAL crtstuff.c (0) 0
+ 47: OBJECT LOCAL __FRAME_END__ (0) 0xa58
+ 48: OBJECT LOCAL __JCR_END__ (0) 0x200de0
+ 49: FILE LOCAL (0) 0
+ 50: NOTYPE LOCAL __init_array_end (0) 0x200dd8
+ 51: OBJECT LOCAL _DYNAMIC (0) 0x200df0
+ 52: NOTYPE LOCAL __init_array_start (0) 0x200dd0
+ 53: OBJECT LOCAL _GLOBAL_OFFSET_TABLE_ (0) 0x201000
+ 54: FUNC GLOBAL __libc_csu_fini (2) 0x8f0, rel: 0x8f0 (.text)
+ 55: NOTYPE WEAK _ITM_deregisterTMCloneTable (0) 0
+ 56: NOTYPE WEAK data_start (0) 0x201030
+ 57: NOTYPE GLOBAL _edata (0) 0x20103c
+ 58: FUNC GLOBAL bar (44) 0x828, rel: 0x828 (.text)
+ 59: FUNC GLOBAL _fini (0) 0x8f4, rel: 0x8f4 (.fini)
+ 60: FUNC GLOBAL __libc_start_main@@GLIBC_2.2.5 (0) 0
+ 61: NOTYPE GLOBAL __data_start (0) 0x201030
+ 62: NOTYPE WEAK __gmon_start__ (0) 0
+ 63: OBJECT GLOBAL __dso_handle (0) 0x200de8
+ 64: OBJECT GLOBAL _IO_stdin_used (4) 0x900
+ 65: OBJECT GLOBAL b2 (4) 0x201038
+ 66: FUNC GLOBAL __libc_csu_init (137) 0x860, rel: 0x860 (.text)
+ 67: NOTYPE GLOBAL _end (0) 0x201040
+ 68: FUNC GLOBAL _start (0) 0x6e0, rel: 0x6e0 (.text)
+ 69: NOTYPE GLOBAL __bss_start (0) 0x20103c
+ 70: FUNC GLOBAL main (35) 0x7f0, rel: 0x7f0 (.text)
+ 71: NOTYPE WEAK _Jv_RegisterClasses (0) 0
+ 72: OBJECT GLOBAL __TMC_END__ (0) 0x201040
+ 73: NOTYPE WEAK _ITM_registerTMCloneTable (0) 0
+ 74: FUNC WEAK __cxa_finalize@@GLIBC_2.2.5 (0) 0
+ 75: FUNC GLOBAL _init (0) 0x680, rel: 0x680 (.init)
+EOF
+
+cat > testfile.symtab_pl.in <<\EOF
+ 0: NOTYPE LOCAL (0) 0
+ 1: SECTION LOCAL (0) 0x3000000238
+ 2: SECTION LOCAL (0) 0x3000000254
+ 3: SECTION LOCAL (0) 0x3000000274
+ 4: SECTION LOCAL (0) 0x3000000298
+ 5: SECTION LOCAL (0) 0x30000002d8
+ 6: SECTION LOCAL (0) 0x3000000428
+ 7: SECTION LOCAL (0) 0x30000004f2
+ 8: SECTION LOCAL (0) 0x3000000510
+ 9: SECTION LOCAL (0) 0x3000000530
+ 10: SECTION LOCAL (0) 0x3000000638
+ 11: SECTION LOCAL (0) 0x3000000680
+ 12: SECTION LOCAL (0) 0x30000006a0
+ 13: SECTION LOCAL (0) 0x30000006e0
+ 14: SECTION LOCAL (0) 0x30000008f4
+ 15: SECTION LOCAL (0) 0x3000000900
+ 16: SECTION LOCAL (0) 0x3000000904
+ 17: SECTION LOCAL (0) 0x3000000948
+ 18: SECTION LOCAL (0) 0x3000200dd0
+ 19: SECTION LOCAL (0) 0x3000200dd8
+ 20: SECTION LOCAL (0) 0x3000200de0
+ 21: SECTION LOCAL (0) 0x3000200de8
+ 22: SECTION LOCAL (0) 0x3000200df0
+ 23: SECTION LOCAL (0) 0x3000200fc0
+ 24: SECTION LOCAL (0) 0x3000201000
+ 25: SECTION LOCAL (0) 0x3000201030
+ 26: SECTION LOCAL (0) 0x300020103c
+ 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: FILE LOCAL crtstuff.c (0) 0
+ 34: OBJECT LOCAL __JCR_LIST__ (0) 0x3000200de0
+ 35: FUNC LOCAL deregister_tm_clones (0) 0x3000000710, rel: 0x710 (.text)
+ 36: FUNC LOCAL register_tm_clones (0) 0x3000000740, rel: 0x740 (.text)
+ 37: FUNC LOCAL __do_global_dtors_aux (0) 0x3000000780, rel: 0x780 (.text)
+ 38: OBJECT LOCAL completed.6137 (1) 0x300020103c
+ 39: OBJECT LOCAL __do_global_dtors_aux_fini_array_entry (0) 0x3000200dd8
+ 40: FUNC LOCAL frame_dummy (0) 0x30000007c0, rel: 0x7c0 (.text)
+ 41: OBJECT LOCAL __frame_dummy_init_array_entry (0) 0x3000200dd0
+ 42: FILE LOCAL foo.c (0) 0
+ 43: FILE LOCAL bar.c (0) 0
+ 44: OBJECT LOCAL b1 (4) 0x3000201034
+ 45: FUNC LOCAL foo (20) 0x3000000814, rel: 0x814 (.text)
+ 46: FILE LOCAL crtstuff.c (0) 0
+ 47: OBJECT LOCAL __FRAME_END__ (0) 0x3000000a58
+ 48: OBJECT LOCAL __JCR_END__ (0) 0x3000200de0
+ 49: FILE LOCAL (0) 0
+ 50: NOTYPE LOCAL __init_array_end (0) 0x3000200dd8
+ 51: OBJECT LOCAL _DYNAMIC (0) 0x3000200df0
+ 52: NOTYPE LOCAL __init_array_start (0) 0x3000200dd0
+ 53: OBJECT LOCAL _GLOBAL_OFFSET_TABLE_ (0) 0x3000201000
+ 54: FUNC GLOBAL __libc_csu_fini (2) 0x30000008f0, rel: 0x8f0 (.text)
+ 55: NOTYPE WEAK _ITM_deregisterTMCloneTable (0) 0
+ 56: NOTYPE WEAK data_start (0) 0x3000201030
+ 57: NOTYPE GLOBAL _edata (0) 0x300020103c
+ 58: FUNC GLOBAL bar (44) 0x3000000828, rel: 0x828 (.text)
+ 59: FUNC GLOBAL _fini (0) 0x30000008f4, rel: 0x8f4 (.fini)
+ 60: FUNC GLOBAL __libc_start_main@@GLIBC_2.2.5 (0) 0
+ 61: NOTYPE GLOBAL __data_start (0) 0x3000201030
+ 62: NOTYPE WEAK __gmon_start__ (0) 0
+ 63: OBJECT GLOBAL __dso_handle (0) 0x3000200de8
+ 64: OBJECT GLOBAL _IO_stdin_used (4) 0x3000000900
+ 65: OBJECT GLOBAL b2 (4) 0x3000201038
+ 66: FUNC GLOBAL __libc_csu_init (137) 0x3000000860, rel: 0x860 (.text)
+ 67: NOTYPE GLOBAL _end (0) 0x3000201040
+ 68: FUNC GLOBAL _start (0) 0x30000006e0, rel: 0x6e0 (.text)
+ 69: NOTYPE GLOBAL __bss_start (0) 0x300020103c
+ 70: FUNC GLOBAL main (35) 0x30000007f0, rel: 0x7f0 (.text)
+ 71: NOTYPE WEAK _Jv_RegisterClasses (0) 0
+ 72: OBJECT GLOBAL __TMC_END__ (0) 0x3000201040
+ 73: NOTYPE WEAK _ITM_registerTMCloneTable (0) 0
+ 74: FUNC WEAK __cxa_finalize@@GLIBC_2.2.5 (0) 0
+ 75: FUNC GLOBAL _init (0) 0x3000000680, rel: 0x680 (.init)
+EOF
+
+cat > testfile.dynsym.in <<\EOF
+ 0: NOTYPE LOCAL (0) 0
+ 1: SECTION LOCAL (0) 0x238
+ 2: NOTYPE WEAK _ITM_deregisterTMCloneTable (0) 0
+ 3: FUNC GLOBAL __libc_start_main (0) 0
+ 4: NOTYPE WEAK __gmon_start__ (0) 0
+ 5: NOTYPE WEAK _Jv_RegisterClasses (0) 0
+ 6: NOTYPE WEAK _ITM_registerTMCloneTable (0) 0
+ 7: FUNC WEAK __cxa_finalize (0) 0
+ 8: NOTYPE GLOBAL _edata (0) 0x20103c
+ 9: NOTYPE GLOBAL _end (0) 0x201040
+ 10: FUNC GLOBAL __libc_csu_init (137) 0x860, rel: 0x860 (.text)
+ 11: NOTYPE GLOBAL __bss_start (0) 0x20103c
+ 12: FUNC GLOBAL main (35) 0x7f0, rel: 0x7f0 (.text)
+ 13: FUNC GLOBAL __libc_csu_fini (2) 0x8f0, rel: 0x8f0 (.text)
+EOF
+
+cat > testfile.minsym.in <<\EOF
+ 0: NOTYPE LOCAL (0) 0
+ 1: SECTION LOCAL (0) 0x238
+ 2: FUNC LOCAL deregister_tm_clones (0) 0x710, rel: 0x710 (.text)
+ 3: FUNC LOCAL register_tm_clones (0) 0x740, rel: 0x740 (.text)
+ 4: FUNC LOCAL __do_global_dtors_aux (0) 0x780, rel: 0x780 (.text)
+ 5: OBJECT LOCAL __do_global_dtors_aux_fini_array_entry (0) 0x200dd8
+ 6: FUNC LOCAL frame_dummy (0) 0x7c0, rel: 0x7c0 (.text)
+ 7: OBJECT LOCAL __frame_dummy_init_array_entry (0) 0x200dd0
+ 8: FUNC LOCAL foo (20) 0x814, rel: 0x814 (.text)
+ 9: NOTYPE LOCAL __init_array_end (0) 0x200dd8
+ 10: NOTYPE LOCAL __init_array_start (0) 0x200dd0
+ 11: SECTION LOCAL (0) 0x238
+ 12: SECTION LOCAL (0) 0x254
+ 13: SECTION LOCAL (0) 0x274
+ 14: SECTION LOCAL (0) 0x298
+ 15: SECTION LOCAL (0) 0x2d8
+ 16: SECTION LOCAL (0) 0x428
+ 17: SECTION LOCAL (0) 0x4f2
+ 18: SECTION LOCAL (0) 0x510
+ 19: SECTION LOCAL (0) 0x530
+ 20: SECTION LOCAL (0) 0x638
+ 21: SECTION LOCAL (0) 0x680
+ 22: SECTION LOCAL (0) 0x6a0
+ 23: SECTION LOCAL (0) 0x6e0
+ 24: SECTION LOCAL (0) 0x8f4
+ 25: SECTION LOCAL (0) 0x900
+ 26: SECTION LOCAL (0) 0x904
+ 27: SECTION LOCAL (0) 0x948
+ 28: SECTION LOCAL (0) 0x200dd0
+ 29: SECTION LOCAL (0) 0x200dd8
+ 30: SECTION LOCAL (0) 0x200de0
+ 31: SECTION LOCAL (0) 0x200de8
+ 32: SECTION LOCAL (0) 0x200df0
+ 33: SECTION LOCAL (0) 0x200fc0
+ 34: SECTION LOCAL (0) 0x201000
+ 35: SECTION LOCAL (0) 0x201030
+ 36: SECTION LOCAL (0) 0x20103c
+ 37: NOTYPE WEAK _ITM_deregisterTMCloneTable (0) 0
+ 38: FUNC GLOBAL __libc_start_main (0) 0
+ 39: NOTYPE WEAK __gmon_start__ (0) 0
+ 40: NOTYPE WEAK _Jv_RegisterClasses (0) 0
+ 41: NOTYPE WEAK _ITM_registerTMCloneTable (0) 0
+ 42: FUNC WEAK __cxa_finalize (0) 0
+ 43: NOTYPE GLOBAL _edata (0) 0x20103c
+ 44: NOTYPE GLOBAL _end (0) 0x201040
+ 45: FUNC GLOBAL __libc_csu_init (137) 0x860, rel: 0x860 (.text)
+ 46: NOTYPE GLOBAL __bss_start (0) 0x20103c
+ 47: FUNC GLOBAL main (35) 0x7f0, rel: 0x7f0 (.text)
+ 48: FUNC GLOBAL __libc_csu_fini (2) 0x8f0, rel: 0x8f0 (.text)
+ 49: FUNC GLOBAL bar (44) 0x828, rel: 0x828 (.text)
+ 50: FUNC GLOBAL _fini (0) 0x8f4, rel: 0x8f4 (.fini)
+ 51: FUNC GLOBAL _start (0) 0x6e0, rel: 0x6e0 (.text)
+ 52: FUNC GLOBAL _init (0) 0x680, rel: 0x680 (.init)
+EOF
+
+cat > testfile.minsym_pl.in <<\EOF
+ 0: NOTYPE LOCAL (0) 0
+ 1: SECTION LOCAL (0) 0x3000000238
+ 2: FUNC LOCAL deregister_tm_clones (0) 0x3000000710, rel: 0x710 (.text)
+ 3: FUNC LOCAL register_tm_clones (0) 0x3000000740, rel: 0x740 (.text)
+ 4: FUNC LOCAL __do_global_dtors_aux (0) 0x3000000780, rel: 0x780 (.text)
+ 5: OBJECT LOCAL __do_global_dtors_aux_fini_array_entry (0) 0x3000200dd8
+ 6: FUNC LOCAL frame_dummy (0) 0x30000007c0, rel: 0x7c0 (.text)
+ 7: OBJECT LOCAL __frame_dummy_init_array_entry (0) 0x3000200dd0
+ 8: FUNC LOCAL foo (20) 0x3000000814, rel: 0x814 (.text)
+ 9: NOTYPE LOCAL __init_array_end (0) 0x3000200dd8
+ 10: NOTYPE LOCAL __init_array_start (0) 0x3000200dd0
+ 11: SECTION LOCAL (0) 0x3000000238
+ 12: SECTION LOCAL (0) 0x3000000254
+ 13: SECTION LOCAL (0) 0x3000000274
+ 14: SECTION LOCAL (0) 0x3000000298
+ 15: SECTION LOCAL (0) 0x30000002d8
+ 16: SECTION LOCAL (0) 0x3000000428
+ 17: SECTION LOCAL (0) 0x30000004f2
+ 18: SECTION LOCAL (0) 0x3000000510
+ 19: SECTION LOCAL (0) 0x3000000530
+ 20: SECTION LOCAL (0) 0x3000000638
+ 21: SECTION LOCAL (0) 0x3000000680
+ 22: SECTION LOCAL (0) 0x30000006a0
+ 23: SECTION LOCAL (0) 0x30000006e0
+ 24: SECTION LOCAL (0) 0x30000008f4
+ 25: SECTION LOCAL (0) 0x3000000900
+ 26: SECTION LOCAL (0) 0x3000000904
+ 27: SECTION LOCAL (0) 0x3000000948
+ 28: SECTION LOCAL (0) 0x3000200dd0
+ 29: SECTION LOCAL (0) 0x3000200dd8
+ 30: SECTION LOCAL (0) 0x3000200de0
+ 31: SECTION LOCAL (0) 0x3000200de8
+ 32: SECTION LOCAL (0) 0x3000200df0
+ 33: SECTION LOCAL (0) 0x3000200fc0
+ 34: SECTION LOCAL (0) 0x3000201000
+ 35: SECTION LOCAL (0) 0x3000201030
+ 36: SECTION LOCAL (0) 0x300020103c
+ 37: NOTYPE WEAK _ITM_deregisterTMCloneTable (0) 0
+ 38: FUNC GLOBAL __libc_start_main (0) 0
+ 39: NOTYPE WEAK __gmon_start__ (0) 0
+ 40: NOTYPE WEAK _Jv_RegisterClasses (0) 0
+ 41: NOTYPE WEAK _ITM_registerTMCloneTable (0) 0
+ 42: FUNC WEAK __cxa_finalize (0) 0
+ 43: NOTYPE GLOBAL _edata (0) 0x300020103c
+ 44: NOTYPE GLOBAL _end (0) 0x3000201040
+ 45: FUNC GLOBAL __libc_csu_init (137) 0x3000000860, rel: 0x860 (.text)
+ 46: NOTYPE GLOBAL __bss_start (0) 0x300020103c
+ 47: FUNC GLOBAL main (35) 0x30000007f0, rel: 0x7f0 (.text)
+ 48: FUNC GLOBAL __libc_csu_fini (2) 0x30000008f0, rel: 0x8f0 (.text)
+ 49: FUNC GLOBAL bar (44) 0x3000000828, rel: 0x828 (.text)
+ 50: FUNC GLOBAL _fini (0) 0x30000008f4, rel: 0x8f4 (.fini)
+ 51: FUNC GLOBAL _start (0) 0x30000006e0, rel: 0x6e0 (.text)
+ 52: FUNC GLOBAL _init (0) 0x3000000680, rel: 0x680 (.init)
+EOF
+
+cat testfile.symtab.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebaztab
+
+cat testfile.symtab.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdbg
+
+cat testfile.symtab_pl.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdbg_pl
+
+sed s/0x3000/0x4200/g testfile.symtab_pl.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdbg_plr
+
+cat testfile.dynsym.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazdyn
+
+cat testfile.symtab.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazmdb
+
+cat testfile.minsym.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazmin
+
+cat testfile.minsym_pl.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazmin_pl
+
+sed s/0x3000/0x4200/g testfile.minsym_pl.in \
+ | testrun_compare ${abs_builddir}/dwflsyms -e testfilebazmin_plr
+
+testrun_compare ${abs_builddir}/dwflsyms -e testfilebasmin <<\EOF
+ 0: NOTYPE LOCAL (0) 0
+ 1: FUNC LOCAL foo (18) 0x400168, rel: 0x400168 (.text)
+ 2: SECTION LOCAL (0) 0x400120
+ 3: SECTION LOCAL (0) 0x400144
+ 4: SECTION LOCAL (0) 0x4001c0
+ 5: SECTION LOCAL (0) 0x600258
+ 6: FUNC GLOBAL _start (21) 0x4001a8, rel: 0x4001a8 (.text)
+ 7: FUNC GLOBAL main (33) 0x400144, rel: 0x400144 (.text)
+ 8: FUNC GLOBAL bar (44) 0x40017a, rel: 0x40017a (.text)
+EOF
+
+testrun_compare ${abs_builddir}/dwflsyms -e testfilebaxmin <<\EOF
+ 0: NOTYPE LOCAL (0) 0
+ 1: FUNC LOCAL deregister_tm_clones (0) 0x400430, rel: 0x400430 (.text)
+ 2: FUNC LOCAL register_tm_clones (0) 0x400460, rel: 0x400460 (.text)
+ 3: FUNC LOCAL __do_global_dtors_aux (0) 0x4004a0, rel: 0x4004a0 (.text)
+ 4: OBJECT LOCAL __do_global_dtors_aux_fini_array_entry (0) 0x600e18
+ 5: FUNC LOCAL frame_dummy (0) 0x4004c0, rel: 0x4004c0 (.text)
+ 6: OBJECT LOCAL __frame_dummy_init_array_entry (0) 0x600e10
+ 7: FUNC LOCAL foo (20) 0x4004f0, rel: 0x4004f0 (.text)
+ 8: NOTYPE LOCAL __init_array_end (0) 0x600e18
+ 9: NOTYPE LOCAL __init_array_start (0) 0x600e10
+ 10: SECTION LOCAL (0) 0x400238
+ 11: SECTION LOCAL (0) 0x400254
+ 12: SECTION LOCAL (0) 0x400274
+ 13: SECTION LOCAL (0) 0x400298
+ 14: SECTION LOCAL (0) 0x4002b8
+ 15: SECTION LOCAL (0) 0x400300
+ 16: SECTION LOCAL (0) 0x400338
+ 17: SECTION LOCAL (0) 0x400340
+ 18: SECTION LOCAL (0) 0x400360
+ 19: SECTION LOCAL (0) 0x400378
+ 20: SECTION LOCAL (0) 0x4003a8
+ 21: SECTION LOCAL (0) 0x4003d0
+ 22: SECTION LOCAL (0) 0x400400
+ 23: SECTION LOCAL (0) 0x4005c4
+ 24: SECTION LOCAL (0) 0x4005d0
+ 25: SECTION LOCAL (0) 0x4005e0
+ 26: SECTION LOCAL (0) 0x400628
+ 27: SECTION LOCAL (0) 0x600e10
+ 28: SECTION LOCAL (0) 0x600e18
+ 29: SECTION LOCAL (0) 0x600e20
+ 30: SECTION LOCAL (0) 0x600e28
+ 31: SECTION LOCAL (0) 0x600ff8
+ 32: SECTION LOCAL (0) 0x601000
+ 33: SECTION LOCAL (0) 0x601028
+ 34: SECTION LOCAL (0) 0x601034
+ 35: FUNC GLOBAL __libc_start_main (0) 0
+ 36: NOTYPE WEAK __gmon_start__ (0) 0
+ 37: FUNC GLOBAL __libc_csu_fini (2) 0x4005c0, rel: 0x4005c0 (.text)
+ 38: FUNC GLOBAL bar (40) 0x400504, rel: 0x400504 (.text)
+ 39: FUNC GLOBAL _fini (0) 0x4005c4, rel: 0x4005c4 (.fini)
+ 40: FUNC GLOBAL __libc_csu_init (101) 0x400550, rel: 0x400550 (.text)
+ 41: FUNC GLOBAL _start (0) 0x400400, rel: 0x400400 (.text)
+ 42: FUNC GLOBAL main (35) 0x40052c, rel: 0x40052c (.text)
+ 43: FUNC GLOBAL _init (0) 0x4003a8, rel: 0x4003a8 (.init)
+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
testfiles testfile
-testrun ./early-offscn testfile 0x500
+testrun ${abs_builddir}/early-offscn testfile 0x500
exit 0
testfiles testfile10
tempfiles testfile10.tmp
-testrun ./ecp testfile10 testfile10.tmp
+testrun ${abs_builddir}/ecp testfile10 testfile10.tmp
cmp testfile10 testfile10.tmp
testfiles testfile2
tempfiles testfile2.tmp
-testrun ./ecp testfile2 testfile2.tmp
+testrun ${abs_builddir}/ecp testfile2 testfile2.tmp
exit 0
. $srcdir/test-subr.sh
+tempfiles test_shdr.out
+
# However we open the elf file, the shdrs should be the same.
-testrun ./test-elf_cntl_gelf_getshdr READ test-elf_cntl_gelf_getshdr \
+testrun ${abs_builddir}/test-elf_cntl_gelf_getshdr READ ${abs_builddir}/test-elf_cntl_gelf_getshdr \
> test_shdr.out
-testrun_compare ./test-elf_cntl_gelf_getshdr MMAP test-elf_cntl_gelf_getshdr \
+testrun_compare ${abs_builddir}/test-elf_cntl_gelf_getshdr MMAP ${abs_builddir}/test-elf_cntl_gelf_getshdr \
< test_shdr.out
-testrun_compare ./test-elf_cntl_gelf_getshdr FDREAD test-elf_cntl_gelf_getshdr \
+testrun_compare ${abs_builddir}/test-elf_cntl_gelf_getshdr FDREAD ${abs_builddir}/test-elf_cntl_gelf_getshdr \
< test_shdr.out
-
-rm -f test_shdr.out
. $srcdir/test-subr.sh
-testrun_on_self ../src/elflint --quiet --gnu-ld
+testrun_on_self ${abs_top_builddir}/src/elflint --quiet --gnu-ld
testfiles testfile18
-testrun_compare ../src/elflint --gnu-ld testfile18 <<\EOF
+testrun_compare ${abs_top_builddir}/src/elflint --gnu-ld testfile18 <<\EOF
section [ 8] '.rela.dyn': relocation 1: copy relocation against symbol of type FUNC
EOF
testfiles testfile32
-testrun ../src/elflint -q testfile32
+testrun ${abs_top_builddir}/src/elflint -q testfile32
testfiles testfile33
-testrun ../src/elflint -q testfile33
+testrun ${abs_top_builddir}/src/elflint -q testfile33
testfiles testfile42
-testrun ../src/elflint -q --gnu-ld testfile42
+testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testfile42
testfiles testfile46
-testrun ../src/elflint -q testfile46
+testrun ${abs_top_builddir}/src/elflint -q testfile46
# see also run-readelf-d.sh
testfiles testlib_dynseg.so
-testrun ../src/elflint -q --gnu-ld testlib_dynseg.so
+testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testlib_dynseg.so
exit 0
testfiles testfile testfile11 testfile22 testfile24 \
testfile25 testfile3 testfile4 testfile5 testfile6
-testrun_compare ./find-prologues -e testfile <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile <<\EOF
main 0x000000000804842c 0x0000000008048432
bar 0x000000000804845c 0x000000000804845f
foo 0x0000000008048468 0x000000000804846b
EOF
-testrun_compare ./find-prologues -e testfile11 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile11 <<\EOF
main 0x00000000080489b8 0x00000000080489cd
gnu_obj_2 0x0000000008048c9e 0x0000000008048ca4
gnu_obj_3 0x0000000008048cd8 0x0000000008048cde
~invalid_argument 0x0000000008048db2 0x0000000008048db8
EOF
-testrun_compare ./find-prologues -e testfile22 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile22 <<\EOF
function 0x0000000008048348 0x000000000804834e
main 0x000000000804835b 0x0000000008048377
EOF
-testrun_compare ./find-prologues -e testfile24 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile24 <<\EOF
incr 0x0000000008048348 0x000000000804834e
main 0x0000000008048354 0x0000000008048360
EOF
-testrun_compare ./find-prologues -e testfile25 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile25 <<\EOF
incr 0x0000000008048348 0x000000000804834c
EOF
-testrun_compare ./find-prologues -e testfile3 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile3 <<\EOF
main 0x000000000804842c 0x0000000008048433
bar 0x0000000008048458 0x000000000804845b
foo 0x0000000008048464 0x0000000008048467
EOF
-testrun_compare ./find-prologues -e testfile4 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile4 <<\EOF
get 0x00000000080493fc 0x0000000008049402
main 0x0000000008049498 0x000000000804949e
a 0x000000000804d85c 0x000000000804d85c
__tfCc 0x000000000804d8a4 0x000000000804d8a4
EOF
-testrun_compare ./find-prologues -e testfile5 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile5 <<\EOF
bar 0x000000000804842c 0x000000000804842f
foo 0x0000000008048438 0x000000000804843b
main 0x0000000008048444 0x000000000804844a
EOF
-testrun_compare ./find-prologues -e testfile6 <<\EOF
+testrun_compare ${abs_builddir}/find-prologues -e testfile6 <<\EOF
main 0x00000000080489b8 0x00000000080489cd
gnu_obj_2 0x0000000008048c9e 0x0000000008048ca4
gnu_obj_3 0x0000000008048cd8 0x0000000008048cde
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# The following files were obtaining by compiling funcretval_test.c
+# from this directory as follows:
+#
+# gcc -g funcretval_test.c -o funcretval_test_<YOURARCH>
+#
+# Pass -DFLOAT128 if the given arch supports __float128.
+
+testfiles funcretval_test_aarch64
+
+# funcretval_test_aarch64 was built with additional flag:
+# -DAARCH64_BUG_1032854
+# hence no fun_vec_double_8.
+testrun_compare ${abs_top_builddir}/tests/funcretval \
+ -e funcretval_test_aarch64 <<\EOF
+() fun_char: return value location: {0x50, 0}
+() fun_short: return value location: {0x50, 0}
+() fun_int: return value location: {0x50, 0}
+() fun_ptr: return value location: {0x50, 0}
+() fun_iptr: return value location: {0x50, 0}
+() fun_long: return value location: {0x50, 0}
+() fun_int128: return value location: {0x50, 0} {0x93, 0x8} {0x51, 0} {0x93, 0x8}
+() fun_large_struct1: return value location: {0x70, 0}
+() fun_large_struct2: return value location: {0x70, 0}
+() fun_float: return value location: {0x90, 0x40}
+() fun_float_complex: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4}
+() fun_double: return value location: {0x90, 0x40}
+() fun_double_complex: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_long_double: return value location: {0x90, 0x40}
+() fun_long_double_complex: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_vec_char_8: return value location: {0x90, 0x40}
+() fun_vec_short_8: return value location: {0x90, 0x40}
+() fun_vec_int_8: return value location: {0x90, 0x40}
+() fun_vec_long_8: return value location: {0x90, 0x40}
+() fun_vec_float_8: return value location: {0x90, 0x40}
+() fun_vec_char_16: return value location: {0x90, 0x40}
+() fun_vec_short_16: return value location: {0x90, 0x40}
+() fun_vec_int_16: return value location: {0x90, 0x40}
+() fun_vec_long_16: return value location: {0x90, 0x40}
+() fun_vec_int128_16: return value location: {0x90, 0x40}
+() fun_vec_float_16: return value location: {0x90, 0x40}
+() fun_vec_double_16: return value location: {0x90, 0x40}
+() fun_hfa1_float: return value location: {0x90, 0x40}
+() fun_hfa1_double: return value location: {0x90, 0x40}
+() fun_hfa1_long_double: return value location: {0x90, 0x40}
+() fun_hfa1_float_a: return value location: {0x90, 0x40}
+() fun_hfa1_double_a: return value location: {0x90, 0x40}
+() fun_hfa1_long_double_a: return value location: {0x90, 0x40}
+() fun_hfa2_float: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4}
+() fun_hfa2_double: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hfa2_long_double: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hfa2_float_a: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4}
+() fun_hfa2_double_a: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hfa2_long_double_a: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hfa3_float: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4} {0x90, 0x42} {0x93, 0x4}
+() fun_hfa3_double: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hfa3_long_double: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hfa3_float_a: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4} {0x90, 0x42} {0x93, 0x4}
+() fun_hfa3_double_a: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hfa3_long_double_a: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hfa4_float: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4} {0x90, 0x42} {0x93, 0x4} {0x90, 0x43} {0x93, 0x4}
+() fun_hfa4_double: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hfa4_long_double: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_hfa4_float_a: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4} {0x90, 0x42} {0x93, 0x4} {0x90, 0x43} {0x93, 0x4}
+() fun_hfa4_double_a: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hfa4_long_double_a: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_nfa5_float: return value location: {0x70, 0}
+() fun_nfa5_double: return value location: {0x70, 0}
+() fun_nfa5_long_double: return value location: {0x70, 0}
+() fun_nfa5_float_a: return value location: {0x70, 0}
+() fun_nfa5_double_a: return value location: {0x70, 0}
+() fun_nfa5_long_double_a: return value location: {0x70, 0}
+() fun_hva1_vec_char_8: return value location: {0x90, 0x40}
+() fun_hva1_vec_short_8: return value location: {0x90, 0x40}
+() fun_hva1_vec_int_8: return value location: {0x90, 0x40}
+() fun_hva1_vec_long_8: return value location: {0x90, 0x40}
+() fun_hva1_vec_float_8: return value location: {0x90, 0x40}
+() fun_hva1_vec_double_8: return value location: {0x90, 0x40}
+() fun_hva1_vec_char_16_t: return value location: {0x90, 0x40}
+() fun_hva1_vec_short_16_t: return value location: {0x90, 0x40}
+() fun_hva1_vec_int_16_t: return value location: {0x90, 0x40}
+() fun_hva1_vec_long_16_t: return value location: {0x90, 0x40}
+() fun_hva1_vec_int128_16_t: return value location: {0x90, 0x40}
+() fun_hva1_vec_float_16_t: return value location: {0x90, 0x40}
+() fun_hva1_vec_double_16_t: return value location: {0x90, 0x40}
+() fun_hva2_vec_char_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hva2_vec_short_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hva2_vec_int_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hva2_vec_long_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hva2_vec_float_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hva2_vec_double_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() fun_hva2_vec_char_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hva2_vec_short_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hva2_vec_int_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hva2_vec_long_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hva2_vec_int128_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hva2_vec_float_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hva2_vec_double_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10}
+() fun_hva3_vec_char_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hva3_vec_short_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hva3_vec_int_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hva3_vec_long_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hva3_vec_float_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hva3_vec_double_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_hva3_vec_char_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hva3_vec_short_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hva3_vec_int_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hva3_vec_long_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hva3_vec_int128_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hva3_vec_float_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hva3_vec_double_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_hva4_vec_char_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hva4_vec_short_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hva4_vec_int_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hva4_vec_long_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hva4_vec_float_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hva4_vec_double_8: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8} {0x90, 0x43} {0x93, 0x8}
+() fun_hva4_vec_char_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_hva4_vec_short_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_hva4_vec_int_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_hva4_vec_long_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_hva4_vec_int128_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_hva4_vec_float_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_hva4_vec_double_16_t: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10} {0x90, 0x43} {0x93, 0x10}
+() fun_mixed_hfa3_cff: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4} {0x90, 0x42} {0x93, 0x4}
+() fun_mixed_hfa3_cdd: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_mixed_hfa3_cldld: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_mixed_hfa3_fcf: return value location: {0x90, 0x40} {0x93, 0x4} {0x90, 0x41} {0x93, 0x4} {0x90, 0x42} {0x93, 0x4}
+() fun_mixed_hfa3_dcd: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8} {0x90, 0x42} {0x93, 0x8}
+() fun_mixed_hfa3_ldcld: return value location: {0x90, 0x40} {0x93, 0x10} {0x90, 0x41} {0x93, 0x10} {0x90, 0x42} {0x93, 0x10}
+() fun_mixed_hfa2_fltsht_t: return value location: {0x90, 0x40} {0x93, 0x8} {0x90, 0x41} {0x93, 0x8}
+() main: return value location: {0x50, 0}
+EOF
+
+exit 0
testfiles testfile25
-testrun_compare ./funcscopes -e testfile25 incr <<\EOF
+testrun_compare ${abs_builddir}/funcscopes -e testfile25 incr <<\EOF
testfile25: 0x8048000 .. 0x8049528
inline-test.c (0x11): 0x8048348 (/home/roland/build/stock-elfutils/inline-test.c:7) .. 0x804834f (/home/roland/build/stock-elfutils/inline-test.c:9)
incr (0x2e): 0x8048348 (/home/roland/build/stock-elfutils/inline-test.c:7) .. 0x804834f (/home/roland/build/stock-elfutils/inline-test.c:9)
testfiles testfile testfile2
-testrun_compare ./get-aranges testfile testfile2 <<\EOF
+testrun_compare ${abs_builddir}/get-aranges testfile testfile2 <<\EOF
0x804842b: not in range
CU name: "m.c"
CU name: "m.c"
testfiles testfile testfile2
-testrun_compare ./get-files testfile testfile2 <<\EOF
+testrun_compare ${abs_builddir}/get-files testfile testfile2 <<\EOF
cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 191
dirs[0] = "/home/drepper/gnu/new-bu/build/ttt"
file[0] = "???"
#! /bin/sh
-# Copyright (C) 1999, 2000, 2002, 2004, 2005 Red Hat, Inc.
+# Copyright (C) 1999, 2000, 2002, 2004, 2005, 2013 Red Hat, Inc.
# This file is part of elfutils.
# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
#
. $srcdir/test-subr.sh
-testfiles testfile testfile2
+testfiles testfile testfile2 testfilenolines
-testrun_compare ./get-lines testfile testfile2 <<\EOF
+testrun_compare ${abs_builddir}/get-lines testfile testfile2 <<\EOF
cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 191
5 lines
804842c: /home/drepper/gnu/new-bu/build/ttt/m.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
10000514: /shoggoth/drepper/m.c:8:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
EOF
+# - lines.c
+# int ft;
+#
+# int
+# main (int argc, char **argv)
+# {
+# return ft - 42;
+# }
+#
+# - nolines.c
+# int ft = 42;
+#
+# gcc -g -c lines.c
+# gcc -g -c nolines.c
+# gcc -g -o testfilenolines lines.o nolines.o
+
+testrun_compare ${abs_builddir}/get-lines testfilenolines <<\EOF
+cuhl = 11, o = 0, asz = 8, osz = 4, ncu = 169
+ 4 lines
+400474: /home/mark/src/tests/lines.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+40047f: /home/mark/src/tests/lines.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+400488: /home/mark/src/tests/lines.c:7:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no
+40048a: /home/mark/src/tests/lines.c:7:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no
+cuhl = 11, o = 125, asz = 8, osz = 4, ncu = 243
+ 0 lines
+EOF
+
exit 0
testfiles testfile testfile2
-testrun_compare ./get-pubnames testfile testfile2 <<\EOF
+testrun_compare ${abs_builddir}/get-pubnames testfile testfile2 <<\EOF
[ 0] "main", die: 104, cu: 11
CU name: "m.c"
object name: "main"
testfiles testfile testfile2 testfile8 testfile14 testfile23
-testrun_compare ./line2addr -e testfile f.c:4 testfile f.c:8 <<\EOF
+testrun_compare ${abs_builddir}/line2addr -e testfile f.c:4 testfile f.c:8 <<\EOF
f.c:4 -> 0x804846b (/home/drepper/gnu/new-bu/build/ttt/f.c:4)
EOF
-testrun_compare ./line2addr -e testfile2 m.c:6 b.c:1 <<\EOF
+testrun_compare ${abs_builddir}/line2addr -e testfile2 m.c:6 b.c:1 <<\EOF
m.c:6 -> 0x100004cc (/shoggoth/drepper/m.c:6)
b.c:1 -> 0x10000470 (/shoggoth/drepper/b.c:4)
EOF
-testrun_compare ./line2addr -e testfile8 strip.c:953 strip.c:365 <<\EOF
+testrun_compare ${abs_builddir}/line2addr -e testfile8 strip.c:953 strip.c:365 <<\EOF
strip.c:953 -> (.text)+0x169f (/home/drepper/gnu/elfutils/build/src/../../src/strip.c:953)
strip.c:953 -> (.text)+0x16aa (/home/drepper/gnu/elfutils/build/src/../../src/strip.c:953)
strip.c:365 -> (.text)+0x278b (/home/drepper/gnu/elfutils/build/src/../../src/strip.c:365)
strip.c:365 -> (.text)+0x2797 (/home/drepper/gnu/elfutils/build/src/../../src/strip.c:365)
EOF
-testrun_compare ./line2addr -e testfile14 v.c:6 <<\EOF
+testrun_compare ${abs_builddir}/line2addr -e testfile14 v.c:6 <<\EOF
v.c:6 -> 0x400468 (/home/drepper/local/elfutils-build/20050425/v.c:6)
v.c:6 -> 0x400487 (/home/drepper/local/elfutils-build/20050425/v.c:6)
EOF
-testrun_compare ./line2addr -e testfile23 foo.c:2 foo.c:6 <<\EOF
+testrun_compare ${abs_builddir}/line2addr -e testfile23 foo.c:2 foo.c:6 <<\EOF
foo.c:2 -> (.init.text)+0xc (/home/roland/stock-elfutils-build/foo.c:2)
foo.c:6 -> (.text)+0xc (/home/roland/stock-elfutils-build/foo.c:6)
EOF
# gcc -g -o main main.c
testfiles testfile_low_high_pc
-testrun ./low_high_pc -e ./testfile_low_high_pc
-testrun ./low_high_pc -e ./low_high_pc
-testrun ./low_high_pc -e ../src/strip
-testrun ./low_high_pc -e ../src/strip.o
-testrun ./low_high_pc -e ../libelf/libelf.so
+testrun ${abs_builddir}/low_high_pc -e ./testfile_low_high_pc
+testrun ${abs_builddir}/low_high_pc -e ${abs_builddir}/low_high_pc
+testrun ${abs_builddir}/low_high_pc -e ${abs_top_builddir}/src/strip
+testrun ${abs_builddir}/low_high_pc -e ${abs_top_builddir}/src/strip.o
+testrun ${abs_builddir}/low_high_pc -e ${abs_top_builddir}/libelf/libelf.so
exit 0
# gcc -gstrict-dwarf -gdwarf-4 -g3 -o testfile-macinfo macro.c
testfiles testfile-macinfo testfile-macros
+tempfiles readelf.macros.out
status=0
-testrun ../src/readelf --debug-dump=info testfile-macinfo \
+testrun ${abs_top_builddir}/src/readelf --debug-dump=info testfile-macinfo \
| grep macro_info > readelf.macros.out ||
{ echo "*** failure readelf --debug-dump=info testfile-macinfo"; status=1; }
testrun_compare cat readelf.macros.out <<\EOF
macro_info (sec_offset) 0
EOF
-testrun ../src/readelf --debug-dump=info testfile-macros \
+testrun ${abs_top_builddir}/src/readelf --debug-dump=info testfile-macros \
| grep GNU_macros > readelf.macros.out ||
{ echo "*** failure readelf --debug-dump=info testfile-macros"; status=1; }
testrun_compare cat readelf.macros.out <<\EOF
GNU_macros (sec_offset) 0
EOF
-rm -f readelf.macros.out
-
exit $status
#! /bin/sh
-# Copyright (C) 2005, 2006 Red Hat, Inc.
+# Copyright (C) 2005, 2006, 2013 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
test_cleanup
}
-trap native_cleanup 0 1 2 15
+native_exit()
+{
+ native_cleanup
+ exit_cleanup
+}
+
+trap native_cleanup 1 2 15
+trap native_exit 0
for cc in "$HOSTCC" "$HOST_CC" cc gcc "$CC"; do
test "x$cc" != x || continue
test $native -eq 0 || testrun "$@" -p $native > /dev/null
}
-native_test ./allregs
-native_test ./funcretval
+native_test ${abs_builddir}/allregs
+native_test ${abs_builddir}/funcretval
# We do this explicitly rather than letting the trap 0 cover it,
# because as of version 3.1 bash prints the "Killed" report for
#! /bin/sh
-# Copyright (C) 2012 Red Hat, Inc.
+# Copyright (C) 2012, 2014 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
. $srcdir/test-subr.sh
+# Test different command line combinations on the nm binary itself.
+# Test on nm ET_REL, ET_EXEC and ET_DYN files.
+ET_REL=${abs_top_builddir}/src/nm.o
+ET_EXEC=${abs_top_builddir}/src/nm
+ET_DYN=${abs_top_builddir}/libelf/libelf.so
for what_arg in --debug-syms --defined-only --dynamic --extern-only; do
for format_arg in --format=bsd --format=sysv --format=posix; do
for out_arg in --numeric-sort --no-sort --reverse-sort; do
- testrun_on_self_quiet ../src/nm $what_arg $format_arg $out_arg
+ for self_file in $ET_REL $ET_EXEC $ET_DYN; do
+ # --dynamic doesn't make sense for ET_REL.
+ if ! test "$what_arg" = "--dynamic" -a "$self_file" = "$ET_REL"; then
+ testrun ${abs_top_builddir}/src/nm $what_arg $format_arg $out_arg $self_file > /dev/null
+ fi
+ done
done
done
done
#! /bin/sh
-# Copyright (C) 2011 Red Hat, Inc.
+# Copyright (C) 2011-2013 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
testfiles testfile52-32.so testfile52-32.so.debug
testfiles testfile52-32.prelink.so testfile52-32.noshdrs.so
tempfiles testmaps52-32 testfile52-32.noshdrs.so.debug
-ln -s testfile52-32.so.debug testfile52-32.noshdrs.so.debug
+ln -snf testfile52-32.so.debug testfile52-32.noshdrs.so.debug
cat > testmaps52-32 <<EOF
00111000-00112000 r-xp 00000000 fd:01 1 `pwd`/testfile52-32.so
# Prior to commit 1743d7f, libdwfl would fail on the second address,
# because it didn't notice that prelink added a 0x20-byte offset from
# what the .debug file reports.
-testrun_compare ../src/addr2line -S -M testmaps52-32 \
+testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps52-32 \
0x11140c 0x4100042d 0x4200040e <<\EOF
foo
/home/jistone/src/elfutils/tests/testfile52-32.c:2
testfiles testfile52-64.so testfile52-64.so.debug
testfiles testfile52-64.prelink.so testfile52-64.noshdrs.so
tempfiles testmaps52-64 testfile52-64.noshdrs.so.debug
-ln -s testfile52-64.so.debug testfile52-64.noshdrs.so.debug
+ln -snf testfile52-64.so.debug testfile52-64.noshdrs.so.debug
cat > testmaps52-64 <<EOF
1000000000-1000001000 r-xp 00000000 fd:11 1 `pwd`/testfile52-64.so
3800200000-3800201000 rw-p 00000000 fd:11 3 `pwd`/testfile52-64.noshdrs.so
EOF
-testrun_compare ../src/addr2line -S -M testmaps52-64 \
+testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps52-64 \
0x100000056c 0x300000056d 0x380000056e <<\EOF
foo
/home/jistone/src/elfutils/tests/testfile52-64.c:2
# prelink -N testfile53-32.prelink
testfiles testfile53-32 testfile53-32.debug testfile53-32.prelink
-testrun_compare ../src/addr2line -S -e testfile53-32 0x8048394 0x8048395 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile53-32 0x8048394 0x8048395 <<\EOF
main
/home/jistone/src/elfutils/tests/testfile53-32.c:2
main+0x1
EOF
# prelink shuffled some of the sections, but .text is in the same place.
-testrun_compare ../src/addr2line -S -e testfile53-32.prelink 0x8048396 0x8048397 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile53-32.prelink 0x8048396 0x8048397 <<\EOF
main+0x2
/home/jistone/src/elfutils/tests/testfile53-32.c:2
main+0x3
# prelink section shuffling.
testfiles testfile53-64 testfile53-64.debug testfile53-64.prelink
-testrun_compare ../src/addr2line -S -e testfile53-64 0x400474 0x400475 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile53-64 0x400474 0x400475 <<\EOF
main
/home/jistone/src/elfutils/tests/testfile53-64.c:2
main+0x1
/home/jistone/src/elfutils/tests/testfile53-64.c:2
EOF
-testrun_compare ../src/addr2line -S -e testfile53-64.prelink 0x400476 0x400477 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile53-64.prelink 0x400476 0x400477 <<\EOF
main+0x2
/home/jistone/src/elfutils/tests/testfile53-64.c:2
main+0x3
42001000-42002000 rw-p 00000000 fd:01 3 `pwd`/testfile54-32.noshdrs.so
EOF
-testrun_compare ../src/addr2line -S -M testmaps54-32 \
+testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps54-32 \
0x1111fc 0x1122a4 0x410001fd 0x410012a5 0x420001fe <<\EOF
foo
??:0
3800200000-3800201000 rw-p 00000000 fd:11 3 `pwd`/testfile54-64.noshdrs.so
EOF
-testrun_compare ../src/addr2line -S -M testmaps54-64 \
+testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps54-64 \
0x10000002f8 0x1000200448 0x30000002f9 0x3000200449 0x38000002fa <<\EOF
foo
??:0
# prelink -N testfile55-32.prelink
testfiles testfile55-32 testfile55-32.debug testfile55-32.prelink
-testrun_compare ../src/addr2line -S -e testfile55-32 0x80483b4 0x80483b5 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile55-32 0x80483b4 0x80483b5 <<\EOF
main
/home/jistone/src/elfutils/tests/testfile55-32.c:2
main+0x1
# prelink splits .bss into .dynbss+.bss, so the start of .bss changes, but the
# total size remains the same, and .text doesn't move at all.
-testrun_compare ../src/addr2line -S -e testfile55-32.prelink 0x80483b6 0x80483b7 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile55-32.prelink 0x80483b6 0x80483b7 <<\EOF
main+0x2
/home/jistone/src/elfutils/tests/testfile55-32.c:2
main+0x3
# Repeat testfile55 in 64-bit
testfiles testfile55-64 testfile55-64.debug testfile55-64.prelink
-testrun_compare ../src/addr2line -S -e testfile55-64 0x4004b4 0x4004b5 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile55-64 0x4004b4 0x4004b5 <<\EOF
main
/home/jistone/src/elfutils/tests/testfile55-64.c:2
main+0x1
/home/jistone/src/elfutils/tests/testfile55-64.c:2
EOF
-testrun_compare ../src/addr2line -S -e testfile55-64.prelink 0x4004b6 0x4004b7 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile55-64.prelink 0x4004b6 0x4004b7 <<\EOF
main+0x2
/home/jistone/src/elfutils/tests/testfile55-64.c:2
main+0x3
cp ranlib-test.a ranlib-test.a-copy
-testrun ../src/ranlib ranlib-test.a
+testrun ${abs_top_builddir}/src/ranlib ranlib-test.a
# The ranlib call should not have changed anything.
cmp ranlib-test.a ranlib-test.a-copy
testfiles $original $indexed
-testrun ../src/ranlib $original
+testrun ${abs_top_builddir}/src/ranlib $original
if test -z "$noindex"; then
# The date in the index is different. The reference file has it blanked
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Tests readelf --debug-dump=aranges and --debug-dump=decodedaranges
+#
+# - foobarbaz.h
+#
+# int bar ();
+# int baz (int i);
+#
+# - bar.c
+#
+# #include "foobarbaz.h"
+#
+# static int bi;
+#
+# static int
+# barbaz (int i)
+# {
+# return i * 2 - 1;
+# }
+#
+# __attribute__ ((constructor)) void
+# nobar ()
+# {
+# bi = 1;
+# }
+#
+# int
+# bar ()
+# {
+# bi++;
+# return barbaz (bi);
+# }
+#
+# - foo.c
+#
+# include "foobarbaz.h"
+#
+# static int fi = 0;
+#
+# static int
+# foo (int i, int j)
+# {
+# if (i > j)
+# return i - j + fi;
+# else
+# return (2 * j) - i + fi;
+# }
+#
+# int
+# main (int argc, char **argv)
+# {
+# int a = bar ();
+# int b = baz (a + argc);
+# int r = foo (a, b) - 1;
+#
+# return r - 48;
+# }
+#
+# - baz.c
+# include "foobarbaz.h"
+#
+# static int bj;
+#
+# static int
+# bazbaz (int j)
+# {
+# return bj * j - bar ();
+# }
+#
+# __attribute__ ((constructor)) void
+# nobaz ()
+# {
+# bj = 1;
+# }
+#
+# int
+# baz (int i)
+# {
+# if (i < 0)
+# return bazbaz (i);
+# else
+# {
+# while (i-- > 0)
+# bj += bar ();
+# }
+# return bazbaz (i);
+# }
+#
+# gcc -g -O2 -m32 -c baz.c
+# gcc -g -O2 -m32 -c bar.c
+# gcc -g -O2 -m32 -c foo.c
+# gcc -g -O2 -m32 -o testfilefoobarbaz foo.o bar.o baz.o
+
+testfiles testfilefoobarbaz
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=aranges testfilefoobarbaz <<EOF
+
+DWARF section [27] '.debug_aranges' at offset 0x1044:
+
+Table at offset 0:
+
+ Length: 28
+ DWARF version: 2
+ CU offset: 0
+ Address size: 4
+ Segment size: 0
+
+ 0x080482f0 <main>..0x08048323 <main+0x33>
+
+Table at offset 32:
+
+ Length: 36
+ DWARF version: 2
+ CU offset: 136
+ Address size: 4
+ Segment size: 0
+
+ 0x08048440 <bar>..0x08048451 <bar+0x11>
+ 0x08048330 <nobar>..0x0804833a <nobar+0xa>
+
+Table at offset 72:
+
+ Length: 36
+ DWARF version: 2
+ CU offset: 1d1
+ Address size: 4
+ Segment size: 0
+
+ 0x08048460 <baz>..0x080484bb <baz+0x5b>
+ 0x08048340 <nobaz>..0x0804834a <nobaz+0xa>
+EOF
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedaranges testfilefoobarbaz <<\EOF
+
+DWARF section [27] '.debug_aranges' at offset 0x1044 contains 5 entries:
+ [0] start: 0x080482f0, length: 52, CU DIE offset: 11
+ [1] start: 0x08048330, length: 11, CU DIE offset: 321
+ [2] start: 0x08048340, length: 11, CU DIE offset: 476
+ [3] start: 0x08048440, length: 18, CU DIE offset: 321
+ [4] start: 0x08048460, length: 92, CU DIE offset: 476
+EOF
+
+exit 0
testfiles testlib_dynseg.so
-testrun_compare ../src/readelf -d testlib_dynseg.so <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf -d testlib_dynseg.so <<\EOF
Dynamic segment contains 28 entries:
Addr: 0x00000000000017e0 Offset: 0x0007e0 Link to section: [ 3] '.dynstr'
#! /bin/sh
-# Copyright (C) 2012 Red Hat, Inc.
+# Copyright (C) 2012, 2013 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
# gcc -g -o testfile_multi_main -L. -ltestfile_multi_shared main.c -Wl,-rpath,.
# dwz -m testfile_multi.dwz testfile_multi_main libtestfile_multi_shared.so
+# main.c
+#
+# struct foobarbaz
+# {
+# int counter;
+# char *bookstore;
+# };
+#
+# int
+# main (int argc, char **argv)
+# {
+# struct foobarbaz fbb;
+# return 0;
+# }
+
+# gcc -g -o testfile-dwzstr main.c
+# cp testfile-dwzstr testfile-dwzstr.alt
+# dwz -m testfile-dwzstr.multi testfile-dwzstr testfile-dwzstr.alt
+
testfiles libtestfile_multi_shared.so testfile_multi_main testfile_multi.dwz
+testfiles testfile-dwzstr testfile-dwzstr.multi
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile_multi_main <<\EOF
+
+DWARF section [28] '.debug_info' at offset 0x1078:
+ [Offset]
+ Compilation unit at offset 0:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ [ b] compile_unit
+ producer (strp) "GNU C 4.7.0 20120507 (Red Hat 4.7.0-5) -mtune=generic -march=x86-64 -g"
+ language (data1) C89 (1)
+ name (strp) "main.c"
+ comp_dir (GNU_strp_alt) "/home/mark/src/tests/dwz"
+ low_pc (addr) 0x00000000004006ac <main>
+ high_pc (udata) 44 (0x00000000004006d8)
+ stmt_list (sec_offset) 0
+ [ 26] imported_unit
+ import (GNU_ref_alt) [ b]
+ [ 2b] pointer_type
+ byte_size (data1) 8
+ type (GNU_ref_alt) [ 53]
+ [ 31] subprogram
+ external (flag_present)
+ name (strp) "main"
+ decl_file (data1) 1
+ decl_line (data1) 3
+ prototyped (flag_present)
+ type (GNU_ref_alt) [ 3e]
+ low_pc (addr) 0x00000000004006ac <main>
+ high_pc (udata) 44 (0x00000000004006d8)
+ frame_base (exprloc)
+ [ 0] call_frame_cfa
+ GNU_all_tail_call_sites (flag_present)
+ sibling (ref_udata) [ 6e]
+ [ 48] formal_parameter
+ name (strp) "argc"
+ decl_file (data1) 1
+ decl_line (data1) 3
+ type (GNU_ref_alt) [ 3e]
+ location (exprloc)
+ [ 0] fbreg -36
+ [ 56] formal_parameter
+ name (strp) "argv"
+ decl_file (data1) 1
+ decl_line (data1) 3
+ type (ref_udata) [ 6e]
+ location (exprloc)
+ [ 0] fbreg -48
+ [ 61] variable
+ name (string) "b"
+ decl_file (data1) 1
+ decl_line (data1) 5
+ type (GNU_ref_alt) [ 5a]
+ location (exprloc)
+ [ 0] fbreg -32
+ [ 6e] pointer_type
+ byte_size (data1) 8
+ type (ref_udata) [ 2b]
+EOF
-testrun_compare ../src/readelf --debug-dump=info testfile_multi_main <<\EOF
+# Same as above, but find alt debug file in a .dwz subdir.
+mkdir .dwz
+mv testfile_multi.dwz .dwz
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile_multi_main <<\EOF
DWARF section [28] '.debug_info' at offset 0x1078:
[Offset]
name (strp) "main.c"
comp_dir (GNU_strp_alt) "/home/mark/src/tests/dwz"
low_pc (addr) 0x00000000004006ac <main>
- high_pc (udata) 44
+ high_pc (udata) 44 (0x00000000004006d8)
stmt_list (sec_offset) 0
[ 26] imported_unit
import (GNU_ref_alt) [ b]
prototyped (flag_present)
type (GNU_ref_alt) [ 3e]
low_pc (addr) 0x00000000004006ac <main>
- high_pc (udata) 44
+ high_pc (udata) 44 (0x00000000004006d8)
frame_base (exprloc)
[ 0] call_frame_cfa
GNU_all_tail_call_sites (flag_present)
byte_size (data1) 8
type (ref_udata) [ 2b]
EOF
+mv .dwz/testfile_multi.dwz .
+rmdir .dwz
-testrun_compare ../src/readelf --debug-dump=info libtestfile_multi_shared.so <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info libtestfile_multi_shared.so <<\EOF
DWARF section [25] '.debug_info' at offset 0x106c:
[Offset]
name (strp) "shared.c"
comp_dir (GNU_strp_alt) "/home/mark/src/tests/dwz"
low_pc (addr) +0x0000000000000670 <call_foo>
- high_pc (udata) 23
+ high_pc (udata) 23 (+0x0000000000000687)
stmt_list (sec_offset) 0
[ 26] imported_unit
import (GNU_ref_alt) [ b]
prototyped (flag_present)
type (GNU_ref_alt) [ 3e]
low_pc (addr) +0x0000000000000670 <call_foo>
- high_pc (udata) 23
+ high_pc (udata) 23 (+0x0000000000000687)
frame_base (exprloc)
[ 0] call_frame_cfa
GNU_all_call_sites (flag_present)
[ 0] fbreg -24
EOF
+# Same as above, but find alt debug file in a .dwz subdir.
+mkdir .dwz
+mv testfile_multi.dwz .dwz
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info libtestfile_multi_shared.so <<\EOF
+
+DWARF section [25] '.debug_info' at offset 0x106c:
+ [Offset]
+ Compilation unit at offset 0:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ [ b] compile_unit
+ producer (strp) "GNU C 4.7.0 20120507 (Red Hat 4.7.0-5) -fpreprocessed -mtune=generic -march=x86-64 -g -fPIC"
+ language (data1) C89 (1)
+ name (strp) "shared.c"
+ comp_dir (GNU_strp_alt) "/home/mark/src/tests/dwz"
+ low_pc (addr) +0x0000000000000670 <call_foo>
+ high_pc (udata) 23 (+0x0000000000000687)
+ stmt_list (sec_offset) 0
+ [ 26] imported_unit
+ import (GNU_ref_alt) [ b]
+ [ 2b] subprogram
+ external (flag_present)
+ name (strp) "call_foo"
+ decl_file (data1) 1
+ decl_line (data1) 3
+ prototyped (flag_present)
+ type (GNU_ref_alt) [ 3e]
+ low_pc (addr) +0x0000000000000670 <call_foo>
+ high_pc (udata) 23 (+0x0000000000000687)
+ frame_base (exprloc)
+ [ 0] call_frame_cfa
+ GNU_all_call_sites (flag_present)
+ [ 41] formal_parameter
+ name (string) "fb"
+ decl_file (data1) 1
+ decl_line (data1) 3
+ type (GNU_ref_alt) [ 76]
+ location (exprloc)
+ [ 0] fbreg -24
+EOF
+mv .dwz/testfile_multi.dwz .
+rmdir .dwz
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile-dwzstr <<\EOF
+
+DWARF section [28] '.debug_info' at offset 0x1088:
+ [Offset]
+ Compilation unit at offset 0:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ [ b] compile_unit
+ producer (GNU_strp_alt) "GNU C 4.7.2 20121109 (Red Hat 4.7.2-8) -mtune=generic -march=x86-64 -g"
+ language (data1) C89 (1)
+ name (GNU_strp_alt) "main.c"
+ comp_dir (GNU_strp_alt) "/home/mark/src/tests"
+ low_pc (addr) 0x00000000004004ec <main>
+ high_pc (udata) 18 (0x00000000004004fe)
+ stmt_list (sec_offset) 0
+ [ 26] imported_unit
+ import (GNU_ref_alt) [ b]
+ [ 2b] subprogram
+ external (flag_present)
+ name (GNU_strp_alt) "main"
+ decl_file (data1) 1
+ decl_line (data1) 8
+ prototyped (flag_present)
+ type (GNU_ref_alt) [ 30]
+ low_pc (addr) 0x00000000004004ec <main>
+ high_pc (udata) 18 (0x00000000004004fe)
+ frame_base (exprloc)
+ [ 0] call_frame_cfa
+ GNU_all_call_sites (flag_present)
+ [ 41] formal_parameter
+ name (GNU_strp_alt) "argc"
+ decl_file (data1) 1
+ decl_line (data1) 8
+ type (GNU_ref_alt) [ 30]
+ location (exprloc)
+ [ 0] fbreg -36
+ [ 4f] formal_parameter
+ name (GNU_strp_alt) "argv"
+ decl_file (data1) 1
+ decl_line (data1) 8
+ type (GNU_ref_alt) [ 41]
+ location (exprloc)
+ [ 0] fbreg -48
+ [ 5d] variable
+ name (string) "fbb"
+ decl_file (data1) 1
+ decl_line (data1) 10
+ type (GNU_ref_alt) [ 14]
+ location (exprloc)
+ [ 0] fbreg -32
+EOF
+
exit 0
testfiles testfilegdbindex5 testfilegdbindex7
-testrun_compare ../src/readelf --debug-dump=gdb_index testfilegdbindex5 <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex5 <<\EOF
GDB section [33] '.gdb_index' at offset 0xe76 contains 8383 bytes :
Version: 5
[ 754] symbol: int, CUs: 0
EOF
-testrun_compare ../src/readelf --debug-dump=gdb_index testfilegdbindex7 <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex7 <<\EOF
GDB section [33] '.gdb_index' at offset 0xe76 contains 8399 bytes :
Version: 7
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Tests readelf --debug-dump=line and --debug-dump=decodedline
+# See run-readelf-aranges for testfiles.
+
+testfiles testfilefoobarbaz
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfilefoobarbaz <<EOF
+
+DWARF section [30] '.debug_line' at offset 0x15f6:
+
+Table at offset 0:
+
+ Length: 83
+ DWARF version: 2
+ Prologue length: 43
+ Minimum instruction length: 1
+ Maximum operations per instruction: 1
+ Initial value if 'is_stmt': 1
+ Line base: -5
+ Line range: 14
+ Opcode base: 13
+
+Opcodes:
+ [ 1] 0 arguments
+ [ 2] 1 argument
+ [ 3] 1 argument
+ [ 4] 1 argument
+ [ 5] 1 argument
+ [ 6] 0 arguments
+ [ 7] 0 arguments
+ [ 8] 0 arguments
+ [ 9] 1 argument
+ [10] 0 arguments
+ [11] 0 arguments
+ [12] 1 argument
+
+Directory table:
+
+File name table:
+ Entry Dir Time Size Name
+ 1 0 0 0 foo.c
+ 2 0 0 0 foobarbaz.h
+
+Line number statements:
+ [ 35] extended opcode 2: set address to 0x80482f0 <main>
+ [ 3c] advance line by constant 15 to 16
+ [ 3e] copy
+ [ 3f] special opcode 159: address+10 = 0x80482fa <main+0xa>, line+1 = 17
+ [ 40] special opcode 117: address+7 = 0x8048301 <main+0x11>, line+1 = 18
+ [ 41] advance line by constant -9 to 9
+ [ 43] special opcode 200: address+13 = 0x804830e <main+0x1e>, line+0 = 9
+ [ 44] special opcode 48: address+2 = 0x8048310 <main+0x20>, line+2 = 11
+ [ 45] special opcode 58: address+3 = 0x8048313 <main+0x23>, line-2 = 9
+ [ 46] special opcode 48: address+2 = 0x8048315 <main+0x25>, line+2 = 11
+ [ 47] special opcode 44: address+2 = 0x8048317 <main+0x27>, line-2 = 9
+ [ 48] advance line by constant 13 to 22
+ [ 4a] special opcode 46: address+2 = 0x8048319 <main+0x29>, line+0 = 22
+ [ 4b] advance line by constant -13 to 9
+ [ 4d] special opcode 60: address+3 = 0x804831c <main+0x2c>, line+0 = 9
+ [ 4e] advance line by constant 12 to 21
+ [ 50] special opcode 60: address+3 = 0x804831f <main+0x2f>, line+0 = 21
+ [ 51] special opcode 61: address+3 = 0x8048322 <main+0x32>, line+1 = 22
+ [ 52] advance address by 2 to 0x8048324
+ [ 54] extended opcode 1: end of sequence
+
+Table at offset 87:
+
+ Length: 72
+ DWARF version: 2
+ Prologue length: 28
+ Minimum instruction length: 1
+ Maximum operations per instruction: 1
+ Initial value if 'is_stmt': 1
+ Line base: -5
+ Line range: 14
+ Opcode base: 13
+
+Opcodes:
+ [ 1] 0 arguments
+ [ 2] 1 argument
+ [ 3] 1 argument
+ [ 4] 1 argument
+ [ 5] 1 argument
+ [ 6] 0 arguments
+ [ 7] 0 arguments
+ [ 8] 0 arguments
+ [ 9] 1 argument
+ [10] 0 arguments
+ [11] 0 arguments
+ [12] 1 argument
+
+Directory table:
+
+File name table:
+ Entry Dir Time Size Name
+ 1 0 0 0 bar.c
+
+Line number statements:
+ [ 7d] extended opcode 2: set address to 0x8048330 <nobar>
+ [ 84] advance line by constant 12 to 13
+ [ 86] copy
+ [ 87] special opcode 19: address+0 = 0x8048330 <nobar>, line+1 = 14
+ [ 88] advance address by 11 to 0x804833b
+ [ 8a] extended opcode 1: end of sequence
+ [ 8d] extended opcode 2: set address to 0x8048440 <bar>
+ [ 94] advance line by constant 18 to 19
+ [ 96] copy
+ [ 97] special opcode 19: address+0 = 0x8048440 <bar>, line+1 = 20
+ [ 98] advance line by constant -12 to 8
+ [ 9a] special opcode 200: address+13 = 0x804844d <bar+0xd>, line+0 = 8
+ [ 9b] advance line by constant 14 to 22
+ [ 9d] special opcode 74: address+4 = 0x8048451 <bar+0x11>, line+0 = 22
+ [ 9e] advance address by 1 to 0x8048452
+ [ a0] extended opcode 1: end of sequence
+
+Table at offset 163:
+
+ Length: 106
+ DWARF version: 2
+ Prologue length: 43
+ Minimum instruction length: 1
+ Maximum operations per instruction: 1
+ Initial value if 'is_stmt': 1
+ Line base: -5
+ Line range: 14
+ Opcode base: 13
+
+Opcodes:
+ [ 1] 0 arguments
+ [ 2] 1 argument
+ [ 3] 1 argument
+ [ 4] 1 argument
+ [ 5] 1 argument
+ [ 6] 0 arguments
+ [ 7] 0 arguments
+ [ 8] 0 arguments
+ [ 9] 1 argument
+ [10] 0 arguments
+ [11] 0 arguments
+ [12] 1 argument
+
+Directory table:
+
+File name table:
+ Entry Dir Time Size Name
+ 1 0 0 0 baz.c
+ 2 0 0 0 foobarbaz.h
+
+Line number statements:
+ [ d8] extended opcode 2: set address to 0x8048340 <nobaz>
+ [ df] advance line by constant 12 to 13
+ [ e1] copy
+ [ e2] special opcode 19: address+0 = 0x8048340 <nobaz>, line+1 = 14
+ [ e3] advance address by 11 to 0x804834b
+ [ e5] extended opcode 1: end of sequence
+ [ e8] extended opcode 2: set address to 0x8048460 <baz>
+ [ ef] advance line by constant 18 to 19
+ [ f1] copy
+ [ f2] special opcode 74: address+4 = 0x8048464 <baz+0x4>, line+0 = 19
+ [ f3] special opcode 75: address+4 = 0x8048468 <baz+0x8>, line+1 = 20
+ [ f4] extended opcode 4: set discriminator to 1
+ [ f8] special opcode 78: address+4 = 0x804846c <baz+0xc>, line+4 = 24
+ [ f9] special opcode 187: address+12 = 0x8048478 <baz+0x18>, line+1 = 25
+ [ fa] special opcode 87: address+5 = 0x804847d <baz+0x1d>, line-1 = 24
+ [ fb] special opcode 61: address+3 = 0x8048480 <baz+0x20>, line+1 = 25
+ [ fc] special opcode 101: address+6 = 0x8048486 <baz+0x26>, line-1 = 24
+ [ fd] special opcode 61: address+3 = 0x8048489 <baz+0x29>, line+1 = 25
+ [ fe] special opcode 87: address+5 = 0x804848e <baz+0x2e>, line-1 = 24
+ [ ff] advance line by constant -16 to 8
+ [ 101] special opcode 46: address+2 = 0x8048490 <baz+0x30>, line+0 = 8
+ [ 102] advance line by constant 20 to 28
+ [ 104] special opcode 186: address+12 = 0x804849c <baz+0x3c>, line+0 = 28
+ [ 105] advance line by constant -20 to 8
+ [ 107] special opcode 88: address+5 = 0x80484a1 <baz+0x41>, line+0 = 8
+ [ 108] advance line by constant 13 to 21
+ [ 10a] advance address by constant 17 to 0x80484b2 <baz+0x52>
+ [ 10b] special opcode 32: address+1 = 0x80484b3 <baz+0x53>, line+0 = 21
+ [ 10c] advance address by 9 to 0x80484bc
+ [ 10e] extended opcode 1: end of sequence
+EOF
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedline testfilefoobarbaz <<\EOF
+
+DWARF section [30] '.debug_line' at offset 0x15f6:
+
+ CU [b] foo.c
+ line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
+ /home/mark/src/tests/foobarbaz/foo.c (mtime: 0, length: 0)
+ 16:0 S 0 0 0 0x080482f0 <main>
+ 17:0 S 0 0 0 0x080482fa <main+0xa>
+ 18:0 S 0 0 0 0x08048301 <main+0x11>
+ 9:0 S 0 0 0 0x0804830e <main+0x1e>
+ 11:0 S 0 0 0 0x08048310 <main+0x20>
+ 9:0 S 0 0 0 0x08048313 <main+0x23>
+ 11:0 S 0 0 0 0x08048315 <main+0x25>
+ 9:0 S 0 0 0 0x08048317 <main+0x27>
+ 22:0 S 0 0 0 0x08048319 <main+0x29>
+ 9:0 S 0 0 0 0x0804831c <main+0x2c>
+ 21:0 S 0 0 0 0x0804831f <main+0x2f>
+ 22:0 S 0 0 0 0x08048322 <main+0x32>
+ 22:0 S * 0 0 0 0x08048323 <main+0x33>
+
+ CU [141] bar.c
+ line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
+ /home/mark/src/tests/foobarbaz/bar.c (mtime: 0, length: 0)
+ 13:0 S 0 0 0 0x08048330 <nobar>
+ 14:0 S 0 0 0 0x08048330 <nobar>
+ 14:0 S * 0 0 0 0x0804833a <nobar+0xa>
+
+ 19:0 S 0 0 0 0x08048440 <bar>
+ 20:0 S 0 0 0 0x08048440 <bar>
+ 8:0 S 0 0 0 0x0804844d <bar+0xd>
+ 22:0 S 0 0 0 0x08048451 <bar+0x11>
+ 22:0 S * 0 0 0 0x08048451 <bar+0x11>
+
+ CU [1dc] baz.c
+ line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
+ /home/mark/src/tests/foobarbaz/baz.c (mtime: 0, length: 0)
+ 13:0 S 0 0 0 0x08048340 <nobaz>
+ 14:0 S 0 0 0 0x08048340 <nobaz>
+ 14:0 S * 0 0 0 0x0804834a <nobaz+0xa>
+
+ 19:0 S 0 0 0 0x08048460 <baz>
+ 19:0 S 0 0 0 0x08048464 <baz+0x4>
+ 20:0 S 0 0 0 0x08048468 <baz+0x8>
+ 24:0 S 1 0 0 0x0804846c <baz+0xc>
+ 25:0 S 0 0 0 0x08048478 <baz+0x18>
+ 24:0 S 0 0 0 0x0804847d <baz+0x1d>
+ 25:0 S 0 0 0 0x08048480 <baz+0x20>
+ 24:0 S 0 0 0 0x08048486 <baz+0x26>
+ 25:0 S 0 0 0 0x08048489 <baz+0x29>
+ 24:0 S 0 0 0 0x0804848e <baz+0x2e>
+ 8:0 S 0 0 0 0x08048490 <baz+0x30>
+ 28:0 S 0 0 0 0x0804849c <baz+0x3c>
+ 8:0 S 0 0 0 0x080484a1 <baz+0x41>
+ 21:0 S 0 0 0 0x080484b3 <baz+0x53>
+ 21:0 S * 0 0 0 0x080484bb <baz+0x5b>
+
+EOF
+
+exit 0
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# - hello.c
+# int say (const char *prefix);
+#
+# static char *
+# subject (char *word, int count)
+# {
+# return count > 0 ? word : (word + count);
+# }
+#
+# int
+# main (int argc, char **argv)
+# {
+# return say (subject (argv[0], argc));
+# }
+#
+# - world.c
+# static int
+# sad (char c)
+# {
+# return c > 0 ? c : c + 1;
+# }
+#
+# static int
+# happy (const char *w)
+# {
+# return sad (w[1]);
+# }
+#
+# int
+# say (const char *prefix)
+# {
+# const char *world = "World";
+# return prefix ? sad (prefix[0]) : happy (world);
+# }
+#
+# gcc -g -O2 -c hello.c
+# gcc -g -O2 -c world.c
+# gcc -g -o testfileloc hello.o world.o
+
+testfiles testfileloc
+
+# Process values as offsets from base addresses and resolve to symbols.
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=loc --debug-dump=ranges \
+ testfileloc<<\EOF
+
+DWARF section [33] '.debug_loc' at offset 0xd2a:
+ [ 0] 0x0000000000400480 <main>..0x000000000040048d <main+0xd> [ 0] reg5
+ [ 23] 0x0000000000400485 <main+0x5>..0x000000000040048d <main+0xd> [ 0] reg5
+ [ 46] 0x00000000004004b2 <say+0x12>..0x00000000004004ba <say+0x1a> [ 0] breg5 0
+
+DWARF section [34] '.debug_ranges' at offset 0xd94:
+ [ 0] 0x0000000000400480 <main>..0x0000000000400482 <main+0x2>
+ 0x0000000000400485 <main+0x5>..0x000000000040048d <main+0xd>
+ [ 30] 0x00000000004004ad <say+0xd>..0x00000000004004af <say+0xf>
+ 0x00000000004004b2 <say+0x12>..0x00000000004004ba <say+0x1a>
+EOF
+
+# Don't resolve addresses to symbols.
+testrun_compare ${abs_top_builddir}/src/readelf -N --debug-dump=loc --debug-dump=ranges \
+ testfileloc<<\EOF
+
+DWARF section [33] '.debug_loc' at offset 0xd2a:
+ [ 0] 0x0000000000400480..0x000000000040048d [ 0] reg5
+ [ 23] 0x0000000000400485..0x000000000040048d [ 0] reg5
+ [ 46] 0x00000000004004b2..0x00000000004004ba [ 0] breg5 0
+
+DWARF section [34] '.debug_ranges' at offset 0xd94:
+ [ 0] 0x0000000000400480..0x0000000000400482
+ 0x0000000000400485..0x000000000040048d
+ [ 30] 0x00000000004004ad..0x00000000004004af
+ 0x00000000004004b2..0x00000000004004ba
+EOF
+
+# Produce "raw" unprocessed content.
+testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc --debug-dump=ranges \
+ testfileloc<<\EOF
+
+DWARF section [33] '.debug_loc' at offset 0xd2a:
+ [ 0] 000000000000000000..0x000000000000000d [ 0] reg5
+ [ 23] 0x0000000000000005..0x000000000000000d [ 0] reg5
+ [ 46] 0x0000000000000012..0x000000000000001a [ 0] breg5 0
+
+DWARF section [34] '.debug_ranges' at offset 0xd94:
+ [ 0] 000000000000000000..0x0000000000000002
+ 0x0000000000000005..0x000000000000000d
+ [ 30] 0x000000000000000d..0x000000000000000f
+ 0x0000000000000012..0x000000000000001a
+EOF
+
+exit 0
testfiles testfilemacro
-testrun_compare ../src/readelf --debug-dump=macro testfilemacro <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=macro testfilemacro <<\EOF
DWARF section [32] '.debug_macro' at offset 0x2480:
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2012, 2013, 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+testfiles testfile63
+
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile63 <<\EOF
+
+Note segment of 892 bytes at offset 0x274:
+ Owner Data size Type
+ CORE 148 PRSTATUS
+ info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
+ sigpend: <>
+ sighold: <>
+ pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063
+ utime: 0.000000, stime: 0.010000, cutime: 0.000000, cstime: 0.000000
+ orig_r0: -1, fpvalid: 1
+ r0: 1 r1: -1091672508 r2: -1091672500
+ r3: 0 r4: 0 r5: 0
+ r6: 33728 r7: 0 r8: 0
+ r9: 0 r10: -1225703496 r11: -1091672844
+ r12: 0 sp: 0xbeee64f4 lr: 0xb6dc3f48
+ pc: 0x00008500 spsr: 0x60000010
+ CORE 124 PRPSINFO
+ state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00400500
+ uid: 0, gid: 0, pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063
+ fname: a.out, psargs: ./a.out
+ CORE 144 AUXV
+ HWCAP: 0xe8d7 <swp half thumb fast-mult vfp edsp>
+ PAGESZ: 4096
+ CLKTCK: 100
+ PHDR: 0x8034
+ PHENT: 32
+ PHNUM: 8
+ BASE: 0xb6eee000
+ FLAGS: 0
+ ENTRY: 0x83c0
+ UID: 0
+ EUID: 0
+ GID: 0
+ EGID: 0
+ SECURE: 0
+ RANDOM: 0xbeee674e
+ EXECFN: 0xbeee6ff4
+ PLATFORM: 0xbeee675e
+ NULL
+ CORE 116 FPREGSET
+ f0: 0x000000000000000000000000 f1: 0x000000000000000000000000
+ f2: 0x000000000000000000000000 f3: 0x000000000000000000000000
+ f4: 0x000000000000000000000000 f5: 0x000000000000000000000000
+ f6: 0x000000000000000000000000 f7: 0x000000000000000000000000
+ LINUX 260 ARM_VFP
+ fpscr: 0x00000000
+ d0: 0x0000000000000000 d1: 0x0000000000000000
+ d2: 0x0000000000000000 d3: 0x0000000000000000
+ d4: 0x0000000000000000 d5: 0x0000000000000000
+ d6: 0x0000000000000000 d7: 0x0000000000000000
+ d8: 0x0000000000000000 d9: 0x0000000000000000
+ d10: 0x0000000000000000 d11: 0x0000000000000000
+ d12: 0x0000000000000000 d13: 0x0000000000000000
+ d14: 0x0000000000000000 d15: 0x0000000000000000
+ d16: 0x0000000000000000 d17: 0x0000000000000000
+ d18: 0x0000000000000000 d19: 0x0000000000000000
+ d20: 0x0000000000000000 d21: 0x0000000000000000
+ d22: 0x0000000000000000 d23: 0x0000000000000000
+ d24: 0x0000000000000000 d25: 0x0000000000000000
+ d26: 0x0000000000000000 d27: 0x0000000000000000
+ d28: 0x0000000000000000 d29: 0x0000000000000000
+ d30: 0x0000000000000000 d31: 0x0000000000000000
+EOF
+
+testfiles testfile67
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile67 <<\EOF
+
+Note segment of 1044 bytes at offset 0xe8:
+ Owner Data size Type
+ CORE 336 PRSTATUS
+ info.si_signo: 4, info.si_code: 0, info.si_errno: 0, cursig: 4
+ sigpend: <>
+ sighold: <>
+ pid: 805, ppid: 804, pgrp: 804, sid: 699
+ utime: 0.000042, stime: 0.000103, cutime: 0.000000, cstime: 0.000000
+ orig_r2: 2571552016, fpvalid: 1
+ pswm: 0x0705c00180000000 pswa: 0x00000000800000d6
+ r0: 4393751543808 r1: 4398002544388
+ r2: 11 r3: 2571578208
+ r4: 2571702016 r5: 4398003235624
+ r6: 2571580768 r7: 2571702016
+ r8: 2571578208 r9: 2571552016
+ r10: 2571552016 r11: 0
+ r12: 4398003499008 r13: 2148274656
+ r14: 0 r15: 4398040761216
+ a0: 0x000003ff a1: 0xfd54a6f0 a2: 0x00000000 a3: 0x00000000
+ a4: 0x00000000 a5: 0x00000000 a6: 0x00000000 a7: 0x00000000
+ a8: 0x00000000 a9: 0x00000000 a10: 0x00000000 a11: 0x00000000
+ a12: 0x00000000 a13: 0x00000000 a14: 0x00000000 a15: 0x00000000
+ CORE 136 PRPSINFO
+ state: 0, sname: R, zomb: 0, nice: 0, flag: 0x0000000000400400
+ uid: 0, gid: 0, pid: 805, ppid: 804, pgrp: 804, sid: 699
+ fname: 1, psargs: ./1
+ CORE 304 AUXV
+ SYSINFO_EHDR: 0
+ HWCAP: 0x37f
+ PAGESZ: 4096
+ CLKTCK: 100
+ PHDR: 0x80000040
+ PHENT: 56
+ PHNUM: 2
+ BASE: 0
+ FLAGS: 0
+ ENTRY: 0x800000d4
+ UID: 0
+ EUID: 0
+ GID: 0
+ EGID: 0
+ SECURE: 0
+ RANDOM: 0x3ffffa8463c
+ EXECFN: 0x3ffffa85ff4
+ PLATFORM: 0x3ffffa8464c
+ NULL
+ CORE 136 FPREGSET
+ fpc: 0x00000000
+ f0: 0x0000000000000040 f1: 0x4b00000000000000
+ f2: 0x0000000000000041 f3: 0x3ad50b5555555600
+ f4: 0x0000000000000000 f5: 0x0000000000000000
+ f6: 0x0000000000000000 f7: 0x0000000000000000
+ f8: 0x0000000000000000 f9: 0x0000000000000000
+ f10: 0x0000000000000000 f11: 0x0000000000000000
+ f12: 0x0000000000000000 f13: 0x0000000000000000
+ f14: 0x0000000000000000 f15: 0x0000000000000000
+ LINUX 8 S390_LAST_BREAK
+ last_break: 0x000003fffd75ccbe
+ LINUX 4 S390_SYSTEM_CALL
+ system_call: 0
+EOF
+
+testfiles testfile68
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile68 <<\EOF
+
+Note segment of 852 bytes at offset 0x94:
+ Owner Data size Type
+ CORE 224 PRSTATUS
+ info.si_signo: 4, info.si_code: 0, info.si_errno: 0, cursig: 4
+ sigpend: <>
+ sighold: <>
+ pid: 839, ppid: 838, pgrp: 838, sid: 699
+ utime: 0.000043, stime: 0.000102, cutime: 0.000000, cstime: 0.000000
+ orig_r2: -1723388288, fpvalid: 1
+ pswm: 0x070dc000 pswa: 0x8040009a
+ r0: 0 r1: -43966716 r2: 11 r3: -1723238816
+ r4: -1723265280 r5: -43275480 r6: -1723245280 r7: -1723265280
+ r8: -1723238816 r9: -1723388288 r10: -1723388288 r11: 0
+ r12: -43012096 r13: -2146692640 r14: 0 r15: 2139883440
+ a0: 0x000003ff a1: 0xfd54a6f0 a2: 0x00000000 a3: 0x00000000
+ a4: 0x00000000 a5: 0x00000000 a6: 0x00000000 a7: 0x00000000
+ a8: 0x00000000 a9: 0x00000000 a10: 0x00000000 a11: 0x00000000
+ a12: 0x00000000 a13: 0x00000000 a14: 0x00000000 a15: 0x00000000
+ CORE 124 PRPSINFO
+ state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00400400
+ uid: 0, gid: 0, pid: 839, ppid: 838, pgrp: 838, sid: 699
+ fname: 2, psargs: ./2
+ CORE 152 AUXV
+ SYSINFO_EHDR: 0
+ HWCAP: 0x37f
+ PAGESZ: 4096
+ CLKTCK: 100
+ PHDR: 0x400034
+ PHENT: 32
+ PHNUM: 2
+ BASE: 0
+ FLAGS: 0
+ ENTRY: 0x400098
+ UID: 0
+ EUID: 0
+ GID: 0
+ EGID: 0
+ SECURE: 0
+ RANDOM: 0x7f8c090c
+ EXECFN: 0x7f8c1ff4
+ PLATFORM: 0x7f8c091c
+ NULL
+ CORE 136 FPREGSET
+ fpc: 0x00000000
+ f0: 0x0000000000000040 f1: 0x4b00000000000000
+ f2: 0x0000000000000041 f3: 0x3ad50b5555555600
+ f4: 0x0000000000000000 f5: 0x0000000000000000
+ f6: 0x0000000000000000 f7: 0x0000000000000000
+ f8: 0x0000000000000000 f9: 0x0000000000000000
+ f10: 0x0000000000000000 f11: 0x0000000000000000
+ f12: 0x0000000000000000 f13: 0x0000000000000000
+ f14: 0x0000000000000000 f15: 0x0000000000000000
+ LINUX 8 S390_LAST_BREAK
+ last_break: 0xfd75ccbe
+ LINUX 4 S390_SYSTEM_CALL
+ system_call: 0
+ LINUX 64 S390_HIGH_GPRS
+ high_r0: 0x000003ff, high_r1: 0x000003ff, high_r2: 0x00000000
+ high_r3: 0x00000000, high_r4: 0x00000000, high_r5: 0x000003ff
+ high_r6: 0x00000000, high_r7: 0x00000000, high_r8: 0x00000000
+ high_r9: 0x00000000, high_r10: 0x00000000, high_r11: 0x00000000
+ high_r12: 0x000003ff, high_r13: 0x00000000, high_r14: 0x00000000
+ high_r15: 0x00000000
+EOF
+
+# To reproduce this core dump, do this on x86_64 machine with Linux
+# 3.7 or later:
+# $ gcc -x c <(echo 'int main () { return *(int *)0x12345678; }')
+# $ ./a.out
+testfiles testfile71
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile71 <<\EOF
+
+Note segment of 1476 bytes at offset 0x430:
+ Owner Data size Type
+ CORE 336 PRSTATUS
+ info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
+ sigpend: <>
+ sighold: <>
+ pid: 9664, ppid: 2868, pgrp: 9664, sid: 2868
+ utime: 0.000000, stime: 0.004000, cutime: 0.000000, cstime: 0.000000
+ orig_rax: -1, fpvalid: 0
+ r15: 0 r14: 0
+ r13: 140734971656848 r12: 4195328
+ rbp: 0x00007fff69fe39b0 rbx: 0
+ r11: 266286012928 r10: 140734971656256
+ r9: 0 r8: 266289790592
+ rax: 305419896 rcx: 4195584
+ rdx: 140734971656872 rsi: 140734971656856
+ rdi: 1 rip: 0x00000000004004f9
+ rflags: 0x0000000000010246 rsp: 0x00007fff69fe39b0
+ fs.base: 0x00007fa1c8933740 gs.base: 0x0000000000000000
+ cs: 0x0033 ss: 0x002b ds: 0x0000 es: 0x0000 fs: 0x0000 gs: 0x0000
+ CORE 136 PRPSINFO
+ state: 0, sname: R, zomb: 0, nice: 0, flag: 0x0000000000000200
+ uid: 1000, gid: 1000, pid: 9664, ppid: 2868, pgrp: 9664, sid: 2868
+ fname: a.out, psargs: ./a.out
+ CORE 128 SIGINFO
+ si_signo: 11, si_errno: 0, si_code: 1
+ fault address: 0x12345678
+ CORE 304 AUXV
+ SYSINFO_EHDR: 0x7fff69ffe000
+ HWCAP: 0xafebfbff <fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss tm pbe>
+ PAGESZ: 4096
+ CLKTCK: 100
+ PHDR: 0x400040
+ PHENT: 56
+ PHNUM: 9
+ BASE: 0
+ FLAGS: 0
+ ENTRY: 0x400400
+ UID: 1000
+ EUID: 1000
+ GID: 1000
+ EGID: 1000
+ SECURE: 0
+ RANDOM: 0x7fff69fe3d19
+ EXECFN: 0x7fff69fe4ff0
+ PLATFORM: 0x7fff69fe3d29
+ NULL
+ CORE 469 FILE
+ 10 files:
+ 00400000-00401000 00000000 4096 /home/petr/a.out
+ 00600000-00601000 00000000 4096 /home/petr/a.out
+ 00601000-00602000 00001000 4096 /home/petr/a.out
+ 3dffa00000-3dffa21000 00000000 135168 /usr/lib64/ld-2.17.so
+ 3dffc20000-3dffc21000 00020000 4096 /usr/lib64/ld-2.17.so
+ 3dffc21000-3dffc22000 00021000 4096 /usr/lib64/ld-2.17.so
+ 3dffe00000-3dfffb6000 00000000 1794048 /usr/lib64/libc-2.17.so
+ 3dfffb6000-3e001b6000 001b6000 2097152 /usr/lib64/libc-2.17.so
+ 3e001b6000-3e001ba000 001b6000 16384 /usr/lib64/libc-2.17.so
+ 3e001ba000-3e001bc000 001ba000 8192 /usr/lib64/libc-2.17.so
+EOF
+
+# To reproduce this core dump, do this on an aarch64 machine:
+# $ gcc -x c <(echo 'int main () { return *(int *)0x12345678; }')
+# $ ./a.out
+testfiles testfile_aarch64_core
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile_aarch64_core <<\EOF
+
+Note segment of 2512 bytes at offset 0x270:
+ Owner Data size Type
+ CORE 392 PRSTATUS
+ info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
+ sigpend: <>
+ sighold: <>
+ pid: 16547, ppid: 3822, pgrp: 16547, sid: 3822
+ utime: 0.010000, stime: 0.000000, cutime: 0.000000, cstime: 0.000000
+ pc: 0x0000000000400548, pstate: 0x0000000060000000, fpvalid: 1
+ x0: 305419896 x1: 548685596648
+ x2: 548685596664 x3: 4195648
+ x4: 0 x5: 548536191688
+ x6: 0 x7: -6341196323062964528
+ x8: 135 x9: 4294967295
+ x10: 4195026 x11: 184256
+ x12: 144 x13: 15
+ x14: 548536635328 x15: 0
+ x16: 548534815304 x17: 4262024
+ x18: 548685596000 x19: 0
+ x20: 0 x21: 4195296
+ x22: 0 x23: 0
+ x24: 0 x25: 0
+ x26: 0 x27: 0
+ x28: 0 x29: 548685596320
+ x30: 548534815544 sp: 0x0000007fc035c6a0
+ CORE 136 PRPSINFO
+ state: 0, sname: R, zomb: 0, nice: 0, flag: 0x0000000000400400
+ uid: 0, gid: 0, pid: 16547, ppid: 3822, pgrp: 16547, sid: 3822
+ fname: a.out, psargs: ./a.out
+ CORE 128 SIGINFO
+ si_signo: 11, si_errno: 0, si_code: 1
+ fault address: 0x12345678
+ CORE 304 AUXV
+ SYSINFO_EHDR: 0x7fb7500000
+ HWCAP: 0x3
+ PAGESZ: 65536
+ CLKTCK: 100
+ PHDR: 0x400040
+ PHENT: 56
+ PHNUM: 7
+ BASE: 0x7fb7520000
+ FLAGS: 0
+ ENTRY: 0x4003e0
+ UID: 0
+ EUID: 0
+ GID: 0
+ EGID: 0
+ SECURE: 0
+ RANDOM: 0x7fc035c9e8
+ EXECFN: 0x7fc035fff0
+ PLATFORM: 0x7fc035c9f8
+ NULL
+ CORE 306 FILE
+ 6 files:
+ 00400000-00410000 00000000 65536 /root/elfutils/build/a.out
+ 00410000-00420000 00000000 65536 /root/elfutils/build/a.out
+ 7fb7370000-7fb74d0000 00000000 1441792 /usr/lib64/libc-2.17.so
+ 7fb74d0000-7fb74f0000 00150000 131072 /usr/lib64/libc-2.17.so
+ 7fb7520000-7fb7540000 00000000 131072 /usr/lib64/ld-2.17.so
+ 7fb7540000-7fb7550000 00010000 65536 /usr/lib64/ld-2.17.so
+ CORE 528 FPREGSET
+ fpsr: 0x00000000, fpcr: 0x00000000
+ v0: 0x00000000000af54b000000000000fe02
+ v1: 0x00000000000000000000000000000000
+ v2: 0x00000000000000000000000000000000
+ v3: 0x00000000000000000000000000000000
+ v4: 0x00000000000000000000000000000000
+ v5: 0x00000000000000000000000000000000
+ v6: 0x00000000000000000000000000000000
+ v7: 0x00000000000000000000000000000000
+ v8: 0x00000000000000000000000000000000
+ v9: 0x00000000000000000000000000000000
+ v10: 0x00000000000000000000000000000000
+ v11: 0x00000000000000000000000000000000
+ v12: 0x00000000000000000000000000000000
+ v13: 0x00000000000000000000000000000000
+ v14: 0x00000000000000000000000000000000
+ v15: 0x00000000000000000000000000000000
+ v16: 0x00000000000000000000000000000000
+ v17: 0x00000000000000000000000000000000
+ v18: 0x00000000000000000000000000000000
+ v19: 0x00000000000000000000000000000000
+ v20: 0x00000000000000000000000000000000
+ v21: 0x00000000000000000000000000000000
+ v22: 0x00000000000000000000000000000000
+ v23: 0x00000000000000000000000000000000
+ v24: 0x00000000000000000000000000000000
+ v25: 0x00000000000000000000000000000000
+ v26: 0x00000000000000000000000000000000
+ v27: 0x00000000000000000000000000000000
+ v28: 0x00000000000000000000000000000000
+ v29: 0x00000000000000000000000000000000
+ v30: 0x00000000000000000000000000000000
+ v31: 0x00000000000000000000000000000000
+ LINUX 8 ARM_TLS
+ tls: 0x0000007fb73606f0
+ LINUX 264 ARM_HW_BREAK
+ dbg_info: 0x00000610
+ DBGBVR0_EL1: 0x0000000000000000, DBGBCR0_EL1: 0x00000000
+ DBGBVR1_EL1: 0x0000000000000000, DBGBCR1_EL1: 0x00000000
+ DBGBVR2_EL1: 0x0000000000000000, DBGBCR2_EL1: 0x00000000
+ DBGBVR3_EL1: 0x0000000000000000, DBGBCR3_EL1: 0x00000000
+ DBGBVR4_EL1: 0x0000000000000000, DBGBCR4_EL1: 0x00000000
+ DBGBVR5_EL1: 0x0000000000000000, DBGBCR5_EL1: 0x00000000
+ DBGBVR6_EL1: 0x0000000000000000, DBGBCR6_EL1: 0x00000000
+ DBGBVR7_EL1: 0x0000000000000000, DBGBCR7_EL1: 0x00000000
+ DBGBVR8_EL1: 0x0000000000000000, DBGBCR8_EL1: 0x00000000
+ DBGBVR9_EL1: 0x0000000000000000, DBGBCR9_EL1: 0x00000000
+ DBGBVR10_EL1: 0x0000000000000000, DBGBCR10_EL1: 0x00000000
+ DBGBVR11_EL1: 0x0000000000000000, DBGBCR11_EL1: 0x00000000
+ DBGBVR12_EL1: 0x0000000000000000, DBGBCR12_EL1: 0x00000000
+ DBGBVR13_EL1: 0x0000000000000000, DBGBCR13_EL1: 0x00000000
+ DBGBVR14_EL1: 0x0000000000000000, DBGBCR14_EL1: 0x00000000
+ DBGBVR15_EL1: 0x0000000000000000, DBGBCR15_EL1: 0x00000000
+ LINUX 264 ARM_HW_WATCH
+ dbg_info: 0x00000610
+ DBGWVR0_EL1: 0x0000000000000000, DBGWCR0_EL1: 0x00000000
+ DBGWVR1_EL1: 0x0000000000000000, DBGWCR1_EL1: 0x00000000
+ DBGWVR2_EL1: 0x0000000000000000, DBGWCR2_EL1: 0x00000000
+ DBGWVR3_EL1: 0x0000000000000000, DBGWCR3_EL1: 0x00000000
+ DBGWVR4_EL1: 0x0000000000000000, DBGWCR4_EL1: 0x00000000
+ DBGWVR5_EL1: 0x0000000000000000, DBGWCR5_EL1: 0x00000000
+ DBGWVR6_EL1: 0x0000000000000000, DBGWCR6_EL1: 0x00000000
+ DBGWVR7_EL1: 0x0000000000000000, DBGWCR7_EL1: 0x00000000
+ DBGWVR8_EL1: 0x0000000000000000, DBGWCR8_EL1: 0x00000000
+ DBGWVR9_EL1: 0x0000000000000000, DBGWCR9_EL1: 0x00000000
+ DBGWVR10_EL1: 0x0000000000000000, DBGWCR10_EL1: 0x00000000
+ DBGWVR11_EL1: 0x0000000000000000, DBGWCR11_EL1: 0x00000000
+ DBGWVR12_EL1: 0x0000000000000000, DBGWCR12_EL1: 0x00000000
+ DBGWVR13_EL1: 0x0000000000000000, DBGWCR13_EL1: 0x00000000
+ DBGWVR14_EL1: 0x0000000000000000, DBGWCR14_EL1: 0x00000000
+ DBGWVR15_EL1: 0x0000000000000000, DBGWCR15_EL1: 0x00000000
+EOF
+
+# To reproduce this core dump, do this on an i686 machine:
+# $ gcc -x c <(echo 'int main () { return *(int *)0x12345678; }')
+# $ ./a.out
+testfiles testfile_i686_core
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile_i686_core <<\EOF
+
+Note segment of 1000 bytes at offset 0x214:
+ Owner Data size Type
+ CORE 144 PRSTATUS
+ info.si_signo: 11, info.si_code: 0, info.si_errno: 0, cursig: 11
+ sigpend: <>
+ sighold: <>
+ pid: 27395, ppid: 1130, pgrp: 27395, sid: 1130
+ utime: 0.000000, stime: 0.001000, cutime: 0.000000, cstime: 0.000000
+ orig_eax: -1, fpvalid: 0
+ ebx: 1334976512 ecx: -1239415396 edx: -1079283900
+ esi: 0 edi: 0 ebp: 0xbfab6f18
+ eax: 305419896 eip: 0x08048408 eflags: 0x00010246
+ esp: 0xbfab6f18
+ ds: 0x007b es: 0x007b fs: 0x0000 gs: 0x0033 cs: 0x0073 ss: 0x007b
+ CORE 124 PRPSINFO
+ state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00000200
+ uid: 1000, gid: 1000, pid: 27395, ppid: 1130, pgrp: 27395, sid: 1130
+ fname: a.out, psargs: ./a.out
+ CORE 128 SIGINFO
+ si_signo: 11, si_errno: 0, si_code: 1
+ fault address: 0x12345678
+ CORE 160 AUXV
+ SYSINFO: 0xb77fc414
+ SYSINFO_EHDR: 0xb77fc000
+ HWCAP: 0x780abfd <fpu de pse tsc msr pae mce cx8 apic sep pge cmov mmx fxsr sse sse2>
+ PAGESZ: 4096
+ CLKTCK: 100
+ PHDR: 0x8048034
+ PHENT: 32
+ PHNUM: 9
+ BASE: 0
+ FLAGS: 0
+ ENTRY: 0x80482f0
+ UID: 1000
+ EUID: 1000
+ GID: 1000
+ EGID: 1000
+ SECURE: 0
+ RANDOM: 0xbfab70eb
+ EXECFN: 0xbfab7ff4
+ PLATFORM: 0xbfab70fb
+ NULL
+ CORE 275 FILE
+ 9 files:
+ 08048000-08049000 00000000 4096 /tmp/a.out
+ 08049000-0804a000 00000000 4096 /tmp/a.out
+ 0804a000-0804b000 00001000 4096 /tmp/a.out
+ 4f744000-4f763000 00000000 126976 /usr/lib/ld-2.18.so
+ 4f764000-4f765000 0001f000 4096 /usr/lib/ld-2.18.so
+ 4f765000-4f766000 00020000 4096 /usr/lib/ld-2.18.so
+ 4f768000-4f920000 00000000 1802240 /usr/lib/libc-2.18.so
+ 4f920000-4f922000 001b8000 8192 /usr/lib/libc-2.18.so
+ 4f922000-4f923000 001ba000 4096 /usr/lib/libc-2.18.so
+ LINUX 48 386_TLS
+ index: 6, base: 0xb77da700, limit: 0x000fffff, flags: 0x00000051
+ index: 7, base: 0x00000000, limit: 0x00000000, flags: 0x00000028
+ index: 8, base: 0x00000000, limit: 0x00000000, flags: 0x00000028
+EOF
+
+exit 0
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Tests readelf -s and readelf --elf-section -s
+# See also run-dwflsyms.sh
+#
+# - bar.c
+#
+# static int b1 = 1;
+# int b2 = 1;
+#
+# static int
+# foo (int a)
+# {
+# return a + b2;
+# }
+#
+# int bar (int b)
+# {
+# return b - foo (b - b1);
+# }
+#
+# - foo.c
+#
+# extern int bar (int b);
+# extern int b2;
+#
+# int
+# main (int argc, char ** argv)
+# {
+# return bar (argc + b2);
+# }
+#
+# gcc -pie -g -c foo.c
+# gcc -pie -g -c bar.c
+# gcc -pie -g -o baz foo.o bar.o
+#
+# - testfilebaztab (dynsym + symtab)
+# cp baz testfilebaztab
+#
+# - testfilebazdbg (dynsym + .debug file)
+# eu-strip --remove-comment -f testfilebazdbg.debug baz
+# cp baz testfilebazdbg
+#
+#- testfilebazdyn (dynsym only)
+# objcopy --remove-section=.gnu_debuglink baz testfilebazdyn
+#
+# - testfilebazmdb (dynsym + gnu_debugdata + .debug)
+# This is how rpmbuild does it:
+# nm -D baz --format=posix --defined-only | awk '{ print $1 }' | sort > dynsyms
+# nm baz.debug --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > funcsyms
+# comm -13 dynsyms funcsyms > keep_symbols
+# objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=keep_symbols baz.debug mini_debuginfo
+# rm -f mini_debuginfo.xz
+# xz mini_debuginfo
+# objcopy --add-section .gnu_debugdata=mini_debuginfo.xz baz
+# cp baz testfilebazmdb
+#
+# - testfilebazmin (dynsym + gnu_debugdata)
+# objcopy --remove-section=.gnu_debuglink baz testfilebazmin
+#
+#
+# Special auxiliary only, can happen with static binaries.
+# - start.c
+#
+# extern int main (int argc, char ** argv);
+# void _start (void) { for (;;) main (1, 0); }
+#
+# gcc -g -c start.c
+# gcc -static -nostdlib -o bas foo.o bar.o start.o
+#
+# eu-strip --remove-comment -f bas.debug bas
+# nm bas.debug --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > funcsyms
+# objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=funcsyms bas.debug mini_debuginfo
+# rm -f mini_debuginfo.xz
+# xz mini_debuginfo
+# objcopy --add-section .gnu_debugdata=mini_debuginfo.xz bas
+# rm bas.debug
+# mv bas testfilebasmin
+#
+#
+# Make sure that find_aux_sym doesn't corrupt relocations, avoiding a kernel
+# heuristic that forces ET_EXEC->ET_DYN. NB: ld.gold doesn't seem to produce
+# the mismatched load addrs between the main file and the mini_debuginfo, so
+# this is forcing ld.bfd.
+#
+# gcc -g -o bax foo.c bar.c -fuse-ld=bfd
+# eu-strip --remove-comment -f bax.debug bax
+# nm -D bax --format=posix --defined-only | awk '{ print $1 }' | sort > dynsyms
+# nm bax.debug --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > funcsyms
+# comm -13 dynsyms funcsyms > keep_symbols
+# objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=keep_symbols bax.debug mini_debuginfo
+# rm -f mini_debuginfo.xz
+# xz mini_debuginfo
+# objcopy --add-section .gnu_debugdata=mini_debuginfo.xz bax
+# objcopy --remove-section=.gnu_debuglink bax testfilebaxmin
+
+
+testfiles testfilebaztab
+testfiles testfilebazdbg testfilebazdbg.debug
+testfiles testfilebazdyn
+testfiles testfilebazmdb
+testfiles testfilebazmin
+testfiles testfilebasmin
+testfiles testfilebaxmin
+
+tempfiles testfile.dynsym.in testfile.symtab.in testfile.minsym.in
+
+cat > testfile.dynsym.in <<\EOF
+
+Symbol table [ 5] '.dynsym' contains 14 entries:
+ 2 local symbols String table: [ 6] '.dynstr'
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UNDEF
+ 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1
+ 2: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF _ITM_deregisterTMCloneTable
+ 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __libc_start_main@GLIBC_2.2.5 (2)
+ 4: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF __gmon_start__
+ 5: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF _Jv_RegisterClasses
+ 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF _ITM_registerTMCloneTable
+ 7: 0000000000000000 0 FUNC WEAK DEFAULT UNDEF __cxa_finalize@GLIBC_2.2.5 (2)
+ 8: 000000000020103c 0 NOTYPE GLOBAL DEFAULT 25 _edata
+ 9: 0000000000201040 0 NOTYPE GLOBAL DEFAULT 26 _end
+ 10: 0000000000000860 137 FUNC GLOBAL DEFAULT 13 __libc_csu_init
+ 11: 000000000020103c 0 NOTYPE GLOBAL DEFAULT 26 __bss_start
+ 12: 00000000000007f0 35 FUNC GLOBAL DEFAULT 13 main
+ 13: 00000000000008f0 2 FUNC GLOBAL DEFAULT 13 __libc_csu_fini
+EOF
+
+cat > testfile.symtab.in <<\EOF
+
+Symbol table [34] '.symtab' contains 76 entries:
+ 54 local symbols String table: [35] '.strtab'
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UNDEF
+ 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1
+ 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2
+ 3: 0000000000000274 0 SECTION LOCAL DEFAULT 3
+ 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4
+ 5: 00000000000002d8 0 SECTION LOCAL DEFAULT 5
+ 6: 0000000000000428 0 SECTION LOCAL DEFAULT 6
+ 7: 00000000000004f2 0 SECTION LOCAL DEFAULT 7
+ 8: 0000000000000510 0 SECTION LOCAL DEFAULT 8
+ 9: 0000000000000530 0 SECTION LOCAL DEFAULT 9
+ 10: 0000000000000638 0 SECTION LOCAL DEFAULT 10
+ 11: 0000000000000680 0 SECTION LOCAL DEFAULT 11
+ 12: 00000000000006a0 0 SECTION LOCAL DEFAULT 12
+ 13: 00000000000006e0 0 SECTION LOCAL DEFAULT 13
+ 14: 00000000000008f4 0 SECTION LOCAL DEFAULT 14
+ 15: 0000000000000900 0 SECTION LOCAL DEFAULT 15
+ 16: 0000000000000904 0 SECTION LOCAL DEFAULT 16
+ 17: 0000000000000948 0 SECTION LOCAL DEFAULT 17
+ 18: 0000000000200dd0 0 SECTION LOCAL DEFAULT 18
+ 19: 0000000000200dd8 0 SECTION LOCAL DEFAULT 19
+ 20: 0000000000200de0 0 SECTION LOCAL DEFAULT 20
+ 21: 0000000000200de8 0 SECTION LOCAL DEFAULT 21
+ 22: 0000000000200df0 0 SECTION LOCAL DEFAULT 22
+ 23: 0000000000200fc0 0 SECTION LOCAL DEFAULT 23
+ 24: 0000000000201000 0 SECTION LOCAL DEFAULT 24
+ 25: 0000000000201030 0 SECTION LOCAL DEFAULT 25
+ 26: 000000000020103c 0 SECTION LOCAL DEFAULT 26
+ 27: 0000000000000000 0 SECTION LOCAL DEFAULT 27
+ 28: 0000000000000000 0 SECTION LOCAL DEFAULT 28
+ 29: 0000000000000000 0 SECTION LOCAL DEFAULT 29
+ 30: 0000000000000000 0 SECTION LOCAL DEFAULT 30
+ 31: 0000000000000000 0 SECTION LOCAL DEFAULT 31
+ 32: 0000000000000000 0 SECTION LOCAL DEFAULT 32
+ 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
+ 34: 0000000000200de0 0 OBJECT LOCAL DEFAULT 20 __JCR_LIST__
+ 35: 0000000000000710 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones
+ 36: 0000000000000740 0 FUNC LOCAL DEFAULT 13 register_tm_clones
+ 37: 0000000000000780 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux
+ 38: 000000000020103c 1 OBJECT LOCAL DEFAULT 26 completed.6137
+ 39: 0000000000200dd8 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry
+ 40: 00000000000007c0 0 FUNC LOCAL DEFAULT 13 frame_dummy
+ 41: 0000000000200dd0 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry
+ 42: 0000000000000000 0 FILE LOCAL DEFAULT ABS foo.c
+ 43: 0000000000000000 0 FILE LOCAL DEFAULT ABS bar.c
+ 44: 0000000000201034 4 OBJECT LOCAL DEFAULT 25 b1
+ 45: 0000000000000814 20 FUNC LOCAL DEFAULT 13 foo
+ 46: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
+ 47: 0000000000000a58 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__
+ 48: 0000000000200de0 0 OBJECT LOCAL DEFAULT 20 __JCR_END__
+ 49: 0000000000000000 0 FILE LOCAL DEFAULT ABS
+ 50: 0000000000200dd8 0 NOTYPE LOCAL DEFAULT 18 __init_array_end
+ 51: 0000000000200df0 0 OBJECT LOCAL DEFAULT 22 _DYNAMIC
+ 52: 0000000000200dd0 0 NOTYPE LOCAL DEFAULT 18 __init_array_start
+ 53: 0000000000201000 0 OBJECT LOCAL DEFAULT 24 _GLOBAL_OFFSET_TABLE_
+ 54: 00000000000008f0 2 FUNC GLOBAL DEFAULT 13 __libc_csu_fini
+ 55: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF _ITM_deregisterTMCloneTable
+ 56: 0000000000201030 0 NOTYPE WEAK DEFAULT 25 data_start
+ 57: 000000000020103c 0 NOTYPE GLOBAL DEFAULT 25 _edata
+ 58: 0000000000000828 44 FUNC GLOBAL DEFAULT 13 bar
+ 59: 00000000000008f4 0 FUNC GLOBAL DEFAULT 14 _fini
+ 60: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __libc_start_main@@GLIBC_2.2.5
+ 61: 0000000000201030 0 NOTYPE GLOBAL DEFAULT 25 __data_start
+ 62: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF __gmon_start__
+ 63: 0000000000200de8 0 OBJECT GLOBAL HIDDEN 21 __dso_handle
+ 64: 0000000000000900 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used
+ 65: 0000000000201038 4 OBJECT GLOBAL DEFAULT 25 b2
+ 66: 0000000000000860 137 FUNC GLOBAL DEFAULT 13 __libc_csu_init
+ 67: 0000000000201040 0 NOTYPE GLOBAL DEFAULT 26 _end
+ 68: 00000000000006e0 0 FUNC GLOBAL DEFAULT 13 _start
+ 69: 000000000020103c 0 NOTYPE GLOBAL DEFAULT 26 __bss_start
+ 70: 00000000000007f0 35 FUNC GLOBAL DEFAULT 13 main
+ 71: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF _Jv_RegisterClasses
+ 72: 0000000000201040 0 OBJECT GLOBAL HIDDEN 25 __TMC_END__
+ 73: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF _ITM_registerTMCloneTable
+ 74: 0000000000000000 0 FUNC WEAK DEFAULT UNDEF __cxa_finalize@@GLIBC_2.2.5
+ 75: 0000000000000680 0 FUNC GLOBAL DEFAULT 11 _init
+EOF
+
+cat > testfile.minsym.in <<\EOF
+
+Symbol table [28] '.symtab' contains 40 entries:
+ 36 local symbols String table: [29] '.strtab'
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UNDEF
+ 1: 0000000000000710 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones
+ 2: 0000000000000740 0 FUNC LOCAL DEFAULT 13 register_tm_clones
+ 3: 0000000000000780 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux
+ 4: 0000000000200dd8 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry
+ 5: 00000000000007c0 0 FUNC LOCAL DEFAULT 13 frame_dummy
+ 6: 0000000000200dd0 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry
+ 7: 0000000000000814 20 FUNC LOCAL DEFAULT 13 foo
+ 8: 0000000000200dd8 0 NOTYPE LOCAL DEFAULT 18 __init_array_end
+ 9: 0000000000200dd0 0 NOTYPE LOCAL DEFAULT 18 __init_array_start
+ 10: 0000000000000238 0 SECTION LOCAL DEFAULT 1
+ 11: 0000000000000254 0 SECTION LOCAL DEFAULT 2
+ 12: 0000000000000274 0 SECTION LOCAL DEFAULT 3
+ 13: 0000000000000298 0 SECTION LOCAL DEFAULT 4
+ 14: 00000000000002d8 0 SECTION LOCAL DEFAULT 5
+ 15: 0000000000000428 0 SECTION LOCAL DEFAULT 6
+ 16: 00000000000004f2 0 SECTION LOCAL DEFAULT 7
+ 17: 0000000000000510 0 SECTION LOCAL DEFAULT 8
+ 18: 0000000000000530 0 SECTION LOCAL DEFAULT 9
+ 19: 0000000000000638 0 SECTION LOCAL DEFAULT 10
+ 20: 0000000000000680 0 SECTION LOCAL DEFAULT 11
+ 21: 00000000000006a0 0 SECTION LOCAL DEFAULT 12
+ 22: 00000000000006e0 0 SECTION LOCAL DEFAULT 13
+ 23: 00000000000008f4 0 SECTION LOCAL DEFAULT 14
+ 24: 0000000000000900 0 SECTION LOCAL DEFAULT 15
+ 25: 0000000000000904 0 SECTION LOCAL DEFAULT 16
+ 26: 0000000000000948 0 SECTION LOCAL DEFAULT 17
+ 27: 0000000000200dd0 0 SECTION LOCAL DEFAULT 18
+ 28: 0000000000200dd8 0 SECTION LOCAL DEFAULT 19
+ 29: 0000000000200de0 0 SECTION LOCAL DEFAULT 20
+ 30: 0000000000200de8 0 SECTION LOCAL DEFAULT 21
+ 31: 0000000000200df0 0 SECTION LOCAL DEFAULT 22
+ 32: 0000000000200fc0 0 SECTION LOCAL DEFAULT 23
+ 33: 0000000000201000 0 SECTION LOCAL DEFAULT 24
+ 34: 0000000000201030 0 SECTION LOCAL DEFAULT 25
+ 35: 000000000020103c 0 SECTION LOCAL DEFAULT 26
+ 36: 0000000000000828 44 FUNC GLOBAL DEFAULT 13 bar
+ 37: 00000000000008f4 0 FUNC GLOBAL DEFAULT 14 _fini
+ 38: 00000000000006e0 0 FUNC GLOBAL DEFAULT 13 _start
+ 39: 0000000000000680 0 FUNC GLOBAL DEFAULT 11 _init
+EOF
+
+cat testfile.dynsym.in testfile.symtab.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebaztab
+
+cat testfile.dynsym.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazdbg
+
+cat testfile.symtab.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazdbg.debug
+
+cat testfile.dynsym.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazdyn
+
+cat testfile.dynsym.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazmdb
+
+cat testfile.minsym.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebazmdb
+
+cat testfile.dynsym.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazmin
+
+cat testfile.minsym.in \
+ | testrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebazmin
+
+testrun_compare ${abs_top_builddir}/src/readelf -s testfilebasmin <<EOF
+EOF
+
+testrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebasmin <<\EOF
+
+Symbol table [ 6] '.symtab' contains 9 entries:
+ 6 local symbols String table: [ 7] '.strtab'
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UNDEF
+ 1: 0000000000400168 18 FUNC LOCAL DEFAULT 2 foo
+ 2: 0000000000400120 0 SECTION LOCAL DEFAULT 1
+ 3: 0000000000400144 0 SECTION LOCAL DEFAULT 2
+ 4: 00000000004001c0 0 SECTION LOCAL DEFAULT 3
+ 5: 0000000000600258 0 SECTION LOCAL DEFAULT 4
+ 6: 00000000004001a8 21 FUNC GLOBAL DEFAULT 2 _start
+ 7: 0000000000400144 33 FUNC GLOBAL DEFAULT 2 main
+ 8: 000000000040017a 44 FUNC GLOBAL DEFAULT 2 bar
+EOF
+
+testrun_compare ${abs_top_builddir}/src/readelf -s testfilebaxmin <<EOF
+
+Symbol table [ 5] '.dynsym' contains 3 entries:
+ 1 local symbol String table: [ 6] '.dynstr'
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UNDEF
+ 1: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __libc_start_main@GLIBC_2.2.5 (2)
+ 2: 0000000000000000 0 NOTYPE WEAK DEFAULT UNDEF __gmon_start__
+EOF
+
+testrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebaxmin <<\EOF
+
+Symbol table [27] '.symtab' contains 42 entries:
+ 35 local symbols String table: [28] '.strtab'
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UNDEF
+ 1: 0000000000400430 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones
+ 2: 0000000000400460 0 FUNC LOCAL DEFAULT 13 register_tm_clones
+ 3: 00000000004004a0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux
+ 4: 0000000000600e18 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry
+ 5: 00000000004004c0 0 FUNC LOCAL DEFAULT 13 frame_dummy
+ 6: 0000000000600e10 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry
+ 7: 00000000004004f0 20 FUNC LOCAL DEFAULT 13 foo
+ 8: 0000000000600e18 0 NOTYPE LOCAL DEFAULT 18 __init_array_end
+ 9: 0000000000600e10 0 NOTYPE LOCAL DEFAULT 18 __init_array_start
+ 10: 0000000000400238 0 SECTION LOCAL DEFAULT 1
+ 11: 0000000000400254 0 SECTION LOCAL DEFAULT 2
+ 12: 0000000000400274 0 SECTION LOCAL DEFAULT 3
+ 13: 0000000000400298 0 SECTION LOCAL DEFAULT 4
+ 14: 00000000004002b8 0 SECTION LOCAL DEFAULT 5
+ 15: 0000000000400300 0 SECTION LOCAL DEFAULT 6
+ 16: 0000000000400338 0 SECTION LOCAL DEFAULT 7
+ 17: 0000000000400340 0 SECTION LOCAL DEFAULT 8
+ 18: 0000000000400360 0 SECTION LOCAL DEFAULT 9
+ 19: 0000000000400378 0 SECTION LOCAL DEFAULT 10
+ 20: 00000000004003a8 0 SECTION LOCAL DEFAULT 11
+ 21: 00000000004003d0 0 SECTION LOCAL DEFAULT 12
+ 22: 0000000000400400 0 SECTION LOCAL DEFAULT 13
+ 23: 00000000004005c4 0 SECTION LOCAL DEFAULT 14
+ 24: 00000000004005d0 0 SECTION LOCAL DEFAULT 15
+ 25: 00000000004005e0 0 SECTION LOCAL DEFAULT 16
+ 26: 0000000000400628 0 SECTION LOCAL DEFAULT 17
+ 27: 0000000000600e10 0 SECTION LOCAL DEFAULT 18
+ 28: 0000000000600e18 0 SECTION LOCAL DEFAULT 19
+ 29: 0000000000600e20 0 SECTION LOCAL DEFAULT 20
+ 30: 0000000000600e28 0 SECTION LOCAL DEFAULT 21
+ 31: 0000000000600ff8 0 SECTION LOCAL DEFAULT 22
+ 32: 0000000000601000 0 SECTION LOCAL DEFAULT 23
+ 33: 0000000000601028 0 SECTION LOCAL DEFAULT 24
+ 34: 0000000000601034 0 SECTION LOCAL DEFAULT 25
+ 35: 00000000004005c0 2 FUNC GLOBAL DEFAULT 13 __libc_csu_fini
+ 36: 0000000000400504 40 FUNC GLOBAL DEFAULT 13 bar
+ 37: 00000000004005c4 0 FUNC GLOBAL DEFAULT 14 _fini
+ 38: 0000000000400550 101 FUNC GLOBAL DEFAULT 13 __libc_csu_init
+ 39: 0000000000400400 0 FUNC GLOBAL DEFAULT 13 _start
+ 40: 000000000040052c 35 FUNC GLOBAL DEFAULT 13 main
+ 41: 00000000004003a8 0 FUNC GLOBAL DEFAULT 11 _init
+EOF
+
+exit 0
. $srcdir/test-subr.sh
# Just makes sure readelf doesn't crash
-testrun_on_self_quiet ../src/readelf -a -w
+testrun_on_self_quiet ${abs_top_builddir}/src/readelf -a -w
tempfiles testfile.temp
-testrun ../src/readelf -r testfile3 > testfile.temp
+testrun ${abs_top_builddir}/src/readelf -r testfile3 > testfile.temp
diff -u - testfile.temp <<EOF
testfiles testfile28
-testrun_compare ../src/readelf -x .strtab testfile28 <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf -x .strtab testfile28 <<\EOF
Hex dump of section [6] '.strtab', 1 bytes at offset 0x290:
0x00000000 00 .
testfiles testfile40.debug
-testrun_compare ../src/readelf -n testfile40.debug <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile40.debug <<\EOF
Note section [ 6] '.note' of 60 bytes at offset 0x120:
Owner Data size Type
testfiles testfile19.index
-testrun_compare ../src/readelf -c testfile19.index <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf -c testfile19.index <<\EOF
Index of archive 'testfile19.index' has 4 entries:
Archive member 'u1.o' contains:
testfiles testfile14
-testrun >/dev/null ../src/readelf -w testfile14 testfile14
+testrun >/dev/null ${abs_top_builddir}/src/readelf -w testfile14 testfile14
exit 0
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2012 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+testfiles testfile62
+
+testrun_compare ${abs_top_builddir}/src/readelf -n testfile62 <<\EOF
+
+Note segment of 2104 bytes at offset 0x158:
+ Owner Data size Type
+ CORE 336 PRSTATUS
+ info.si_signo: 0, info.si_code: 0, info.si_errno: 0, cursig: 0
+ sigpend: <>
+ sighold: <>
+ pid: 3519, ppid: 0, pgrp: 0, sid: 0
+ utime: 0.000000, stime: 0.000000, cutime: 0.000000, cstime: 0.000000
+ orig_rax: -1, fpvalid: 0
+ r15: 662 r14: 4
+ r13: -2119649152 r12: 0
+ rbp: 0xffff880067e39e48 rbx: 99
+ r11: -131940469531936 r10: -2124150080
+ r9: -131940469531936 r8: 0
+ rax: 16 rcx: 7813
+ rdx: 0 rsi: 0
+ rdi: 99 rip: 0xffffffff812ba86f
+ rflags: 0x0000000000010096 rsp: 0xffff880067e39e48
+ fs.base: 0x00007f95a7b09720 gs.base: 0x0000000000000000
+ cs: 0x0010 ss: 0x0018 ds: 0x0000 es: 0x0000 fs: 0x0000 gs: 0x0000
+ CORE 336 PRSTATUS
+ info.si_signo: 0, info.si_code: 0, info.si_errno: 0, cursig: 0
+ sigpend: <>
+ sighold: <>
+ pid: 0, ppid: 0, pgrp: 0, sid: 0
+ utime: 0.000000, stime: 0.000000, cutime: 0.000000, cstime: 0.000000
+ orig_rax: -1, fpvalid: 0
+ r15: 0 r14: 0
+ r13: 1348173392195389970 r12: 1
+ rbp: 0xffff88007a829e48 rbx: 16
+ r11: -131940468065880 r10: 435505529489
+ r9: 158960 r8: 0
+ rax: 16 rcx: 1
+ rdx: 0 rsi: 3
+ rdi: -131939339960320 rip: 0xffffffff810118bb
+ rflags: 0x0000000000000046 rsp: 0xffff88007a829e38
+ fs.base: 0x0000000000000000 gs.base: 0x0000000000000000
+ cs: 0x0010 ss: 0x0018 ds: 0x0000 es: 0x0000 fs: 0x0000 gs: 0x0000
+ VMCOREINFO 1366 <unknown>: 0
+ OSRELEASE=2.6.35.11-83.fc14.x86_64
+ PAGESIZE=4096
+ SYMBOL(init_uts_ns)=ffffffff81a4c5b0
+ SYMBOL(node_online_map)=ffffffff81b840b0
+ SYMBOL(swapper_pg_dir)=ffffffff81a42000
+ SYMBOL(_stext)=ffffffff81000190
+ SYMBOL(vmlist)=ffffffff81db07e8
+ SYMBOL(mem_section)=ffffffff81dbab00
+ LENGTH(mem_section)=4096
+ SIZE(mem_section)=32
+ OFFSET(mem_section.section_mem_map)=0
+ SIZE(page)=56
+ SIZE(pglist_data)=81664
+ SIZE(zone)=1792
+ SIZE(free_area)=88
+ SIZE(list_head)=16
+ SIZE(nodemask_t)=64
+ OFFSET(page.flags)=0
+ OFFSET(page._count)=8
+ OFFSET(page.mapping)=24
+ OFFSET(page.lru)=40
+ OFFSET(pglist_data.node_zones)=0
+ OFFSET(pglist_data.nr_zones)=81472
+ OFFSET(pglist_data.node_start_pfn)=81496
+ OFFSET(pglist_data.node_spanned_pages)=81512
+ OFFSET(pglist_data.node_id)=81520
+ OFFSET(zone.free_area)=112
+ OFFSET(zone.vm_stat)=1328
+ OFFSET(zone.spanned_pages)=1704
+ OFFSET(free_area.free_list)=0
+ OFFSET(list_head.next)=0
+ OFFSET(list_head.prev)=8
+ OFFSET(vm_struct.addr)=8
+ LENGTH(zone.free_area)=11
+ SYMBOL(log_buf)=ffffffff81a532a8
+ SYMBOL(log_end)=ffffffff81d0bc50
+ SYMBOL(log_buf_len)=ffffffff81a532a4
+ SYMBOL(logged_chars)=ffffffff81d0bd70
+ LENGTH(free_area.free_list)=5
+ NUMBER(NR_FREE_PAGES)=0
+ NUMBER(PG_lru)=5
+ NUMBER(PG_private)=11
+ NUMBER(PG_swapcache)=16
+ SYMBOL(phys_base)=ffffffff81a4a010
+ SYMBOL(init_level4_pgt)=ffffffff81a42000
+ SYMBOL(node_data)=ffffffff81b80df0
+ LENGTH(node_data)=512
+ CRASHTIME=1348173392
+
+EOF
+
+exit 0
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# - testfile-zdebug.c
+# #define UINT64_MAX 18446744073709551615UL
+#
+# int
+# main (int argc, char **argv)
+# {
+# unsigned long a = UINT64_MAX - 8;
+# unsigned long b = 42 + argc;
+#
+# if ( a + b < b )
+# argc = a + argc;
+# else
+# b--;
+#
+# return a - b;
+# }
+#
+# gcc -g3 -O3 -fuse-ld=gold -Xlinker --compress-debug-sections=none \
+# -fno-asynchronous-unwind-tables -o testfile-debug testfile-zdebug.c
+# gcc -g3 -O3 -fuse-ld=gold -Xlinker --compress-debug-sections=zlib \
+# -fno-asynchronous-unwind-tables -o testfile-zdebug testfile-zdebug.c
+
+testfiles testfile-debug testfile-zdebug
+tempfiles readelf.out
+tempfiles loc.out aranges.out ranges.out macro.out line.out frame.out
+
+cat > loc.out << \EOF
+
+DWARF section [30] '.debug_loc' at offset 0xa17:
+ [ 0] 0x00000000004003c0..0x00000000004003c3 [ 0] reg5
+ 0x00000000004003c3..0x00000000004003d6 [ 0] breg5 -42
+ [ 2] stack_value
+ 0x00000000004003d6..0x00000000004003d9 [ 0] GNU_entry_value:
+ [ 0] reg5
+ [ 3] stack_value
+EOF
+
+cat loc.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug
+
+cat loc.out | sed -e "s/.debug_loc' at offset 0xa17/.zdebug_loc' at offset 0x1a27/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-zdebug
+
+cat > aranges.out << \EOF
+
+DWARF section [31] '.debug_aranges' at offset 0xa65:
+
+Table at offset 0:
+
+ Length: 44
+ DWARF version: 2
+ CU offset: 0
+ Address size: 8
+ Segment size: 0
+
+ 0x00000000004003c0..0x0000000000000019
+EOF
+
+cat aranges.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=aranges testfile-debug
+
+cat aranges.out | sed -e "s/.debug_aranges' at offset 0xa65/.zdebug_aranges' at offset 0x1a5f/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=aranges testfile-zdebug
+
+cat > ranges.out << \EOF
+
+DWARF section [32] '.debug_ranges' at offset 0xa95:
+ [ 0] 0x00000000004003c0..0x00000000004003d9
+EOF
+
+cat ranges.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=ranges testfile-debug
+
+cat ranges.out | sed -e "s/.debug_ranges' at offset 0xa95/.zdebug_ranges' at offset 0x1a87/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=ranges testfile-zdebug
+
+cat > macro.out << \EOF
+
+DWARF section [33] '.debug_macro' at offset 0xab5:
+
+ Offset: 0x0
+ Version: 4
+ Flag: 0x2
+ Offset length: 4
+ .debug_line offset: 0x0
+
+ #include offset 0x17
+ start_file 0, [1] /tmp/testfile-zdebug.c
+ #define UINT64_MAX 18446744073709551615UL, line 1 (indirect)
+ end_file
+
+ Offset: 0x17
+ Version: 4
+ Flag: 0x0
+ Offset length: 4
+
+ #define __STDC__ 1, line 1 (indirect)
+ #define __STDC_HOSTED__ 1, line 1 (indirect)
+ #define __GNUC__ 4, line 1 (indirect)
+ #define __GNUC_MINOR__ 8, line 1 (indirect)
+ #define __GNUC_PATCHLEVEL__ 2, line 1 (indirect)
+ #define __VERSION__ "4.8.2 20140120 (Red Hat 4.8.2-15)", line 1 (indirect)
+ #define __GNUC_RH_RELEASE__ 15, line 1 (indirect)
+ #define __ATOMIC_RELAXED 0, line 1 (indirect)
+ #define __ATOMIC_SEQ_CST 5, line 1 (indirect)
+ #define __ATOMIC_ACQUIRE 2, line 1 (indirect)
+ #define __ATOMIC_RELEASE 3, line 1 (indirect)
+ #define __ATOMIC_ACQ_REL 4, line 1 (indirect)
+ #define __ATOMIC_CONSUME 1, line 1 (indirect)
+ #define __OPTIMIZE__ 1, line 1 (indirect)
+ #define __FINITE_MATH_ONLY__ 0, line 1 (indirect)
+ #define _LP64 1, line 1 (indirect)
+ #define __LP64__ 1, line 1 (indirect)
+ #define __SIZEOF_INT__ 4, line 1 (indirect)
+ #define __SIZEOF_LONG__ 8, line 1 (indirect)
+ #define __SIZEOF_LONG_LONG__ 8, line 1 (indirect)
+ #define __SIZEOF_SHORT__ 2, line 1 (indirect)
+ #define __SIZEOF_FLOAT__ 4, line 1 (indirect)
+ #define __SIZEOF_DOUBLE__ 8, line 1 (indirect)
+ #define __SIZEOF_LONG_DOUBLE__ 16, line 1 (indirect)
+ #define __SIZEOF_SIZE_T__ 8, line 1 (indirect)
+ #define __CHAR_BIT__ 8, line 1 (indirect)
+ #define __BIGGEST_ALIGNMENT__ 16, line 1 (indirect)
+ #define __ORDER_LITTLE_ENDIAN__ 1234, line 1 (indirect)
+ #define __ORDER_BIG_ENDIAN__ 4321, line 1 (indirect)
+ #define __ORDER_PDP_ENDIAN__ 3412, line 1 (indirect)
+ #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__, line 1 (indirect)
+ #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__, line 1 (indirect)
+ #define __SIZEOF_POINTER__ 8, line 1 (indirect)
+ #define __SIZE_TYPE__ long unsigned int, line 1 (indirect)
+ #define __PTRDIFF_TYPE__ long int, line 1 (indirect)
+ #define __WCHAR_TYPE__ int, line 1 (indirect)
+ #define __WINT_TYPE__ unsigned int, line 1 (indirect)
+ #define __INTMAX_TYPE__ long int, line 1 (indirect)
+ #define __UINTMAX_TYPE__ long unsigned int, line 1 (indirect)
+ #define __CHAR16_TYPE__ short unsigned int, line 1 (indirect)
+ #define __CHAR32_TYPE__ unsigned int, line 1 (indirect)
+ #define __SIG_ATOMIC_TYPE__ int, line 1 (indirect)
+ #define __INT8_TYPE__ signed char, line 1 (indirect)
+ #define __INT16_TYPE__ short int, line 1 (indirect)
+ #define __INT32_TYPE__ int, line 1 (indirect)
+ #define __INT64_TYPE__ long int, line 1 (indirect)
+ #define __UINT8_TYPE__ unsigned char, line 1 (indirect)
+ #define __UINT16_TYPE__ short unsigned int, line 1 (indirect)
+ #define __UINT32_TYPE__ unsigned int, line 1 (indirect)
+ #define __UINT64_TYPE__ long unsigned int, line 1 (indirect)
+ #define __INT_LEAST8_TYPE__ signed char, line 1 (indirect)
+ #define __INT_LEAST16_TYPE__ short int, line 1 (indirect)
+ #define __INT_LEAST32_TYPE__ int, line 1 (indirect)
+ #define __INT_LEAST64_TYPE__ long int, line 1 (indirect)
+ #define __UINT_LEAST8_TYPE__ unsigned char, line 1 (indirect)
+ #define __UINT_LEAST16_TYPE__ short unsigned int, line 1 (indirect)
+ #define __UINT_LEAST32_TYPE__ unsigned int, line 1 (indirect)
+ #define __UINT_LEAST64_TYPE__ long unsigned int, line 1 (indirect)
+ #define __INT_FAST8_TYPE__ signed char, line 1 (indirect)
+ #define __INT_FAST16_TYPE__ long int, line 1 (indirect)
+ #define __INT_FAST32_TYPE__ long int, line 1 (indirect)
+ #define __INT_FAST64_TYPE__ long int, line 1 (indirect)
+ #define __UINT_FAST8_TYPE__ unsigned char, line 1 (indirect)
+ #define __UINT_FAST16_TYPE__ long unsigned int, line 1 (indirect)
+ #define __UINT_FAST32_TYPE__ long unsigned int, line 1 (indirect)
+ #define __UINT_FAST64_TYPE__ long unsigned int, line 1 (indirect)
+ #define __INTPTR_TYPE__ long int, line 1 (indirect)
+ #define __UINTPTR_TYPE__ long unsigned int, line 1 (indirect)
+ #define __GXX_ABI_VERSION 1002, line 1 (indirect)
+ #define __SCHAR_MAX__ 127, line 1 (indirect)
+ #define __SHRT_MAX__ 32767, line 1 (indirect)
+ #define __INT_MAX__ 2147483647, line 1 (indirect)
+ #define __LONG_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __LONG_LONG_MAX__ 9223372036854775807LL, line 1 (indirect)
+ #define __WCHAR_MAX__ 2147483647, line 1 (indirect)
+ #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1), line 1 (indirect)
+ #define __WINT_MAX__ 4294967295U, line 1 (indirect)
+ #define __WINT_MIN__ 0U, line 1 (indirect)
+ #define __PTRDIFF_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __SIZE_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __INTMAX_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INTMAX_C(c) c ## L, line 1 (indirect)
+ #define __UINTMAX_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINTMAX_C(c) c ## UL, line 1 (indirect)
+ #define __SIG_ATOMIC_MAX__ 2147483647, line 1 (indirect)
+ #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1), line 1 (indirect)
+ #define __INT8_MAX__ 127, line 1 (indirect)
+ #define __INT16_MAX__ 32767, line 1 (indirect)
+ #define __INT32_MAX__ 2147483647, line 1 (indirect)
+ #define __INT64_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __UINT8_MAX__ 255, line 1 (indirect)
+ #define __UINT16_MAX__ 65535, line 1 (indirect)
+ #define __UINT32_MAX__ 4294967295U, line 1 (indirect)
+ #define __UINT64_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __INT_LEAST8_MAX__ 127, line 1 (indirect)
+ #define __INT8_C(c) c, line 1 (indirect)
+ #define __INT_LEAST16_MAX__ 32767, line 1 (indirect)
+ #define __INT16_C(c) c, line 1 (indirect)
+ #define __INT_LEAST32_MAX__ 2147483647, line 1 (indirect)
+ #define __INT32_C(c) c, line 1 (indirect)
+ #define __INT_LEAST64_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INT64_C(c) c ## L, line 1 (indirect)
+ #define __UINT_LEAST8_MAX__ 255, line 1 (indirect)
+ #define __UINT8_C(c) c, line 1 (indirect)
+ #define __UINT_LEAST16_MAX__ 65535, line 1 (indirect)
+ #define __UINT16_C(c) c, line 1 (indirect)
+ #define __UINT_LEAST32_MAX__ 4294967295U, line 1 (indirect)
+ #define __UINT32_C(c) c ## U, line 1 (indirect)
+ #define __UINT_LEAST64_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINT64_C(c) c ## UL, line 1 (indirect)
+ #define __INT_FAST8_MAX__ 127, line 1 (indirect)
+ #define __INT_FAST16_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INT_FAST32_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INT_FAST64_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __UINT_FAST8_MAX__ 255, line 1 (indirect)
+ #define __UINT_FAST16_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINT_FAST32_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINT_FAST64_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __INTPTR_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __UINTPTR_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __FLT_EVAL_METHOD__ 0, line 1 (indirect)
+ #define __DEC_EVAL_METHOD__ 2, line 1 (indirect)
+ #define __FLT_RADIX__ 2, line 1 (indirect)
+ #define __FLT_MANT_DIG__ 24, line 1 (indirect)
+ #define __FLT_DIG__ 6, line 1 (indirect)
+ #define __FLT_MIN_EXP__ (-125), line 1 (indirect)
+ #define __FLT_MIN_10_EXP__ (-37), line 1 (indirect)
+ #define __FLT_MAX_EXP__ 128, line 1 (indirect)
+ #define __FLT_MAX_10_EXP__ 38, line 1 (indirect)
+ #define __FLT_DECIMAL_DIG__ 9, line 1 (indirect)
+ #define __FLT_MAX__ 3.40282346638528859812e+38F, line 1 (indirect)
+ #define __FLT_MIN__ 1.17549435082228750797e-38F, line 1 (indirect)
+ #define __FLT_EPSILON__ 1.19209289550781250000e-7F, line 1 (indirect)
+ #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F, line 1 (indirect)
+ #define __FLT_HAS_DENORM__ 1, line 1 (indirect)
+ #define __FLT_HAS_INFINITY__ 1, line 1 (indirect)
+ #define __FLT_HAS_QUIET_NAN__ 1, line 1 (indirect)
+ #define __DBL_MANT_DIG__ 53, line 1 (indirect)
+ #define __DBL_DIG__ 15, line 1 (indirect)
+ #define __DBL_MIN_EXP__ (-1021), line 1 (indirect)
+ #define __DBL_MIN_10_EXP__ (-307), line 1 (indirect)
+ #define __DBL_MAX_EXP__ 1024, line 1 (indirect)
+ #define __DBL_MAX_10_EXP__ 308, line 1 (indirect)
+ #define __DBL_DECIMAL_DIG__ 17, line 1 (indirect)
+ #define __DBL_MAX__ ((double)1.79769313486231570815e+308L), line 1 (indirect)
+ #define __DBL_MIN__ ((double)2.22507385850720138309e-308L), line 1 (indirect)
+ #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L), line 1 (indirect)
+ #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L), line 1 (indirect)
+ #define __DBL_HAS_DENORM__ 1, line 1 (indirect)
+ #define __DBL_HAS_INFINITY__ 1, line 1 (indirect)
+ #define __DBL_HAS_QUIET_NAN__ 1, line 1 (indirect)
+ #define __LDBL_MANT_DIG__ 64, line 1 (indirect)
+ #define __LDBL_DIG__ 18, line 1 (indirect)
+ #define __LDBL_MIN_EXP__ (-16381), line 1 (indirect)
+ #define __LDBL_MIN_10_EXP__ (-4931), line 1 (indirect)
+ #define __LDBL_MAX_EXP__ 16384, line 1 (indirect)
+ #define __LDBL_MAX_10_EXP__ 4932, line 1 (indirect)
+ #define __DECIMAL_DIG__ 21, line 1 (indirect)
+ #define __LDBL_MAX__ 1.18973149535723176502e+4932L, line 1 (indirect)
+ #define __LDBL_MIN__ 3.36210314311209350626e-4932L, line 1 (indirect)
+ #define __LDBL_EPSILON__ 1.08420217248550443401e-19L, line 1 (indirect)
+ #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L, line 1 (indirect)
+ #define __LDBL_HAS_DENORM__ 1, line 1 (indirect)
+ #define __LDBL_HAS_INFINITY__ 1, line 1 (indirect)
+ #define __LDBL_HAS_QUIET_NAN__ 1, line 1 (indirect)
+ #define __DEC32_MANT_DIG__ 7, line 1 (indirect)
+ #define __DEC32_MIN_EXP__ (-94), line 1 (indirect)
+ #define __DEC32_MAX_EXP__ 97, line 1 (indirect)
+ #define __DEC32_MIN__ 1E-95DF, line 1 (indirect)
+ #define __DEC32_MAX__ 9.999999E96DF, line 1 (indirect)
+ #define __DEC32_EPSILON__ 1E-6DF, line 1 (indirect)
+ #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF, line 1 (indirect)
+ #define __DEC64_MANT_DIG__ 16, line 1 (indirect)
+ #define __DEC64_MIN_EXP__ (-382), line 1 (indirect)
+ #define __DEC64_MAX_EXP__ 385, line 1 (indirect)
+ #define __DEC64_MIN__ 1E-383DD, line 1 (indirect)
+ #define __DEC64_MAX__ 9.999999999999999E384DD, line 1 (indirect)
+ #define __DEC64_EPSILON__ 1E-15DD, line 1 (indirect)
+ #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD, line 1 (indirect)
+ #define __DEC128_MANT_DIG__ 34, line 1 (indirect)
+ #define __DEC128_MIN_EXP__ (-6142), line 1 (indirect)
+ #define __DEC128_MAX_EXP__ 6145, line 1 (indirect)
+ #define __DEC128_MIN__ 1E-6143DL, line 1 (indirect)
+ #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL, line 1 (indirect)
+ #define __DEC128_EPSILON__ 1E-33DL, line 1 (indirect)
+ #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL, line 1 (indirect)
+ #define __REGISTER_PREFIX__ , line 1 (indirect)
+ #define __USER_LABEL_PREFIX__ , line 1 (indirect)
+ #define __GNUC_GNU_INLINE__ 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1, line 1 (indirect)
+ #define __GCC_ATOMIC_BOOL_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_CHAR_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_SHORT_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_INT_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_LONG_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_LLONG_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1, line 1 (indirect)
+ #define __GCC_ATOMIC_POINTER_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_HAVE_DWARF2_CFI_ASM 1, line 1 (indirect)
+ #define __PRAGMA_REDEFINE_EXTNAME 1, line 1 (indirect)
+ #define __SIZEOF_INT128__ 16, line 1 (indirect)
+ #define __SIZEOF_WCHAR_T__ 4, line 1 (indirect)
+ #define __SIZEOF_WINT_T__ 4, line 1 (indirect)
+ #define __SIZEOF_PTRDIFF_T__ 8, line 1 (indirect)
+ #define __amd64 1, line 1 (indirect)
+ #define __amd64__ 1, line 1 (indirect)
+ #define __x86_64 1, line 1 (indirect)
+ #define __x86_64__ 1, line 1 (indirect)
+ #define __ATOMIC_HLE_ACQUIRE 65536, line 1 (indirect)
+ #define __ATOMIC_HLE_RELEASE 131072, line 1 (indirect)
+ #define __k8 1, line 1 (indirect)
+ #define __k8__ 1, line 1 (indirect)
+ #define __code_model_small__ 1, line 1 (indirect)
+ #define __MMX__ 1, line 1 (indirect)
+ #define __SSE__ 1, line 1 (indirect)
+ #define __SSE2__ 1, line 1 (indirect)
+ #define __FXSR__ 1, line 1 (indirect)
+ #define __SSE_MATH__ 1, line 1 (indirect)
+ #define __SSE2_MATH__ 1, line 1 (indirect)
+ #define __gnu_linux__ 1, line 1 (indirect)
+ #define __linux 1, line 1 (indirect)
+ #define __linux__ 1, line 1 (indirect)
+ #define linux 1, line 1 (indirect)
+ #define __unix 1, line 1 (indirect)
+ #define __unix__ 1, line 1 (indirect)
+ #define unix 1, line 1 (indirect)
+ #define __ELF__ 1, line 1 (indirect)
+ #define __DECIMAL_BID_FORMAT__ 1, line 1 (indirect)
+
+EOF
+
+cat macro.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=macro testfile-debug
+
+cat macro.out | sed -e "s/.debug_macro' at offset 0xab5/.zdebug_macro' at offset 0x1aa7/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=macro testfile-zdebug
+
+cat > line.out << \EOF
+
+DWARF section [34] '.debug_line' at offset 0x104c:
+
+Table at offset 0:
+
+ Length: 70
+ DWARF version: 2
+ Prologue length: 40
+ Minimum instruction length: 1
+ Maximum operations per instruction: 1
+ Initial value if 'is_stmt': 1
+ Line base: -5
+ Line range: 14
+ Opcode base: 13
+
+Opcodes:
+ [ 1] 0 arguments
+ [ 2] 1 argument
+ [ 3] 1 argument
+ [ 4] 1 argument
+ [ 5] 1 argument
+ [ 6] 0 arguments
+ [ 7] 0 arguments
+ [ 8] 0 arguments
+ [ 9] 1 argument
+ [10] 0 arguments
+ [11] 0 arguments
+ [12] 1 argument
+
+Directory table:
+
+File name table:
+ Entry Dir Time Size Name
+ 1 0 0 0 testfile-zdebug.c
+
+Line number statements:
+ [ 32] extended opcode 2: set address to 0x4003c0
+ [ 3d] special opcode 22: address+0 = 0x4003c0, line+4 = 5
+ [ 3e] special opcode 20: address+0 = 0x4003c0, line+2 = 7
+ [ 3f] special opcode 104: address+6 = 0x4003c6, line+2 = 9
+ [ 40] special opcode 77: address+4 = 0x4003ca, line+3 = 12
+ [ 41] special opcode 62: address+3 = 0x4003cd, line+2 = 14
+ [ 42] special opcode 86: address+5 = 0x4003d2, line-2 = 12
+ [ 43] special opcode 76: address+4 = 0x4003d6, line+2 = 14
+ [ 44] special opcode 47: address+2 = 0x4003d8, line+1 = 15
+ [ 45] advance address by 1 to 0x4003d9
+ [ 47] extended opcode 1: end of sequence
+EOF
+
+cat line.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=line testfile-debug
+
+cat line.out | sed -e "s/.debug_line' at offset 0x104c/.zdebug_line' at offset 0x1d53/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=line testfile-zdebug
+
+
+cat > frame.out << \EOF
+
+Call frame information section [16] '.eh_frame' at offset 0x5b8:
+
+ [ 0] CIE length=20
+ CIE_id: 0
+ version: 1
+ augmentation: "zR"
+ code_alignment_factor: 1
+ data_alignment_factor: -8
+ return_address_register: 16
+ Augmentation data: 0x1b (FDE address encoding: sdata4 pcrel)
+
+ Program:
+ def_cfa r7 (rsp) at offset 8
+ offset r16 (rip) at cfa-8
+ nop
+ nop
+
+ [ 18] FDE length=20 cie=[ 0]
+ CIE_pointer: 28
+ initial_location: 0x00000000ffffff08 (offset: 0x4e0)
+ address_range: 0x2 (end offset: 0x4e2)
+
+ Program:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+
+ [ 30] FDE length=44 cie=[ 0]
+ CIE_pointer: 52
+ initial_location: 0x00000000ffffff00 (offset: 0x4f0)
+ address_range: 0x89 (end offset: 0x579)
+
+ Program:
+ advance_loc 17 to 0x501
+ offset r12 (r12) at cfa-40
+ offset r6 (rbp) at cfa-48
+ advance_loc 31 to 0x520
+ def_cfa_offset 64
+ offset r3 (rbx) at cfa-56
+ offset r15 (r15) at cfa-16
+ offset r14 (r14) at cfa-24
+ offset r13 (r13) at cfa-32
+ advance_loc1 88 to 0x578
+ def_cfa_offset 8
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+
+ [ 60] FDE length=36 cie=[ 0]
+ CIE_pointer: 100
+ initial_location: 0x00000000fffffd80 (offset: 0x3a0)
+ address_range: 0x20 (end offset: 0x3c0)
+
+ Program:
+ def_cfa_offset 16
+ advance_loc 6 to 0x3a6
+ def_cfa_offset 24
+ advance_loc 10 to 0x3b0
+ def_cfa_expression 11
+ [ 0] breg7 8
+ [ 2] breg16 0
+ [ 4] lit15
+ [ 5] and
+ [ 6] lit11
+ [ 7] ge
+ [ 8] lit3
+ [ 9] shl
+ [ 10] plus
+ nop
+ nop
+ nop
+ nop
+
+ [ 88] Zero terminator
+
+Call frame search table section [17] '.eh_frame_hdr':
+ version: 1
+ eh_frame_ptr_enc: 0x1b (sdata4 pcrel)
+ fde_count_enc: 0x3 (udata4)
+ table_enc: 0x3b (sdata4 datarel)
+ eh_frame_ptr: 0xffffffffffffff70 (offset: 0x5b8)
+ fde_count: 3
+ Table:
+ 0xfffffd5c (offset: 0x3a0) -> 0xffffffd4 fde=[ 60]
+ 0xfffffe9c (offset: 0x4e0) -> 0xffffff8c fde=[ 18]
+ 0xfffffeac (offset: 0x4f0) -> 0xffffffa4 fde=[ 30]
+
+DWARF section [36] '.debug_frame' at offset 0x29b8:
+
+ [ 0] CIE length=20
+ CIE_id: 18446744073709551615
+ version: 1
+ augmentation: ""
+ code_alignment_factor: 1
+ data_alignment_factor: -8
+ return_address_register: 16
+
+ Program:
+ def_cfa r7 (rsp) at offset 8
+ offset r16 (rip) at cfa-8
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+
+ [ 18] FDE length=20 cie=[ 0]
+ CIE_pointer: 0
+ initial_location: 0x00000000004003c0
+ address_range: 0x19
+
+ Program:
+EOF
+
+cat frame.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=frame testfile-debug
+
+cat frame.out | sed -e "s/.debug_frame' at offset 0x29b8/.zdebug_frame' at offset 0x2728/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=frame testfile-zdebug
+
+
testfiles testfile56 testfile57
-testrun ./rerequest_tag testfile56
-testrun ./rerequest_tag testfile57
+testrun ${abs_builddir}/rerequest_tag testfile56
+testrun ${abs_builddir}/rerequest_tag testfile57
exit 0
testfiles testfile testfile2
-testrun_compare ./show-abbrev testfile testfile2 <<\EOF
+testrun_compare ${abs_builddir}/show-abbrev testfile testfile2 <<\EOF
abbrev[0]: code = 1, tag = 17, children = 1
abbrev[0]: attr[0]: code = 16, form = 6, offset = 0
abbrev[0]: attr[1]: code = 18, form = 1, offset = 2
testfiles testfile5 testfile2
-testrun_compare ./show-die-info testfile5 testfile2 <<\EOF
+testrun_compare ${abs_builddir}/show-die-info testfile5 testfile2 <<\EOF
file: testfile5
New CU: off = 0, hsize = 11, ab = 0, as = 4, os = 4
DW_TAG_compile_unit
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# // g++ dwarfinlines.cpp -g -o testfiledwarfinlines -O2
+# int
+# fubar (int x)
+# {
+# __asm__ ( "nop" ::: );
+# return 42 / x - 2;
+# }
+#
+# void foobar (int z1, int z2)
+# {
+# __asm__ ( "nop" ::: );
+# int x = z1 + z2;
+# while (z1 + x + 1 != 42)
+# x = fubar (z1 + z2 + x);
+# }
+#
+# void bar (int z)
+# {
+# int a, b;
+# a = b = z / 2;
+# foobar(a, b);
+# }
+#
+# void foo (int x)
+# {
+# if (x > 0)
+# bar(x - 2);
+# }
+#
+# void fu (int y)
+# {
+# __asm__ ( "nop" ::: );
+# foo (y + 1);
+# }
+#
+# int
+# main (int argc, char **argv)
+# {
+# fu (argc);
+# }
+testfiles testfiledwarfinlines testfiledwarfinlines.core
+
+# Depending on whether we are running make check or make installcheck
+# the actual binary name under test might be different. It is used in
+# the error message, which we also try to match.
+if test "$elfutils_testrun" = "installed"; then
+STACKCMD=${bindir}/`program_transform stack`
+else
+STACKCMD=${abs_top_builddir}/src/stack
+fi
+
+# Without -d the top function comes out as fu.
+testrun_compare ${abs_top_builddir}/src/stack -n 2 -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF
+PID 13654 - core
+TID 13654:
+#0 0x00000000004006c8 fu(int)
+#1 0x00000000004004c5 main
+$STACKCMD: tid 13654: shown max number of frames (2, use -n 0 for unlimited)
+EOF
+
+# But when asking for source we see it is actually on line 6.
+# (Which is in function fubar, not fu).
+testrun_compare ${abs_top_builddir}/src/stack -n 2 -s -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF
+PID 13654 - core
+TID 13654:
+#0 0x00000000004006c8 fu(int)
+ /home/mark/src/tests/dwarfinlines.cpp:6
+#1 0x00000000004004c5 main
+ /home/mark/src/tests/dwarfinlines.cpp:39
+$STACKCMD: tid 13654: shown max number of frames (2, use -n 0 for unlimited)
+EOF
+
+# So with --debugname we get the function correct as fubar.
+testrun_compare ${abs_top_builddir}/src/stack -n 2 -d -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF
+PID 13654 - core
+TID 13654:
+#0 0x00000000004006c8 fubar
+#1 0x00000000004004c5 main
+$STACKCMD: tid 13654: shown max number of frames (2, use -n 0 for unlimited)
+EOF
+
+# Which now matches the source line (again 6 of course).
+testrun_compare ${abs_top_builddir}/src/stack -n 2 -s -d -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF
+PID 13654 - core
+TID 13654:
+#0 0x00000000004006c8 fubar
+ /home/mark/src/tests/dwarfinlines.cpp:6
+#1 0x00000000004004c5 main
+ /home/mark/src/tests/dwarfinlines.cpp:39
+$STACKCMD: tid 13654: shown max number of frames (2, use -n 0 for unlimited)
+EOF
+
+exit 0
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2014 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# See run-stack-d-test.sh for dwarfinlines.cpp source.
+testfiles testfiledwarfinlines testfiledwarfinlines.core
+
+# Depending on whether we are running make check or make installcheck
+# the actual binary name under test might be different. It is used in
+# the error message, which we also try to match.
+if test "$elfutils_testrun" = "installed"; then
+STACKCMD=${bindir}/`program_transform stack`
+else
+STACKCMD=${abs_top_builddir}/src/stack
+fi
+
+# Compare with run-stack-d-test.sh to see the output without --inlines.
+# Only two call frames are visible (there is a jump from main to fu or
+# fubar).
+
+# With --inlines we get all inlined calls. Note they share the same
+# address.
+testrun_compare ${abs_top_builddir}/src/stack -n 6 -i -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF
+PID 13654 - core
+TID 13654:
+#0 0x00000000004006c8 fubar
+#1 0x00000000004006c8 foobar
+#2 0x00000000004006c8 bar
+#3 0x00000000004006c8 foo
+#4 0x00000000004006c8 fu(int)
+#5 0x00000000004004c5 main
+$STACKCMD: tid 13654: shown max number of frames (6, use -n 0 for unlimited)
+EOF
+
+# With --source we can also see where in the source the inlined frames
+# where originally called from.
+testrun_compare ${abs_top_builddir}/src/stack -n 6 -s -i -e testfiledwarfinlines --core testfiledwarfinlines.core<<EOF
+PID 13654 - core
+TID 13654:
+#0 0x00000000004006c8 fubar
+ /home/mark/src/tests/dwarfinlines.cpp:6
+#1 0x00000000004006c8 foobar
+ /home/mark/src/tests/dwarfinlines.cpp:14
+#2 0x00000000004006c8 bar
+ /home/mark/src/tests/dwarfinlines.cpp:21
+#3 0x00000000004006c8 foo
+ /home/mark/src/tests/dwarfinlines.cpp:27
+#4 0x00000000004006c8 fu(int)
+ /home/mark/src/tests/dwarfinlines.cpp:33
+#5 0x00000000004004c5 main
+ /home/mark/src/tests/dwarfinlines.cpp:39
+$STACKCMD: tid 13654: shown max number of frames (6, use -n 0 for unlimited)
+EOF
+
+exit 0
files="testfile `seq 2 9 | while read n; do echo testfile$n; done`"
testfiles $files
-testrun_compare ../src/strings -tx -f $files <<\EOF
+testrun_compare ${abs_top_builddir}/src/strings -tx -f $files <<\EOF
testfile: f4 /lib/ld-linux.so.2
testfile: 1c9 __gmon_start__
testfile: 1d8 libc.so.6
testfiles $infile
tempfiles $outfile $dbgfile
-testrun ../src/strip -o $outfile -f $dbgfile $infile
-testrun ../src/elflint -q $infile
-testrun ../src/elflint -q $outfile
-testrun ../src/elflint -q -d $dbgfile
+testrun ${abs_top_builddir}/src/strip -o $outfile -f $dbgfile $infile
+testrun ${abs_top_builddir}/src/elflint -q $infile
+testrun ${abs_top_builddir}/src/elflint -q $outfile
+testrun ${abs_top_builddir}/src/elflint -q -d $dbgfile
#! /bin/sh
-# Copyright (C) 2011 Red Hat, Inc.
+# Copyright (C) 2011, 2013 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
. $srcdir/test-subr.sh
-testfiles hello_i386.ko hello_x86_64.ko hello_ppc64.ko hello_s390.ko
+testfiles hello_i386.ko hello_x86_64.ko hello_ppc64.ko hello_s390.ko \
+ hello_aarch64.ko
+
+tempfiles readelf.out readelf.out1 readelf.out2
+tempfiles out.stripped1 out.debug1 out.stripped2 out.debug2
status=0
runtest() {
outfile2=out.stripped2
debugfile2=out.debug2
- testrun ../src/strip -o $outfile1 -f $debugfile1 $infile ||
+ testrun ${abs_top_builddir}/src/strip -o $outfile1 -f $debugfile1 $infile ||
{ echo "*** failure strip $infile"; status=1; }
- testrun ../src/strip --reloc-debug-sections -o $outfile2 \
+ testrun ${abs_top_builddir}/src/strip --reloc-debug-sections -o $outfile2 \
-f $debugfile2 $infile ||
{ echo "*** failure strip --reloc-debug-sections $infile"; status=1; }
# shouldn't make any difference for stripped files.
- testrun ../src/readelf -a $outfile1 > readelf.out ||
+ testrun ${abs_top_builddir}/src/readelf -a $outfile1 > readelf.out ||
{ echo "*** failure readelf -a outfile1 $infile"; status=1; }
- testrun_compare ../src/readelf -a $outfile2 < readelf.out ||
+ testrun_compare ${abs_top_builddir}/src/readelf -a $outfile2 < readelf.out ||
{ echo "*** failure compare stripped files $infile"; status=1; }
# debug files however should be smaller, when ET_REL.
# Strip of DWARF section lines, offset will not match.
# Everything else should match.
- testrun ../src/readelf -w $debugfile1 \
+ testrun ${abs_top_builddir}/src/readelf -w $debugfile1 \
| grep -v ^DWARF\ section > readelf.out1 ||
{ echo "*** failure readelf -w debugfile1 $infile"; status=1; }
- testrun ../src/readelf -w $debugfile2 \
+ testrun ${abs_top_builddir}/src/readelf -w $debugfile2 \
| grep -v ^DWARF\ section > readelf.out2 ||
{ echo "*** failure readelf -w debugfile2 $infile"; status=1; }
testrun_compare cat readelf.out1 < readelf.out2 ||
{ echo "*** failure readelf -w compare $infile"; status=1; }
-
- rm -f $outfile1 $debugfile1 $outfile2 $debugfile2 readelf.out*
}
# Most simple hello world kernel module for various architectures.
runtest hello_x86_64.ko 1
runtest hello_ppc64.ko 1
runtest hello_s390.ko 1
+runtest hello_aarch64.ko 1
# self test, shouldn't impact non-ET_REL files at all.
-runtest ../src/strip 0
-runtest ../src/strip.o 1
+runtest ${abs_top_builddir}/src/strip 0
+runtest ${abs_top_builddir}/src/strip.o 1
exit $status
tempfiles testfile.temp testfile.debug.temp testfile.unstrip
-testrun ../src/strip -o testfile.temp $debugout $original
+testrun ${abs_top_builddir}/src/strip -o testfile.temp $debugout $original
status=0
cmp $stripped testfile.temp || status=$?
# Check elflint and the expected result.
-testrun ../src/elflint -q testfile.temp || status=$?
+testrun ${abs_top_builddir}/src/elflint -q testfile.temp || status=$?
test -z "$debugfile" || {
cmp $debugfile testfile.debug.temp || status=$?
# Check elflint and the expected result.
-testrun ../src/elflint -q -d testfile.debug.temp || status=$?
+testrun ${abs_top_builddir}/src/elflint -q -d testfile.debug.temp || status=$?
# Now test unstrip recombining those files.
-testrun ../src/unstrip -o testfile.unstrip testfile.temp testfile.debug.temp
+testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip testfile.temp testfile.debug.temp
# Check that it came back whole.
-testrun ../src/elfcmp --hash-inexact $original testfile.unstrip
+testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.unstrip
}
tempfiles testfile.sections
-testrun ../src/readelf -S testfile.temp > testfile.sections || status=$?
+testrun ${abs_top_builddir}/src/readelf -S testfile.temp > testfile.sections || status=$?
fgrep ' .debug_' testfile.sections && status=1
exit $status
# ar cru testarchive64.a aaa.o bbb.o ccc.o
testfiles testarchive64.a
-testrun_compare ../src/readelf -c testarchive64.a <<\EOF
+testrun_compare ${abs_top_builddir}/src/readelf -c testarchive64.a <<\EOF
Index of archive 'testarchive64.a' has 7 entries:
Archive member 'aaa.o' contains:
testfiles testfile
-testrun ./test-flag-nobits testfile
+testrun ${abs_builddir}/test-flag-nobits testfile
testfiles testfile59
-testrun_compare ./typeiter testfile59 <<\EOF
+testrun_compare ${abs_builddir}/typeiter testfile59 <<\EOF
+ok
+EOF
+
+testrun_compare ${abs_builddir}/typeiter2 testfile59 <<\EOF
ok
EOF
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# Linux /proc/PID/maps file with some non-file entries (and fake exe/lib names).
+tempfiles testmaps
+cat > testmaps <<EOF
+00400000-024aa000 r-xp 00000000 08:02 159659 /opt/TestBins/bin/arwijn
+026aa000-026b2000 rwxp 020aa000 08:02 159659 /opt/TestBins/bin/arwijn
+026b2000-026bf000 rwxp 00000000 00:00 0
+0335a000-03e6f000 rwxp 00000000 00:00 0 [heap]
+2b7b38282000-2b7b38302000 rwxs 00000000 00:06 493872 socket:[493872]
+2b7b38302000-2b7b38312000 rwxs 00000000 00:06 493872 socket:[493872]
+2b7b38312000-2b7b38b12000 r-xs 00000000 00:06 493872 socket:[493872]
+2b7b38b12000-2b7b38b22000 rwxs 00000000 00:06 493872 socket:[493872]
+2b7b38b22000-2b7b39322000 rwxs 00000000 00:06 493872 socket:[493872]
+2b7b4439f000-2b7b45ea1000 rwxp 00000000 00:00 0
+7f31e7d9f000-7f31e7f29000 r-xp 00000000 fd:00 917531 /lib64/libc-1.13.so
+7f31e7f29000-7f31e8128000 ---p 0018a000 fd:00 917531 /lib64/libc-1.13.so
+7f31e8128000-7f31e812c000 r--p 00189000 fd:00 917531 /lib64/libc-1.13.so
+7f31e812c000-7f31e812d000 rw-p 0018d000 fd:00 917531 /lib64/libc-1.13.so
+7f31e812d000-7f31e8132000 rw-p 00000000 00:00 0
+7f31ea3f9000-7f31ea3fc000 rw-s 00000000 00:09 3744 anon_inode:kvm-vcpu
+7f31ea3fc000-7f31ea3ff000 rw-s 00000000 00:09 3744 anon_inode:kvm-vcpu
+7f31ea400000-7f31ea402000 rw-p 00000000 00:00 0
+7fff26cf7000-7fff26d0c000 rwxp 00000000 00:00 0 [stack]
+7fff26dff000-7fff26e00000 r-xp 00000000 00:00 0 [vdso]
+ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
+EOF
+
+testrun_compare ${abs_top_builddir}/src/unstrip -n -M testmaps <<\EOF
+0x400000+0x22b2000 - - - /opt/TestBins/bin/arwijn
+0x7f31e7d9f000+0x38e000 - - - /lib64/libc-1.13.so
+EOF
+
+exit 0
testfiles testcore-rtlib testcore-rtlib-ppc
-testrun_compare ../src/unstrip -n --core=testcore-rtlib <<\EOF
+testrun_compare ${abs_top_builddir}/src/unstrip -n --core=testcore-rtlib <<\EOF
0x8048000+0x2000 f1c600bc36cb91bf01f9a63a634ecb79aa4c3199@0x8048178 . - [exe]
+0xf75e9000+0x1a000 29a103420abe341e92072fb14274e250e4072148@0xf75e9164 - - libpthread.so.0
+0xf7603000+0x1b0000 0b9bf374699e141e5dfc14757ff42b8c2373b4de@0xf7603184 - - libc.so.6
+0xf77b3000+0x9000 c6c5b5e35ab9589d4762ac85b4bd56b1b2720e37@0xf77b3164 - - librt.so.1
0xf77d6000+0x1000 676560b1b765cde9c2e53f134f4ee354ea894747@0xf77d6210 . - linux-gate.so.1
-0xf77b3000+0x9000 c6c5b5e35ab9589d4762ac85b4bd56b1b2720e37@0xf77b3164 /lib/librt.so.1 - librt.so.1
-0xf7603000+0x1b0000 0b9bf374699e141e5dfc14757ff42b8c2373b4de@0xf7603184 /lib/libc.so.6 - libc.so.6
-0xf75e9000+0x1a000 29a103420abe341e92072fb14274e250e4072148@0xf75e9164 /lib/libpthread.so.0 - libpthread.so.0
-0xf77d7000+0x21000 6d2cb32650054f1c176d01d48713a4a5e5e84c1a@0xf77d7124 /lib/ld-linux.so.2 - ld-linux.so.2
+0xf77d7000+0x21000 6d2cb32650054f1c176d01d48713a4a5e5e84c1a@0xf77d7124 - - ld-linux.so.2
EOF
-testrun_compare ../src/unstrip -n --core=testcore-rtlib-ppc <<\EOF
-0x10000000+0x20000 979b7a26747cc09bd84a42b311b5288c704baea5@0x10000174 . - [exe]
+testrun_compare ${abs_top_builddir}/src/unstrip -n --core=testcore-rtlib-ppc <<\EOF
0x100000+0x10000 708b900b05176964512a6b0fe90c2a0c9d73d726@0x100334 . - linux-vdso32.so.1
-0xfd50000+0x30000 3f7d21508470322d2f47acddc20ab10516edba99@0xfd50164 /lib/librt.so.1 - librt.so.1
-0xfdf0000+0x1c0000 edf3dd232e09d01b90683889bd16b9406c52d4de@0xfdf0184 /lib/libc.so.6 - libc.so.6
-0xfdb0000+0x40000 f6ee91d4c629bc7dacc10534cb30056914e7e0b5@0xfdb0164 /lib/libpthread.so.0 - libpthread.so.0
-0xffb0000+0x50000 edec437a85026a1cf8cda94003706202733130c1@0xffb0124 /lib/ld.so.1 - ld.so.1
+0xfd50000+0x30000 3f7d21508470322d2f47acddc20ab10516edba99@0xfd50164 . - librt.so.1
+0xfdb0000+0x40000 f6ee91d4c629bc7dacc10534cb30056914e7e0b5@0xfdb0164 - - libpthread.so.0
+0xfdf0000+0x1c0000 edf3dd232e09d01b90683889bd16b9406c52d4de@0xfdf0184 - - libc.so.6
+0xffb0000+0x50000 edec437a85026a1cf8cda94003706202733130c1@0xffb0124 - - ld.so.1
+0x10000000+0x20000 979b7a26747cc09bd84a42b311b5288c704baea5@0x10000174 . - [exe]
+EOF
+
+# FAIL was 0x7f67f2caf000 for test-core-lib.so .
+# /lib64/libc.so.6 and /lib64/ld-linux-x86-64.so.2 from link map
+# do not have ELF header stored in the core file.
+# ELF headers in the core file:
+# Offset VirtAddr
+# 0x014000 0x00007f67f2caf000 ./test-core-lib.so
+# 0x03a000 0x00007fff1596c000 linux-vdso.so.1
+testfiles test-core.core test-core.exec
+rm -f test-core-lib.so
+outfile=test-core.out
+testrun_out $outfile ${abs_top_builddir}/src/unstrip -n -e test-core.exec --core=test-core.core
+outfile2=test-core.out2
+remove_files="$remove_files $outfile2"
+grep -v libc.so.6 $outfile | sort >$outfile2
+diff -u $outfile2 - <<EOF
+0x400000+0x202038 - test-core.exec - test-core.exec
+0x7f67f2aaf000+0x202000 - . - test-core-lib.so
+0x7fff1596c000+0x1000 a9cf37f53897b5468ee018655760be61b8633d3c@0x7fff1596c340 . - linux-vdso.so.1
EOF
test_cleanup
# stripped sections that shrank in the stripped file. strip
# no longer does that, but unstrip must still handle it.
-testrun ../src/unstrip -o testfile.unstrip $stripped $debugfile
+testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip $stripped $debugfile
-testrun ../src/elfcmp --hash-inexact $original testfile.unstrip
+testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.unstrip
# Also test modifying the file in place.
rm -f testfile.inplace
cp $debugfile testfile.inplace
chmod 644 testfile.inplace
-testrun ../src/unstrip $stripped testfile.inplace
+testrun ${abs_top_builddir}/src/unstrip $stripped testfile.inplace
-testrun ../src/elfcmp --hash-inexact $original testfile.inplace
+testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.inplace
--- /dev/null
+#! /bin/sh
+# 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 the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# See the source files testfile_const_type.c testfile_implicit_value.c
+# testfile_entry_value.c testfile_parameter_ref.c testfile_implicit_pointer.c
+# how to regenerate the test files (needs GCC 4.8+).
+
+testfiles testfile_const_type testfile_implicit_value testfile_entry_value
+testfiles testfile_parameter_ref testfile_implicit_pointer
+
+testrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_const_type <<\EOF
+module 'testfile_const_type'
+[b] CU 'const_type.c'@0
+ [33] function 'f1'@80483f0
+ frame_base: {call_frame_cfa {bregx(4,4)}}
+ [4b] parameter 'd'
+ [80483f0,804841b) {fbreg(0)}
+ [57] variable 'w'
+ [80483f0,804841b) {fbreg(0), GNU_deref_type(8){long long int,signed,64@[25]}, GNU_const_type{long long int,signed,64@[25]}(8)[0000806745230100], div, GNU_convert{long long unsigned int,unsigned,64@[2c]}, stack_value}
+ [7d] function 'main'@80482f0
+ frame_base: {call_frame_cfa {bregx(4,4)}}
+EOF
+
+testrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_implicit_value <<\EOF
+module 'testfile_implicit_value'
+[b] CU 'implicit_value.c'@0
+ [25] function 'foo'@80483f0
+ frame_base: {call_frame_cfa {bregx(4,4)}}
+ [3e] variable 'a'
+ [80483f0,80483f6) {implicit_value(8){0200000000000000}, piece(8), implicit_value(8){1500000000000000}, piece(8)}
+ [86] function 'main'@80482f0
+ frame_base: {call_frame_cfa {bregx(4,4)}}
+EOF
+
+testrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_entry_value <<\EOF
+module 'testfile_entry_value'
+[b] CU 'entry_value.c'@0
+ [29] function 'foo'@400500
+ frame_base: {call_frame_cfa {bregx(7,8)}}
+ [4a] parameter 'x'
+ [400500,400504) {reg5}
+ [55] parameter 'y'
+ [400500,400504) {reg4}
+ [68] function 'bar'@400510
+ frame_base: {call_frame_cfa {bregx(7,8)}}
+ [89] parameter 'x'
+ [400510,40051c) {reg5}
+ [40051c,40052b) {reg6}
+ [40052b,400531) {GNU_entry_value(1) {reg5}, stack_value}
+ [96] parameter 'y'
+ [400510,40051c) {reg4}
+ [40051c,40052a) {reg3}
+ [40052a,400531) {GNU_entry_value(1) {reg4}, stack_value}
+ [a3] variable 'z'
+ [400524,400528) {reg0}
+ [400528,400529) {reg12}
+ [400529,40052e) {breg0(0), breg12(0), plus, stack_value}
+ [40052e,400531) {reg0}
+ [e9] function 'main'@400400
+ frame_base: {call_frame_cfa {bregx(7,8)}}
+ [10a] parameter 'argc'
+ [400400,400406) {reg5}
+ [400406,40040a) {breg5(-1), stack_value}
+ [40040a,40040b) {GNU_entry_value(1) {reg5}, stack_value}
+ [119] parameter 'argv'
+ [400400,400403) {reg4}
+ [400403,40040b) {GNU_entry_value(1) {reg4}, stack_value}
+EOF
+
+testrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_parameter_ref <<\EOF
+module 'testfile_parameter_ref'
+[b] CU 'parameter_ref.c'@0
+ [77] function 'foo'@400510
+ frame_base: {call_frame_cfa {bregx(7,8)}}
+ [92] parameter 'x'
+ [400510,400523) {reg5}
+ [99] parameter 'y'
+ [400510,400523) {GNU_parameter_ref[42], stack_value}
+ [a5] variable 'a'
+ [400510,400523) {breg5(0), lit1, shl, stack_value}
+ [b0] variable 'b'
+ [400510,400523) {GNU_parameter_ref[42], lit1, shl, stack_value}
+ [be] variable 'c'
+ <constant value>
+ [c4] parameter 'z'
+ <constant value>
+ [cb] function 'main'@400400
+ frame_base: {call_frame_cfa {bregx(7,8)}}
+ [ec] parameter 'x'
+ [400400,400408) {reg5}
+ [400408,400421) {reg3}
+ [400421,400423) {GNU_entry_value(1) {reg5}, stack_value}
+ [f9] parameter 'argv'
+ [400400,400408) {reg4}
+ [400408,400423) {GNU_entry_value(1) {reg4}, stack_value}
+EOF
+
+testrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_implicit_pointer <<\EOF
+module 'testfile_implicit_pointer'
+[b] CU 'implicit_pointer.c'@0
+ [29] function 'foo'@400500
+ frame_base: {call_frame_cfa {bregx(7,8)}}
+ [4a] parameter 'i'
+ [400500,400503) {reg5}
+ [55] variable 'p'
+ [400500,400503) {GNU_implicit_pointer([4a],0) {reg5}}
+ [73] function 'main'@400400
+ frame_base: {call_frame_cfa {bregx(7,8)}}
+EOF
+
+
+exit 0
#! /bin/sh
-# Copyright (C) 2005-2012 Red Hat, Inc.
+# Copyright (C) 2005-2014 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
set -e
+# Each test runs in its own directory to make sure they can run in parallel.
+test_dir="test-$$"
+mkdir -p "$test_dir"
+cd "$test_dir"
+
#LC_ALL=C
#export LC_ALL
remove_files=
-trap 'rm -f $remove_files' 0
+
+# Tests that trap EXIT (0) themselves should call this explicitly.
+exit_cleanup()
+{
+ rm -f $remove_files; cd ..; rmdir $test_dir
+}
+trap exit_cleanup 0
tempfiles()
{
testfiles()
{
for file; do
- bunzip2 -c $srcdir/${file}.bz2 > ${file} 2>/dev/null || exit 77
+ bunzip2 -c ${abs_srcdir}/${file}.bz2 > ${file} 2>/dev/null || exit 77
remove_files="$remove_files $file"
done
}
built_testrun()
{
LD_LIBRARY_PATH="${built_library_path}${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"\
- "$@"
+ $VALGRIND_CMD "$@"
}
installed_testrun()
program="$1"
shift
case "$program" in
- ./*)
+ ${abs_builddir}/*)
if [ "x$elfutils_tests_rpath" != xno ]; then
echo >&2 installcheck not possible with --enable-tests-rpath
exit 77
fi
;;
- ../*)
+ ${abs_top_builddir}/src/*)
program=${bindir}/`program_transform ${program##*/}`
;;
esac
if [ "${libdir}" != /usr/lib ] && [ "${libdir}" != /usr/lib64 ]; then
LD_LIBRARY_PATH="${libdir}:${libdir}/elfutils\
${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH" \
- $program ${1+"$@"}
+ $VALGRIND_CMD $program ${1+"$@"}
else
- $program ${1+"$@"}
+ $VALGRIND_CMD $program ${1+"$@"}
fi
}
echo "$*" | sed "${program_transform_name}"
}
-self_test_files=`echo ../src/addr2line ../src/elfcmp ../src/elflint \
-../src/findtextrel ../src/ld ../src/nm ../src/objdump ../src/readelf \
-../src/size ../src/strip ../libelf/libelf.so ../libdw/libdw.so \
-../libasm/libasm.so ../backends/libebl_*.so`
+self_test_files=`echo ${abs_top_builddir}/src/addr2line \
+${abs_top_builddir}/src/elfcmp ${abs_top_builddir}/src/elflint \
+${abs_top_builddir}/src/nm ${abs_top_builddir}/src/objdump \
+${abs_top_builddir}/src/readelf \
+${abs_top_builddir}/src/size.o ${abs_top_builddir}/src/strip.o \
+${abs_top_builddir}/libelf/libelf.so \
+${abs_top_builddir}/libdw/libdw.so \
+${abs_top_builddir}/backends/libebl_i386.so \
+${abs_top_builddir}/backends/libebl_x86_64.so`
# Provide a command to run on all self-test files with testrun.
testrun_on_self()
;;
esac
+if [ "x$VALGRIND_CMD" != "x" ]; then
+ export VALGRIND_CMD
+fi
+
exec "$@"
--- /dev/null
+/* Test program for C++ demangled unwinding.
+ Copyright (C) 2014 Red Hat, Inc.
+ This file is part of elfutils.
+
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+#define NOINLINE_NOCLONE __attribute__ ((noinline, noclone))
+#else
+#define NOINLINE_NOCLONE __attribute__ ((noinline))
+#endif
+
+void NOINLINE_NOCLONE
+cxxfunc (int i)
+{
+ *(volatile int *)0=0;
+ // Avoid tail call optimization.
+ asm volatile ("");
+}
+
+extern "C"
+{
+ void NOINLINE_NOCLONE
+ f (void)
+ {
+ cxxfunc(1);
+ // Avoid tail call optimization.
+ asm volatile ("");
+ }
+}
+
+int
+main()
+{
+ f();
+}
--- /dev/null
+// gcc -m32 -g -O2 -o const_type const_type.c
+
+__attribute__((noinline, noclone)) int
+f1 (long long d)
+{
+ long long w = d / 0x1234567800000LL;
+ return w;
+}
+
+int
+main ()
+{
+ return f1 (4LL) - f1 (4LL);
+}
--- /dev/null
+// gcc -g -O2 -o entry_value entry_value.c
+int __attribute__((noinline, noclone)) foo (int x, int y)
+{
+ return x + y;
+}
+
+int __attribute__((noinline, noclone)) bar (int x, int y)
+{
+ int z;
+ z = foo (x, y);
+ z += foo (y, x);
+ return z;
+}
+
+int
+main (int argc, char **argv)
+{
+ return bar (argc + 1, argc - 1);
+}
--- /dev/null
+// gcc -g -O2 -o implicit_pointer implicit_pointer.c
+
+static __attribute__((noinline, noclone)) int foo (int i)
+{
+ int *p = &i;
+ return *p;
+}
+
+int main (void)
+{
+ return foo (23) - 23;
+}
--- /dev/null
+// gcc -m32 -g -O2 -o implicit_value implicit_value.c
+
+static __attribute__((noinline, noclone)) int foo ()
+{
+ unsigned long long a[] = { 2, 21 };
+ return a[0] * a[1];
+}
+
+int main (void)
+{
+ return foo () - 42;
+}
--- /dev/null
+// gcc -g -O2 -o parameter_ref parameter_ref.c
+
+volatile int vv;
+
+/* Don't inline, but do allow clone to create specialized versions. */
+static __attribute__((noinline)) int
+foo (int x, int y, int z)
+{
+ int a = x * 2;
+ int b = y * 2;
+ int c = z * 2;
+ vv++;
+ return x + z;
+}
+
+int
+main (int x, char **argv)
+{
+ return foo (x, 2, 3) + foo (x, 4, 3) + foo (x + 6, x, 3) + x;
+}
--- /dev/null
+/* Copyright (C) 2012, 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <fcntl.h>
+#include ELFUTILS_HEADER(dw)
+#include <stdio.h>
+#include <unistd.h>
+#include <dwarf.h>
+
+int
+main (int argc, char *argv[])
+{
+ for (int i = 1; i < argc; ++i)
+ {
+ int fd = open (argv[i], O_RDONLY);
+
+ Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
+ if (dbg != NULL)
+ {
+ Dwarf_Off off = 0;
+ size_t cuhl;
+ Dwarf_Off noff;
+ uint64_t type_sig;
+
+ while (dwarf_next_unit (dbg, off, &noff, &cuhl, NULL, NULL, NULL,
+ NULL, &type_sig, NULL) == 0)
+ {
+ Dwarf_Die die_mem;
+ dwarf_offdie_types (dbg, off + cuhl, &die_mem);
+ off = noff;
+ }
+
+ off = 0;
+
+ while (dwarf_nextcu (dbg, off, &noff, &cuhl, NULL, NULL, NULL) == 0)
+ {
+ Dwarf_Die die_mem;
+ Dwarf_Die *die = dwarf_offdie (dbg, off + cuhl, &die_mem);
+
+ Dwarf_Die iter_mem;
+ Dwarf_Die *iter = &iter_mem;
+ dwarf_child (die, &iter_mem);
+
+ while (1)
+ {
+ if (dwarf_tag (iter) == DW_TAG_variable)
+ {
+ Dwarf_Attribute attr_mem;
+ Dwarf_Die form_mem, *form;
+ form = dwarf_formref_die (dwarf_attr (iter, DW_AT_type,
+ &attr_mem),
+ &form_mem);
+
+ if (form == NULL)
+ printf ("fail\n");
+ else
+ printf ("ok\n");
+ }
+
+ if (dwarf_siblingof (iter, &iter_mem) != 0)
+ break;
+ }
+
+ off = noff;
+ }
+
+ dwarf_end (dbg);
+ }
+
+ close (fd);
+ }
+}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
int
main (int argc, char *argv[] __attribute__ ((unused)))
{
- const char *fname = "xxx";
+ const char *fname = "xxx_update1";
int fd;
Elf *elf;
Elf32_Ehdr *ehdr;
exit (1);
}
+ unlink (fname);
+
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
int
main (int argc, char *argv[] __attribute__ ((unused)))
{
- const char *fname = "xxx";
+ const char *fname = "xxx_update2";
int fd;
Elf *elf;
Elf32_Ehdr *ehdr;
exit (1);
}
+ unlink (fname);
+
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
#include ELFUTILS_HEADER(ebl)
int
main (int argc, char *argv[] __attribute__ ((unused)))
{
- const char *fname = "xxx";
+ const char *fname = "xxx_update3";
int fd;
Elf *elf;
Elf32_Ehdr *ehdr;
exit (1);
}
+ unlink (fname);
+
return 0;
}
int
main (int argc, char *argv[] __attribute__ ((unused)))
{
- const char fname[] = "xxx";
+ const char fname[] = "xxx_update4";
int fd;
Elf *elf;
Elf32_Ehdr *ehdr;
--- /dev/null
+/* Test program for dwarf location functions.
+ 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 the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ elfutils is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <assert.h>
+#include <argp.h>
+#include <inttypes.h>
+#include <errno.h>
+#include ELFUTILS_HEADER(dw)
+#include ELFUTILS_HEADER(dwfl)
+#include <dwarf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <error.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "../libdw/known-dwarf.h"
+
+// The Dwarf, Dwarf_CFIs and address bias of
+// cfi table to adjust DWARF addresses against.
+// Needed for DW_OP_call_frame_cfa.
+static Dwarf *dw;
+Dwarf_CFI *cfi_debug;
+Dwarf_CFI *cfi_eh;
+Dwarf_Addr cfi_eh_bias;
+
+// Whether the current function has a DW_AT_frame_base defined.
+// Needed for DW_OP_fbreg.
+bool has_frame_base;
+
+static void
+print_die (Dwarf_Die *die, const char *what, int indent)
+{
+ Dwarf_Addr entrypc;
+ const char *name = dwarf_diename (die) ?: "<unknown>";
+ if (dwarf_entrypc (die, &entrypc) == 0)
+ printf ("%*s[%" PRIx64 "] %s '%s'@%" PRIx64 "\n", indent * 2, "",
+ dwarf_dieoffset (die), what, name, entrypc);
+ else
+ printf ("%*s[%" PRIx64 "] %s '%s'\n", indent * 2, "",
+ dwarf_dieoffset (die), what, name);
+}
+
+static const char *
+dwarf_encoding_string (unsigned int code)
+{
+ static const char *const known[] =
+ {
+#define ONE_KNOWN_DW_ATE(NAME, CODE) [CODE] = #NAME,
+ ALL_KNOWN_DW_ATE
+#undef ONE_KNOWN_DW_ATE
+ };
+
+ if (likely (code < sizeof (known) / sizeof (known[0])))
+ return known[code];
+
+ return NULL;
+}
+
+/* BASE must be a base type DIE referenced by a typed DWARF expression op. */
+static void
+print_base_type (Dwarf_Die *base)
+{
+ assert (dwarf_tag (base) == DW_TAG_base_type);
+
+ Dwarf_Attribute encoding;
+ Dwarf_Word enctype;
+ if (dwarf_attr (base, DW_AT_encoding, &encoding) == NULL
+ || dwarf_formudata (&encoding, &enctype) != 0)
+ error (EXIT_FAILURE, 0, "base type without encoding");
+
+ Dwarf_Attribute bsize;
+ Dwarf_Word bits;
+ if (dwarf_attr (base, DW_AT_byte_size, &bsize) != NULL
+ && dwarf_formudata (&bsize, &bits) == 0)
+ bits *= 8;
+ else if (dwarf_attr (base, DW_AT_bit_size, &bsize) == NULL
+ || dwarf_formudata (&bsize, &bits) != 0)
+ error (EXIT_FAILURE, 0, "base type without byte or bit size");
+
+ printf ("{%s,%s,%" PRIu64 "@[%" PRIx64 "]}",
+ dwarf_diename (base),
+ dwarf_encoding_string (enctype),
+ bits,
+ dwarf_dieoffset (base));
+}
+
+static const char *
+dwarf_opcode_string (unsigned int code)
+{
+ static const char *const known[] =
+ {
+#define ONE_KNOWN_DW_OP_DESC(NAME, CODE, DESC) ONE_KNOWN_DW_OP (NAME, CODE)
+#define ONE_KNOWN_DW_OP(NAME, CODE) [CODE] = #NAME,
+ ALL_KNOWN_DW_OP
+#undef ONE_KNOWN_DW_OP
+#undef ONE_KNOWN_DW_OP_DESC
+ };
+
+ if (likely (code < sizeof (known) / sizeof (known[0])))
+ return known[code];
+
+ return NULL;
+}
+
+// Forward reference for print_expr_block.
+static void print_expr (Dwarf_Attribute *, Dwarf_Op *, Dwarf_Addr);
+
+static void
+print_expr_block (Dwarf_Attribute *attr, Dwarf_Op *exprs, int len,
+ Dwarf_Addr addr)
+{
+ printf ("{");
+ for (int i = 0; i < len; i++)
+ {
+ print_expr (attr, &exprs[i], addr);
+ printf ("%s", (i + 1 < len ? ", " : ""));
+ }
+ printf ("}");
+}
+
+static void
+print_expr_block_addrs (Dwarf_Attribute *attr,
+ Dwarf_Addr begin, Dwarf_Addr end,
+ Dwarf_Op *exprs, int len)
+{
+ printf (" [%" PRIx64 ",%" PRIx64 ") ", begin, end);
+ print_expr_block (attr, exprs, len, begin);
+ printf ("\n");
+}
+
+static void
+print_expr (Dwarf_Attribute *attr, Dwarf_Op *expr, Dwarf_Addr addr)
+{
+ uint8_t atom = expr->atom;
+ const char *opname = dwarf_opcode_string (atom);
+ assert (opname != NULL);
+
+ switch (atom)
+ {
+ case DW_OP_deref:
+ case DW_OP_dup:
+ case DW_OP_drop:
+ case DW_OP_over:
+ case DW_OP_swap:
+ case DW_OP_rot:
+ case DW_OP_xderef:
+ case DW_OP_abs:
+ case DW_OP_and:
+ case DW_OP_div:
+ case DW_OP_minus:
+ case DW_OP_mod:
+ case DW_OP_mul:
+ case DW_OP_neg:
+ case DW_OP_not:
+ case DW_OP_or:
+ case DW_OP_plus:
+ case DW_OP_shl:
+ case DW_OP_shr:
+ case DW_OP_shra:
+ case DW_OP_xor:
+ case DW_OP_eq:
+ case DW_OP_ge:
+ case DW_OP_gt:
+ case DW_OP_le:
+ case DW_OP_lt:
+ case DW_OP_ne:
+ case DW_OP_lit0 ... DW_OP_lit31:
+ case DW_OP_reg0 ... DW_OP_reg31:
+ case DW_OP_nop:
+ case DW_OP_stack_value:
+ /* No arguments. */
+ printf ("%s", opname);
+ break;
+
+ case DW_OP_form_tls_address:
+ /* No arguments. Special. Pops an address and pushes the
+ corresponding address in the current thread local
+ storage. Uses the thread local storage block of the defining
+ module (executable, shared library). */
+ printf ("%s", opname);
+ break;
+
+ case DW_OP_GNU_push_tls_address:
+ /* No arguments. Special. Not the same as DW_OP_form_tls_address.
+ Pops an offset into the current thread local strorage and
+ pushes back the actual address. */
+ printf ("%s", opname);
+ break;
+
+ case DW_OP_call_frame_cfa:
+ /* No arguments. Special. Pushes Call Frame Address as computed
+ by CFI data (dwarf_cfi_addrframe will fetch that info (either from
+ the .eh_frame or .debug_frame CFI) and dwarf_frame_cfa translatesr
+ the CFI instructions into a plain DWARF expression.
+ Never used in CFI itself. */
+
+ if (attr == NULL)
+ error (EXIT_FAILURE, 0, "%s used in CFI", opname);
+
+ printf ("%s ", opname);
+ if (cfi_eh == NULL && cfi_debug == NULL)
+ error (EXIT_FAILURE, 0, "DW_OP_call_frame_cfa used but no cfi found.");
+
+ Dwarf_Frame *frame;
+ if (dwarf_cfi_addrframe (cfi_eh, addr + cfi_eh_bias, &frame) != 0
+ && dwarf_cfi_addrframe (cfi_debug, addr, &frame) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_cfi_addrframe 0x%" PRIx64 ": %s",
+ addr, dwarf_errmsg (-1));
+
+ Dwarf_Op *cfa_ops;
+ size_t cfa_nops;
+ if (dwarf_frame_cfa (frame, &cfa_ops, &cfa_nops) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_frame_cfa 0x%" PRIx64 ": %s",
+ addr, dwarf_errmsg (-1));
+ if (cfa_nops < 1)
+ error (EXIT_FAILURE, 0, "dwarf_frame_cfa no ops");
+ print_expr_block (NULL, cfa_ops, cfa_nops, 0);
+ free (frame);
+ break;
+
+ case DW_OP_push_object_address:
+ /* No arguments. Special. Pushes object address explicitly.
+ Normally only done implicitly by DW_AT_data_member_location.
+ Never used in CFI. */
+ if (attr == NULL)
+ error (EXIT_FAILURE, 0, "%s used in CFI", opname);
+ printf ("%s", opname);
+ break;
+
+ case DW_OP_addr:
+ /* 1 address argument. */
+ printf ("%s(0x%" PRIx64 ")", opname, (Dwarf_Addr) expr->number);
+ break;
+
+ case DW_OP_const1u:
+ case DW_OP_const2u:
+ case DW_OP_const4u:
+ case DW_OP_const8u:
+ case DW_OP_constu:
+ case DW_OP_pick:
+ case DW_OP_plus_uconst:
+ case DW_OP_regx:
+ case DW_OP_piece:
+ case DW_OP_deref_size:
+ case DW_OP_xderef_size:
+ /* 1 numeric unsigned argument. */
+ printf ("%s(%" PRIu64 ")", opname, expr->number);
+ break;
+
+ case DW_OP_call2:
+ case DW_OP_call4:
+ case DW_OP_call_ref:
+ /* 1 DIE offset argument for more ops in location attribute of DIE.
+ Never used in CFI. */
+ {
+ if (attr == NULL)
+ error (EXIT_FAILURE, 0, "%s used in CFI", opname);
+
+ Dwarf_Attribute call_attr;
+ if (dwarf_getlocation_attr (attr, expr, &call_attr) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_attr for %s error %s",
+ opname, dwarf_errmsg (-1));
+
+ Dwarf_Die call_die;
+ if (dwarf_getlocation_die (attr, expr, &call_die) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_die for %s error %s",
+ opname, dwarf_errmsg (-1));
+
+ Dwarf_Op *call_ops;
+ size_t call_len;
+ if (dwarf_getlocation (&call_attr, &call_ops, &call_len) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation for entry: %s",
+ dwarf_errmsg (-1));
+
+ printf ("%s([%" PRIx64 "]) ", opname, dwarf_dieoffset (&call_die));
+ print_expr_block (&call_attr, call_ops, call_len, addr);
+ }
+ break;
+
+ case DW_OP_const1s:
+ case DW_OP_const2s:
+ case DW_OP_const4s:
+ case DW_OP_const8s:
+ case DW_OP_consts:
+ case DW_OP_skip:
+ case DW_OP_bra:
+ case DW_OP_breg0 ... DW_OP_breg31:
+ /* 1 numeric signed argument. */
+ printf ("%s(%" PRId64 ")", opname, (Dwarf_Sword) expr->number);
+ break;
+
+ case DW_OP_fbreg:
+ /* 1 numeric signed argument. Offset from frame base. */
+ if (attr == NULL)
+ error (EXIT_FAILURE, 0, "%s used in CFI", opname);
+
+ if (! has_frame_base)
+ error (EXIT_FAILURE, 0, "DW_OP_fbreg used without a frame base");
+
+ printf ("%s(%" PRId64 ")", opname, (Dwarf_Sword) expr->number);
+ break;
+
+ case DW_OP_bregx:
+ /* 2 arguments, unsigned register number, signed offset. */
+ printf ("%s(%" PRIu64 ",%" PRId64 ")", opname,
+ expr->number, (Dwarf_Sword) expr->number2);
+ break;
+
+ case DW_OP_bit_piece:
+ /* 2 arguments, unsigned size, unsigned offset. */
+ printf ("%s(%" PRIu64 ",%" PRIu64 ")", opname,
+ expr->number, expr->number2);
+ break;
+
+ case DW_OP_implicit_value:
+ /* Special, unsigned size plus block. */
+ {
+ Dwarf_Attribute const_attr;
+ Dwarf_Block block;
+ if (dwarf_getlocation_attr (attr, expr, &const_attr) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_attr: %s",
+ dwarf_errmsg (-1));
+
+ if (dwarf_formblock (&const_attr, &block) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_formblock: %s",
+ dwarf_errmsg (-1));
+
+ /* This is the "old" way. Check they result in the same. */
+ Dwarf_Block block_impl;
+ if (dwarf_getlocation_implicit_value (attr, expr, &block_impl) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_implicit_value: %s",
+ dwarf_errmsg (-1));
+
+ assert (expr->number == block.length);
+ assert (block.length == block_impl.length);
+ printf ("%s(%" PRIu64 "){", opname, block.length);
+ for (size_t i = 0; i < block.length; i++)
+ {
+ printf ("%02x", block.data[i]);
+ assert (block.data[i] == block_impl.data[i]);
+ }
+ printf("}");
+ }
+ break;
+
+ case DW_OP_GNU_implicit_pointer:
+ /* Special, DIE offset, signed offset. Referenced DIE has a
+ location or const_value attribute. */
+ {
+ if (attr == NULL)
+ error (EXIT_FAILURE, 0, "%s used in CFI", opname);
+
+ Dwarf_Attribute attrval;
+ if (dwarf_getlocation_implicit_pointer (attr, expr, &attrval) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_implicit_pointer: %s",
+ dwarf_errmsg (-1));
+
+ // Sanity check, results should be the same.
+ Dwarf_Attribute attrval2;
+ if (dwarf_getlocation_attr (attr, expr, &attrval2) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_attr: %s",
+ dwarf_errmsg (-1));
+
+ assert (dwarf_whatattr (&attrval) == dwarf_whatattr (&attrval2));
+ assert (dwarf_whatform (&attrval) == dwarf_whatform (&attrval2));
+ // In theory two different valp pointers could point to the same
+ // value. But here we really expect them to be the equal.
+ assert (attrval.valp == attrval2.valp);
+
+ Dwarf_Die impl_die;
+ if (dwarf_getlocation_die (attr, expr, &impl_die) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_due: %s",
+ dwarf_errmsg (-1));
+
+ printf ("%s([%" PRIx64 "],%" PRId64 ") ", opname,
+ dwarf_dieoffset (&impl_die), expr->number2);
+
+ if (dwarf_whatattr (&attrval) == DW_AT_const_value)
+ printf ("<constant value>"); // Lookup type...
+ else
+ {
+ // Lookup the location description at the current address.
+ Dwarf_Op *exprval;
+ size_t exprval_len;
+ int locs = dwarf_getlocation_addr (&attrval, addr,
+ &exprval, &exprval_len, 1);
+ if (locs == 0)
+ printf ("<no location>"); // This means "optimized out".
+ else if (locs == 1)
+ print_expr_block (&attrval, exprval, exprval_len, addr);
+ else
+ error (EXIT_FAILURE, 0,
+ "dwarf_getlocation_addr attrval at addr 0x%" PRIx64
+ ", locs (%d): %s", addr, locs, dwarf_errmsg (-1));
+ }
+ }
+ break;
+
+ case DW_OP_GNU_entry_value:
+ /* Special, unsigned size plus expression block. All registers
+ inside the block should be interpreted as they had on
+ entering the function. dwarf_getlocation_attr will return an
+ attribute containing the block as locexpr which can be
+ retrieved with dwarf_getlocation. */
+ {
+ Dwarf_Attribute entry_attr;
+ if (dwarf_getlocation_attr (attr, expr, &entry_attr) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_attr: %s",
+ dwarf_errmsg (-1));
+
+ Dwarf_Op *entry_ops;
+ size_t entry_len;
+ if (dwarf_getlocation (&entry_attr, &entry_ops, &entry_len) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation for entry: %s",
+ dwarf_errmsg (-1));
+
+ printf ("%s(%zd) ", opname, entry_len);
+ print_expr_block (attr, entry_ops, entry_len, addr);
+ }
+ break;
+
+ case DW_OP_GNU_parameter_ref:
+ /* Special, unsigned CU relative DIE offset pointing to a
+ DW_TAG_formal_parameter. The value that parameter had at the
+ call site of the current function will be put on the DWARF
+ stack. The value can be retrieved by finding the
+ DW_TAG_GNU_call_site_parameter which has as
+ DW_AT_abstract_origin the same formal parameter DIE. */
+ {
+ Dwarf_Die param;
+ if (dwarf_getlocation_die (attr, expr, ¶m) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_die: %s",
+ dwarf_errmsg (-1));
+ // XXX actually lookup DW_TAG_GNU_call_site_parameter
+ printf ("%s[%" PRIx64 "]", opname, dwarf_dieoffset (¶m));
+ assert (expr->number == dwarf_cuoffset (¶m));
+ assert (dwarf_tag (¶m) == DW_TAG_formal_parameter);
+ }
+ break;
+
+ case DW_OP_GNU_convert:
+ case DW_OP_GNU_reinterpret:
+ /* Special, unsigned CU relative DIE offset pointing to a
+ DW_TAG_base_type. Pops a value, converts or reinterprets the
+ value to the given type. When the argument is zero the value
+ becomes untyped again. */
+ {
+ Dwarf_Die type;
+ Dwarf_Off off = expr->number;
+ if (off != 0)
+ {
+ if (dwarf_getlocation_die (attr, expr, &type) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_die: %s",
+ dwarf_errmsg (-1));
+ off = dwarf_dieoffset (&type);
+ assert (expr->number == dwarf_cuoffset (&type));
+ printf ("%s", opname);
+ print_base_type (&type);
+ }
+ else
+ printf ("%s[%" PRIu64 "]", opname, off);
+
+ }
+ break;
+
+ case DW_OP_GNU_regval_type:
+ /* Special, unsigned register number plus unsigned CU relative
+ DIE offset pointing to a DW_TAG_base_type. */
+ {
+ Dwarf_Die type;
+ if (dwarf_getlocation_die (attr, expr, &type) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_die: %s",
+ dwarf_errmsg (-1));
+ assert (expr->number2 == dwarf_cuoffset (&type));
+ // XXX check size against base_type size?
+ printf ("%s(reg%" PRIu64 ")", opname, expr->number);
+ print_base_type (&type);
+ }
+ break;
+
+ case DW_OP_GNU_deref_type:
+ /* Special, unsigned size plus unsigned CU relative DIE offset
+ pointing to a DW_TAG_base_type. */
+ {
+ Dwarf_Die type;
+ if (dwarf_getlocation_die (attr, expr, &type) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_die: %s",
+ dwarf_errmsg (-1));
+ assert (expr->number2 == dwarf_cuoffset (&type));
+ // XXX check size against base_type size?
+ printf ("%s(%" PRIu64 ")", opname, expr->number);
+ print_base_type (&type);
+ }
+ break;
+
+ case DW_OP_GNU_const_type:
+ /* Special, unsigned CU relative DIE offset pointing to a
+ DW_TAG_base_type, an unsigned size length plus a block with
+ the constant value. */
+ {
+ Dwarf_Die type;
+ if (dwarf_getlocation_die (attr, expr, &type) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_die: %s",
+ dwarf_errmsg (-1));
+ assert (expr->number == dwarf_cuoffset (&type));
+
+ Dwarf_Attribute const_attr;
+ if (dwarf_getlocation_attr (attr, expr, &const_attr) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocation_attr for type: %s",
+ dwarf_errmsg (-1));
+
+ Dwarf_Block block;
+ if (dwarf_formblock (&const_attr, &block) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_formblock for type: %s",
+ dwarf_errmsg (-1));
+
+ printf ("%s", opname);
+ print_base_type (&type);
+ printf ("(%" PRIu64 ")[", block.length);
+ for (size_t i = 0; i < block.length; i++)
+ printf ("%02x", block.data[i]);
+ printf("]");
+ }
+ break;
+
+ default:
+ error (EXIT_FAILURE, 0, "unhandled opcode: DW_OP_%s (0x%x)",
+ opname, atom);
+ }
+}
+
+/* Get all variables and print their value expressions. */
+static void
+print_varlocs (Dwarf_Die *funcdie)
+{
+ // Display frame base for function if it exists.
+ // Should be used for DW_OP_fbreg.
+ has_frame_base = dwarf_hasattr (funcdie, DW_AT_frame_base);
+ if (has_frame_base)
+ {
+ Dwarf_Attribute fb_attr;
+ if (dwarf_attr (funcdie, DW_AT_frame_base, &fb_attr) == NULL)
+ error (EXIT_FAILURE, 0, "dwarf_attr fb: %s", dwarf_errmsg (-1));
+
+ Dwarf_Op *fb_expr;
+ size_t fb_exprlen;
+ if (dwarf_getlocation (&fb_attr, &fb_expr, &fb_exprlen) == 0)
+ {
+ // Covers all of function.
+ Dwarf_Addr entrypc;
+ if (dwarf_entrypc (funcdie, &entrypc) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_entrypc: %s", dwarf_errmsg (-1));
+
+ printf (" frame_base: ");
+ if (entrypc == 0)
+ printf ("XXX zero address"); // XXX bad DWARF?
+ else
+ print_expr_block (&fb_attr, fb_expr, fb_exprlen, entrypc);
+ printf ("\n");
+ }
+ else
+ {
+ Dwarf_Addr base, start, end;
+ ptrdiff_t off = 0;
+ printf (" frame_base:\n");
+ while ((off = dwarf_getlocations (&fb_attr, off, &base,
+ &start, &end,
+ &fb_expr, &fb_exprlen)) > 0)
+ {
+ printf (" (%" PRIx64 ",%" PRIx64 ") ", start, end);
+ print_expr_block (&fb_attr, fb_expr, fb_exprlen, start);
+ printf ("\n");
+ }
+
+ if (off < 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocations fb: %s",
+ dwarf_errmsg (-1));
+ }
+ }
+ else if (dwarf_tag (funcdie) == DW_TAG_inlined_subroutine)
+ {
+ // See whether the subprogram we are inlined into has a frame
+ // base we should use.
+ Dwarf_Die *scopes;
+ int n = dwarf_getscopes_die (funcdie, &scopes);
+ if (n <= 0)
+ error (EXIT_FAILURE, 0, "dwarf_getscopes_die: %s", dwarf_errmsg (-1));
+
+ while (n-- > 0)
+ if (dwarf_tag (&scopes[n]) == DW_TAG_subprogram
+ && dwarf_hasattr (&scopes[n], DW_AT_frame_base))
+ {
+ has_frame_base = true;
+ break;
+ }
+ free (scopes);
+ }
+
+ if (! dwarf_haschildren (funcdie))
+ return;
+
+ Dwarf_Die child;
+ int res = dwarf_child (funcdie, &child);
+ if (res < 0)
+ error (EXIT_FAILURE, 0, "dwarf_child: %s", dwarf_errmsg (-1));
+
+ /* We thought there was a child, but the child list was actually
+ empty. This isn't technically an error in the DWARF, but it is
+ certainly non-optimimal. */
+ if (res == 1)
+ return;
+
+ do
+ {
+ int tag = dwarf_tag (&child);
+ if (tag == DW_TAG_variable || tag == DW_TAG_formal_parameter)
+ {
+ const char *what = tag == DW_TAG_variable ? "variable" : "parameter";
+ print_die (&child, what, 2);
+
+ if (dwarf_hasattr (&child, DW_AT_location))
+ {
+ Dwarf_Attribute attr;
+ if (dwarf_attr (&child, DW_AT_location, &attr) == NULL)
+ error (EXIT_FAILURE, 0, "dwarf_attr: %s", dwarf_errmsg (-1));
+
+ Dwarf_Op *expr;
+ size_t exprlen;
+ if (dwarf_getlocation (&attr, &expr, &exprlen) == 0)
+ {
+ // Covers all ranges of the function.
+ // Evaluate the expression block for each range.
+ ptrdiff_t offset = 0;
+ Dwarf_Addr base, begin, end;
+ do
+ {
+ offset = dwarf_ranges (funcdie, offset, &base,
+ &begin, &end);
+ if (offset < 0)
+ error (EXIT_FAILURE, 0, "dwarf_ranges: %s",
+ dwarf_errmsg (-1));
+
+ if (offset > 0)
+ {
+ if (exprlen == 0)
+ printf (" (%"
+ PRIx64 ",%" PRIx64
+ ") <empty expression>\n", begin, end);
+ else
+ print_expr_block_addrs (&attr, begin, end,
+ expr, exprlen);
+ }
+ }
+ while (offset > 0);
+
+ if (offset < 0)
+ error (EXIT_FAILURE, 0, "dwarf_ranges: %s",
+ dwarf_errmsg (-1));
+ }
+ else
+ {
+ Dwarf_Addr base, begin, end;
+ ptrdiff_t offset = 0;
+ while ((offset = dwarf_getlocations (&attr, offset,
+ &base, &begin, &end,
+ &expr, &exprlen)) > 0)
+ if (begin >= end)
+ printf (" (%" PRIx64 ",%" PRIx64
+ ") <empty range>\n", begin, end); // XXX report?
+ else
+ {
+ print_expr_block_addrs (&attr, begin, end,
+ expr, exprlen);
+
+ // Extra sanity check for dwarf_getlocation_addr
+ // Must at least find one range for begin and end-1.
+ Dwarf_Op *expraddr;
+ size_t expraddr_len;
+ int locs = dwarf_getlocation_addr (&attr, begin,
+ &expraddr,
+ &expraddr_len, 1);
+ assert (locs == 1);
+ locs = dwarf_getlocation_addr (&attr, end - 1,
+ &expraddr,
+ &expraddr_len, 1);
+ assert (locs == 1);
+ }
+
+ if (offset < 0)
+ error (EXIT_FAILURE, 0, "dwarf_getlocations: %s",
+ dwarf_errmsg (-1));
+ }
+ }
+ else if (dwarf_hasattr (&child, DW_AT_const_value))
+ {
+ printf (" <constant value>\n"); // Lookup type and print.
+ }
+ else
+ {
+ printf (" <no value>\n");
+ }
+ }
+ }
+ while (dwarf_siblingof (&child, &child) == 0);
+}
+
+static int
+handle_instance (Dwarf_Die *funcdie, void *arg __attribute__ ((unused)))
+{
+ print_die (funcdie, "inlined function", 1);
+ print_varlocs (funcdie);
+
+ return DWARF_CB_OK;
+}
+
+static int
+handle_function (Dwarf_Die *funcdie, void *arg __attribute__((unused)))
+{
+ if (dwarf_func_inline (funcdie) > 0)
+ {
+ // abstract inline definition, find all inlined instances.
+
+ // Note this is convenient for listing all instances together
+ // so you can easily compare the location expressions describing
+ // the variables and parameters, but it isn't very efficient
+ // since it will walk the DIE tree multiple times.
+ if (dwarf_func_inline_instances (funcdie, &handle_instance, NULL) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_func_inline_instances: %s",
+ dwarf_errmsg (-1));
+ }
+ else
+ {
+ // Contains actual code, not just a declaration?
+ Dwarf_Addr entrypc;
+ if (dwarf_entrypc (funcdie, &entrypc) == 0)
+ {
+ print_die (funcdie, "function", 1);
+ print_varlocs (funcdie);
+ }
+ }
+
+ return DWARF_CB_OK;
+}
+
+int
+main (int argc, char *argv[])
+{
+ int remaining;
+ Dwfl *dwfl;
+ (void) argp_parse (dwfl_standard_argp (), argc, argv, 0, &remaining,
+ &dwfl);
+ assert (dwfl != NULL);
+
+ Dwarf_Die *cu = NULL;
+ Dwarf_Addr dwbias;
+ while ((cu = dwfl_nextcu (dwfl, cu, &dwbias)) != NULL)
+ {
+ /* Only walk actual compile units (not partial units) that
+ contain code. */
+ Dwarf_Addr cubase;
+ if (dwarf_tag (cu) == DW_TAG_compile_unit
+ && dwarf_lowpc (cu, &cubase) == 0)
+ {
+ Dwfl_Module *mod = dwfl_cumodule (cu);
+ Dwarf_Addr modbias;
+ dw = dwfl_module_getdwarf (mod, &modbias);
+ assert (dwbias == modbias);
+
+ const char *mainfile;
+ const char *modname = dwfl_module_info (mod, NULL,
+ NULL, NULL,
+ NULL, NULL,
+ &mainfile,
+ NULL);
+ if (modname == NULL)
+ error (EXIT_FAILURE, 0, "dwfl_module_info: %s", dwarf_errmsg (-1));
+
+ const char *name = (modname[0] != '\0'
+ ? modname
+ : basename (mainfile));
+ printf ("module '%s'\n", name);
+ print_die (cu, "CU", 0);
+
+ Dwarf_Addr elfbias;
+ Elf *elf = dwfl_module_getelf (mod, &elfbias);
+
+ // CFI. We need both since sometimes neither is complete.
+ cfi_debug = dwarf_getcfi (dw); // No bias needed, same file.
+ cfi_eh = dwarf_getcfi_elf (elf);
+ cfi_eh_bias = dwbias - elfbias;
+
+ // Get the actual CU DIE and walk all functions inside it.
+ Dwarf_Die cudie;
+ uint8_t offsize;
+ uint8_t addrsize;
+ if (dwarf_diecu (cu, &cudie, &addrsize, &offsize) == NULL)
+ error (EXIT_FAILURE, 0, "dwarf_diecu %s", dwarf_errmsg (-1));
+
+ if (dwarf_getfuncs (cu, handle_function, NULL, 0) != 0)
+ error (EXIT_FAILURE, 0, "dwarf_getfuncs %s",
+ dwarf_errmsg (-1));
+ }
+ }
+
+ dwfl_end (dwfl);
+ return 0;
+}
#ifndef _ELFUTILS_VERSION_H
#define _ELFUTILS_VERSION_H 1
-#define _ELFUTILS_VERSION 155
+#define _ELFUTILS_VERSION 160
#define _ELFUTILS_PREREQ(major, minor) \
(_ELFUTILS_VERSION >= ((major) * 1000 + (minor)))